diff options
author | Paul B Mahol <onemda@gmail.com> | 2020-06-06 19:07:35 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2020-06-06 19:49:14 +0200 |
commit | 7826fbfeaacca0d7af1387bbfd367db3c6dfd5d5 (patch) | |
tree | b5a922c731a9e661a99c2740c88733e8137344b9 /libavfilter/avf_showspectrum.c | |
parent | 1c32d7dfcf0394a332d5ddee2a210d4eb5bd540c (diff) | |
download | ffmpeg-7826fbfeaacca0d7af1387bbfd367db3c6dfd5d5.tar.gz |
avfilter/avf_showspectrum: properly handle EOF case
Diffstat (limited to 'libavfilter/avf_showspectrum.c')
-rw-r--r-- | libavfilter/avf_showspectrum.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c index a4dd7b7879..e99f377fb0 100644 --- a/libavfilter/avf_showspectrum.c +++ b/libavfilter/avf_showspectrum.c @@ -1434,7 +1434,8 @@ static int activate(AVFilterContext *ctx) } } - if (s->outpicref && av_audio_fifo_size(s->fifo) >= s->win_size) { + if (s->outpicref && (av_audio_fifo_size(s->fifo) >= s->win_size || + ff_outlink_get_status(inlink))) { AVFrame *fin = ff_get_audio_buffer(inlink, s->win_size); if (!fin) return AVERROR(ENOMEM); @@ -1462,7 +1463,7 @@ static int activate(AVFilterContext *ctx) av_frame_free(&fin); av_audio_fifo_drain(s->fifo, s->hop_size); - if (ret <= 0) + if (ret <= 0 && !ff_outlink_get_status(inlink)) return ret; } @@ -1493,15 +1494,18 @@ static int activate(AVFilterContext *ctx) } FF_FILTER_FORWARD_STATUS(inlink, outlink); - if (ff_outlink_frame_wanted(outlink) && av_audio_fifo_size(s->fifo) < s->win_size) { - ff_inlink_request_frame(inlink); + if (av_audio_fifo_size(s->fifo) >= s->win_size || + ff_outlink_get_status(inlink) == AVERROR_EOF) { + ff_filter_set_ready(ctx, 10); return 0; } - if (av_audio_fifo_size(s->fifo) >= s->win_size) { - ff_filter_set_ready(ctx, 10); + if (ff_outlink_frame_wanted(outlink) && av_audio_fifo_size(s->fifo) < s->win_size && + ff_outlink_get_status(inlink) != AVERROR_EOF) { + ff_inlink_request_frame(inlink); return 0; } + return FFERROR_NOT_READY; } |