]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_yadif.c
Merge commit 'dca23ffbc7568c9af5c5fbaa86e6a0761ecae50c'
[ffmpeg] / libavfilter / vf_yadif.c
index d7a2b53bce18cfdb54db72281ac620272805c83e..b546a088c9affaaa8940d83dd36f5803a20fcfe2 100644 (file)
@@ -379,34 +379,31 @@ static int request_frame(AVFilterLink *link)
 {
     AVFilterContext *ctx = link->src;
     YADIFContext *yadif = ctx->priv;
+    int ret;
 
     if (yadif->frame_pending) {
         return_frame(ctx, 1);
         return 0;
     }
 
-    do {
-        int ret;
+    if (yadif->eof)
+        return AVERROR_EOF;
 
-        if (yadif->eof)
-            return AVERROR_EOF;
+    ret  = ff_request_frame(link->src->inputs[0]);
 
-        ret  = ff_request_frame(link->src->inputs[0]);
+    if (ret == AVERROR_EOF && yadif->cur) {
+        AVFrame *next = av_frame_clone(yadif->next);
 
-        if (ret == AVERROR_EOF && yadif->cur) {
-            AVFrame *next = av_frame_clone(yadif->next);
-
-            if (!next)
-                return AVERROR(ENOMEM);
+        if (!next)
+            return AVERROR(ENOMEM);
 
-            next->pts = yadif->next->pts * 2 - yadif->cur->pts;
+        next->pts = yadif->next->pts * 2 - yadif->cur->pts;
 
-            filter_frame(link->src->inputs[0], next);
-            yadif->eof = 1;
-        } else if (ret < 0) {
-            return ret;
-        }
-    } while (!yadif->prev);
+        filter_frame(link->src->inputs[0], next);
+        yadif->eof = 1;
+    } else if (ret < 0) {
+        return ret;
+    }
 
     return 0;
 }