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;