Add IO stats to avif to see how large OBUs are after read/write
diff --git a/include/avif/avif.h b/include/avif/avif.h
index 5fd3471..4b1953b 100644
--- a/include/avif/avif.h
+++ b/include/avif/avif.h
@@ -281,6 +281,13 @@
avifProfileFormat profileFormat;
avifRawData icc;
avifNclxColorProfile nclx;
+
+ // Useful stats from the most recent read/write
+ struct IOStats
+ {
+ size_t colorOBUSize;
+ size_t alphaOBUSize;
+ } ioStats;
} avifImage;
avifImage * avifImageCreate(int width, int height, int depth, avifPixelFormat yuvFormat);
diff --git a/src/read.c b/src/read.c
index 7f5d03e..c87a079 100644
--- a/src/read.c
+++ b/src/read.c
@@ -707,5 +707,8 @@
if (codec) {
avifCodecDestroy(codec);
}
+
+ image->ioStats.colorOBUSize = colorOBU.size;
+ image->ioStats.alphaOBUSize = alphaOBU.size;
return AVIF_RESULT_OK;
}
diff --git a/src/write.c b/src/write.c
index 9719a7b..700867e 100644
--- a/src/write.c
+++ b/src/write.c
@@ -285,6 +285,13 @@
avifStreamFinishBox(&s, meta);
avifStreamFinishWrite(&s);
+
+ // -----------------------------------------------------------------------
+ // IO stats
+
+ image->ioStats.colorOBUSize = colorOBU.size;
+ image->ioStats.alphaOBUSize = alphaOBU.size;
+
result = AVIF_RESULT_OK;
// -----------------------------------------------------------------------