diff options
author | Niklas Haas <git@haasn.dev> | 2025-03-07 19:36:29 +0100 |
---|---|---|
committer | Niklas Haas <git@haasn.dev> | 2025-03-17 11:40:05 +0100 |
commit | 8ab40ca984fa123e5aa8c45ec5d9fdadb1b12cb6 (patch) | |
tree | d46722b6da5f638a30308dca1fe15ac319e66d65 | |
parent | 9e857e1f8aeeb655adb9d09bf53add26a27092e2 (diff) | |
download | ffmpeg-8ab40ca984fa123e5aa8c45ec5d9fdadb1b12cb6.tar.gz |
swscale: fix gray -> grayf32 SIGFPE
swscale internals don't distinguish between 16-bit and higher bit depth
output formats internally when it comes to the choice of intermediate
representation.
Clamping this value both prevents a SIGFPE and also aligns the check
with reality.
-rw-r--r-- | libswscale/swscale.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 98f94d029f..65ed654ebd 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -586,7 +586,7 @@ static void solve_range_convert(uint16_t src_min, uint16_t src_max, static void init_range_convert_constants(SwsInternal *c) { - const int bit_depth = c->dstBpc ? c->dstBpc : 8; + const int bit_depth = c->dstBpc ? FFMIN(c->dstBpc, 16) : 8; const int src_bits = bit_depth <= 14 ? 15 : 19; const int src_shift = src_bits - bit_depth; const int mult_shift = bit_depth <= 14 ? 14 : 18; |