Revert "Add avifDecoderNthImageReady() avifIO helper function"

This reverts commit 19c914a4a9eb0e087677c1d529f817bdacfebe86.
diff --git a/src/read.c b/src/read.c
index 6fcf7f1..306f16e 100644
--- a/src/read.c
+++ b/src/read.c
@@ -2758,49 +2758,30 @@
     return avifDecoderFlush(decoder);
 }
 
-avifResult avifDecoderNthImageReady(avifDecoder * decoder, uint32_t frameIndex)
+avifResult avifDecoderNextImage(avifDecoder * decoder)
 {
-    if (!decoder->data) {
-        // Nothing has been parsed yet
-        return AVIF_RESULT_NO_CONTENT;
-    }
-
     if (!decoder->io || !decoder->io->read) {
         return AVIF_RESULT_IO_NOT_SET;
     }
 
-    if ((frameIndex > INT_MAX) || ((int)frameIndex >= decoder->imageCount)) {
-        // Impossible index
-        return AVIF_RESULT_NO_IMAGES_REMAINING;
-    }
+    uint32_t nextImageIndex = (uint32_t)(decoder->imageIndex + 1);
 
     // Acquire all sample data for the current image first, allowing for any read call to bail out
     // 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];
-        if (frameIndex >= tile->input->samples.count) {
+        if (nextImageIndex >= tile->input->samples.count) {
             return AVIF_RESULT_NO_IMAGES_REMAINING;
         }
 
-        avifDecodeSample * sample = &tile->input->samples.sample[frameIndex];
+        avifDecodeSample * sample = &tile->input->samples.sample[nextImageIndex];
         avifResult prepareResult = avifDecoderPrepareSample(decoder, sample, 0);
         if (prepareResult != AVIF_RESULT_OK) {
             return prepareResult;
         }
     }
-    return AVIF_RESULT_OK;
-}
 
-avifResult avifDecoderNextImage(avifDecoder * decoder)
-{
-    const uint32_t nextImageIndex = (uint32_t)(decoder->imageIndex + 1);
-
-    avifResult readyResult = avifDecoderNthImageReady(decoder, nextImageIndex);
-    if (readyResult != AVIF_RESULT_OK) {
-        return readyResult;
-    }
-
-    // Decode all tiles now that the sample data is ready.
+    // Decode all frames now that the sample data is ready.
     for (unsigned int tileIndex = 0; tileIndex < decoder->data->tiles.count; ++tileIndex) {
         avifTile * tile = &decoder->data->tiles.tile[tileIndex];
 
@@ -2978,11 +2959,6 @@
 
 avifBool avifDecoderIsKeyframe(const avifDecoder * decoder, uint32_t frameIndex)
 {
-    if (!decoder->data) {
-        // Nothing has been parsed yet
-        return AVIF_FALSE;
-    }
-
     if ((decoder->data->tiles.count > 0) && decoder->data->tiles.tile[0].input) {
         if (frameIndex < decoder->data->tiles.tile[0].input->samples.count) {
             return decoder->data->tiles.tile[0].input->samples.sample[frameIndex].sync;
@@ -2993,11 +2969,6 @@
 
 uint32_t avifDecoderNearestKeyframe(const avifDecoder * decoder, uint32_t frameIndex)
 {
-    if (!decoder->data) {
-        // Nothing has been parsed yet
-        return 0;
-    }
-
     for (; frameIndex != 0; --frameIndex) {
         if (avifDecoderIsKeyframe(decoder, frameIndex)) {
             break;