gpac / ComplianceWarden

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

AVIF validator should reject files without brand "avif" #19

Closed tdaede closed 3 years ago

tdaede commented 3 years ago

The attached image has a major brand "mif1" but no "avif" brand, which is not caught by the validator.

tiger_3layer_3res.zip

cconcolato commented 3 years ago

Strictly speaking the file is not invalid but the validator should emit a warning.

rbouqueau commented 3 years ago

AVIF validator should reject files without brand "avif"

I understand this is misleading. At the moment the compliance checker executes the checks independently. There is no holistic approach. So if the file doesn't contain the avif or the avis or the avio brand then there is technically nothing to be checked.

Also https://aomediacodec.github.io/av1-avif/#brands states:

As defined by [ISOBMFF], the presence of a brand in the compatible_brands list in the FileTypeBox can be interpreted as the permission for those AV1 Image File Format readers/parsers and AV1 Image File Format renderers that only implement the features required by the brand, to process the corresponding file and only the parts (e.g. items or sequences) that comply with the brand.

which re-inforces my interpretation that testing against AVIF when there is no advertised AVIF content (avif or avis or avio brand) is not a conformance issue.

Now I understand this is misleading since the user indicates to check against the AVIF rule set. To avoid any confusion what about adding a rule that checks that at least one brand in { avif, avis, avio } shall be present?

rbouqueau commented 3 years ago

Any opinion on this?

rbouqueau commented 3 years ago

Any news on this one? @cconcolato @tdaede @baumanj ?

baumanj commented 3 years ago

My understanding of the intent with the major_brand/compatible brands approach is that ISOBMFF files can conform to multiple brands, so not all AVIF will necessarily have avif as the major_brand, but it's probably worth a warning from the AVIF validator if that's not the case. If the avif brand isn't present in compatible_brands either, I'd say the validator should consider that an error.