@@ -1831,11 +1831,22 @@ static avifResult avifEncoderAddImageInternal(avifEncoder * encoder,
18311831 }
18321832
18331833 // -----------------------------------------------------------------------
1834- // Map quality and qualityAlpha to quantizer and quantizerAlpha
1834+ // Map quality settings to quantizer values.
18351835 encoder -> data -> quantizer = avifQualityToQuantizer (encoder -> quality , encoder -> minQuantizer , encoder -> maxQuantizer );
1836- encoder -> data -> quantizerAlpha = avifQualityToQuantizer (encoder -> qualityAlpha , encoder -> minQuantizerAlpha , encoder -> maxQuantizerAlpha );
1837- encoder -> data -> quantizerGainMap =
1838- avifQualityToQuantizer (encoder -> qualityGainMap , AVIF_QUANTIZER_BEST_QUALITY , AVIF_QUANTIZER_WORST_QUALITY );
1836+ // If alpha quality, and min and max alpha quantizer have their default values, default to the same quality as color.
1837+ if (encoder -> qualityAlpha == AVIF_QUALITY_DEFAULT && encoder -> minQuantizerAlpha == AVIF_QUANTIZER_BEST_QUALITY &&
1838+ encoder -> maxQuantizerAlpha == AVIF_QUANTIZER_WORST_QUALITY ) {
1839+ encoder -> data -> quantizerAlpha = encoder -> data -> quantizer ;
1840+ } else {
1841+ encoder -> data -> quantizerAlpha =
1842+ avifQualityToQuantizer (encoder -> qualityAlpha , encoder -> minQuantizerAlpha , encoder -> maxQuantizerAlpha );
1843+ }
1844+ if (encoder -> qualityGainMap == AVIF_QUALITY_DEFAULT ) {
1845+ encoder -> data -> quantizerGainMap = encoder -> data -> quantizer ; // Default to the same quality as color.
1846+ } else {
1847+ encoder -> data -> quantizerGainMap =
1848+ avifQualityToQuantizer (encoder -> qualityGainMap , AVIF_QUANTIZER_BEST_QUALITY , AVIF_QUANTIZER_WORST_QUALITY );
1849+ }
18391850
18401851 // -----------------------------------------------------------------------
18411852 // Handle automatic tiling
0 commit comments