-
Notifications
You must be signed in to change notification settings - Fork 1
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
Does iods require Object Descriptors to have ESDescriptors? #90
Comments
Thanks for the question. As you note, the Object Descriptor Framework was introduced as part of MPEG-4 Systems. As of today, very few implementations support it. So, if your goal is to be compliant to ISOBMFF, I would simply remove the Regarding the detailed part of your question, I would have to check the specs deeper. @jeanlf may be able to answer faster, especially on the contributed files. |
The empty IOD was a trick used to signal profile and level of audio or visual stream before the mp4 spec was revised to indicate that the ExtensionProfileLevelDescriptor should be used (annex A of 14496-14). I guess we should patch these files indeed, do you have the complete list ? |
I just searched for null That gave me:
|
Hi all, I agree that having no descriptors seems to be wrong as described above, however additionally 14496-14, section 6.2.3 (semantics of the 'iods' box) says:
So having a ES_ID_Inc pointing to a ES_Descriptor within a 'esds' box in a track seems to be a valid option as well. The files listed above without any descriptors at all still need fixing I believe. |
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
The text was updated successfully, but these errors were encountered: