diff --git a/internal/warpc/genavif/avif.c b/internal/warpc/genavif/avif.c index f572f7cf5..3932f7fcb 100644 --- a/internal/warpc/genavif/avif.c +++ b/internal/warpc/genavif/avif.c @@ -685,6 +685,8 @@ void handle_commands(FILE *stream) if (quality < 1) quality = 1; if (quality > 100) quality = 100; int avif_quality = (int)((quality - 1.0) / 99.0 * 100.0); + // Keep lossy strictly below lossless so quality 100 stays lossy. See issue 14981. + if (avif_quality >= AVIF_QUALITY_LOSSLESS) avif_quality = AVIF_QUALITY_LOSSLESS - 1; encoder->quality = avif_quality; encoder->qualityAlpha = avif_quality; } @@ -809,6 +811,8 @@ void handle_commands(FILE *stream) if (quality < 1) quality = 1; if (quality > 100) quality = 100; int avif_quality = (int)((quality - 1.0) / 99.0 * 100.0); + // Keep lossy strictly below lossless so quality 100 stays lossy. See issue 14981. + if (avif_quality >= AVIF_QUALITY_LOSSLESS) avif_quality = AVIF_QUALITY_LOSSLESS - 1; encoder->quality = avif_quality; } encoder->qualityAlpha = AVIF_QUALITY_LOSSLESS; diff --git a/internal/warpc/wasm/avif.wasm b/internal/warpc/wasm/avif.wasm index 4fb7b2995..9968def00 100755 Binary files a/internal/warpc/wasm/avif.wasm and b/internal/warpc/wasm/avif.wasm differ