ffmpeg | branch: master | Tobias Rapp <t.r...@noa-archive.com> | Wed Mar 27 11:40:49 2024 +0100| [55ce66606265013115ec309b3d1a4d26ef7c6046] | committer: Tobias Rapp
examples/decode_filter_audio: 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=55ce66606265013115ec309b3d1a4d26ef7c6046 --- doc/examples/decode_filter_audio.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/doc/examples/decode_filter_audio.c b/doc/examples/decode_filter_audio.c index 2046419819..196f0801c4 100644 --- a/doc/examples/decode_filter_audio.c +++ b/doc/examples/decode_filter_audio.c @@ -279,6 +279,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; + print_frame(filt_frame); + 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".