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

Function avifEncoderWriteTransformativeProperties

src/write.c:788–840  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

786}
787
788static avifResult avifEncoderWriteTransformativeProperties(avifRWStream * dedupStream,
789 avifRWStream * outputStream,
790 const avifImage * imageMetadata,
791 avifItemPropertyAssociationArray * associations,
792 avifItemPropertyDedup * dedup)
793{
794 if (imageMetadata->transformFlags & AVIF_TRANSFORM_CLAP) {
795 if (dedup) {
796 avifItemPropertyDedupStart(dedup);
797 }
798 avifBoxMarker clap;
799 AVIF_CHECKRES(avifRWStreamWriteBox(dedupStream, "clap", AVIF_BOX_SIZE_TBD, &clap));
800 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.widthN)); // unsigned int(32) cleanApertureWidthN;
801 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.widthD)); // unsigned int(32) cleanApertureWidthD;
802 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.heightN)); // unsigned int(32) cleanApertureHeightN;
803 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.heightD)); // unsigned int(32) cleanApertureHeightD;
804 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.horizOffN)); // unsigned int(32) horizOffN;
805 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.horizOffD)); // unsigned int(32) horizOffD;
806 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.vertOffN)); // unsigned int(32) vertOffN;
807 AVIF_CHECKRES(avifRWStreamWriteU32(dedupStream, imageMetadata->clap.vertOffD)); // unsigned int(32) vertOffD;
808 AVIF_CHECKRES(avifRWStreamFinishBox(dedupStream, clap));
809 if (dedup) {
810 AVIF_CHECKRES(avifItemPropertyDedupFinish(dedup, outputStream, associations, /*essential=*/AVIF_TRUE));
811 }
812 }
813 if (imageMetadata->transformFlags & AVIF_TRANSFORM_IROT) {
814 if (dedup) {
815 avifItemPropertyDedupStart(dedup);
816 }
817 avifBoxMarker irot;
818 AVIF_CHECKRES(avifRWStreamWriteBox(dedupStream, "irot", AVIF_BOX_SIZE_TBD, &irot));
819 AVIF_CHECKRES(avifRWStreamWriteBits(dedupStream, 0, /*bitCount=*/6)); // unsigned int (6) reserved = 0;
820 AVIF_CHECKRES(avifRWStreamWriteBits(dedupStream, imageMetadata->irot.angle & 0x3, /*bitCount=*/2)); // unsigned int (2) angle;
821 AVIF_CHECKRES(avifRWStreamFinishBox(dedupStream, irot));
822 if (dedup) {
823 AVIF_CHECKRES(avifItemPropertyDedupFinish(dedup, outputStream, associations, /*essential=*/AVIF_TRUE));
824 }
825 }
826 if (imageMetadata->transformFlags & AVIF_TRANSFORM_IMIR) {
827 if (dedup) {
828 avifItemPropertyDedupStart(dedup);
829 }
830 avifBoxMarker imir;
831 AVIF_CHECKRES(avifRWStreamWriteBox(dedupStream, "imir", AVIF_BOX_SIZE_TBD, &imir));
832 AVIF_CHECKRES(avifRWStreamWriteBits(dedupStream, 0, /*bitCount=*/7)); // unsigned int(7) reserved = 0;
833 AVIF_CHECKRES(avifRWStreamWriteBits(dedupStream, imageMetadata->imir.axis ? 1 : 0, /*bitCount=*/1)); // unsigned int(1) axis;
834 AVIF_CHECKRES(avifRWStreamFinishBox(dedupStream, imir));
835 if (dedup) {
836 AVIF_CHECKRES(avifItemPropertyDedupFinish(dedup, outputStream, associations, /*essential=*/AVIF_TRUE));
837 }
838 }
839 return AVIF_RESULT_OK;
840}
841
842static avifResult avifRWStreamWriteHandlerBox(avifRWStream * s, const char handlerType[4])
843{

Callers 2

avifEncoderFinishFunction · 0.85

Calls 6

avifRWStreamWriteBoxFunction · 0.85
avifRWStreamWriteU32Function · 0.85
avifRWStreamFinishBoxFunction · 0.85
avifRWStreamWriteBitsFunction · 0.85

Tested by

no test coverage detected