Replace containerChromaSubsamplingX, containerChromaSubsamplingY, and containerMonochrome with containerYUVFormat
diff --git a/src/read.c b/src/read.c
index 4308db4..98eae1b 100644
--- a/src/read.c
+++ b/src/read.c
@@ -2319,19 +2319,25 @@
 
     if (configBox) {
         decoder->containerDepth = avifCodecConfigurationBoxGetDepth(configBox);
-        decoder->containerChromaSubsamplingX = configBox->chromaSubsamplingX;
-        decoder->containerChromaSubsamplingY = configBox->chromaSubsamplingY;
-        decoder->containerMonochrome = (configBox->monochrome != 0);
+        if (configBox->monochrome) {
+            decoder->containerYUVFormat = AVIF_PIXEL_FORMAT_YUV400;
+        } else {
+            if (configBox->chromaSubsamplingX && configBox->chromaSubsamplingY) {
+                decoder->containerYUVFormat = AVIF_PIXEL_FORMAT_YUV420;
+            } else if (configBox->chromaSubsamplingX) {
+                decoder->containerYUVFormat = AVIF_PIXEL_FORMAT_YUV422;
+
+            } else {
+                decoder->containerYUVFormat = AVIF_PIXEL_FORMAT_YUV444;
+            }
+        }
         decoder->containerChromaSamplePosition = (avifChromaSamplePosition)configBox->chromaSamplePosition;
     } else {
         // I believe this path is very, very unlikely. An av1C box should be mandatory
         // in all valid AVIF configurations.
         decoder->containerDepth = 0;
-        decoder->containerChromaSubsamplingX = 0; // TODO: use sentinel value here?
-        decoder->containerChromaSubsamplingY = 0; // TODO: use sentinel value here?
+        decoder->containerYUVFormat = AVIF_PIXEL_FORMAT_YUV444;
         decoder->containerChromaSamplePosition = AVIF_CHROMA_SAMPLE_POSITION_UNKNOWN;
-
-        decoder->containerMonochrome = AVIF_FALSE;
     }
 
     return avifDecoderFlush(decoder);