[FFmpeg-cvslog] avcodec/scpr: make sure that component value is <= 0x1F for 16 bpc

Paul B Mahol git at videolan.org
Fri Feb 24 13:03:44 EET 2017


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Fri Feb 24 12:01:30 2017 +0100| [178cd50c47aa5b7db03f7ce7a3f2934857dbd35b] | committer: Paul B Mahol

avcodec/scpr: make sure that component value is <= 0x1F for 16 bpc

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

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

 libavcodec/scpr.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/scpr.c b/libavcodec/scpr.c
index 5555d81..0802dd4 100644
--- a/libavcodec/scpr.c
+++ b/libavcodec/scpr.c
@@ -58,6 +58,7 @@ typedef struct SCPRContext {
     unsigned        nbx, nby;
     unsigned        nbcount;
     unsigned       *blocks;
+    unsigned        cbits;
     int             cxshift;
 } SCPRContext;
 
@@ -241,7 +242,7 @@ static int decode_unit(SCPRContext *s, PixelModel *pixel, unsigned step, unsigne
     }
     pixel->total_freq = totfr;
 
-    *rval = c;
+    *rval = c & s->cbits;
 
     return 0;
 }
@@ -789,6 +790,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
     }
 
     s->cxshift = avctx->bits_per_coded_sample == 16 ? 0 : 2;
+    s->cbits = avctx->bits_per_coded_sample == 16 ? 0x1F : 0xFF;
     s->nbx = (avctx->width + 15) / 16;
     s->nby = (avctx->height + 15) / 16;
     s->nbcount = s->nbx * s->nby;



More information about the ffmpeg-cvslog mailing list