From 5ca14b23f1e8137258580dd9045f025795b2eb88 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 24 Mar 2025 16:00:02 +0100 Subject: [PATCH] avcodec/ffv1dec: compute end instead of hardcoding it and test for fltmap correctly A step toward supporting remap for integer formats less than 16 bit Signed-off-by: Michael Niedermayer --- libavcodec/ffv1dec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c index e9362eed19..21a7642a08 100644 --- a/libavcodec/ffv1dec.c +++ b/libavcodec/ffv1dec.c @@ -286,7 +286,7 @@ static int decode_current_mul(RangeCoder *rc, uint8_t state[32], int *mul, int m static int decode_remap(FFV1Context *f, FFV1SliceContext *sc) { - unsigned int end = f->avctx->bits_per_raw_sample == 32 ? 0xFFFFFFFF : 0xFFFF; + unsigned int end = (1LL<avctx->bits_per_raw_sample) - 1; int flip = sc->remap == 2 ? (end>>1) : 0; for (int p= 0; p < 1 + 2*f->chroma_planes + f->transparency; p++) { @@ -328,7 +328,7 @@ static int decode_remap(FFV1Context *f, FFV1SliceContext *sc) break; if (i - 1 > end || j > 65535) return AVERROR_INVALIDDATA; - if (end == 0xFFFF) { + if (end <= 0xFFFF) { sc->fltmap [p][j++] = i ^ ((i& 0x8000) ? 0 : flip); } else sc->fltmap32[p][j++] = i ^ ((i&0x80000000) ? 0 : flip);