MCPcopy Create free account
hub / github.com/AOMediaCodec/libavif / avifWriteGridPayload

Function avifWriteGridPayload

src/write.c:926–958  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

924}
925
926static avifResult avifWriteGridPayload(avifRWData * data, uint32_t gridCols, uint32_t gridRows, uint32_t gridWidth, uint32_t gridHeight)
927{
928 // ISO/IEC 23008-12 6.6.2.3.2
929 // aligned(8) class ImageGrid {
930 // unsigned int(8) version = 0;
931 // unsigned int(8) flags;
932 // FieldLength = ((flags & 1) + 1) * 16;
933 // unsigned int(8) rows_minus_one;
934 // unsigned int(8) columns_minus_one;
935 // unsigned int(FieldLength) output_width;
936 // unsigned int(FieldLength) output_height;
937 // }
938
939 uint8_t gridFlags = ((gridWidth > 65535) || (gridHeight > 65535)) ? 1 : 0;
940
941 avifRWStream s;
942 avifRWStreamStart(&s, data);
943 AVIF_CHECKRES(avifRWStreamWriteU8(&s, 0)); // unsigned int(8) version = 0;
944 AVIF_CHECKRES(avifRWStreamWriteU8(&s, gridFlags)); // unsigned int(8) flags;
945 AVIF_CHECKRES(avifRWStreamWriteU8(&s, (uint8_t)(gridRows - 1))); // unsigned int(8) rows_minus_one;
946 AVIF_CHECKRES(avifRWStreamWriteU8(&s, (uint8_t)(gridCols - 1))); // unsigned int(8) columns_minus_one;
947 if (gridFlags & 1) {
948 AVIF_CHECKRES(avifRWStreamWriteU32(&s, gridWidth)); // unsigned int(FieldLength) output_width;
949 AVIF_CHECKRES(avifRWStreamWriteU32(&s, gridHeight)); // unsigned int(FieldLength) output_height;
950 } else {
951 uint16_t tmpWidth = (uint16_t)gridWidth;
952 uint16_t tmpHeight = (uint16_t)gridHeight;
953 AVIF_CHECKRES(avifRWStreamWriteU16(&s, tmpWidth)); // unsigned int(FieldLength) output_width;
954 AVIF_CHECKRES(avifRWStreamWriteU16(&s, tmpHeight)); // unsigned int(FieldLength) output_height;
955 }
956 avifRWStreamFinishWrite(&s);
957 return AVIF_RESULT_OK;
958}
959
960static avifBool avifGainMapIdenticalChannels(const avifGainMap * gainMap)
961{

Callers 1

avifEncoderAddImageItemsFunction · 0.85

Calls 5

avifRWStreamStartFunction · 0.85
avifRWStreamWriteU8Function · 0.85
avifRWStreamWriteU32Function · 0.85
avifRWStreamWriteU16Function · 0.85
avifRWStreamFinishWriteFunction · 0.85

Tested by

no test coverage detected