minQuantizerAlpha/maxQuantizerAlpha support in avifEncoder, avifenc, 444alpha support in y4m layer (avifenc, avifdec)
diff --git a/src/codec_aom.c b/src/codec_aom.c
index a42ecd0..10d63af 100644
--- a/src/codec_aom.c
+++ b/src/codec_aom.c
@@ -304,12 +304,10 @@
int minQuantizer = AVIF_CLAMP(encoder->minQuantizer, 0, 63);
int maxQuantizer = AVIF_CLAMP(encoder->maxQuantizer, 0, 63);
if (alpha) {
- minQuantizer = AVIF_QUANTIZER_LOSSLESS;
- maxQuantizer = AVIF_QUANTIZER_LOSSLESS;
+ minQuantizer = AVIF_CLAMP(encoder->minQuantizerAlpha, 0, 63);
+ maxQuantizer = AVIF_CLAMP(encoder->maxQuantizerAlpha, 0, 63);
}
- avifBool lossless = ((encoder->minQuantizer == AVIF_QUANTIZER_LOSSLESS) && (encoder->maxQuantizer == AVIF_QUANTIZER_LOSSLESS))
- ? AVIF_TRUE
- : AVIF_FALSE;
+ avifBool lossless = ((minQuantizer == AVIF_QUANTIZER_LOSSLESS) && (maxQuantizer == AVIF_QUANTIZER_LOSSLESS)) ? AVIF_TRUE : AVIF_FALSE;
cfg.rc_min_quantizer = minQuantizer;
cfg.rc_max_quantizer = maxQuantizer;
diff --git a/src/codec_rav1e.c b/src/codec_rav1e.c
index 95e177a..9176a64 100644
--- a/src/codec_rav1e.c
+++ b/src/codec_rav1e.c
@@ -87,8 +87,8 @@
int minQuantizer = AVIF_CLAMP(encoder->minQuantizer, 0, 63);
int maxQuantizer = AVIF_CLAMP(encoder->maxQuantizer, 0, 63);
if (alpha) {
- minQuantizer = AVIF_QUANTIZER_LOSSLESS;
- maxQuantizer = AVIF_QUANTIZER_LOSSLESS;
+ minQuantizer = AVIF_CLAMP(encoder->minQuantizerAlpha, 0, 63);
+ maxQuantizer = AVIF_CLAMP(encoder->maxQuantizerAlpha, 0, 63);
}
minQuantizer = (minQuantizer * 255) / 63; // Rescale quantizer values as rav1e's QP range is [0,255]
maxQuantizer = (maxQuantizer * 255) / 63;
diff --git a/src/write.c b/src/write.c
index 221e5ad..9d45b4a 100644
--- a/src/write.c
+++ b/src/write.c
@@ -34,6 +34,8 @@
encoder->maxThreads = 1;
encoder->minQuantizer = AVIF_QUANTIZER_LOSSLESS;
encoder->maxQuantizer = AVIF_QUANTIZER_LOSSLESS;
+ encoder->minQuantizerAlpha = AVIF_QUANTIZER_LOSSLESS;
+ encoder->maxQuantizerAlpha = AVIF_QUANTIZER_LOSSLESS;
encoder->tileRowsLog2 = 0;
encoder->tileColsLog2 = 0;
encoder->speed = AVIF_SPEED_DEFAULT;