From 84ae5cdefce657cd713393277b0635d19e005a9c Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Thu, 15 Aug 2024 15:26:09 -0700 Subject: [PATCH] Minor comment fixes for the mini box code Change bit(2) version; to bit(2) version = 0; to match the spec exactly. --- include/avif/internal.h | 2 +- src/read.c | 4 +++- src/write.c | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/avif/internal.h b/include/avif/internal.h index c285900a0f..36c373790f 100644 --- a/include/avif/internal.h +++ b/include/avif/internal.h @@ -692,7 +692,7 @@ AVIF_NODISCARD avifBool avifROStreamReadBoxHeader(avifROStream * stream, avifBox AVIF_NODISCARD avifBool avifROStreamReadBoxHeaderPartial(avifROStream * stream, avifBoxHeader * header, avifBool topLevel); // This doesn't require that the full box can fit in the stream AVIF_NODISCARD avifBool avifROStreamReadVersionAndFlags(avifROStream * stream, uint8_t * version, uint32_t * flags); // version and flags ptrs are both optional AVIF_NODISCARD avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforcedVersion); // currently discards flags -// The following functions can write non-aligned bits. +// The following functions can read non-aligned bits. AVIF_NODISCARD avifBool avifROStreamReadBits8(avifROStream * stream, uint8_t * v, size_t bitCount); AVIF_NODISCARD avifBool avifROStreamReadBits(avifROStream * stream, uint32_t * v, size_t bitCount); diff --git a/src/read.c b/src/read.c index ded677f773..c8bc2c9bcc 100644 --- a/src/read.c +++ b/src/read.c @@ -3572,7 +3572,7 @@ static avifResult avifParseMinimizedImageBox(avifMeta * meta, uint64_t rawOffset meta->fromMiniBox = AVIF_TRUE; uint32_t version; - AVIF_CHECKERR(avifROStreamReadBits(&s, &version, 2), AVIF_RESULT_BMFF_PARSE_FAILED); // bit(2) version; + AVIF_CHECKERR(avifROStreamReadBits(&s, &version, 2), AVIF_RESULT_BMFF_PARSE_FAILED); // bit(2) version = 0; AVIF_CHECKERR(version == 0, AVIF_RESULT_BMFF_PARSE_FAILED); // flags @@ -3818,6 +3818,7 @@ static avifResult avifParseMinimizedImageBox(avifMeta * meta, uint64_t rawOffset // Chunks avifCodecConfigurationBox alphaItemCodecConfig = { 0 }; if (hasAlpha && alphaItemDataSize != 0 && alphaItemCodecConfigSize != 0) { + // 'av1C' always uses 4 bytes. AVIF_CHECKERR(alphaItemCodecConfigSize == 4, AVIF_RESULT_BMFF_PARSE_FAILED); AVIF_CHECKERR(avifParseCodecConfiguration(&s, &alphaItemCodecConfig, (const char *)codecConfigType, diag), AVIF_RESULT_BMFF_PARSE_FAILED); // unsigned int(8) alpha_item_codec_config[alpha_item_codec_config_size]; @@ -3825,6 +3826,7 @@ static avifResult avifParseMinimizedImageBox(avifMeta * meta, uint64_t rawOffset // if (hdr_flag && gainmap_flag && gainmap_item_codec_config_size > 0) // unsigned int(8) gainmap_item_codec_config[gainmap_item_codec_config_size]; avifCodecConfigurationBox mainItemCodecConfig = { 0 }; + // 'av1C' always uses 4 bytes. AVIF_CHECKERR(mainItemCodecConfigSize == 4, AVIF_RESULT_BMFF_PARSE_FAILED); AVIF_CHECKERR(avifParseCodecConfiguration(&s, &mainItemCodecConfig, (const char *)codecConfigType, diag), AVIF_RESULT_BMFF_PARSE_FAILED); // unsigned int(8) main_item_codec_config[main_item_codec_config_size]; diff --git a/src/write.c b/src/write.c index 027e588b1e..10b250acf3 100644 --- a/src/write.c +++ b/src/write.c @@ -2463,13 +2463,13 @@ static avifResult avifEncoderWriteMiniBox(avifEncoder * encoder, avifRWStream * const uint32_t smallDimensionsFlag = image->width <= (1 << 7) && image->height <= (1 << 7); const uint32_t codecConfigSize = 4; // 'av1C' always uses 4 bytes. - const uint32_t fewCodecConfigBytesFlag = codecConfigSize < (1 << 3); // 'av1C' always uses 4 bytes. + const uint32_t fewCodecConfigBytesFlag = codecConfigSize < (1 << 3); const uint32_t fewItemDataBytesFlag = colorData->size <= (1 << 15) && (!alphaData || alphaData->size < (1 << 15)); const uint32_t fewMetadataBytesFlag = image->icc.size <= (1 << 10) && image->exif.size <= (1 << 10) && image->xmp.size <= (1 << 10); avifBoxMarker mini; AVIF_CHECKRES(avifRWStreamWriteBox(s, "mini", AVIF_BOX_SIZE_TBD, &mini)); - AVIF_CHECKRES(avifRWStreamWriteBits(s, 0, 2)); // bit(2) version; + AVIF_CHECKRES(avifRWStreamWriteBits(s, 0, 2)); // bit(2) version = 0; // flags AVIF_CHECKRES(avifRWStreamWriteBits(s, hasExplicitCodecTypes, 1)); // bit(1) explicit_codec_types_flag;