mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-18 21:45:10 +00:00
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 <stefasab@gmail.com> Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
This commit is contained in:
parent
94ebe604b0
commit
55ce666062
@ -279,6 +279,25 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
av_packet_unref(packet);
|
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:
|
end:
|
||||||
avfilter_graph_free(&filter_graph);
|
avfilter_graph_free(&filter_graph);
|
||||||
avcodec_free_context(&dec_ctx);
|
avcodec_free_context(&dec_ctx);
|
||||||
|
Loading…
Reference in New Issue
Block a user