diff --git a/libavfilter/vf_idet.c b/libavfilter/vf_idet.c
index 70aae92228..3b1281e7a2 100644
--- a/libavfilter/vf_idet.c
+++ b/libavfilter/vf_idet.c
@@ -206,21 +206,6 @@ static int filter_frame(AVFilterLink *link, AVFrame *picref)
     return ff_filter_frame(ctx->outputs[0], av_frame_clone(idet->cur));
 }
 
-static int request_frame(AVFilterLink *link)
-{
-    AVFilterContext *ctx = link->src;
-    IDETContext *idet = ctx->priv;
-
-    do {
-        int ret;
-
-        if ((ret = ff_request_frame(link->src->inputs[0])))
-            return ret;
-    } while (!idet->cur);
-
-    return 0;
-}
-
 static av_cold void uninit(AVFilterContext *ctx)
 {
     IDETContext *idet = ctx->priv;
@@ -273,6 +258,12 @@ static int query_formats(AVFilterContext *ctx)
     return 0;
 }
 
+static int config_output(AVFilterLink *outlink)
+{
+    outlink->flags |= FF_LINK_FLAG_REQUEST_LOOP;
+    return 0;
+}
+
 static av_cold int init(AVFilterContext *ctx)
 {
     IDETContext *idet = ctx->priv;
@@ -299,7 +290,7 @@ static const AVFilterPad idet_outputs[] = {
     {
         .name          = "default",
         .type          = AVMEDIA_TYPE_VIDEO,
-        .request_frame = request_frame,
+        .config_props  = config_output,
     },
     { NULL }
 };