Describe the bug
The oiiotool --attrib documentation state that it applies only to the top image.
However I had issues where it applied accross the whole image stack and it's a problem for me.
I believe that --dup does not clone the metadata so write attribute operations on the duplicated image go through the source images as well.
OpenImageIO version and dependencies
Happens on both ArchLinux version and fresh Git compiled version:
$ ./bin/oiiotool --buildinfo
OIIO 3.2.0.2dev | Linux/x86_64
Build compiler: gcc 16.2 | C++17/201703
HW features enabled at build: sse2
No CUDA support (disabled / unavailable at build time)
Dependencies: BZip2 1.0.8, DCMTK NONE, FFmpeg 8.0, fmt 12.2.0, Freetype 2.14.3, GIF 6.1.3, Imath 3.2.3, JXL 0.12.0, libdeflate 1.26, Libheif 1.23.2,
libjpeg-turbo 3.2.0, LibRaw 0.22.2, libuhdr NONE, nanobind 2.13.0, OpenColorIO 2.5.1, OpenCV 5.0.0, OpenEXR 3.4.15, OpenGL, OpenJPEG 2.5.4, openjph
0.31.0, OpenVDB 13.0.0, PNG 1.6.58, Ptex 2.5, Python3 3.14.7, Qt6 6.11.2, Robinmap 1.4.1, TBB 2023.1.0, TIFF 4.7.2, WebP 1.6.0, ZLIB 1.3.2
To Reproduce
$ oiiotool \
--create 256x256 1 \
--create 256x256 4 \
--dup \
--sattrib 'Dummy' 'attribute' \
--ch R,G,B \
--siappendall \
--printinfo:allsubimages=1
This output :
256 x 256, 1 channel, float
3 subimages: 256x256 [f], 256x256 [f,f,f,f], 256x256 [f,f,f]
subimage 0: 256 x 256, 1 channel, float
channel list: Y
subimage 1: 256 x 256, 4 channel, float
channel list: R, G, B, A
Dummy: "attribute"
subimage 2: 256 x 256, 3 channel, float
channel list: R, G, B
Dummy: "attribute"
The Dummy attribute should only be on the last subimage but it went through the previous image as well. If you play around you see that --dup seem to don't clone the metadata :
$ oiiotool \
--create 256x256 1 \
--create 256x256 4 \
--dup \
--dup \
--sattrib 'Dummy' 'attribute' \
--ch R,G,B \
--siappendall \
--printinfo:allsubimages=1
Output:
256 x 256, 1 channel, float
4 subimages: 256x256 [f], 256x256 [f,f,f,f], 256x256 [f,f,f,f], 256x256 [f,f,f]
subimage 0: 256 x 256, 1 channel, float
channel list: Y
subimage 1: 256 x 256, 4 channel, float
channel list: R, G, B, A
Dummy: "attribute"
subimage 2: 256 x 256, 4 channel, float
channel list: R, G, B, A
Dummy: "attribute"
subimage 3: 256 x 256, 3 channel, float
channel list: R, G, B
Dummy: "attribute"
And a last one with stack reordering reinforce the hypothesis that --dup doesn't duplicate metadata :
oiiotool \
--create 256x256 1 \
--create 256x256 4 \
--dup \
--dup \
--create 256x256 2 \
--stackextract 1 \
--sattrib 'Dummy' 'attribute' \
--ch R,G,B \
--siappendall \
--printinfo:allsubimages=1
Output:
256 x 256, 1 channel, float
5 subimages: 256x256 [f], 256x256 [f,f,f,f], 256x256 [f,f,f,f], 256x256 [f,f], 256x256 [f,f,f]
subimage 0: 256 x 256, 1 channel, float
channel list: Y
subimage 1: 256 x 256, 4 channel, float
channel list: R, G, B, A
Dummy: "attribute"
subimage 2: 256 x 256, 4 channel, float
channel list: R, G, B, A
Dummy: "attribute"
subimage 3: 256 x 256, 2 channel, float
channel list: R, G
subimage 4: 256 x 256, 3 channel, float
channel list: R, G, B
Dummy: "attribute"
Describe the bug
The oiiotool --attrib documentation state that it applies only to the top image.
However I had issues where it applied accross the whole image stack and it's a problem for me.
I believe that
--dupdoes not clone the metadata so write attribute operations on the duplicated image go through the source images as well.OpenImageIO version and dependencies
Happens on both ArchLinux version and fresh Git compiled version:
To Reproduce
This output :
The Dummy attribute should only be on the last subimage but it went through the previous image as well. If you play around you see that
--dupseem to don't clone the metadata :Output:
And a last one with stack reordering reinforce the hypothesis that
--dupdoesn't duplicate metadata :Output: