[FFmpeg-cvslog] avfilter/vf_signalstats: fix saturation calculation for >8 bit

Paul B Mahol git at videolan.org
Sun Aug 14 11:05:38 EEST 2016


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sun Aug 14 10:00:35 2016 +0200| [ec4ed2f69c240b901ef1491c752ed425cd7e9618] | committer: Paul B Mahol

avfilter/vf_signalstats: fix saturation calculation for >8 bit

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

 libavfilter/vf_signalstats.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/libavfilter/vf_signalstats.c b/libavfilter/vf_signalstats.c
index 00051f2..6796af8 100644
--- a/libavfilter/vf_signalstats.c
+++ b/libavfilter/vf_signalstats.c
@@ -190,7 +190,7 @@ static int config_props(AVFilterLink *outlink)
     if (!s->jobs_rets)
         return AVERROR(ENOMEM);
 
-    s->frame_sat = alloc_frame(AV_PIX_FMT_GRAY8,  inlink->w, inlink->h);
+    s->frame_sat = alloc_frame(s->depth > 8 ? AV_PIX_FMT_GRAY16 : AV_PIX_FMT_GRAY8,  inlink->w, inlink->h);
     s->frame_hue = alloc_frame(AV_PIX_FMT_GRAY16, inlink->w, inlink->h);
     if (!s->frame_sat || !s->frame_hue)
         return AVERROR(ENOMEM);
@@ -799,10 +799,10 @@ static int filter_frame16(AVFilterLink *link, AVFrame *in)
 
     AVFrame *sat = s->frame_sat;
     AVFrame *hue = s->frame_hue;
-    const uint8_t *p_sat = sat->data[0];
-    const uint8_t *p_hue = hue->data[0];
-    const int lsz_sat = sat->linesize[0];
-    const int lsz_hue = hue->linesize[0];
+    const uint16_t *p_sat = (uint16_t *)sat->data[0];
+    const uint16_t *p_hue = (uint16_t *)hue->data[0];
+    const int lsz_sat = sat->linesize[0] / 2;
+    const int lsz_hue = hue->linesize[0] / 2;
     ThreadDataHueSatMetrics td_huesat = {
         .src     = in,
         .dst_sat = sat,



More information about the ffmpeg-cvslog mailing list