Add indices to avifResult enum
Duplicate NO_AV1_ITEMS_FOUND as MISSING_IMAGE_ITEM.
Keep AVIF_RESULT_NO_AV1_ITEMS_FOUND for backward compatibility.
diff --git a/include/avif/avif.h b/include/avif/avif.h
index 12fbec4..6e86aa2 100644
--- a/include/avif/avif.h
+++ b/include/avif/avif.h
@@ -141,34 +141,37 @@
typedef enum avifResult
{
AVIF_RESULT_OK = 0,
- AVIF_RESULT_UNKNOWN_ERROR,
- AVIF_RESULT_INVALID_FTYP,
- AVIF_RESULT_NO_CONTENT,
- AVIF_RESULT_NO_YUV_FORMAT_SELECTED,
- AVIF_RESULT_REFORMAT_FAILED,
- AVIF_RESULT_UNSUPPORTED_DEPTH,
- AVIF_RESULT_ENCODE_COLOR_FAILED,
- AVIF_RESULT_ENCODE_ALPHA_FAILED,
- AVIF_RESULT_BMFF_PARSE_FAILED,
- AVIF_RESULT_NO_AV1_ITEMS_FOUND, // TODO(yguyon): Rename or add AVIF_RESULT_NO_AV2_ITEMS_FOUND
- AVIF_RESULT_DECODE_COLOR_FAILED,
- AVIF_RESULT_DECODE_ALPHA_FAILED,
- AVIF_RESULT_COLOR_ALPHA_SIZE_MISMATCH,
- AVIF_RESULT_ISPE_SIZE_MISMATCH,
- AVIF_RESULT_NO_CODEC_AVAILABLE,
- AVIF_RESULT_NO_IMAGES_REMAINING,
- AVIF_RESULT_INVALID_EXIF_PAYLOAD,
- AVIF_RESULT_INVALID_IMAGE_GRID,
- AVIF_RESULT_INVALID_CODEC_SPECIFIC_OPTION,
- AVIF_RESULT_TRUNCATED_DATA,
- 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
- AVIF_RESULT_INVALID_ARGUMENT, // an argument passed into this function is invalid
- AVIF_RESULT_NOT_IMPLEMENTED, // a requested code path is not (yet) implemented
- AVIF_RESULT_OUT_OF_MEMORY,
- AVIF_RESULT_CANNOT_CHANGE_SETTING, // a setting that can't change is changed during encoding
- AVIF_RESULT_INCOMPATIBLE_IMAGE // the image is incompatible with already encoded images
+ AVIF_RESULT_UNKNOWN_ERROR = 1,
+ AVIF_RESULT_INVALID_FTYP = 2,
+ AVIF_RESULT_NO_CONTENT = 3,
+ AVIF_RESULT_NO_YUV_FORMAT_SELECTED = 4,
+ AVIF_RESULT_REFORMAT_FAILED = 5,
+ AVIF_RESULT_UNSUPPORTED_DEPTH = 6,
+ AVIF_RESULT_ENCODE_COLOR_FAILED = 7,
+ AVIF_RESULT_ENCODE_ALPHA_FAILED = 8,
+ AVIF_RESULT_BMFF_PARSE_FAILED = 9,
+ AVIF_RESULT_MISSING_IMAGE_ITEM = 10,
+ AVIF_RESULT_DECODE_COLOR_FAILED = 11,
+ AVIF_RESULT_DECODE_ALPHA_FAILED = 12,
+ AVIF_RESULT_COLOR_ALPHA_SIZE_MISMATCH = 13,
+ AVIF_RESULT_ISPE_SIZE_MISMATCH = 14,
+ AVIF_RESULT_NO_CODEC_AVAILABLE = 15,
+ AVIF_RESULT_NO_IMAGES_REMAINING = 16,
+ AVIF_RESULT_INVALID_EXIF_PAYLOAD = 17,
+ AVIF_RESULT_INVALID_IMAGE_GRID = 18,
+ AVIF_RESULT_INVALID_CODEC_SPECIFIC_OPTION = 19,
+ AVIF_RESULT_TRUNCATED_DATA = 20,
+ AVIF_RESULT_IO_NOT_SET = 21, // the avifIO field of avifDecoder is not set
+ AVIF_RESULT_IO_ERROR = 22,
+ AVIF_RESULT_WAITING_ON_IO = 23, // similar to EAGAIN/EWOULDBLOCK, this means the avifIO doesn't have necessary data available yet
+ AVIF_RESULT_INVALID_ARGUMENT = 24, // an argument passed into this function is invalid
+ AVIF_RESULT_NOT_IMPLEMENTED = 25, // a requested code path is not (yet) implemented
+ AVIF_RESULT_OUT_OF_MEMORY = 26,
+ AVIF_RESULT_CANNOT_CHANGE_SETTING = 27, // a setting that can't change is changed during encoding
+ AVIF_RESULT_INCOMPATIBLE_IMAGE = 28, // the image is incompatible with already encoded images
+
+ // Kept for backward compatibility; please use the symbols above instead.
+ AVIF_RESULT_NO_AV1_ITEMS_FOUND = AVIF_RESULT_MISSING_IMAGE_ITEM
} avifResult;
AVIF_API const char * avifResultToString(avifResult result);
diff --git a/src/avif.c b/src/avif.c
index e314bf6..6fd3665 100644
--- a/src/avif.c
+++ b/src/avif.c
@@ -84,7 +84,7 @@
case AVIF_RESULT_ENCODE_COLOR_FAILED: return "Encoding of color planes failed";
case AVIF_RESULT_ENCODE_ALPHA_FAILED: return "Encoding of alpha plane failed";
case AVIF_RESULT_BMFF_PARSE_FAILED: return "BMFF parsing failed";
- case AVIF_RESULT_NO_AV1_ITEMS_FOUND: return "No AV1 items found";
+ case AVIF_RESULT_MISSING_IMAGE_ITEM: return "Missing or empty image item";
case AVIF_RESULT_DECODE_COLOR_FAILED: return "Decoding of color planes failed";
case AVIF_RESULT_DECODE_ALPHA_FAILED: return "Decoding of alpha plane failed";
case AVIF_RESULT_COLOR_ALPHA_SIZE_MISMATCH: return "Color and alpha planes size mismatch";
diff --git a/src/read.c b/src/read.c
index 42895ed..065b139 100644
--- a/src/read.c
+++ b/src/read.c
@@ -3611,7 +3611,7 @@
if ((info->grid.rows > 0) && (info->grid.columns > 0)) {
AVIF_CHECKERR(avifDecoderGenerateImageGridTiles(decoder, &info->grid, item, alpha), AVIF_RESULT_INVALID_IMAGE_GRID);
} else {
- AVIF_CHECKERR(item->size != 0, AVIF_RESULT_NO_AV1_ITEMS_FOUND);
+ AVIF_CHECKERR(item->size != 0, AVIF_RESULT_MISSING_IMAGE_ITEM);
const avifCodecType codecType = avifGetCodecType(item->type);
assert(codecType != AVIF_CODEC_TYPE_UNKNOWN);
@@ -3811,13 +3811,13 @@
if (data->meta->primaryItemID == 0) {
// A primary item is required
avifDiagnosticsPrintf(&decoder->diag, "Primary item not specified");
- return AVIF_RESULT_NO_AV1_ITEMS_FOUND;
+ return AVIF_RESULT_MISSING_IMAGE_ITEM;
}
avifDecoderItem * colorItem = avifDecoderDataFindItem(data, /*alpha=*/AVIF_FALSE, /*parentItemID=*/0);
if (!colorItem) {
avifDiagnosticsPrintf(&decoder->diag, "Primary item not found");
- return AVIF_RESULT_NO_AV1_ITEMS_FOUND;
+ return AVIF_RESULT_MISSING_IMAGE_ITEM;
}
colorProperties = &colorItem->properties;
if (!memcmp(colorItem->type, "grid", 4)) {