On Sat, 8 Apr 2017, Marton Balint wrote:

Fixes ticket #6285.

Signed-off-by: Marton Balint <c...@passwd.hu>
---
libavfilter/vf_framerate.c | 42 ++++++++++++++++++++++++++----------------
1 file changed, 26 insertions(+), 16 deletions(-)

Applied this as well.

@@ -695,7 +689,23 @@ static int request_frame(AVFilterLink *outlink)
    }

    set_work_frame_pts(ctx);
-    return process_work_frame(ctx, 0);
+    ret = process_work_frame(ctx, 0);
+    if (ret < 0)
+        return ret;
+    if (ret)
+        return ff_filter_frame(ctx->outputs[0], s->work);
+
+request:
+    ff_dlog(ctx, "request_frame() call source's request_frame()\n");
+    ret = ff_request_frame(ctx->inputs[0]);
+    if (ret < 0 && (ret != AVERROR_EOF)) {
+        ff_dlog(ctx, "request_frame() source's request_frame() returned 
error:%d\n", ret);
+        return ret;
+    } else if (ret == AVERROR_EOF) {
+        s->flush = 1;
+    }
+    ff_dlog(ctx, "request_frame() source's request_frame() returned:%d\n", 
ret);
+    return 0;
}

Note that the above code which I moved returns 0 if ff_request_frame returns AVERROR_EOF. As far as I see, this can only happen a few times, not infinitely, so I am not sure if this is an error or not, so I kept is as it was before.

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to