Delay failures of AV1 codecs not existing to frame decoding, to allow libavif to perform AVIF parsing without any AV1 codecs
diff --git a/src/read.c b/src/read.c
index 7a95690..080a459 100644
--- a/src/read.c
+++ b/src/read.c
@@ -3112,12 +3112,11 @@
     for (unsigned int i = 0; i < decoder->data->tiles.count; ++i) {
         avifTile * tile = &decoder->data->tiles.tile[i];
         tile->codec = avifCodecCreateInternal(decoder->codecChoice);
-        if (!tile->codec) {
-            return AVIF_RESULT_NO_CODEC_AVAILABLE;
+        if (tile->codec) {
+            tile->codec->diag = &decoder->diag;
+            tile->codec->operatingPoint = tile->operatingPoint;
+            tile->codec->allLayers = tile->input->allLayers;
         }
-        tile->codec->diag = &decoder->diag;
-        tile->codec->operatingPoint = tile->operatingPoint;
-        tile->codec->allLayers = tile->input->allLayers;
     }
     return AVIF_RESULT_OK;
 }
@@ -3614,6 +3613,12 @@
     // with AVIF_RESULT_WAITING_ON_IO harmlessly / idempotently.
     for (unsigned int tileIndex = 0; tileIndex < decoder->data->tiles.count; ++tileIndex) {
         avifTile * tile = &decoder->data->tiles.tile[tileIndex];
+
+        // Ensure there's an AV1 codec available before doing anything else
+        if (!tile->codec) {
+            return AVIF_RESULT_NO_CODEC_AVAILABLE;
+        }
+
         if (nextImageIndex >= tile->input->samples.count) {
             return AVIF_RESULT_NO_IMAGES_REMAINING;
         }