ffmpeg | branch: master | Tobias Rapp <t.r...@noa-archive.com> | Wed Mar 27 
11:44:45 2024 +0100| [02eb2fc577e926e9f927829f1d8c8cdb8f31cbbd] | committer: 
Tobias Rapp

examples/decode_filter_video: Add loop for draining the filtergraph

Depending on the filters used, the filtergraph may produce trailing data
after feeding it the last input frame. Update the example to include the
necessary loop for draining the filtergraph.

Reviewed-by: Stefano Sabatini <stefa...@gmail.com>
Signed-off-by: Tobias Rapp <t.r...@noa-archive.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=02eb2fc577e926e9f927829f1d8c8cdb8f31cbbd
---

 doc/examples/decode_filter_video.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/doc/examples/decode_filter_video.c 
b/doc/examples/decode_filter_video.c
index 454c19222f..a57e6dfd20 100644
--- a/doc/examples/decode_filter_video.c
+++ b/doc/examples/decode_filter_video.c
@@ -276,6 +276,25 @@ int main(int argc, char **argv)
         }
         av_packet_unref(packet);
     }
+    if (ret == AVERROR_EOF) {
+        /* signal EOF to the filtergraph */
+        if (av_buffersrc_add_frame_flags(buffersrc_ctx, NULL, 0) < 0) {
+            av_log(NULL, AV_LOG_ERROR, "Error while closing the 
filtergraph\n");
+            goto end;
+        }
+
+        /* pull remaining frames from the filtergraph */
+        while (1) {
+            ret = av_buffersink_get_frame(buffersink_ctx, filt_frame);
+            if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
+                break;
+            if (ret < 0)
+                goto end;
+            display_frame(filt_frame, buffersink_ctx->inputs[0]->time_base);
+            av_frame_unref(filt_frame);
+        }
+    }
+
 end:
     avfilter_graph_free(&filter_graph);
     avcodec_free_context(&dec_ctx);

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to