ffmpeg | branch: master | Paul B Mahol <one...@gmail.com> | Fri Jan 27 13:37:00 2017 +0100| [836c8750b31329e71e5ac2a194523172875b77eb] | committer: Paul B Mahol
avfilter/avf_showspectrum: fix 2 possible crashes Make sure no division by zero is done. Make sure there are actually samples available. Signed-off-by: Paul B Mahol <one...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=836c8750b31329e71e5ac2a194523172875b77eb --- libavfilter/avf_showspectrum.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c index 8776668..09b5a2a 100644 --- a/libavfilter/avf_showspectrum.c +++ b/libavfilter/avf_showspectrum.c @@ -1022,17 +1022,19 @@ static int showspectrumpic_request_frame(AVFilterLink *outlink) AVFilterContext *ctx = outlink->src; ShowSpectrumContext *s = ctx->priv; AVFilterLink *inlink = ctx->inputs[0]; - int ret; + int ret, samples; ret = ff_request_frame(inlink); - if (ret == AVERROR_EOF && s->outpicref) { - int samples = av_audio_fifo_size(s->fifo); + samples = av_audio_fifo_size(s->fifo); + if (ret == AVERROR_EOF && s->outpicref && samples > 0) { int consumed = 0; int y, x = 0, sz = s->orientation == VERTICAL ? s->w : s->h; int ch, spf, spb; AVFrame *fin; spf = s->win_size * (samples / ((s->win_size * sz) * ceil(samples / (float)(s->win_size * sz)))); + spf = FFMAX(1, spf); + spb = (samples / (spf * sz)) * spf; fin = ff_get_audio_buffer(inlink, s->win_size); _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog