[FFmpeg-cvslog] avfilter/avf_showspectrum: fix not rendering all channels with fscale=log:mode=separate

Paul B Mahol git at videolan.org
Sat Jul 24 18:36:54 EEST 2021


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sat Jul 24 17:30:58 2021 +0200| [94c90b3261fe1eb8b8f4131c4eb135b611e10e30] | committer: Paul B Mahol

avfilter/avf_showspectrum: fix not rendering all channels with fscale=log:mode=separate

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=94c90b3261fe1eb8b8f4131c4eb135b611e10e30
---

 libavfilter/avf_showspectrum.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c
index f9ff5b567d..8aa6c668fa 100644
--- a/libavfilter/avf_showspectrum.c
+++ b/libavfilter/avf_showspectrum.c
@@ -977,8 +977,8 @@ static int plot_channel_log(AVFilterContext *ctx, void *arg, int jobnr, int nb_j
         a0 = get_value(ctx, ch, yy+0);
         a1 = get_value(ctx, ch, FFMIN(yy+1, h-1));
         for (float j = pos0; j < pos1 && y + j - pos0 < h; j++) {
-            float row = (s->mode == COMBINED) ? y + j - pos0 : ch * h + y + j - pos0;
-            float *out = &s->color_buffer[ch][3 * FFMIN(lrintf(row), h-1)];
+            float row = (s->mode == COMBINED) ? av_clipf(y + j - pos0, 0, h - 1) : ch * h + av_clipf(y + j - pos0, 0, h - 1);
+            float *out = &s->color_buffer[ch][3 * lrintf(row)];
             float lerpfrac = (j - pos0) / delta;
 
             pick_color(s, yf, uf, vf, lerpfrac * a1 + (1.f-lerpfrac) * a0, out);



More information about the ffmpeg-cvslog mailing list