AVIF_RESULT_NO_IO renamed AVIF_RESULT_IO_NOT_SET
AVIF_RESULT_NO_IO is renamed AVIF_RESULT_IO_NOT_SET.
Change the error checking in avifDecoderSetIOMemory() to an assertion
because avifIOCreateMemoryReader() does not fail (libavif does not
report memory allocation errors).
Change avifDecoderSetIOFile() to return AVIF_RESULT_IO_ERROR on failure.
Ideally it should return a "file not found" error, but there is no such
avifResult error code.
Fix https://github.com/AOMediaCodec/libavif/issues/364.
diff --git a/include/avif/avif.h b/include/avif/avif.h
index 84f07b6..84169ee 100644
--- a/include/avif/avif.h
+++ b/include/avif/avif.h
@@ -92,7 +92,7 @@
AVIF_RESULT_INVALID_IMAGE_GRID,
AVIF_RESULT_INVALID_CODEC_SPECIFIC_OPTION,
AVIF_RESULT_TRUNCATED_DATA,
- AVIF_RESULT_NO_IO,
+ AVIF_RESULT_IO_NOT_SET, // the avifIO field of avifDecoder is not set
AVIF_RESULT_IO_ERROR,
AVIF_RESULT_WAITING_ON_IO // similar to EAGAIN/EWOULDBLOCK, this means the avifIO doesn't have necessary data available yet
} avifResult;
diff --git a/src/avif.c b/src/avif.c
index 7864433..20d5888 100644
--- a/src/avif.c
+++ b/src/avif.c
@@ -88,7 +88,7 @@
case AVIF_RESULT_INVALID_IMAGE_GRID: return "Invalid image grid";
case AVIF_RESULT_INVALID_CODEC_SPECIFIC_OPTION: return "Invalid codec-specific option";
case AVIF_RESULT_TRUNCATED_DATA: return "Truncated data";
- case AVIF_RESULT_NO_IO: return "No IO";
+ case AVIF_RESULT_IO_NOT_SET: return "IO not set";
case AVIF_RESULT_IO_ERROR: return "IO Error";
case AVIF_RESULT_WAITING_ON_IO: return "Waiting on IO";
case AVIF_RESULT_UNKNOWN_ERROR:
diff --git a/src/read.c b/src/read.c
index da2c475..d78b5e8 100644
--- a/src/read.c
+++ b/src/read.c
@@ -2186,9 +2186,7 @@
avifResult avifDecoderSetIOMemory(avifDecoder * decoder, const uint8_t * data, size_t size)
{
avifIO * io = avifIOCreateMemoryReader(data, size);
- if (!io) {
- return AVIF_RESULT_NO_IO;
- }
+ assert(io);
avifDecoderSetIO(decoder, io);
return AVIF_RESULT_OK;
}
@@ -2197,7 +2195,7 @@
{
avifIO * io = avifIOCreateFileReader(filename);
if (!io) {
- return AVIF_RESULT_NO_IO;
+ return AVIF_RESULT_IO_ERROR;
}
avifDecoderSetIO(decoder, io);
return AVIF_RESULT_OK;
@@ -2258,7 +2256,7 @@
avifResult avifDecoderParse(avifDecoder * decoder)
{
if (!decoder->io || !decoder->io->read) {
- return AVIF_RESULT_NO_IO;
+ return AVIF_RESULT_IO_NOT_SET;
}
// Cleanup anything lingering in the decoder
@@ -2719,7 +2717,7 @@
avifResult avifDecoderNextImage(avifDecoder * decoder)
{
if (!decoder->io || !decoder->io->read) {
- return AVIF_RESULT_NO_IO;
+ return AVIF_RESULT_IO_NOT_SET;
}
uint32_t nextImageIndex = (uint32_t)(decoder->imageIndex + 1);