From 96fc68a8c174faa8847c39633b3574631e632cb7 Mon Sep 17 00:00:00 2001 From: maryla-uc Date: Tue, 25 Feb 2025 13:41:45 +0100 Subject: [PATCH] Make alpha and gain map quality default to the same as color in API. (#2631) --- src/write.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/write.c b/src/write.c index 346634ed20..32cf133121 100644 --- a/src/write.c +++ b/src/write.c @@ -1831,11 +1831,22 @@ static avifResult avifEncoderAddImageInternal(avifEncoder * encoder, } // ----------------------------------------------------------------------- - // Map quality and qualityAlpha to quantizer and quantizerAlpha + // Map quality settings to quantizer values. encoder->data->quantizer = avifQualityToQuantizer(encoder->quality, encoder->minQuantizer, encoder->maxQuantizer); - encoder->data->quantizerAlpha = avifQualityToQuantizer(encoder->qualityAlpha, encoder->minQuantizerAlpha, encoder->maxQuantizerAlpha); - encoder->data->quantizerGainMap = - avifQualityToQuantizer(encoder->qualityGainMap, AVIF_QUANTIZER_BEST_QUALITY, AVIF_QUANTIZER_WORST_QUALITY); + // If alpha quality, and min and max alpha quantizer have their default values, default to the same quality as color. + if (encoder->qualityAlpha == AVIF_QUALITY_DEFAULT && encoder->minQuantizerAlpha == AVIF_QUANTIZER_BEST_QUALITY && + encoder->maxQuantizerAlpha == AVIF_QUANTIZER_WORST_QUALITY) { + encoder->data->quantizerAlpha = encoder->data->quantizer; + } else { + encoder->data->quantizerAlpha = + avifQualityToQuantizer(encoder->qualityAlpha, encoder->minQuantizerAlpha, encoder->maxQuantizerAlpha); + } + if (encoder->qualityGainMap == AVIF_QUALITY_DEFAULT) { + encoder->data->quantizerGainMap = encoder->data->quantizer; // Default to the same quality as color. + } else { + encoder->data->quantizerGainMap = + avifQualityToQuantizer(encoder->qualityGainMap, AVIF_QUANTIZER_BEST_QUALITY, AVIF_QUANTIZER_WORST_QUALITY); + } // ----------------------------------------------------------------------- // Handle automatic tiling