aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2025-03-07 19:36:29 +0100
committerNiklas Haas <git@haasn.dev>2025-03-17 11:40:05 +0100
commit8ab40ca984fa123e5aa8c45ec5d9fdadb1b12cb6 (patch)
treed46722b6da5f638a30308dca1fe15ac319e66d65
parent9e857e1f8aeeb655adb9d09bf53add26a27092e2 (diff)
downloadffmpeg-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.c2
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;