draft-ietf-cellar-codec-06.txt   draft-ietf-cellar-codec-07.txt 
cellar S. Lhomme cellar S. Lhomme
Internet-Draft Internet-Draft
Intended status: Informational M. Bunkus Intended status: Standards Track M. Bunkus
Expires: 14 October 2021 Expires: 12 April 2022
D. Rice D. Rice
12 April 2021 9 October 2021
Matroska Media Container Codec Specifications Matroska Media Container Codec Specifications
draft-ietf-cellar-codec-06 draft-ietf-cellar-codec-07
Abstract Abstract
This document defines the Matroska codec mappings, including the This document defines the Matroska codec mappings, including the
codec ID, layout of data in a "Block Element" and in an optional codec ID, layout of data in a Block Element and in an optional
"CodecPrivate Element". CodecPrivate Element.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 14 October 2021. This Internet-Draft will expire on 12 April 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License. provided without warranty as described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Status of this document . . . . . . . . . . . . . . . . . . . 5 2. Status of this document . . . . . . . . . . . . . . . . . . . 5
3. Security Considerations . . . . . . . . . . . . . . . . . . . 5 3. Security Considerations . . . . . . . . . . . . . . . . . . . 5
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
5. Notation and Conventions . . . . . . . . . . . . . . . . . . 5 5. Notation and Conventions . . . . . . . . . . . . . . . . . . 5
6. Codec Mappings . . . . . . . . . . . . . . . . . . . . . . . 5 6. Codec Mappings . . . . . . . . . . . . . . . . . . . . . . . 5
6.1. Defining Matroska Codec Support . . . . . . . . . . . . . 6 6.1. Defining Matroska Codec Support . . . . . . . . . . . . . 6
6.1.1. Codec ID . . . . . . . . . . . . . . . . . . . . . . 6 6.1.1. Codec ID . . . . . . . . . . . . . . . . . . . . . . 6
6.1.2. Codec Name . . . . . . . . . . . . . . . . . . . . . 7 6.1.2. Codec Name . . . . . . . . . . . . . . . . . . . . . 7
6.1.3. Description . . . . . . . . . . . . . . . . . . . . . 7 6.1.3. Description . . . . . . . . . . . . . . . . . . . . . 7
6.1.4. Initialization . . . . . . . . . . . . . . . . . . . 7 6.1.4. Initialization . . . . . . . . . . . . . . . . . . . 7
6.1.5. Codec BlockAdditions . . . . . . . . . . . . . . . . 7 6.1.5. Codec BlockAdditions . . . . . . . . . . . . . . . . 8
6.1.6. Citation . . . . . . . . . . . . . . . . . . . . . . 8 6.1.6. Citation . . . . . . . . . . . . . . . . . . . . . . 9
6.1.7. Deprecation Date . . . . . . . . . . . . . . . . . . 9 6.1.7. Deprecation Date . . . . . . . . . . . . . . . . . . 9
6.1.8. Superseded By . . . . . . . . . . . . . . . . . . . . 9 6.1.8. Superseded By . . . . . . . . . . . . . . . . . . . . 9
6.2. Recommendations for the Creation of New Codec Mappings . 9 6.2. Recommendations for the Creation of New Codec Mappings . 9
6.3. Video Codec Mappings . . . . . . . . . . . . . . . . . . 9 6.3. Video Codec Mappings . . . . . . . . . . . . . . . . . . 9
6.3.1. V_MS/VFW/FOURCC . . . . . . . . . . . . . . . . . . . 9 6.3.1. V_MS/VFW/FOURCC . . . . . . . . . . . . . . . . . . . 9
6.3.2. V_UNCOMPRESSED . . . . . . . . . . . . . . . . . . . 10 6.3.2. V_UNCOMPRESSED . . . . . . . . . . . . . . . . . . . 10
6.3.3. V_MPEG4/ISO/SP . . . . . . . . . . . . . . . . . . . 10 6.3.3. V_MPEG4/ISO/SP . . . . . . . . . . . . . . . . . . . 10
6.3.4. V_MPEG4/ISO/ASP . . . . . . . . . . . . . . . . . . . 10 6.3.4. V_MPEG4/ISO/ASP . . . . . . . . . . . . . . . . . . . 10
6.3.5. V_MPEG4/ISO/AP . . . . . . . . . . . . . . . . . . . 11 6.3.5. V_MPEG4/ISO/AP . . . . . . . . . . . . . . . . . . . 11
6.3.6. V_MPEG4/MS/V3 . . . . . . . . . . . . . . . . . . . . 11 6.3.6. V_MPEG4/MS/V3 . . . . . . . . . . . . . . . . . . . . 11
6.3.7. V_MPEG1 . . . . . . . . . . . . . . . . . . . . . . . 11 6.3.7. V_MPEG1 . . . . . . . . . . . . . . . . . . . . . . . 11
6.3.8. V_MPEG2 . . . . . . . . . . . . . . . . . . . . . . . 11 6.3.8. V_MPEG2 . . . . . . . . . . . . . . . . . . . . . . . 12
6.3.9. V_MPEG4/ISO/AVC . . . . . . . . . . . . . . . . . . . 12 6.3.9. V_MPEG4/ISO/AVC . . . . . . . . . . . . . . . . . . . 12
6.3.10. V_MPEGH/ISO/HEVC . . . . . . . . . . . . . . . . . . 12 6.3.10. V_MPEGH/ISO/HEVC . . . . . . . . . . . . . . . . . . 12
6.3.11. V_AVS2 . . . . . . . . . . . . . . . . . . . . . . . 12 6.3.11. V_AVS2 . . . . . . . . . . . . . . . . . . . . . . . 13
6.3.12. V_REAL/RV10 . . . . . . . . . . . . . . . . . . . . . 13 6.3.12. V_REAL/RV10 . . . . . . . . . . . . . . . . . . . . . 13
6.3.13. V_REAL/RV20 . . . . . . . . . . . . . . . . . . . . . 13 6.3.13. V_REAL/RV20 . . . . . . . . . . . . . . . . . . . . . 13
6.3.14. V_REAL/RV30 . . . . . . . . . . . . . . . . . . . . . 13 6.3.14. V_REAL/RV30 . . . . . . . . . . . . . . . . . . . . . 13
6.3.15. V_REAL/RV40 . . . . . . . . . . . . . . . . . . . . . 14 6.3.15. V_REAL/RV40 . . . . . . . . . . . . . . . . . . . . . 14
6.3.16. V_QUICKTIME . . . . . . . . . . . . . . . . . . . . . 14 6.3.16. V_QUICKTIME . . . . . . . . . . . . . . . . . . . . . 14
6.3.17. V_THEORA . . . . . . . . . . . . . . . . . . . . . . 14 6.3.17. V_THEORA . . . . . . . . . . . . . . . . . . . . . . 14
6.3.18. V_PRORES . . . . . . . . . . . . . . . . . . . . . . 15 6.3.18. V_PRORES . . . . . . . . . . . . . . . . . . . . . . 15
6.3.19. V_VP8 . . . . . . . . . . . . . . . . . . . . . . . . 15 6.3.19. V_VP8 . . . . . . . . . . . . . . . . . . . . . . . . 15
6.3.20. V_VP9 . . . . . . . . . . . . . . . . . . . . . . . . 16 6.3.20. V_VP9 . . . . . . . . . . . . . . . . . . . . . . . . 16
6.3.21. V_FFV1 . . . . . . . . . . . . . . . . . . . . . . . 16 6.3.21. V_FFV1 . . . . . . . . . . . . . . . . . . . . . . . 16
skipping to change at page 4, line 8 skipping to change at page 4, line 8
6.6.1. B_VOBBTN . . . . . . . . . . . . . . . . . . . . . . 30 6.6.1. B_VOBBTN . . . . . . . . . . . . . . . . . . . . . . 30
6.7. Block Addition Mappings . . . . . . . . . . . . . . . . . 30 6.7. Block Addition Mappings . . . . . . . . . . . . . . . . . 30
6.7.1. Use BlockAddIDValue . . . . . . . . . . . . . . . . . 30 6.7.1. Use BlockAddIDValue . . . . . . . . . . . . . . . . . 30
6.7.2. Opaque data . . . . . . . . . . . . . . . . . . . . . 30 6.7.2. Opaque data . . . . . . . . . . . . . . . . . . . . . 30
6.7.3. ITU T.35 metadata . . . . . . . . . . . . . . . . . . 31 6.7.3. ITU T.35 metadata . . . . . . . . . . . . . . . . . . 31
6.7.4. avcE . . . . . . . . . . . . . . . . . . . . . . . . 31 6.7.4. avcE . . . . . . . . . . . . . . . . . . . . . . . . 31
6.7.5. dvcC . . . . . . . . . . . . . . . . . . . . . . . . 31 6.7.5. dvcC . . . . . . . . . . . . . . . . . . . . . . . . 31
6.7.6. dvvC . . . . . . . . . . . . . . . . . . . . . . . . 31 6.7.6. dvvC . . . . . . . . . . . . . . . . . . . . . . . . 31
6.7.7. hvcE . . . . . . . . . . . . . . . . . . . . . . . . 31 6.7.7. hvcE . . . . . . . . . . . . . . . . . . . . . . . . 31
6.7.8. mvcC . . . . . . . . . . . . . . . . . . . . . . . . 32 6.7.8. mvcC . . . . . . . . . . . . . . . . . . . . . . . . 32
6.8. This extension MUST NOT be used if "Codec ID" is not 6.8. This extension MUST NOT be used if Codec ID is not
"V_MPEG4/ISO/AVC". . . . . . . . . . . . . . . . . . . . 32 V_MPEG4/ISO/AVC. . . . . . . . . . . . . . . . . . . . . 32
6.9. title: Subtitles . . . . . . . . . . . . . . . . . . . . 32 6.9. title: Subtitles . . . . . . . . . . . . . . . . . . . . 32
7. Subtitles . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7. Subtitles . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.1. Images Subtitles . . . . . . . . . . . . . . . . . . . . 33 7.1. Images Subtitles . . . . . . . . . . . . . . . . . . . . 33
7.2. SRT Subtitles . . . . . . . . . . . . . . . . . . . . . . 36 7.2. SRT Subtitles . . . . . . . . . . . . . . . . . . . . . . 36
7.3. SSA/ASS Subtitles . . . . . . . . . . . . . . . . . . . . 36 7.3. SSA/ASS Subtitles . . . . . . . . . . . . . . . . . . . . 36
7.4. WebVTT . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.4. WebVTT . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.4.1. Storage of WebVTT in Matroska . . . . . . . . . . . . 41 7.4.1. Storage of WebVTT in Matroska . . . . . . . . . . . . 41
7.4.1.1. CodecID: codec identification . . . . . . . . . . 41
7.4.1.2. CodecPrivate: storage of global WebVTT blocks . . 41
7.4.1.3. Storage of non-global WebVTT blocks . . . . . . . 41
7.4.1.4. Storage of Cues in Matroska blocks . . . . . . . 41
7.4.1.5. BlockAdditions: storing non-global WebVTT blocks,
Cue Settings Lists and Cue identifiers . . . . . . 42
7.4.2. Examples of transformation . . . . . . . . . . . . . 42 7.4.2. Examples of transformation . . . . . . . . . . . . . 42
7.4.2.1. Example WebVTT file . . . . . . . . . . . . . . . 42
7.4.2.2. Example of CodecPrivate . . . . . . . . . . . . . 43
7.4.2.3. Storage of Cue 1 . . . . . . . . . . . . . . . . 44
7.4.2.4. Storage of Cue 2 . . . . . . . . . . . . . . . . 44
7.4.2.5. Storage of Cue 3 . . . . . . . . . . . . . . . . 45
7.4.2.6. Storage of Cue 4 . . . . . . . . . . . . . . . . 45
7.4.3. Storage of WebVTT in Matroska vs. WebM . . . . . . . 45 7.4.3. Storage of WebVTT in Matroska vs. WebM . . . . . . . 45
7.5. HDMV presentation graphics subtitles . . . . . . . . . . 46 7.5. HDMV presentation graphics subtitles . . . . . . . . . . 46
7.5.1. Storage of HDMV presentation graphics subtitles . . . 46 7.5.1. Storage of HDMV presentation graphics subtitles . . . 46
7.5.1.1. Storage of HDMV PGS Segments in Matroska
Blocks . . . . . . . . . . . . . . . . . . . . . . 46
7.6. HDMV text subtitles . . . . . . . . . . . . . . . . . . . 46 7.6. HDMV text subtitles . . . . . . . . . . . . . . . . . . . 46
7.6.1. Storage of HDMV text subtitles . . . . . . . . . . . 46 7.6.1. Storage of HDMV text subtitles . . . . . . . . . . . 46
7.6.1.1. Storage of HDMV TextST Dialog Presentation Segments
in Matroska Blocks . . . . . . . . . . . . . . . . 47
7.6.1.2. Character set . . . . . . . . . . . . . . . . . . 47
7.7. Digital Video Broadcasting (DVB) subtitles . . . . . . . 47 7.7. Digital Video Broadcasting (DVB) subtitles . . . . . . . 47
7.7.1. Storage of DVB subtitles . . . . . . . . . . . . . . 48 7.7.1. Storage of DVB subtitles . . . . . . . . . . . . . . 48
7.7.1.1. CodecID . . . . . . . . . . . . . . . . . . . . . 48
7.7.1.2. CodecPrivate . . . . . . . . . . . . . . . . . . 48
7.7.1.3. Storage of DVB subtitles in Matroska Blocks . . . 48
7.8. in that Block SHOULD be displayed. . . . . . . . . . . . 48 7.8. in that Block SHOULD be displayed. . . . . . . . . . . . 48
7.9. title: Block Additional Mapping . . . . . . . . . . . . . 48 7.9. title: Block Additional Mapping . . . . . . . . . . . . . 48
8. Block Additional Mapping . . . . . . . . . . . . . . . . . . 48 8. Block Additional Mapping . . . . . . . . . . . . . . . . . . 48
8.1. Summary of Assigned BlockAddIDType Values . . . . . . . . 50 8.1. Summary of Assigned BlockAddIDType Values . . . . . . . . 50
8.2. SMPTE ST 12-1 Timecode . . . . . . . . . . . . . . . . . 50 8.2. SMPTE ST 12-1 Timecode . . . . . . . . . . . . . . . . . 50
8.2.1. Timecode Description . . . . . . . . . . . . . . . . 50 8.2.1. Timecode Description . . . . . . . . . . . . . . . . 50
8.2.2. BlockAddIDType . . . . . . . . . . . . . . . . . . . 51 8.2.2. BlockAddIDType . . . . . . . . . . . . . . . . . . . 51
8.2.3. BlockAddIDName . . . . . . . . . . . . . . . . . . . 51 8.2.3. BlockAddIDName . . . . . . . . . . . . . . . . . . . 51
8.2.4. BlockAddIDExtraData . . . . . . . . . . . . . . . . . 52 8.2.4. BlockAddIDExtraData . . . . . . . . . . . . . . . . . 52
9. Normative References . . . . . . . . . . . . . . . . . . . . 52 9. Normative References . . . . . . . . . . . . . . . . . . . . 52
skipping to change at page 5, line 32 skipping to change at page 5, line 48
5. Notation and Conventions 5. Notation and Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
6. Codec Mappings 6. Codec Mappings
A "Codec Mapping" is a set of attributes to identify, name, and A Codec Mapping is a set of attributes to identify, name, and
contextualize the format and characteristics of encoded data that can contextualize the format and characteristics of encoded data that can
be contained within Matroska Clusters. be contained within Matroska Clusters.
Each TrackEntry used within Matroska MUST reference a defined "Codec Each TrackEntry used within Matroska MUST reference a defined Codec
Mapping" using the "Codec ID" to identify and describe the format of Mapping using the Codec ID to identify and describe the format of the
the encoded data in its associated Clusters. This "Codec ID" is a encoded data in its associated Clusters. This Codec ID is a unique
unique registered identifier that represents the encoding stored registered identifier that represents the encoding stored within the
within the Track. Certain encodings MAY also require some form of Track. Certain encodings MAY also require some form of codec
codec initialization in order to provide its decoder with context and initialization in order to provide its decoder with context and
technical metadata. technical metadata.
The intention behind this list is not to list all existing audio and The intention behind this list is not to list all existing audio and
video codecs, but rather to list those codecs that are currently video codecs, but rather to list those codecs that are currently
supported in Matroska and therefore need a well defined "Codec ID" so supported in Matroska and therefore need a well defined Codec ID so
that all developers supporting Matroska will use the same "Codec ID". that all developers supporting Matroska will use the same Codec ID.
If you feel we missed support for a very important codec, please tell If you feel we missed support for a very important codec, please tell
us on our development mailing list (cellar at ietf.org). us on our development mailing list (cellar at ietf.org).
6.1. Defining Matroska Codec Support 6.1. Defining Matroska Codec Support
Support for a codec is defined in Matroska with the following values. Support for a codec is defined in Matroska with the following values.
6.1.1. Codec ID 6.1.1. Codec ID
Each codec supported for storage in Matroska MUST have a unique Each codec supported for storage in Matroska MUST have a unique Codec
"Codec ID". Each "Codec ID" MUST be prefixed with the string from ID. Each Codec ID MUST be prefixed with the string from the
the following table according to the associated type of the codec. following table according to the associated type of the codec. All
All characters of a "Codec ID Prefix" MUST be capital letters (A-Z) characters of a Codec ID Prefix MUST be capital letters (A-Z) except
except for the last character of a "Codec ID Prefix" which MUST be an for the last character of a Codec ID Prefix which MUST be an
underscore ("_"). underscore ("_").
+============+=================+ +============+=================+
| Codec Type | Codec ID Prefix | | Codec Type | Codec ID Prefix |
+============+=================+ +============+=================+
| Video | "V_" | | Video | "V_" |
+------------+-----------------+ +------------+-----------------+
| Audio | "A_" | | Audio | "A_" |
+------------+-----------------+ +------------+-----------------+
| Subtitle | "S_" | | Subtitle | "S_" |
+------------+-----------------+ +------------+-----------------+
| Button | "B_" | | Button | "B_" |
+------------+-----------------+ +------------+-----------------+
Table 1 Table 1
Each "Codec ID" MUST include a "Major Codec ID" immediately following Each Codec ID MUST include a Major Codec ID immediately following the
the "Codec ID Prefix". A "Major Codec ID" MAY be followed by an Codec ID Prefix. A Major Codec ID MAY be followed by an OPTIONAL
OPTIONAL "Codec ID Suffix" to communicate a refinement of the "Major Codec ID Suffix to communicate a refinement of the Major Codec ID.
Codec ID". If a "Codec ID Suffix" is used, then the "Codec ID" MUST If a Codec ID Suffix is used, then the Codec ID MUST include a
include a forward slash ("/") as a separator between the "Major Codec forward slash ("/") as a separator between the Major Codec ID and the
ID" and the "Codec ID Suffix". The "Major Codec ID" MUST be composed Codec ID Suffix. The Major Codec ID MUST be composed of only capital
of only capital letters (A-Z) and numbers (0-9). The "Codec ID letters (A-Z) and numbers (0-9). The Codec ID Suffix MUST be
Suffix" MUST be composed of only capital letters (A-Z), numbers composed of only capital letters (A-Z), numbers (0-9), underscore
(0-9), underscore ("_"), and forward slash ("/"). ("_"), and forward slash ("/").
The following table provides examples of valid "Codec IDs" and their The following table provides examples of valid Codec IDs and their
components: components:
+==========+==========+===========+===========+=================+ +==========+==========+===========+===========+=================+
| Codec ID | Major | Separator | Codec ID | Codec ID | | Codec ID | Major | Separator | Codec ID | Codec ID |
| Prefix | Codec ID | | Suffix | | | Prefix | Codec ID | | Suffix | |
+==========+==========+===========+===========+=================+ +==========+==========+===========+===========+=================+
| A_ | AAC | / | MPEG2/LC/ | A_AAC/MPEG2/LC/ | | A_ | AAC | / | MPEG2/LC/ | A_AAC/MPEG2/LC/ |
| | | | SBR | SBR | | | | | SBR | SBR |
+----------+----------+-----------+-----------+-----------------+ +----------+----------+-----------+-----------+-----------------+
| V_ | MPEG4 | / | ISO/ASP | V_MPEG4/ISO/ASP | | V_ | MPEG4 | / | ISO/ASP | V_MPEG4/ISO/ASP |
+----------+----------+-----------+-----------+-----------------+ +----------+----------+-----------+-----------+-----------------+
| V_ | MPEG1 | | | V_MPEG1 | | V_ | MPEG1 | | | V_MPEG1 |
+----------+----------+-----------+-----------+-----------------+ +----------+----------+-----------+-----------+-----------------+
Table 2 Table 2
6.1.2. Codec Name 6.1.2. Codec Name
Each encoding supported for storage in Matroska MUST have a "Codec Each encoding supported for storage in Matroska MUST have a Codec
Name". The "Codec Name" provides a readable label for the encoding. Name. The Codec Name provides a readable label for the encoding.
6.1.3. Description 6.1.3. Description
An optional description for the encoding. This value is only An optional description for the encoding. This value is only
intended for human consumption. intended for human consumption.
6.1.4. Initialization 6.1.4. Initialization
Each encoding supported for storage in Matroska MUST have a defined Each encoding supported for storage in Matroska MUST have a defined
Initialization. The Initialization MUST describe the storage of data Initialization. The Initialization MUST describe the storage of data
necessary to initialize the decoder, which MUST be stored within the necessary to initialize the decoder, which MUST be stored within the
"CodecPrivate Element". When the Initialization is updated within a CodecPrivate Element. When the Initialization is updated within a
track, then that updated Initialization data MUST be written into the track, then that updated Initialization data MUST be written into the
"CodecState Element" of the first "Cluster" to require it. If the CodecState Element of the first Cluster to require it. If the
encoding does not require any form of Initialization, then "none" encoding does not require any form of Initialization, then none MUST
MUST be used to define the Initialization and the "CodecPrivate be used to define the Initialization and the CodecPrivate Element
Element" SHOULD NOT be written and MUST be ignored. Data that is SHOULD NOT be written and MUST be ignored. Data that is defined
defined Initialization to be stored in the "CodecPrivate Element" is Initialization to be stored in the CodecPrivate Element is known as
known as "Private Data". Private Data.
6.1.5. Codec BlockAdditions 6.1.5. Codec BlockAdditions
Additional data that contextualizes or supplements a "Block" can be Additional data that contextualizes or supplements a Block can be
stored within the "BlockAdditional Element" of a "BlockMore Element". stored within the BlockAdditional Element of a BlockMore Element.
This "BlockAdditional" data MAY be passed to the associated decoder This BlockAdditional data MAY be passed to the associated decoder
along with the content of the "Block Element". Each along with the content of the Block Element. Each BlockAdditional is
"BlockAdditional" is coupled with a "BlockAddID" that identifies the coupled with a BlockAddID that identifies the kind of data it
kind of data it contains. The following table defines the meanings contains. The following table defines the meanings of BlockAddID
of "BlockAddID" values. values.
+============+=================================================+ +============+=====================================================+
| BlockAddID | Definition | | BlockAddID | Definition |
| Value | | | Value | |
+============+=================================================+ +============+=====================================================+
| 0 | Invalid. | | 0 | Invalid. |
+------------+-------------------------------------------------+ +------------+-----------------------------------------------------+
| 1 | Indicates that the context of the | | 1 | Indicates that the context of the BlockAdditional |
| | "BlockAdditional" data is defined by the | | | data is defined by the corresponding Codec Mapping. |
| | corresponding "Codec Mapping". | +------------+-----------------------------------------------------+
+------------+-------------------------------------------------+ | 2 or | BlockAddID values of 2 and greater are mapped to |
| 2 or | "BlockAddID" values of 2 and greater are mapped | | greater | the BlockAddIDValue of the BlockAdditionMapping of |
| greater | to the "BlockAddIDValue" of the | | | the associated Track. |
| | "BlockAdditionMapping" of the associated Track. | +------------+-----------------------------------------------------+
+------------+-------------------------------------------------+
Table 3 Table 3
The values of "BlockAddID" that are 2 of greater have no semantic The values of BlockAddID that are 2 of greater have no semantic
meaning, but simply associate the "BlockMore Element" with a meaning, but simply associate the BlockMore Element with a
"BlockAdditionMapping" of the associated Track. See Section 8 on BlockAdditionMapping of the associated Track. See Section 8 on Block
Block Additional Mappings for more information. Additional Mappings for more information.
The following XML depicts the nested Elements of a "BlockGroup The following XML depicts the nested Elements of a BlockGroup Element
Element" with an example of BlockAdditions: with an example of BlockAdditions:
<BlockGroup> <BlockGroup>
<Block>{Binary data of a VP9 video frame in YUV}</Block> <Block>{Binary data of a VP9 video frame in YUV}</Block>
<BlockAdditions> <BlockAdditions>
<BlockMore> <BlockMore>
<BlockAddID>1</BlockAddID> <BlockAddID>1</BlockAddID>
<BlockAdditional> <BlockAdditional>
{alpha channel encoding to supplement the VP9 frame} {alpha channel encoding to supplement the VP9 frame}
</BlockAdditional> </BlockAdditional>
</BlockMore> </BlockMore>
skipping to change at page 9, line 8 skipping to change at page 9, line 13
</BlockGroup> </BlockGroup>
6.1.6. Citation 6.1.6. Citation
Documentation of the associated normative and informative references Documentation of the associated normative and informative references
for the codec is RECOMMENDED. for the codec is RECOMMENDED.
6.1.7. Deprecation Date 6.1.7. Deprecation Date
A timestamp, expressed in [RFC3339] that notes when support for the A timestamp, expressed in [RFC3339] that notes when support for the
"Codec Mapping" within Matroska was deprecated. If a "Codec Mapping" Codec Mapping within Matroska was deprecated. If a Codec Mapping is
is defined with a "Deprecation Date", then it is RECOMMENDED that defined with a Deprecation Date, then it is RECOMMENDED that Matroska
Matroska writers SHOULD NOT use the "Codec Mapping" after the writers SHOULD NOT use the Codec Mapping after the Deprecation Date.
"Deprecation Date".
6.1.8. Superseded By 6.1.8. Superseded By
A "Codec Mapping" MAY only be defined with a "Superseded By" value, A Codec Mapping MAY only be defined with a Superseded By value, if it
if it has an expressed "Deprecation Date". If used, the "Superseded has an expressed Deprecation Date. If used, the Superseded By value
By" value MUST store the "Codec ID" of another "Codec Mapping" that MUST store the Codec ID of another Codec Mapping that has superseded
has superseded the "Codec Mapping". the Codec Mapping.
6.2. Recommendations for the Creation of New Codec Mappings 6.2. Recommendations for the Creation of New Codec Mappings
Creators of new "Codec Mappings" to be used in the context of Creators of new Codec Mappings to be used in the context of Matroska:
Matroska:
* SHOULD assume that all "Codec Mappings" they create might become * SHOULD assume that all Codec Mappings they create might become
standardized, public, commonly deployed, or usable across multiple standardized, public, commonly deployed, or usable across multiple
implementations. implementations.
* SHOULD employ meaningful values for "Codec ID" and "Codec Name" * SHOULD employ meaningful values for Codec ID and Codec Name that
that they have reason to believe are currently unused. they have reason to believe are currently unused.
* SHOULD NOT prefix their "Codec ID" with "X_" or similar * SHOULD NOT prefix their Codec ID with "X_" or similar constructs.
constructs.
These recommendations are based upon Section 3 of [RFC6648]. These recommendations are based upon Section 3 of [RFC6648].
6.3. Video Codec Mappings 6.3. Video Codec Mappings
6.3.1. V_MS/VFW/FOURCC 6.3.1. V_MS/VFW/FOURCC
Codec ID: "V_MS/VFW/FOURCC" Codec ID: V_MS/VFW/FOURCC
Codec Name: Microsoft (TM) Video Codec Manager (VCM) Codec Name: Microsoft (TM) Video Codec Manager (VCM)
Description: The private data contains the VCM structure Description: The private data contains the VCM structure
BITMAPINFOHEADER including the extra private bytes, as defined by BITMAPINFOHEADER including the extra private bytes, as defined by
Microsoft (https://msdn.microsoft.com/en-us/library/windows/desktop/ Microsoft (https://msdn.microsoft.com/en-us/library/windows/desktop/
dd318229(v=vs.85).aspx). The data are stored in little-endian format dd318229(v=vs.85).aspx). The data are stored in little-endian format
(like on IA32 machines). Where is the Huffman table stored in (like on IA32 machines). Where is the Huffman table stored in
HuffYUV, not AVISTREAMINFO ??? And the FourCC, not in HuffYUV, not AVISTREAMINFO ??? And the FourCC, not in
AVISTREAMINFO.fccHandler ??? AVISTREAMINFO.fccHandler ???
Initialization: "Private Data" contains the VCM structure
Initialization: Private Data contains the VCM structure
BITMAPINFOHEADER including the extra private bytes, as defined by BITMAPINFOHEADER including the extra private bytes, as defined by
Microsoft in https://msdn.microsoft.com/en- Microsoft in https://msdn.microsoft.com/en-
us/library/windows/desktop/dd183376(v=vs.85).aspx us/library/windows/desktop/dd183376(v=vs.85).aspx
(https://msdn.microsoft.com/en-us/library/windows/desktop/ (https://msdn.microsoft.com/en-us/library/windows/desktop/
dd183376(v=vs.85).aspx). dd183376(v=vs.85).aspx).
Citation: https://msdn.microsoft.com/en-us/library/windows/desktop/ Citation: https://msdn.microsoft.com/en-us/library/windows/desktop/
dd183376(v=vs.85).aspx (https://msdn.microsoft.com/en- dd183376(v=vs.85).aspx (https://msdn.microsoft.com/en-
us/library/windows/desktop/dd183376(v=vs.85).aspx) us/library/windows/desktop/dd183376(v=vs.85).aspx)
skipping to change at page 10, line 43 skipping to change at page 11, line 4
transmuxed from AVI (no b-frames in Simple Profile), frame order is transmuxed from AVI (no b-frames in Simple Profile), frame order is
coding order. coding order.
Initialization: none Initialization: none
6.3.4. V_MPEG4/ISO/ASP 6.3.4. V_MPEG4/ISO/ASP
Codec ID: V_MPEG4/ISO/ASP Codec ID: V_MPEG4/ISO/ASP
Codec Name: MPEG4 ISO advanced simple profile (DivX5, XviD, FFMPEG) Codec Name: MPEG4 ISO advanced simple profile (DivX5, XviD, FFMPEG)
Description: Stream was created via improved codec API (UCI) or Description: Stream was created via improved codec API (UCI) or
transmuxed from MP4, not simply transmuxed from AVI. Note there are transmuxed from MP4, not simply transmuxed from AVI. Note there are
differences how b-frames are handled in these native streams, when differences how b-frames are handled in these native streams, when
being compared to a VfW created stream, as here there are "no" dummy being compared to a VfW created stream, as here there are no dummy
frames inserted, the frame order is exactly the same as the coding frames inserted, the frame order is exactly the same as the coding
order, same as in MP4 streams. order, same as in MP4 streams.
Initialization: none Initialization: none
6.3.5. V_MPEG4/ISO/AP 6.3.5. V_MPEG4/ISO/AP
Codec ID: V_MPEG4/ISO/AP Codec ID: V_MPEG4/ISO/AP
Codec Name: MPEG4 ISO advanced profile Codec Name: MPEG4 ISO advanced profile
Description: Stream was created via improved codec API (UCI) or Description: Stream was created via improved codec API (UCI) or
transmuxed from MP4, not simply transmuxed from AVI. Note there are transmuxed from MP4, not simply transmuxed from AVI. Note there are
differences how b-frames are handled in these native streams, when differences how b-frames are handled in these native streams, when
being compared to a VfW created stream, as here there are "no" dummy being compared to a VfW created stream, as here there are no dummy
frames inserted, the frame order is exactly the same as the coding frames inserted, the frame order is exactly the same as the coding
order, same as in MP4 streams. order, same as in MP4 streams.
Initialization: none Initialization: none
6.3.6. V_MPEG4/MS/V3 6.3.6. V_MPEG4/MS/V3
Codec ID: V_MPEG4/MS/V3 Codec ID: V_MPEG4/MS/V3
Codec Name: Microsoft (TM) MPEG4 V3 Codec Name: Microsoft (TM) MPEG4 V3
skipping to change at page 12, line 21 skipping to change at page 12, line 29
6.3.9. V_MPEG4/ISO/AVC 6.3.9. V_MPEG4/ISO/AVC
Codec ID: V_MPEG4/ISO/AVC Codec ID: V_MPEG4/ISO/AVC
Codec Name: AVC/H.264 Codec Name: AVC/H.264
Description: Individual pictures (which could be a frame, a field, or Description: Individual pictures (which could be a frame, a field, or
2 fields having the same timestamp) of AVC/H.264 stored as described 2 fields having the same timestamp) of AVC/H.264 stored as described
in [ISO.14496-15]. in [ISO.14496-15].
Initialization: The "Private Data" contains a Initialization: The Private Data contains a
"AVCDecoderConfigurationRecord" structure, as defined in AVCDecoderConfigurationRecord structure, as defined in
[ISO.14496-15]. For legacy reasons, because Block Addition Mappings [ISO.14496-15]. For legacy reasons, because Block Addition Mappings
are preferred, see Section 6.7, the "AVCDecoderConfigurationRecord" are preferred, see Section 6.7, the AVCDecoderConfigurationRecord
structure MAY be followed by an extension block beginning with a structure MAY be followed by an extension block beginning with a
4-byte extension block size field in big-endian byte order which is 4-byte extension block size field in big-endian byte order which is
the size of the extension block minus 4 (excluding the size of the the size of the extension block minus 4 (excluding the size of the
extension block size field) and a 4-byte field corresponding to a extension block size field) and a 4-byte field corresponding to a
"BlockAddIDType" of "mvcC" followed by a content corresponding to the BlockAddIDType of "mvcC" followed by a content corresponding to the
content of "BlockAddIDExtraData" for "mvcC"; see Section 6.7.8. content of BlockAddIDExtraData for mvcC; see Section 6.7.8.
6.3.10. V_MPEGH/ISO/HEVC 6.3.10. V_MPEGH/ISO/HEVC
Codec ID: V_MPEGH/ISO/HEVC Codec ID: V_MPEGH/ISO/HEVC
Codec Name: HEVC/H.265 Codec Name: HEVC/H.265
Description: Individual pictures (which could be a frame, a field, or Description: Individual pictures (which could be a frame, a field, or
2 fields having the same timestamp) of HEVC/H.265 stored as described 2 fields having the same timestamp) of HEVC/H.265 stored as described
in [ISO.14496-15]. in [ISO.14496-15].
Initialization: The "Private Data" contains a Initialization: The Private Data contains a
"HEVCDecoderConfigurationRecord" structure, as defined in HEVCDecoderConfigurationRecord structure, as defined in
[ISO.14496-15]. [ISO.14496-15].
6.3.11. V_AVS2 6.3.11. V_AVS2
Codec ID: V_AVS2 Codec ID: V_AVS2
Codec Name: AVS2-P2/IEEE.1857.4 Codec Name: AVS2-P2/IEEE.1857.4
Description: Individual pictures of AVS2-P2 stored as described in Description: Individual pictures of AVS2-P2 stored as described in
the second part of [IEEE.1857-4]. the second part of [IEEE.1857-4].
Initialization: none. Initialization: none.
6.3.12. V_REAL/RV10 6.3.12. V_REAL/RV10
Codec ID: V_REAL/RV10 Codec ID: V_REAL/RV10
Codec Name: RealVideo 1.0 aka RealVideo 5 Codec Name: RealVideo 1.0 aka RealVideo 5
skipping to change at page 13, line 18 skipping to change at page 13, line 29
6.3.12. V_REAL/RV10 6.3.12. V_REAL/RV10
Codec ID: V_REAL/RV10 Codec ID: V_REAL/RV10
Codec Name: RealVideo 1.0 aka RealVideo 5 Codec Name: RealVideo 1.0 aka RealVideo 5
Description: Individual slices from the Real container are combined Description: Individual slices from the Real container are combined
into a single frame. into a single frame.
Initialization: The "Private Data" contains a "real_video_props_t" Initialization: The Private Data contains a real_video_props_t
structure in big-endian byte order as found in librmff structure in big-endian byte order as found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.3.13. V_REAL/RV20 6.3.13. V_REAL/RV20
Codec ID: V_REAL/RV20 Codec ID: V_REAL/RV20
Codec Name: RealVideo G2 and RealVideo G2+SVT Codec Name: RealVideo G2 and RealVideo G2+SVT
Description: Individual slices from the Real container are combined Description: Individual slices from the Real container are combined
into a single frame. into a single frame.
Initialization: The "Private Data" contains a "real_video_props_t" Initialization: The Private Data contains a real_video_props_t
structure in big-endian byte order as found in librmff structure in big-endian byte order as found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.3.14. V_REAL/RV30 6.3.14. V_REAL/RV30
Codec ID: V_REAL/RV30 Codec ID: V_REAL/RV30
Codec Name: RealVideo 8 Codec Name: RealVideo 8
Description: Individual slices from the Real container are combined Description: Individual slices from the Real container are combined
into a single frame. into a single frame.
Initialization: The "Private Data" contains a "real_video_props_t" Initialization: The Private Data contains a real_video_props_t
structure in big-endian byte order as found in librmff structure in big-endian byte order as found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.3.15. V_REAL/RV40 6.3.15. V_REAL/RV40
Codec ID: V_REAL/RV40 Codec ID: V_REAL/RV40
Codec Name: rv40 : RealVideo 9 Codec Name: rv40 : RealVideo 9
Description: Individual slices from the Real container are combined Description: Individual slices from the Real container are combined
into a single frame. into a single frame.
Initialization: The "Private Data" contains a "real_video_props_t" Initialization: The Private Data contains a real_video_props_t
structure in big-endian byte order as found in librmff structure in big-endian byte order as found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.3.16. V_QUICKTIME 6.3.16. V_QUICKTIME
Codec ID: V_QUICKTIME Codec ID: V_QUICKTIME
Codec Name: Video taken from QuickTime(TM) files Codec Name: Video taken from QuickTime(TM) files
Description: Several codecs as stored in QuickTime, e.g., Sorenson or Description: Several codecs as stored in QuickTime, e.g., Sorenson or
Cinepak. Cinepak.
Initialization: The "Private Data" contains all additional data that Initialization: The Private Data contains all additional data that is
is stored in the 'stsd' (sample description) atom in the QuickTime stored in the 'stsd' (sample description) atom in the QuickTime file
file *after* the mandatory video descriptor structure (starting with *after* the mandatory video descriptor structure (starting with the
the size and FourCC fields). For an explanation of the QuickTime size and FourCC fields). For an explanation of the QuickTime file
file format read QuickTime File Format Specification format read QuickTime File Format Specification
(https://developer.apple.com/library/mac/documentation/QuickTime/ (https://developer.apple.com/library/mac/documentation/QuickTime/
QTFF/QTFFPreface/qtffPreface.html). QTFF/QTFFPreface/qtffPreface.html).
6.3.17. V_THEORA 6.3.17. V_THEORA
Codec ID: V_THEORA Codec ID: V_THEORA
Codec Name: Theora Codec Name: Theora
Initialization: The "Private Data" contains the first three Theora Initialization: The Private Data contains the first three Theora
packets in order. The lengths of the packets precedes them. The packets in order. The lengths of the packets precedes them. The
actual layout is: actual layout is:
* Byte 1: number of distinct packets "#p" minus one inside the * Byte 1: number of distinct packets #p minus one inside the
CodecPrivate block. This MUST be "2" for current (as of CodecPrivate block. This MUST be "2" for current (as of
2016-07-08) Theora headers. 2016-07-08) Theora headers.
* Bytes 2..n: lengths of the first "#p" packets, coded in Xiph-style * Bytes 2..n: lengths of the first #p packets, coded in Xiph-style
lacing. The length of the last packet is the length of the lacing. The length of the last packet is the length of the
CodecPrivate block minus the lengths coded in these bytes minus CodecPrivate block minus the lengths coded in these bytes minus
one. one.
* Bytes n+1..: The Theora identification header, followed by the * Bytes n+1..: The Theora identification header, followed by the
commend header followed by the codec setup header. Those are commend header followed by the codec setup header. Those are
described in the Theora specs (http://www.theora.org/doc/ described in the Theora specs (http://www.theora.org/doc/
Theora.pdf). Theora.pdf).
6.3.18. V_PRORES 6.3.18. V_PRORES
Codec ID: V_PRORES Codec ID: V_PRORES
Codec Name: Apple ProRes Codec Name: Apple ProRes
Initialization: The "Private Data" contains the FourCC as found in Initialization: The Private Data contains the FourCC as found in MP4
MP4 movies: movies:
* ap4x: ProRes 4444 XQ * ap4x: ProRes 4444 XQ
* ap4h: ProRes 4444 * ap4h: ProRes 4444
* apch: ProRes 422 High Quality * apch: ProRes 422 High Quality
* apcn: ProRes 422 Standard Definition * apcn: ProRes 422 Standard Definition
* apcs: ProRes 422 LT * apcs: ProRes 422 LT
skipping to change at page 15, line 48 skipping to change at page 16, line 4
* aprn: ProRes RAW Standard Definition * aprn: ProRes RAW Standard Definition
this page for more technical details on ProRes this page for more technical details on ProRes
(http://wiki.multimedia.cx/index.php?title=Apple_ProRes#Frame_layout) (http://wiki.multimedia.cx/index.php?title=Apple_ProRes#Frame_layout)
6.3.19. V_VP8 6.3.19. V_VP8
Codec ID: V_VP8 Codec ID: V_VP8
Codec Name: VP8 Codec format Codec Name: VP8 Codec format
Description: VP8 is an open and royalty free video compression format Description: VP8 is an open and royalty free video compression format
developed by Google and created by On2 Technologies as a successor to developed by Google and created by On2 Technologies as a successor to
VP7. [RFC6386] VP7. [RFC6386]
Codec BlockAdditions: A single-channel encoding of an alpha channel Codec BlockAdditions: A single-channel encoding of an alpha channel
MAY be stored in "BlockAdditions". The "BlockAddId" of the MAY be stored in BlockAdditions. The BlockAddId of the BlockMore
"BlockMore" containing these data MUST be 1. containing these data MUST be 1.
Initialization: none Initialization: none
6.3.20. V_VP9 6.3.20. V_VP9
Codec ID: V_VP9 Codec ID: V_VP9
Codec Name: VP9 Codec format Codec Name: VP9 Codec format
Description: VP9 is an open and royalty free video compression format Description: VP9 is an open and royalty free video compression format
developed by Google as a successor to VP8. Draft VP9 Bitstream and developed by Google as a successor to VP8. Draft VP9 Bitstream and
Decoding Process Specification (https://www.webmproject.org/vp9/) Decoding Process Specification (https://www.webmproject.org/vp9/)
Codec BlockAdditions: A single-channel encoding of an alpha channel Codec BlockAdditions: A single-channel encoding of an alpha channel
MAY be stored in "BlockAdditions". The "BlockAddId" of the MAY be stored in BlockAdditions. The BlockAddId of the BlockMore
"BlockMore" containing these data MUST be 1. containing these data MUST be 1.
Initialization: none Initialization: none
6.3.21. V_FFV1 6.3.21. V_FFV1
Codec ID: V_FFV1 Codec ID: V_FFV1
Codec Name: FF Video Codec 1 Codec Name: FF Video Codec 1
Description: FFV1 is a lossless intra-frame video encoding format Description: FFV1 is a lossless intra-frame video encoding format
designed to efficiently compress video data in a variety of pixel designed to efficiently compress video data in a variety of pixel
formats. Compared to uncompressed video, FFV1 offers storage formats. Compared to uncompressed video, FFV1 offers storage
compression, frame fixity, and self-description, which makes FFV1 compression, frame fixity, and self-description, which makes FFV1
useful as a preservation or intermediate video format. Draft FFV1 useful as a preservation or intermediate video format. Draft FFV1
Specification (https://datatracker.ietf.org/doc/draft-ietf-cellar- Specification (https://datatracker.ietf.org/doc/draft-ietf-cellar-
ffv1/) ffv1/)
Initialization: For FFV1 versions 0 or 1, "Private Data" SHOULD NOT Initialization: For FFV1 versions 0 or 1, Private Data SHOULD NOT be
be written. For FFV1 version 3 or greater, the "Private Data" MUST written. For FFV1 version 3 or greater, the Private Data MUST
contain the FFV1 Configuration Record structure, as defined in contain the FFV1 Configuration Record structure, as defined in
https://tools.ietf.org/html/draft-ietf-cellar-ffv1-04#section-4.2 https://tools.ietf.org/html/draft-ietf-cellar-ffv1-04#section-4.2
(https://tools.ietf.org/html/draft-ietf-cellar-ffv1-04#section-4.2), (https://tools.ietf.org/html/draft-ietf-cellar-ffv1-04#section-4.2),
and no other data. and no other data.
6.4. Audio Codec Mappings 6.4. Audio Codec Mappings
6.4.1. A_MPEG/L3 6.4.1. A_MPEG/L3
Codec ID: A_MPEG/L3 Codec ID: A_MPEG/L3
skipping to change at page 17, line 50 skipping to change at page 17, line 50
Initialization: none Initialization: none
6.4.4. A_PCM/INT/BIG 6.4.4. A_PCM/INT/BIG
Codec ID: A_PCM/INT/BIG Codec ID: A_PCM/INT/BIG
Codec Name: PCM Integer Big Endian Codec Name: PCM Integer Big Endian
Description: The audio bit depth MUST be read and set from the Description: The audio bit depth MUST be read and set from the
"BitDepth Element". Audio samples MUST be considered as signed BitDepth Element. Audio samples MUST be considered as signed values,
values, except if the audio bit depth is 8 which MUST be interpreted except if the audio bit depth is 8 which MUST be interpreted as
as unsigned values. Corresponding ACM wFormatTag : ??? unsigned values. Corresponding ACM wFormatTag : ???
Initialization: none Initialization: none
6.4.5. A_PCM/INT/LIT 6.4.5. A_PCM/INT/LIT
Codec ID: A_PCM/INT/LIT Codec ID: A_PCM/INT/LIT
Codec Name: PCM Integer Little Endian Codec Name: PCM Integer Little Endian
Description: The audio bit depth MUST be read and set from the Description: The audio bit depth MUST be read and set from the
"BitDepth Element". Audio samples MUST be considered as signed BitDepth Element. Audio samples MUST be considered as signed values,
values, except if the audio bit depth is 8 which MUST be interpreted except if the audio bit depth is 8 which MUST be interpreted as
as unsigned values. Corresponding ACM wFormatTag : 0x0001 unsigned values. Corresponding ACM wFormatTag : 0x0001
Initialization: none Initialization: none
6.4.6. A_PCM/FLOAT/IEEE 6.4.6. A_PCM/FLOAT/IEEE
Codec ID: A_PCM/FLOAT/IEEE Codec ID: A_PCM/FLOAT/IEEE
Codec Name: Floating Point, IEEE compatible Codec Name: Floating Point, IEEE compatible
Description: The audio bit depth MUST be read and set from the Description: The audio bit depth MUST be read and set from the
"BitDepth Element" (32 bit in most cases). The floats are stored as BitDepth Element (32 bit in most cases). The floats are stored as
defined in [IEEE.754] and in little-endian order. Corresponding ACM defined in [IEEE.754] and in little-endian order. Corresponding ACM
wFormatTag : 0x0003 wFormatTag : 0x0003
Initialization: none Initialization: none
6.4.7. A_MPC 6.4.7. A_MPC
Codec ID: A_MPC Codec ID: A_MPC
Codec Name: MPC (musepack) SV8 Codec Name: MPC (musepack) SV8
Description: The main developer for musepack has requested that we Description: The main developer for musepack has requested that we
wait until the SV8 framing has been fully defined for musepack before wait until the SV8 framing has been fully defined for musepack before
defining how to store it in Matroska. defining how to store it in Matroska.
6.4.8. A_AC3 6.4.8. A_AC3
Codec ID: A_AC3 Codec ID: A_AC3
Codec Name: (Dolby&#8482;) AC3 Codec Name: (Dolby™ (U+2122)) AC3
Description: BSID <= 8 !! The private data is void ??? Corresponding Description: BSID <= 8 !! The private data is void ??? Corresponding
ACM wFormatTag : 0x2000 ; channel number have to be read from the ACM wFormatTag : 0x2000 ; channel number have to be read from the
corresponding audio element corresponding audio element
6.4.9. A_AC3/BSID9 6.4.9. A_AC3/BSID9
Codec ID: A_AC3/BSID9 Codec ID: A_AC3/BSID9
Codec Name: (Dolby&#8482;) AC3 Codec Name: (Dolby™ (U+2122)) AC3
Description: The ac3 frame header has, similar to the mpeg-audio Description: The ac3 frame header has, similar to the mpeg-audio
header a version field. Normal ac3 is defined as bitstream id 8 (5 header a version field. Normal ac3 is defined as bitstream id 8 (5
Bits, numbers are 0-15). Everything below 8 is still compatible with Bits, numbers are 0-15). Everything below 8 is still compatible with
all decoders that handle 8 correctly. Everything higher are all decoders that handle 8 correctly. Everything higher are
additions that break decoder compatibility. For the samplerates additions that break decoder compatibility. For the samplerates
24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the 24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the
samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10 samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10
Initialization: none Initialization: none
6.4.10. A_AC3/BSID10 6.4.10. A_AC3/BSID10
Codec ID: A_AC3/BSID10 Codec ID: A_AC3/BSID10
Codec Name: (Dolby&#8482;) AC3 Codec Name: (Dolby™ (U+2122)) AC3
Description: The ac3 frame header has, similar to the mpeg-audio Description: The ac3 frame header has, similar to the mpeg-audio
header a version field. Normal ac3 is defined as bitstream id 8 (5 header a version field. Normal ac3 is defined as bitstream id 8 (5
Bits, numbers are 0-15). Everything below 8 is still compatible with Bits, numbers are 0-15). Everything below 8 is still compatible with
all decoders that handle 8 correctly. Everything higher are all decoders that handle 8 correctly. Everything higher are
additions that break decoder compatibility. For the samplerates additions that break decoder compatibility. For the samplerates
24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the 24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the
samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10 samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10
Initialization: none Initialization: none
6.4.11. A_ALAC 6.4.11. A_ALAC
Codec ID: A_ALAC Codec ID: A_ALAC
Codec Name: ALAC (Apple Lossless Audio Codec) Codec Name: ALAC (Apple Lossless Audio Codec)
Initialization: The "Private Data" contains ALAC's magic cookie (both Initialization: The Private Data contains ALAC's magic cookie (both
the codec specific configuration as well as the optional channel the codec specific configuration as well as the optional channel
layout information). Its format is described in ALAC's official layout information). Its format is described in ALAC's official
source code (http://alac.macosforge.org/trac/browser/trunk/ source code (http://alac.macosforge.org/trac/browser/trunk/
ALACMagicCookieDescription.txt). ALACMagicCookieDescription.txt).
6.4.12. A_DTS 6.4.12. A_DTS
Codec ID: A_DTS Codec ID: A_DTS
Codec Name: Digital Theatre System Codec Name: Digital Theatre System
skipping to change at page 20, line 40 skipping to change at page 20, line 40
The private data is void. Corresponding ACM wFormatTag : 0x2001 The private data is void. Corresponding ACM wFormatTag : 0x2001
Initialization: none Initialization: none
6.4.15. A_VORBIS 6.4.15. A_VORBIS
Codec ID: A_VORBIS Codec ID: A_VORBIS
Codec Name: Vorbis Codec Name: Vorbis
Initialization: The "Private Data" contains the first three Vorbis Initialization: The Private Data contains the first three Vorbis
packet in order. The lengths of the packets precedes them. The packet in order. The lengths of the packets precedes them. The
actual layout is: - Byte 1: number of distinct packets "#p" minus one actual layout is: - Byte 1: number of distinct packets #p minus one
inside the CodecPrivate block. This MUST be "2" for current (as of inside the CodecPrivate block. This MUST be "2" for current (as of
2016-07-08) Vorbis headers. - Bytes 2..n: lengths of the first "#p" 2016-07-08) Vorbis headers. - Bytes 2..n: lengths of the first #p
packets, coded in Xiph-style lacing. The length of the last packet packets, coded in Xiph-style lacing. The length of the last packet
is the length of the CodecPrivate block minus the lengths coded in is the length of the CodecPrivate block minus the lengths coded in
these bytes minus one. - Bytes n+1..: The Vorbis identification these bytes minus one. - Bytes n+1..: The Vorbis identification
header (https://xiph.org/vorbis/doc/Vorbis_I_spec.html), followed by header (https://xiph.org/vorbis/doc/Vorbis_I_spec.html), followed by
the Vorbis comment header (https://xiph.org/vorbis/doc/ the Vorbis comment header (https://xiph.org/vorbis/doc/
v-comment.html) followed by the codec setup header v-comment.html) followed by the codec setup header
(https://xiph.org/vorbis/doc/Vorbis_I_spec.html). (https://xiph.org/vorbis/doc/Vorbis_I_spec.html).
6.4.16. A_FLAC 6.4.16. A_FLAC
Codec ID: A_FLAC Codec ID: A_FLAC
Codec Name: FLAC (Free Lossless Audio Codec) Codec Name: FLAC (Free Lossless Audio Codec)
(http://flac.sourceforge.net/) (http://flac.sourceforge.net/)
Initialization: The "Private Data" contains all the header/metadata Initialization: The Private Data contains all the header/metadata
packets before the first data packet. These include the first header packets before the first data packet. These include the first header
packet containing only the word "fLaC" as well as all metadata packet containing only the word fLaC as well as all metadata packets.
packets.
6.4.17. A_REAL/14_4 6.4.17. A_REAL/14_4
Codec ID: A_REAL/14_4 Codec ID: A_REAL/14_4
Codec Name: Real Audio 1 Codec Name: Real Audio 1
Initialization: The "Private Data" contains either the Initialization: The Private Data contains either the
"real_audio_v4_props_t" or the "real_audio_v5_props_t" structure "real_audio_v4_props_t" or the "real_audio_v5_props_t" structure
(differentiated by their "version" field; big-endian byte order) as (differentiated by their "version" field; big-endian byte order) as
found in librmff found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.4.18. A_REAL/28_8 6.4.18. A_REAL/28_8
Codec ID: A_REAL/28_8 Codec ID: A_REAL/28_8
Codec Name: Real Audio 2 Codec Name: Real Audio 2
Initialization: The "Private Data" contains either the Initialization: The Private Data contains either the
"real_audio_v4_props_t" or the "real_audio_v5_props_t" structure "real_audio_v4_props_t" or the "real_audio_v5_props_t" structure
(differentiated by their "version" field; big-endian byte order) as (differentiated by their "version" field; big-endian byte order) as
found in librmff found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.4.19. A_REAL/COOK 6.4.19. A_REAL/COOK
Codec ID: A_REAL/COOK Codec ID: A_REAL/COOK
Codec Name: Real Audio Cook Codec (codename: Gecko) Codec Name: Real Audio Cook Codec (codename: Gecko)
Initialization: The "Private Data" contains either the Initialization: The Private Data contains either the
"real_audio_v4_props_t" or the "real_audio_v5_props_t" structure "real_audio_v4_props_t" or the "real_audio_v5_props_t" structure
(differentiated by their "version" field; big-endian byte order) as (differentiated by their "version" field; big-endian byte order) as
found in librmff found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.4.20. A_REAL/SIPR 6.4.20. A_REAL/SIPR
Codec ID: A_REAL/SIPR Codec ID: A_REAL/SIPR
Codec Name: Sipro Voice Codec Codec Name: Sipro Voice Codec
Initialization: The "Private Data" contains either the Initialization: The Private Data contains either the
"real_audio_v4_props_t" or the "real_audio_v5_props_t" structure "real_audio_v4_props_t" or the "real_audio_v5_props_t" structure
(differentiated by their "version" field; big-endian byte order) as (differentiated by their "version" field; big-endian byte order) as
found in librmff found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.4.21. A_REAL/RALF 6.4.21. A_REAL/RALF
Codec ID: A_REAL/RALF Codec ID: A_REAL/RALF
Codec Name: Real Audio Lossless Format Codec Name: Real Audio Lossless Format
Initialization: The "Private Data" contains either the Initialization: The Private Data contains either the
"real_audio_v4_props_t" or the "real_audio_v5_props_t" structure "real_audio_v4_props_t" or the "real_audio_v5_props_t" structure
(differentiated by their "version" field; big-endian byte order) as (differentiated by their "version" field; big-endian byte order) as
found in librmff found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.4.22. A_REAL/ATRC 6.4.22. A_REAL/ATRC
Codec ID: A_REAL/ATRC Codec ID: A_REAL/ATRC
Codec Name: Sony Atrac3 Codec Codec Name: Sony Atrac3 Codec
Initialization: The "Private Data" contains either the Initialization: The Private Data contains either the
"real_audio_v4_props_t" or the "real_audio_v5_props_t" structure "real_audio_v4_props_t" or the "real_audio_v5_props_t" structure
(differentiated by their "version" field; big-endian byte order) as (differentiated by their "version" field; big-endian byte order) as
found in librmff found in librmff
(https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/ (https://github.com/mbunkus/mkvtoolnix/blob/master/lib/librmff/
librmff.h). librmff.h).
6.4.23. A_MS/ACM 6.4.23. A_MS/ACM
Codec ID: A_MS/ACM Codec ID: A_MS/ACM
Codec Name: Microsoft(TM) Audio Codec Manager (ACM) Codec Name: Microsoft(TM) Audio Codec Manager (ACM)
Description: The data are stored in little-endian format (like on Description: The data are stored in little-endian format (like on
IA32 machines). IA32 machines).
Initialization: The "Private Data" contains the ACM structure Initialization: The Private Data contains the ACM structure
WAVEFORMATEX including the extra private bytes, as defined by WAVEFORMATEX including the extra private bytes, as defined by
Microsoft Microsoft
(http://msdn.microsoft.com/library/default.asp?url=/library/en- (http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/multimed/mmstr_625u.asp). us/multimed/mmstr_625u.asp).
6.4.24. A_AAC/MPEG2/MAIN 6.4.24. A_AAC/MPEG2/MAIN
Codec ID: A_AAC/MPEG2/MAIN Codec ID: A_AAC/MPEG2/MAIN
Codec Name: MPEG2 Main Profile Codec Name: MPEG2 Main Profile
skipping to change at page 26, line 5 skipping to change at page 26, line 5
6.4.33. A_QUICKTIME 6.4.33. A_QUICKTIME
Codec ID: A_QUICKTIME Codec ID: A_QUICKTIME
Codec Name: Audio taken from QuickTime(TM) files Codec Name: Audio taken from QuickTime(TM) files
Description: Several codecs as stored in QuickTime, e.g., QDesign Description: Several codecs as stored in QuickTime, e.g., QDesign
Music v1 or v2. Music v1 or v2.
Initialization: The "Private Data" contains all additional data that Initialization: The Private Data contains all additional data that is
is stored in the 'stsd' (sample description) atom in the QuickTime stored in the 'stsd' (sample description) atom in the QuickTime file
file *after* the mandatory sound descriptor structure (starting with *after* the mandatory sound descriptor structure (starting with the
the size and FourCC fields). For an explanation of the QuickTime size and FourCC fields). For an explanation of the QuickTime file
file format read QuickTime File Format Specification format read QuickTime File Format Specification
(https://developer.apple.com/library/mac/documentation/QuickTime/ (https://developer.apple.com/library/mac/documentation/QuickTime/
QTFF/QTFFPreface/qtffPreface.html). QTFF/QTFFPreface/qtffPreface.html).
6.4.34. A_QUICKTIME/QDMC 6.4.34. A_QUICKTIME/QDMC
Codec ID: A_QUICKTIME/QDMC Codec ID: A_QUICKTIME/QDMC
Codec Name: QDesign Music Codec Name: QDesign Music
Description: Description:
Initialization: The "Private Data" contains all additional data that Initialization: The Private Data contains all additional data that is
is stored in the 'stsd' (sample description) atom in the QuickTime stored in the 'stsd' (sample description) atom in the QuickTime file
file *after* the mandatory sound descriptor structure (starting with *after* the mandatory sound descriptor structure (starting with the
the size and FourCC fields). For an explanation of the QuickTime size and FourCC fields). For an explanation of the QuickTime file
file format read QuickTime File Format Specification format read QuickTime File Format Specification
(https://developer.apple.com/library/mac/documentation/QuickTime/ (https://developer.apple.com/library/mac/documentation/QuickTime/
QTFF/QTFFPreface/qtffPreface.html). QTFF/QTFFPreface/qtffPreface.html).
Superseded By: A_QUICKTIME Superseded By: A_QUICKTIME
6.4.35. A_QUICKTIME/QDM2 6.4.35. A_QUICKTIME/QDM2
Codec ID: A_QUICKTIME/QDM2 Codec ID: A_QUICKTIME/QDM2
Codec Name: QDesign Music v2 Codec Name: QDesign Music v2
Description: Description:
Initialization: The "Private Data" contains all additional data that Initialization: The Private Data contains all additional data that is
is stored in the 'stsd' (sample description) atom in the QuickTime stored in the 'stsd' (sample description) atom in the QuickTime file
file *after* the mandatory sound descriptor structure (starting with *after* the mandatory sound descriptor structure (starting with the
the size and FourCC fields). For an explanation of the QuickTime size and FourCC fields). For an explanation of the QuickTime file
file format read QuickTime File Format Specification format read QuickTime File Format Specification
(https://developer.apple.com/library/mac/documentation/QuickTime/ (https://developer.apple.com/library/mac/documentation/QuickTime/
QTFF/QTFFPreface/qtffPreface.html). QTFF/QTFFPreface/qtffPreface.html).
Superseded By: A_QUICKTIME Superseded By: A_QUICKTIME
6.4.36. A_TTA1 6.4.36. A_TTA1
Codec ID: A_TTA1 Codec ID: A_TTA1
Codec Name: The True Audio (http://tausoft.org/) lossless audio Codec Name: The True Audio (http://tausoft.org/) lossless audio
compressor compressor
skipping to change at page 27, line 26 skipping to change at page 27, line 26
Codec ID: A_WAVPACK4 Codec ID: A_WAVPACK4
Codec Name: WavPack (http://www.wavpack.com/) lossless audio Codec Name: WavPack (http://www.wavpack.com/) lossless audio
compressor compressor
Description: The Wavpack packets consist of a stripped header Description: The Wavpack packets consist of a stripped header
followed by the frame data. For multi-track (> 2 tracks) a frame followed by the frame data. For multi-track (> 2 tracks) a frame
consists of many packets. For more details, check the WavPack muxing consists of many packets. For more details, check the WavPack muxing
description (wavpack.html). description (wavpack.html).
Codec BlockAdditions: For hybrid "A_WAVPACK4" encodings (that include Codec BlockAdditions: For hybrid A_WAVPACK4 encodings (that include a
a lossy encoding with a supplemental correction to produce a lossless lossy encoding with a supplemental correction to produce a lossless
encoding), the correction part is stored in BlockAdditional. The encoding), the correction part is stored in BlockAdditional. The
"BlockAddId" of the "BlockMore" containing these data MUST be 1. BlockAddId of the BlockMore containing these data MUST be 1.
Initialization: none Initialization: none
6.5. Subtitle Codec Mappings 6.5. Subtitle Codec Mappings
6.5.1. S_TEXT/UTF8 6.5.1. S_TEXT/UTF8
Codec ID: S_TEXT/UTF8 Codec ID: S_TEXT/UTF8
Codec Name: UTF-8 Plain Text Codec Name: UTF-8 Plain Text
skipping to change at page 29, line 15 skipping to change at page 29, line 15
6.5.7. S_VOBSUB 6.5.7. S_VOBSUB
Codec ID: S_VOBSUB Codec ID: S_VOBSUB
Codec Name: VobSub subtitles Codec Name: VobSub subtitles
Description: The same subtitle format used on DVDs. Supported is Description: The same subtitle format used on DVDs. Supported is
only format version 7 and newer. VobSubs consist of two files, the only format version 7 and newer. VobSubs consist of two files, the
.idx containing information, and the .sub, containing the actual .idx containing information, and the .sub, containing the actual
data. The .idx file is stripped of all empty lines, of all comments data. The .idx file is stripped of all empty lines, of all comments
and of lines beginning with "alt:" or "langidx:". The line beginning and of lines beginning with alt: or langidx:. The line beginning with
with "id:" SHOULD be transformed into the appropriate Matroska track id: SHOULD be transformed into the appropriate Matroska track
language element and is discarded. All remaining lines but the ones language element and is discarded. All remaining lines but the ones
containing timestamps and file positions are put into the containing timestamps and file positions are put into the
"CodecPrivate" element. CodecPrivate element.
For each line containing the timestamp and file position data is read For each line containing the timestamp and file position data is read
from the appropriate position in the .sub file. This data consists from the appropriate position in the .sub file. This data consists
of a MPEG program stream which in turn contains SPU packets. The of a MPEG program stream which in turn contains SPU packets. The
MPEG program stream data is discarded, and each SPU packet is put MPEG program stream data is discarded, and each SPU packet is put
into one Matroska frame. into one Matroska frame.
6.5.8. S_HDMV/PGS 6.5.8. S_HDMV/PGS
Codec ID: S_HDMV/PGS Codec ID: S_HDMV/PGS
skipping to change at page 30, line 27 skipping to change at page 30, line 27
Description: Based on MPEG/VOB PCI packets Description: Based on MPEG/VOB PCI packets
(http://dvd.sourceforge.net/dvdinfo/pci_pkt.html). The file contains (http://dvd.sourceforge.net/dvdinfo/pci_pkt.html). The file contains
a header consisting of the string "butonDVD" followed by the width a header consisting of the string "butonDVD" followed by the width
and height in pixels (16 bits integer each) and 4 reserved bytes. and height in pixels (16 bits integer each) and 4 reserved bytes.
The rest is full PCI packets (http://dvd.sourceforge.net/dvdinfo/ The rest is full PCI packets (http://dvd.sourceforge.net/dvdinfo/
pci_pkt.html). pci_pkt.html).
6.7. Block Addition Mappings 6.7. Block Addition Mappings
Registered "BlockAddIDType" are: Registered BlockAddIDType are:
6.7.1. Use BlockAddIDValue 6.7.1. Use BlockAddIDValue
Block type identifier: 0 Block type identifier: 0
Block type name: Use BlockAddIDValue Block type name: Use BlockAddIDValue
Description: This value indicates that the actual type is stored in Description: This value indicates that the actual type is stored in
"BlockAddIDValue" instead. This value is expected to be used when it BlockAddIDValue instead. This value is expected to be used when it
is important to have a strong compatibility with players or derived is important to have a strong compatibility with players or derived
formats not supporting "BlockAdditionMapping" but using formats not supporting BlockAdditionMapping but using BlockAdditions
"BlockAdditions" with an unknown "BlockAddIDValue", and SHOULD NOT be with an unknown BlockAddIDValue, and SHOULD NOT be used if it is
used if it is possible to use another value. possible to use another value.
6.7.2. Opaque data 6.7.2. Opaque data
Block type identifier: 1 Block type identifier: 1
Block type name: Opaque data Block type name: Opaque data
Description: the "BlockAdditional" data is interpreted as opaque Description: the BlockAdditional data is interpreted as opaque
additional data passed to the codec with the Block data. additional data passed to the codec with the Block data.
"BlockAddIDValue" MUST be 1. BlockAddIDValue MUST be 1.
6.7.3. ITU T.35 metadata 6.7.3. ITU T.35 metadata
Block type identifier: 4 Block type identifier: 4
Block type name: ITU T.35 metadata Block type name: ITU T.35 metadata
Description: the "BlockAdditional" data is interpreted as ITU T.35 Description: the BlockAdditional data is interpreted as ITU T.35
metadata, as defined by ITU-T T.35 terminal codes. "BlockAddIDValue" metadata, as defined by ITU-T T.35 terminal codes. BlockAddIDValue
MUST be 4. MUST be 4.
6.7.4. avcE 6.7.4. avcE
Block type identifier: 0x61766345 Block type identifier: 0x61766345
Block type name: Dolby Vision enhancement-layer AVC configuration Block type name: Dolby Vision enhancement-layer AVC configuration
Description: the "BlockAddIDExtraData" data is interpreted as the Description: the BlockAddIDExtraData data is interpreted as the Dolby
Dolby Vision enhancement-layer AVC configuration box as described in Vision enhancement-layer AVC configuration box as described in
[DolbyVisionWithinIso]. This extension MUST NOT be used if "Codec [DolbyVisionWithinIso]. This extension MUST NOT be used if Codec ID
ID" is not "V_MPEG4/ISO/AVC". is not V_MPEG4/ISO/AVC.
6.7.5. dvcC 6.7.5. dvcC
Block type identifier: 0x64766343 Block type identifier: 0x64766343
Block type name: Dolby Vision configuration Block type name: Dolby Vision configuration
Description: the "BlockAddIDExtraData" data is interpreted as Description: the BlockAddIDExtraData data is interpreted as
"DOVIDecoderConfigurationRecord" structure, as defined in DOVIDecoderConfigurationRecord structure, as defined in
[DolbyVisionWithinIso], for Dolby Vision profiles less than and equal [DolbyVisionWithinIso], for Dolby Vision profiles less than and equal
to 7. to 7.
6.7.6. dvvC 6.7.6. dvvC
Block type identifier: 0x664767643 Block type identifier: 0x64767643
Block type name: Dolby Vision configuration Block type name: Dolby Vision configuration
Description: the "BlockAddIDExtraData" data is interpreted as Description: the BlockAddIDExtraData data is interpreted as
"DOVIDecoderConfigurationRecord" structure, as defined in DOVIDecoderConfigurationRecord structure, as defined in
[DolbyVisionWithinIso], for Dolby Vision profiles greater than 7. [DolbyVisionWithinIso], for Dolby Vision profiles greater than 7.
6.7.7. hvcE 6.7.7. hvcE
Block type identifier: 0x68766345 Block type identifier: 0x68766345
Block type name: Dolby Vision enhancement-layer HEVC configuration Block type name: Dolby Vision enhancement-layer HEVC configuration
Description: the "BlockAddIDExtraData" data is interpreted as the Description: the BlockAddIDExtraData data is interpreted as the Dolby
Dolby Vision enhancement-layer HEVC configuration as described in Vision enhancement-layer HEVC configuration as described in
[DolbyVisionWithinIso]. This extension MUST NOT be used if "Codec [DolbyVisionWithinIso]. This extension MUST NOT be used if Codec ID
ID" is not "V_MPEGH/ISO/HEVC". is not V_MPEGH/ISO/HEVC.
6.7.8. mvcC 6.7.8. mvcC
Block type identifier: 0x6D766343 Block type identifier: 0x6D766343
Block type name: MVC configuration Block type name: MVC configuration
Description: the "BlockAddIDExtraData" data is interpreted as Description: the BlockAddIDExtraData data is interpreted as
"MVCDecoderConfigurationRecord" structure, as defined in MVCDecoderConfigurationRecord structure, as defined in
[ISO.14496-15]. [ISO.14496-15].
6.8. This extension MUST NOT be used if "Codec ID" is not "V_MPEG4/ISO/ 6.8. This extension MUST NOT be used if Codec ID is not V_MPEG4/ISO/
AVC". AVC.
6.9. title: Subtitles 6.9. title: Subtitles
7. Subtitles 7. Subtitles
Because Matroska is a general container format, we try to avoid Because Matroska is a general container format, we try to avoid
specifying the formats to store in it. This type of work is really specifying the formats to store in it. This type of work is really
outside of the scope of a container-only format. However, because outside of the scope of a container-only format. However, because
the use of subtitles in A/V containers has been so limited (with the the use of subtitles in A/V containers has been so limited (with the
exception of DVD) we are taking the time to specify how to store some exception of DVD) we are taking the time to specify how to store some
skipping to change at page 41, line 25 skipping to change at page 41, line 25
* Simplicity: making decoding and remuxing as easy as possible for * Simplicity: making decoding and remuxing as easy as possible for
existing infrastructures existing infrastructures
* Completeness: keeping as much data as possible from the original * Completeness: keeping as much data as possible from the original
WebVTT file WebVTT file
7.4.1. Storage of WebVTT in Matroska 7.4.1. Storage of WebVTT in Matroska
7.4.1.1. CodecID: codec identification 7.4.1.1. CodecID: codec identification
The CodecID to use is "S_TEXT/WEBVTT". The CodecID to use is S_TEXT/WEBVTT.
7.4.1.2. CodecPrivate: storage of global WebVTT blocks 7.4.1.2. CodecPrivate: storage of global WebVTT blocks
This element contains all global blocks before the first subtitle This element contains all global blocks before the first subtitle
entry. This starts at the ""WEBVTT"" file identification marker but entry. This starts at the "WEBVTT" file identification marker but
excludes the optional byte order mark. excludes the optional byte order mark.
7.4.1.3. Storage of non-global WebVTT blocks 7.4.1.3. Storage of non-global WebVTT blocks
Non-global WebVTT blocks (e.g., "NOTE") before a WebVTT Cue Text are Non-global WebVTT blocks (e.g., "NOTE") before a WebVTT Cue Text are
stored in Matroska's BlockAddition element together with the Matroska stored in Matroska's BlockAddition element together with the Matroska
Block containing the WebVTT Cue Text these blocks precede (see below Block containing the WebVTT Cue Text these blocks precede (see below
for the actual format). for the actual format).
7.4.1.4. Storage of Cues in Matroska blocks 7.4.1.4. Storage of Cues in Matroska blocks
skipping to change at page 46, line 9 skipping to change at page 46, line 9
February 2012) and was based on an earlier draft of WebVTT and February 2012) and was based on an earlier draft of WebVTT and
ignores several parts that were added to WebVTT later; WebM does ignores several parts that were added to WebVTT later; WebM does
still not support subtitles at all (http://www.webmproject.org/docs/ still not support subtitles at all (http://www.webmproject.org/docs/
container/); the proposal suggests splitting the information across container/); the proposal suggests splitting the information across
multiple tracks making demuxer's and remuxer's life very difficult. multiple tracks making demuxer's and remuxer's life very difficult.
7.5. HDMV presentation graphics subtitles 7.5. HDMV presentation graphics subtitles
The specifications for the HDMV presentation graphics subtitle format The specifications for the HDMV presentation graphics subtitle format
(short: HDMV PGS) can be found in the document "Blu-ray Disc Read- (short: HDMV PGS) can be found in the document "Blu-ray Disc Read-
Only Format; Part 3 - Audio Visual Basic Specifications" in section Only Format; Part 3 — (U+2014) Audio Visual Basic Specifications" in
9.14 "HDMV graphics streams". section 9.14 "HDMV graphics streams".
7.5.1. Storage of HDMV presentation graphics subtitles 7.5.1. Storage of HDMV presentation graphics subtitles
The CodecID to use is "S_HDMV/PGS". A CodecPrivate element is not The CodecID to use is S_HDMV/PGS. A CodecPrivate element is not
used. used.
7.5.1.1. Storage of HDMV PGS Segments in Matroska Blocks 7.5.1.1. Storage of HDMV PGS Segments in Matroska Blocks
Each HDMV PGS Segment (short: Segment) will be stored in a Matroska Each HDMV PGS Segment (short: Segment) will be stored in a Matroska
Block. A Segment is the data structure described in section 9.14.2.1 Block. A Segment is the data structure described in section 9.14.2.1
"Segment coding structure and parameters" of the Blu-ray "Segment coding structure and parameters" of the Blu-ray
specifications. specifications.
Each Segment contains a presentation timestamp. This timestamp will Each Segment contains a presentation timestamp. This timestamp will
skipping to change at page 46, line 41 skipping to change at page 46, line 41
A muxer MAY use a Duration, e.g., by calculating the distance between A muxer MAY use a Duration, e.g., by calculating the distance between
two subsequent Segments. If a Matroska Block has a Duration, a two subsequent Segments. If a Matroska Block has a Duration, a
player MUST display that Segment only for the duration of the Block's player MUST display that Segment only for the duration of the Block's
Duration. Duration.
7.6. HDMV text subtitles 7.6. HDMV text subtitles
The specifications for the HDMV text subtitle format (short: HDMV The specifications for the HDMV text subtitle format (short: HDMV
TextST) can be found in the document "Blu-ray Disc Read-Only Format; TextST) can be found in the document "Blu-ray Disc Read-Only Format;
Part 3 - Audio Visual Basic Specifications" in section 9.15 "HDMV Part 3 — (U+2014) Audio Visual Basic Specifications" in section 9.15
text subtitle streams". "HDMV text subtitle streams".
7.6.1. Storage of HDMV text subtitles 7.6.1. Storage of HDMV text subtitles
The CodecID to use is "S_HDMV/TEXTST". The CodecID to use is S_HDMV/TEXTST.
A CodecPrivate Element is required. It MUST contain the stream's A CodecPrivate Element is required. It MUST contain the stream's
Dialog Style Segment as described in section 9.15.4.2 "Dialog Style Dialog Style Segment as described in section 9.15.4.2 "Dialog Style
Segment" of the Blu-ray specifications. Segment" of the Blu-ray specifications.
7.6.1.1. Storage of HDMV TextST Dialog Presentation Segments in 7.6.1.1. Storage of HDMV TextST Dialog Presentation Segments in
Matroska Blocks Matroska Blocks
Each HDMV Dialog Presentation Segment (short: Segment) will be stored Each HDMV Dialog Presentation Segment (short: Segment) will be stored
in a Matroska Block. A Segment is the data structure described in in a Matroska Block. A Segment is the data structure described in
skipping to change at page 48, line 9 skipping to change at page 48, line 9
"ETSI EN 300 743 - Digital Video Broadcasting (DVB); Subtitling "ETSI EN 300 743 - Digital Video Broadcasting (DVB); Subtitling
systems". The storage of DVB subtitles in MPEG transport streams is systems". The storage of DVB subtitles in MPEG transport streams is
specified in the document "ETSI EN 300 468 - Digital Video specified in the document "ETSI EN 300 468 - Digital Video
Broadcasting (DVB); Specification for Service Information (SI) in DVB Broadcasting (DVB); Specification for Service Information (SI) in DVB
systems". systems".
7.7.1. Storage of DVB subtitles 7.7.1. Storage of DVB subtitles
7.7.1.1. CodecID 7.7.1.1. CodecID
The CodecID to use is "S_DVBSUB". The CodecID to use is S_DVBSUB.
7.7.1.2. CodecPrivate 7.7.1.2. CodecPrivate
The CodecPrivate element is five bytes long and has the following The CodecPrivate element is five bytes long and has the following
structure: structure:
* 2 bytes: composition page ID (bit string, left bit first) * 2 bytes: composition page ID (bit string, left bit first)
* 2 bytes: ancillary page ID (bit string, left bit first) * 2 bytes: ancillary page ID (bit string, left bit first)
skipping to change at page 48, line 40 skipping to change at page 48, line 40
Each Matroska Block SHOULD have a Duration indicating how long the Each Matroska Block SHOULD have a Duration indicating how long the
DVB Subtitle Segments DVB Subtitle Segments
7.8. in that Block SHOULD be displayed. 7.8. in that Block SHOULD be displayed.
7.9. title: Block Additional Mapping 7.9. title: Block Additional Mapping
8. Block Additional Mapping 8. Block Additional Mapping
Extra data or metadata can be added to each "Block" using Extra data or metadata can be added to each Block using
"BlockAdditional" data. Each "BlockAdditional" contains a BlockAdditional data. Each BlockAdditional contains a BlockAddID
"BlockAddID" that identifies the kind of data it contains. When the that identifies the kind of data it contains. When the BlockAddID is
"BlockAddID" is set to "1" the contents of the "BlockAdditional set to "1" the contents of the BlockAdditional Element are define by
Element" are define by the Codec Mappings defines; see Section 6.1.5. the Codec Mappings defines; see Section 6.1.5. When the BlockAddID
When the "BlockAddID" is set a value greater than "1", then the is set a value greater than "1", then the contents of the
contents of the "BlockAdditional Element" are defined by the BlockAdditional Element are defined by the BlockAdditionalMapping
"BlockAdditionalMapping Element", within the associated "Track Element, within the associated Track Element, where the BlockAddID
Element", where the "BlockAddID Element" of "BlockAdditional Element" Element of BlockAdditional Element equals the BlockAddIDValue of the
equals the "BlockAddIDValue" of the associated Track's associated Track's BlockAdditionalMapping Element. That
"BlockAdditionalMapping Element". That "BlockAdditionalMapping BlockAdditionalMapping Element identifies a particular Block
Element" identifies a particular Block Additional Mapping by the Additional Mapping by the BlockAddIDType.
"BlockAddIDType".
The following XML depicts a use of a Block Additional Mapping to The following XML depicts a use of a Block Additional Mapping to
associate a timecode value with a "Block": associate a timecode value with a Block:
<Segment> <Segment>
<!--Mandatory elements ommitted for readability--> <!--Mandatory elements ommitted for readability-->
<Tracks> <Tracks>
<TrackEntry> <TrackEntry>
<TrackNumber>1</TrackNumber> <TrackNumber>1</TrackNumber>
<TrackUID>568001708</TrackUID> <TrackUID>568001708</TrackUID>
<TrackType>1</TrackType> <TrackType>1</TrackType>
<BlockAdditionalMapping> <BlockAdditionalMapping>
<BlockAddIDValue>2</BlockAddIDValue><!--arbitrary value <BlockAddIDValue>2</BlockAddIDValue><!--arbitrary value
skipping to change at page 49, line 44 skipping to change at page 49, line 44
<BlockAddID>2</BlockAddID><!--arbitrary value from <BlockAddID>2</BlockAddID><!--arbitrary value from
BlockAdditionalMapping--> BlockAdditionalMapping-->
<BlockAdditional>01:00:00:00</BlockAdditional> <BlockAdditional>01:00:00:00</BlockAdditional>
</BlockMore> </BlockMore>
</BlockAdditions> </BlockAdditions>
</BlockGroup> </BlockGroup>
</Cluster> </Cluster>
</Segment> </Segment>
Block Additional Mappings detail how additional data MAY be stored in Block Additional Mappings detail how additional data MAY be stored in
the "BlockMore Element" with a "BlockAdditionMapping Element", within the BlockMore Element with a BlockAdditionMapping Element, within the
the "Track Element", which identifies the "BlockAdditional" content. Track Element, which identifies the BlockAdditional content. Block
Block Additional Mappings define the "BlockAddIDType" value reserved Additional Mappings define the BlockAddIDType value reserved to
to identify that type of data as well as providing an optional label identify that type of data as well as providing an optional label
stored within the "BlockAddIDName Element". When the Block stored within the BlockAddIDName Element. When the Block Additional
Additional Mapping is dependent on additional contextual information, Mapping is dependent on additional contextual information, then the
then the Mapping SHOULD describe how such additional contextual Mapping SHOULD describe how such additional contextual information is
information is stored within the "BlockAddIDExtraData Element". stored within the BlockAddIDExtraData Element.
The following Block Additional Mappings are defined. The following Block Additional Mappings are defined.
8.1. Summary of Assigned BlockAddIDType Values 8.1. Summary of Assigned BlockAddIDType Values
For convenience, the following table shows the assigned For convenience, the following table shows the assigned
BlockAddIDType values along with the BlockAddIDName and Citation. BlockAddIDType values along with the BlockAddIDName and Citation.
+================+========================+=============+ +================+========================+=============+
| BlockAddIDType | BlockAddIDName | Citation | | BlockAddIDType | BlockAddIDName | Citation |
+================+========================+=============+ +================+========================+=============+
| 121 | SMPTE ST 12-1 timecode | Section 8.2 | | 121 | SMPTE ST 12-1 timecode | Section 8.2 |
+----------------+------------------------+-------------+ +----------------+------------------------+-------------+
Table 4 Table 4
8.2. SMPTE ST 12-1 Timecode 8.2. SMPTE ST 12-1 Timecode
8.2.1. Timecode Description 8.2.1. Timecode Description
SMPTE ST 12-1 timecode values can be stored in the "BlockMore SMPTE ST 12-1 timecode values can be stored in the BlockMore Element
Element" to associate the content of a Matroska Block with a to associate the content of a Matroska Block with a particular
particular timecode value. If the Block uses Lacing, the timecode timecode value. If the Block uses Lacing, the timecode value is
value is associated with the first frame of the Lace. associated with the first frame of the Lace.
The Block Additional Mapping contains a full binary representation of The Block Additional Mapping contains a full binary representation of
a 64 bit SMPTE timecode value stored in big-endian format and a 64 bit SMPTE timecode value stored in big-endian format and
expressed exactly as defined in Section 8 and 9 of SMPTE 12M [ST12]. expressed exactly as defined in Section 8 and 9 of SMPTE 12M [ST12].
For convenience, here are the bit assignments for a SMPTE ST 12-1 For convenience, here are the bit assignments for a SMPTE ST 12-1
binary representation as described in Section 6.2 of [RFC5484]: binary representation as described in Section 6.2 of [RFC5484]:
+===============+========================+ +===============+========================+
| Bit Positions | Label | | Bit Positions | Label |
+===============+========================+ +===============+========================+
 End of changes. 110 change blocks. 
230 lines changed or deleted 243 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/