Skip to content

Does iods require Object Descriptors to have ESDescriptors? #90

@bradh

Description

@bradh

ISO/IEC 14496-14:2020 section 6.2 describes the Object Descriptor Box.

I find this a bit hard to follow, but what I have is that the ObjectDescriptor field is either an OD with a special tag (MP4_OD_Tag) or IOD (MP4_IOD_Tag), and that those are defined in ISO/IEC 14496-1:2010 Section 7.2.6. (There is also a special case for the format of the ES descriptor - see ISO/IEC 14496-14:2020 Section 4.1.3, but I don't think that has direct bearing on the question, which I'll get to, I promise).

In ISO/IEC 14496-1:2010 Section 7.2.6 (and in Annex E.4 of that document, which is a bit easier to follow), there is the syntax for ObjectDescriptor (7.2.6.3.1) and InitialObjectDescriptor (7.2.6.4.1).

The way I read that is that at least one ES_Descriptor is required (the valid number of entries in the array is [1..255]), except for the case where its a URL, which it can't be from the restrictions in 14496-14 Section 4.1.2.

Is that a reasonable reading?

If so, there are several conformance sample files (I think 26 in total) that aren't showing the expected number. Examples:

https://github.com/MPEGGroup/FileFormatConformance/blob/main/data/file_features/published/isobmff/03_hinted_gpac.json#L51

https://github.com/MPEGGroup/FileFormatConformance/blob/main/data/file_features/published/isobmff/21_segment_gpac.json#L72

https://github.com/MPEGGroup/FileFormatConformance/blob/main/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit_gpac.json#L59

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions