-
Notifications
You must be signed in to change notification settings - Fork 45
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
Add AVC and HEVC codec mappings #377
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
two nits
c79eaf2
to
fbfad0a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. One request:
Could you insert a section somewhere else describing the general way how we allow extending CodecPrivate
? Then simply refer to that section from the AVC & HEVC mapping sections. That prevents mistakes by only having a single definition. And it makes the mapping more succinct.
The mapping section would then only say that "CodecPrivate can be extended as described in section XYZ. Valid extensions are: 1. mvcC as described in ISO …, 2. potentialOtherExtension as described in …"
fbfad0a
to
93c37e0
Compare
I modified the patch with a dedicated In a 2nd patch (in this PR) I add the 3 currently known and used block identifiers. Please review again. |
I'm a bit concerned about this Dolby Vision data being placed in CodecPrivate, and particularly having it placed directly after the MP4-style configuration data with no other boundary. This data will be useful to the high-level application (for detecting Dolby Vision streams, distinguishing BL from EL) in addition to being used by the decoder itself. This means the demuxer will want to expose the contents of the DOVIDecoderConfigurationRecord to the application as stream metadata. By placing it after a variable-length structure with no central length code, this adds a requirement that the demuxer internally parses the AVCDecoderConfigurationRecord/HEVCDecoderConfigurationRecord to determine its length, skip it, then read the extension blocks. This also means the Matroska CodecPrivate's contents would differ from that used in ISOBMFF, which means existing tools converting Matroska to MP4 will confusingly produce output with Matroska-style data. |
I'm not too happy that we're discussing this here instead of the corresponding issue #373. I'll continue there. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some more references needs and allowing only certain extensions per codec.
93c37e0
to
2935c89
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ISO reference doesn't seem to work.
1f50061
to
83ee8ae
Compare
This prepares the element specs for the storage of elements such as the mvcC extension for AVC video or the dvcC and hvcE extensions for HEVC video. It does so by * changing the verbiage to make BlockAdditionMapping not only referring to BlockAdditions in tracks, * making BlockAddIDValue non-mandatory which would indicate that the BlockAdditionMapping is actually an extension to CodecPrivate and * includes a first registered value for BlockAddIDType which signals that BlockAddIDExtraData contains a type & content like similar header atoms in ISO Base Media File Format files. See #373 for the discussion how to store things. Will affect PR #377 which will have to be adjusted to make use of these elements.
83ee8ae
to
1e0bb5b
Compare
Closing in favor of #390 ? |
AVC and HEVC are widely used in Matroska, but without explicit codec mapping.
This PR adds the mapping of AVC and HEVC in Matroska, including the definition of extension blocks in
CodecPrivate
.Fix #373.