gpac / ComplianceWarden

A pluggable compliance checker (ISOBMFF, HEIF/MIAF/AVIF, AV1 HDR10+)
https://gpac.github.io/ComplianceWarden-wasm/
Other
16 stars 7 forks source link

order of transformations #14

Closed cconcolato closed 4 years ago

cconcolato commented 4 years ago

In our initial analysis we thought that the following normative statement (from 7.3.6.7) was not relevant for the validation tool:

These properties, if used, shall be indicated to be applied in the following order: clean aperture first, then rotation, then mirror.

On second thought, it does. 6.3 in HEIF indicates how rendering is done:

otherwise (the image item has transformative item properties), the following applies: A sequence of transformative item properties is formed from all essential transformative item properties of the image item and any set of the non-essential transformative item properties of the image item. That sequence of transformative item properties is applied, in the order of their appearance in the ItemPropertyAssociation for the image item, to the reconstructed image to obtain the output image.

The statement in MIAF is meant to say: the transformative properties (if specified) shall appear in the following order in the ItemPropertyAssociation for the image item: clean aperture first, then rotation, then mirror.

Such rule needs to be added. Maybe the spec should be clarified.

rbouqueau commented 4 years ago

After processing more samples, I realize that Apple files contains these transformative properties in the right order but may skip one or several. I.e. the sample files seem to consider that the following sequences are valid:

I am unsure if the following sequences would be valid:

What do you think? Should we clarify the text?

cconcolato commented 4 years ago

The spec says "These properties, if used," so it is fine to omit some of them. All of the combinations you listed are valid I think. The following would be invalid:

rbouqueau commented 4 years ago

I would be happy if Apple could speak up on this. My take is that they consider this is renderer requirement.