Refactor imir implementation to match HEIF Draft Amendment 2, which replaces 'axis' with 'mode' and inverts the behavior
diff --git a/src/read.c b/src/read.c
index a37fb80..d363f84 100644
--- a/src/read.c
+++ b/src/read.c
@@ -1553,10 +1553,10 @@
BEGIN_STREAM(s, raw, rawLen, diag, "Box[imir]");
avifImageMirror * imir = &prop->u.imir;
- CHECK(avifROStreamRead(&s, &imir->axis, 1)); // unsigned int (7) reserved = 0; unsigned int (1) axis;
- if ((imir->axis & 0xfe) != 0) {
+ CHECK(avifROStreamRead(&s, &imir->mode, 1)); // unsigned int (7) reserved = 0; unsigned int (1) mode;
+ if ((imir->mode & 0xfe) != 0) {
// reserved bits must be 0
- avifDiagnosticsPrintf(diag, "Box[imir] contains nonzero reserved bits [%u]", imir->axis);
+ avifDiagnosticsPrintf(diag, "Box[imir] contains nonzero reserved bits [%u]", imir->mode);
return AVIF_FALSE;
}
return AVIF_TRUE;
diff --git a/src/write.c b/src/write.c
index 1c1d779..6a2474a 100644
--- a/src/write.c
+++ b/src/write.c
@@ -275,8 +275,8 @@
}
if (imageMetadata->transformFlags & AVIF_TRANSFORM_IMIR) {
avifBoxMarker imir = avifRWStreamWriteBox(s, "imir", AVIF_BOX_SIZE_TBD);
- uint8_t axis = imageMetadata->imir.axis & 0x1;
- avifRWStreamWrite(s, &axis, 1); // unsigned int (7) reserved = 0; unsigned int (1) axis;
+ uint8_t mode = imageMetadata->imir.mode & 0x1;
+ avifRWStreamWrite(s, &mode, 1); // unsigned int (7) reserved = 0; unsigned int (1) mode;
avifRWStreamFinishBox(s, imir);
if (ipma && itemPropertyIndex) {
ipmaPush(ipma, ++(*itemPropertyIndex), AVIF_TRUE);