--- fftools/ffmpeg.c | 36 ++++++++++++++---------------------- fftools/ffmpeg_filter.c | 12 ++++++------ 2 files changed, 20 insertions(+), 28 deletions(-)
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index c89a95937e..319e295df3 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -525,19 +525,17 @@ static void ffmpeg_cleanup(int ret) InputFilter *ifilter = fg->inputs[j]; struct InputStream *ist = ifilter->ist; - while (av_fifo_size(ifilter->frame_queue)) { + while (av_fifo_can_read(ifilter->frame_queue)) { AVFrame *frame; - av_fifo_generic_read(ifilter->frame_queue, &frame, - sizeof(frame), NULL); + av_fifo_read(ifilter->frame_queue, &frame, 1); av_frame_free(&frame); } av_fifo_freep(&ifilter->frame_queue); av_freep(&ifilter->displaymatrix); if (ist->sub2video.sub_queue) { - while (av_fifo_size(ist->sub2video.sub_queue)) { + while (av_fifo_can_read(ist->sub2video.sub_queue)) { AVSubtitle sub; - av_fifo_generic_read(ist->sub2video.sub_queue, - &sub, sizeof(sub), NULL); + av_fifo_read(ist->sub2video.sub_queue, &sub, 1); avsubtitle_free(&sub); } av_fifo_freep(&ist->sub2video.sub_queue); @@ -1954,15 +1952,11 @@ static int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame, int keep_ref if (!tmp) return AVERROR(ENOMEM); - if (!av_fifo_space(ifilter->frame_queue)) { - ret = av_fifo_realloc2(ifilter->frame_queue, 2 * av_fifo_size(ifilter->frame_queue)); - if (ret < 0) { - av_frame_free(&tmp); - return ret; - } - } - av_fifo_generic_write(ifilter->frame_queue, &tmp, sizeof(tmp), NULL); - return 0; + ret = av_fifo_write(ifilter->frame_queue, &tmp, 1); + if (ret < 0) + av_frame_free(&tmp); + + return ret; } ret = reap_filters(1); @@ -2285,15 +2279,13 @@ static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output, sub2video_update(ist, INT64_MIN, &subtitle); } else if (ist->nb_filters) { if (!ist->sub2video.sub_queue) - ist->sub2video.sub_queue = av_fifo_alloc(8 * sizeof(AVSubtitle)); + ist->sub2video.sub_queue = av_fifo_alloc2(8, sizeof(AVSubtitle), AV_FIFO_FLAG_AUTO_GROW); if (!ist->sub2video.sub_queue) exit_program(1); - if (!av_fifo_space(ist->sub2video.sub_queue)) { - ret = av_fifo_realloc2(ist->sub2video.sub_queue, 2 * av_fifo_size(ist->sub2video.sub_queue)); - if (ret < 0) - exit_program(1); - } - av_fifo_generic_write(ist->sub2video.sub_queue, &subtitle, sizeof(subtitle), NULL); + + ret = av_fifo_write(ist->sub2video.sub_queue, &subtitle, 1); + if (ret < 0) + exit_program(1); free_sub = 0; } diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 1f6cba2c04..c468456d54 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -178,7 +178,7 @@ int init_simple_filtergraph(InputStream *ist, OutputStream *ost) ifilter->graph = fg; ifilter->format = -1; - ifilter->frame_queue = av_fifo_alloc(8 * sizeof(AVFrame*)); + ifilter->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW); if (!ifilter->frame_queue) exit_program(1); @@ -286,7 +286,7 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in) ifilter->type = ist->st->codecpar->codec_type; ifilter->name = describe_filter_link(fg, in, 1); - ifilter->frame_queue = av_fifo_alloc(8 * sizeof(AVFrame*)); + ifilter->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW); if (!ifilter->frame_queue) exit_program(1); @@ -1106,9 +1106,9 @@ int configure_filtergraph(FilterGraph *fg) } for (i = 0; i < fg->nb_inputs; i++) { - while (av_fifo_size(fg->inputs[i]->frame_queue)) { + while (av_fifo_can_read(fg->inputs[i]->frame_queue)) { AVFrame *tmp; - av_fifo_generic_read(fg->inputs[i]->frame_queue, &tmp, sizeof(tmp), NULL); + av_fifo_read(fg->inputs[i]->frame_queue, &tmp, 1); ret = av_buffersrc_add_frame(fg->inputs[i]->filter, tmp); av_frame_free(&tmp); if (ret < 0) @@ -1129,9 +1129,9 @@ int configure_filtergraph(FilterGraph *fg) for (i = 0; i < fg->nb_inputs; i++) { InputStream *ist = fg->inputs[i]->ist; if (ist->sub2video.sub_queue && ist->sub2video.frame) { - while (av_fifo_size(ist->sub2video.sub_queue)) { + while (av_fifo_can_read(ist->sub2video.sub_queue)) { AVSubtitle tmp; - av_fifo_generic_read(ist->sub2video.sub_queue, &tmp, sizeof(tmp), NULL); + av_fifo_read(ist->sub2video.sub_queue, &tmp, 1); sub2video_update(ist, INT64_MIN, &tmp); avsubtitle_free(&tmp); } -- 2.33.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".