[FFmpeg-cvslog] avfilter/vf_mix: clip output pixel values

Paul B Mahol git at videolan.org
Thu Apr 26 17:50:02 EEST 2018


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed Apr 25 13:07:34 2018 +0200| [330215830ef94f4bf45fd8af0025b10f59a051a6] | committer: Paul B Mahol

avfilter/vf_mix: clip output pixel values

Signed-off-by: Paul B Mahol <onemda at gmail.com>

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

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

diff --git a/libavfilter/vf_mix.c b/libavfilter/vf_mix.c
index 23385dbb05..7644b7170a 100644
--- a/libavfilter/vf_mix.c
+++ b/libavfilter/vf_mix.c
@@ -44,6 +44,7 @@ typedef struct MixContext {
     int nb_frames;
 
     int depth;
+    int max;
     int nb_planes;
     int linesize[4];
     int height[4];
@@ -137,7 +138,7 @@ static void mix_frames(MixContext *s, AVFrame **in, AVFrame *out)
                         val += src * s->weights[i];
                     }
 
-                    dst[x] = val * s->wfactor;
+                    dst[x] = av_clip_uint8(val * s->wfactor);
                 }
 
                 dst += out->linesize[p];
@@ -157,7 +158,7 @@ static void mix_frames(MixContext *s, AVFrame **in, AVFrame *out)
                         val += src * s->weights[i];
                     }
 
-                    dst[x] = val * s->wfactor;
+                    dst[x] = av_clip(val * s->wfactor, 0, s->max);
                 }
 
                 dst += out->linesize[p] / 2;
@@ -216,6 +217,7 @@ static int config_output(AVFilterLink *outlink)
         return AVERROR_BUG;
     s->nb_planes = av_pix_fmt_count_planes(outlink->format);
     s->depth = s->desc->comp[0].depth;
+    s->max = (1 << s->depth) - 1;
 
     if ((ret = av_image_fill_linesizes(s->linesize, inlink->format, inlink->w)) < 0)
         return ret;



More information about the ffmpeg-cvslog mailing list