Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HEIF image sequence has false positives #91

Open
bradh opened this issue Feb 3, 2025 · 1 comment
Open

HEIF image sequence has false positives #91

bradh opened this issue Feb 3, 2025 · 1 comment

Comments

@bradh
Copy link
Contributor

bradh commented Feb 3, 2025

Describe the issue

ISO/IEC 23008-12:2022 has requirements that apply to images (essentially section 6) and image sequences (section 7). CW appears to
apply all the requirements to image sequences, although Section 6.1 states that the requirements in section 6 apply to images
and image collections.

To Reproduce
Steps to reproduce the behavior:

  1. CW from git master - ea329df
  2. See attached file (zipped for github)

pict.heifs.zip

./bin/cw.exe --spec heif pict.heifs 
+--------------------------------------+
|           heif validation            |
+--------------------------------------+

Specification description: HEIF - ISO/IEC 23008-12 - 2nd Edition N18310

[heif][Rule #0] Error: 'mif1' brand not found in 'ftyp' box
[heif][Rule #2] Error: 'meta' box not found at file level
[heif][Rule #3] Error: 'hdlr' not found in MetaBox
[heif][Rule #10] Error: ItemInfoBox is required
[heif][Rule #11] Error: image spatial extents property ("ispe") not detected.
[heif][Rule #14] Error: No primary item.
[heif][Rule #31] Error: 'msf1' brand: this file shall conform to HEIF (section 7.2)
[heif][Rule #33] Error: 'msf1' brand: this file shall conform to HEIF section 7, check the other errors for details

========================================
[heif] 8 error(s), 0 warning(s).
========================================

===== Involved rules descriptions:

[heif][Rule #0] Section 10.2.1.1
Files shall contain the brand 'mif1' in the compatible brands array of the
FileTypeBox.
/!\ this rule doesn't look for 'mif1' brands rule-conformance:
     if a brand is absent then its conformance rules won't be checked here /!\

[heif][Rule #2] Section 6.2
A MetaBox ('meta'), as specified in ISO/IEC 14496-12, is required at file level.

[heif][Rule #3] Section 6.2
The handler type for the MetaBox shall be 'pict'.

[heif][Rule #10] Section 7.2.1.9
ItemInfoBox Version 0 or 1 of this box is required by ISO/IEC 23008-12

[heif][Rule #11] Section 6.5.3.1
Every image item shall be associated with one [image spatial extents property],
prior to the association of all transformative properties.

[heif][Rule #14] Section 6.2
The file-level MetaBox shall identify as its primary item an item that is a
coded image or a derived image item

[heif][Rule #31] Section 10.3.1.1
Files shall contain the brand 'msf1' in the compatible brands:
- At least one track of handler type 'pict', as defined in 7.2, is required.
- It is required that 'iso8' is present among the compatible brands array.

[heif][Rule #33] Section 10.3
when a brand specified in 10.3 is among the compatible brands of a file,
the requirements specified in Clause 7 shall be obeyed

+--------------------------------------+
|          isobmff validation          |
+--------------------------------------+

Specification description: ISO Base Media File Format
MPEG-4 part 12 - ISO/IEC 14496-12 - m17277 (6th+FDAM1+FDAM2+COR1-R4)

========================================
[isobmff] No errors.
========================================

Detailed analysis

It seems like the heif spec target should be two separate targets - one for the requirements in section 6 and one for the requirements in section 7.

I think that the Rule 31 and 33 failures are probably separate issues, but that might be easier to deal with with after getting the structure right.

Also the failure on Rule 10 is probably pointing to the wrong section (no Section 7.2.1.9).

Potential patch

Need to understand desired direction first...

@rbouqueau
Copy link
Member

Nice catch. Did you notice the checkRuleSection function when processing profiles?

The challenge imho is that users should specify which spec they want to conform against. We can't rely on auto-detection (e.g. if auto-detection if based on "brands" and brands are missing...). That's why some newer developments also include a covered function to see if a feature was enforced. Maybe it means simply displaying what was detected, I have no clear idea and it should be driven by use-cases like yours :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants