rfc9559.original   rfc9559.txt 
CELLAR Group S. Lhomme Internet Engineering Task Force (IETF) S. Lhomme
Internet-Draft Request for Comments: 9559
Intended status: Standards Track M. Bunkus Updates: 8794 M. Bunkus
Expires: 24 April 2024 Category: Standards Track
D. Rice ISSN: 2070-1721 D. Rice
22 October 2023 July 2024
Matroska Media Container Format Specifications Matroska Media Container Format Specification
draft-ietf-cellar-matroska-21
Abstract Abstract
This document defines the Matroska audiovisual data container This document defines the Matroska audiovisual data container
structure, including definitions of its structural elements, as well structure, including definitions of its structural elements,
as its terminology, vocabulary, and application. terminology, vocabulary, and application.
This document updates [RFC8794] to permit the use of a previously This document updates RFC 8794 to permit the use of a previously
reserved EBML Element ID. reserved Extensible Binary Meta Language (EBML) Element ID.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 24 April 2024. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9559.
Copyright Notice Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the Copyright (c) 2024 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
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 1. Introduction
2. Status of this document . . . . . . . . . . . . . . . . . . . 7 2. Status of This Document
3. Notation and Conventions . . . . . . . . . . . . . . . . . . 7 3. Notation and Conventions
4. Matroska Overview . . . . . . . . . . . . . . . . . . . . . . 7 4. Matroska Overview
4.1. Principles . . . . . . . . . . . . . . . . . . . . . . . 7 4.1. Principles
4.2. Updates to RFC 8794 . . . . . . . . . . . . . . . . . . . 7 4.2. Updates to RFC 8794
4.3. Added EBML Constraints . . . . . . . . . . . . . . . . . 8 4.3. Added EBML Constraints
4.4. Design Rules . . . . . . . . . . . . . . . . . . . . . . 9 4.4. Design Rules
4.5. Data Layout . . . . . . . . . . . . . . . . . . . . . . . 9 4.5. Data Layout
5. Matroska Schema . . . . . . . . . . . . . . . . . . . . . . . 18 5. Matroska Schema
5.1. Segment Element . . . . . . . . . . . . . . . . . . . . . 18 5.1. Segment Element
5.1.1. SeekHead Element . . . . . . . . . . . . . . . . . . 19 5.1.1. SeekHead Element
5.1.1.1. Seek Element . . . . . . . . . . . . . . . . . . 19 5.1.1.1. Seek Element
5.1.2. Info Element . . . . . . . . . . . . . . . . . . . . 19 5.1.2. Info Element
5.1.2.1. SegmentUUID Element . . . . . . . . . . . . . . . 20 5.1.2.1. SegmentUUID Element
5.1.2.2. SegmentFilename Element . . . . . . . . . . . . . 20 5.1.2.2. SegmentFilename Element
5.1.2.3. PrevUUID Element . . . . . . . . . . . . . . . . 20 5.1.2.3. PrevUUID Element
5.1.2.4. PrevFilename Element . . . . . . . . . . . . . . 20 5.1.2.4. PrevFilename Element
5.1.2.5. NextUUID Element . . . . . . . . . . . . . . . . 21 5.1.2.5. NextUUID Element
5.1.2.6. NextFilename Element . . . . . . . . . . . . . . 21 5.1.2.6. NextFilename Element
5.1.2.7. SegmentFamily Element . . . . . . . . . . . . . . 21 5.1.2.7. SegmentFamily Element
5.1.2.8. ChapterTranslate Element . . . . . . . . . . . . 21 5.1.2.8. ChapterTranslate Element
5.1.2.9. TimestampScale Element . . . . . . . . . . . . . 23 5.1.2.9. TimestampScale Element
5.1.2.10. Duration Element . . . . . . . . . . . . . . . . 23 5.1.2.10. Duration Element
5.1.2.11. DateUTC Element . . . . . . . . . . . . . . . . . 23 5.1.2.11. DateUTC Element
5.1.2.12. Title Element . . . . . . . . . . . . . . . . . . 23 5.1.2.12. Title Element
5.1.2.13. MuxingApp Element . . . . . . . . . . . . . . . . 23 5.1.2.13. MuxingApp Element
5.1.2.14. WritingApp Element . . . . . . . . . . . . . . . 23 5.1.2.14. WritingApp Element
5.1.3. Cluster Element . . . . . . . . . . . . . . . . . . . 24 5.1.3. Cluster Element
5.1.3.1. Timestamp Element . . . . . . . . . . . . . . . . 24 5.1.3.1. Timestamp Element
5.1.3.2. Position Element . . . . . . . . . . . . . . . . 24 5.1.3.2. Position Element
5.1.3.3. PrevSize Element . . . . . . . . . . . . . . . . 24 5.1.3.3. PrevSize Element
5.1.3.4. SimpleBlock Element . . . . . . . . . . . . . . . 24 5.1.3.4. SimpleBlock Element
5.1.3.5. BlockGroup Element . . . . . . . . . . . . . . . 25 5.1.3.5. BlockGroup Element
5.1.4. Tracks Element . . . . . . . . . . . . . . . . . . . 28 5.1.4. Tracks Element
5.1.4.1. TrackEntry Element . . . . . . . . . . . . . . . 28 5.1.4.1. TrackEntry Element
5.1.5. Cues Element . . . . . . . . . . . . . . . . . . . . 67 5.1.5. Cues Element
5.1.5.1. CuePoint Element . . . . . . . . . . . . . . . . 67 5.1.5.1. CuePoint Element
5.1.6. Attachments Element . . . . . . . . . . . . . . . . . 69 5.1.6. Attachments Element
5.1.6.1. AttachedFile Element . . . . . . . . . . . . . . 69 5.1.6.1. AttachedFile Element
5.1.7. Chapters Element . . . . . . . . . . . . . . . . . . 70 5.1.7. Chapters Element
5.1.7.1. EditionEntry Element . . . . . . . . . . . . . . 71 5.1.7.1. EditionEntry Element
5.1.8. Tags Element . . . . . . . . . . . . . . . . . . . . 76 5.1.8. Tags Element
5.1.8.1. Tag Element . . . . . . . . . . . . . . . . . . . 76 5.1.8.1. Tag Element
6. Matroska Element Ordering . . . . . . . . . . . . . . . . . . 82 6. Matroska Element Ordering
6.1. Top-Level Elements . . . . . . . . . . . . . . . . . . . 82 6.1. Top-Level Elements
6.2. CRC-32 . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.2. CRC-32
6.3. SeekHead . . . . . . . . . . . . . . . . . . . . . . . . 83 6.3. SeekHead
6.4. Cues (index) . . . . . . . . . . . . . . . . . . . . . . 83 6.4. Cues (Index)
6.5. Info . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.5. Info
6.6. Chapters Element . . . . . . . . . . . . . . . . . . . . 84 6.6. Chapters Element
6.7. Attachments . . . . . . . . . . . . . . . . . . . . . . . 84 6.7. Attachments
6.8. Tags . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.8. Tags
7. Matroska versioning . . . . . . . . . . . . . . . . . . . . . 84 7. Matroska Versioning
8. Stream Copy . . . . . . . . . . . . . . . . . . . . . . . . . 85 8. Stream Copy
9. DefaultDecodedFieldDuration . . . . . . . . . . . . . . . . . 86 9. DefaultDecodedFieldDuration
10. Cluster Blocks . . . . . . . . . . . . . . . . . . . . . . . 86 10. Cluster Blocks
10.1. Block Structure . . . . . . . . . . . . . . . . . . . . 87 10.1. Block Structure
10.2. SimpleBlock Structure . . . . . . . . . . . . . . . . . 88 10.2. SimpleBlock Structure
10.3. Block Lacing . . . . . . . . . . . . . . . . . . . . . . 90 10.3. Block Lacing
10.3.1. No lacing . . . . . . . . . . . . . . . . . . . . . 90 10.3.1. No Lacing
10.3.2. Xiph lacing . . . . . . . . . . . . . . . . . . . . 91 10.3.2. Xiph Lacing
10.3.3. EBML lacing . . . . . . . . . . . . . . . . . . . . 92 10.3.3. EBML Lacing
10.3.4. Fixed-size lacing . . . . . . . . . . . . . . . . . 94 10.3.4. Fixed-size Lacing
10.3.5. Laced Frames Timestamp . . . . . . . . . . . . . . . 94 10.3.5. Laced Frames Timestamp
10.4. Random Access Points . . . . . . . . . . . . . . . . . . 95 10.4. Random Access Points
11. Timestamps . . . . . . . . . . . . . . . . . . . . . . . . . 98 11. Timestamps
11.1. Timestamp Ticks . . . . . . . . . . . . . . . . . . . . 99 11.1. Timestamp Ticks
11.1.1. Matroska Ticks . . . . . . . . . . . . . . . . . . . 99 11.1.1. Matroska Ticks
11.1.2. Segment Ticks . . . . . . . . . . . . . . . . . . . 99 11.1.2. Segment Ticks
11.1.3. Track Ticks . . . . . . . . . . . . . . . . . . . . 100 11.1.3. Track Ticks
11.2. Block Timestamps . . . . . . . . . . . . . . . . . . . . 100 11.2. Block Timestamps
11.3. TimestampScale Rounding . . . . . . . . . . . . . . . . 101 11.3. TimestampScale Rounding
12. Language Codes . . . . . . . . . . . . . . . . . . . . . . . 101 12. Language Codes
13. Country Codes . . . . . . . . . . . . . . . . . . . . . . . . 102 13. Country Codes
14. Encryption . . . . . . . . . . . . . . . . . . . . . . . . . 102 14. Encryption
15. Image Presentation . . . . . . . . . . . . . . . . . . . . . 103 15. Image Presentation
15.1. Cropping . . . . . . . . . . . . . . . . . . . . . . . . 103 15.1. Cropping
15.2. Rotation . . . . . . . . . . . . . . . . . . . . . . . . 104 15.2. Rotation
16. Segment Position . . . . . . . . . . . . . . . . . . . . . . 104 16. Segment Position
16.1. Segment Position Exception . . . . . . . . . . . . . . . 104 16.1. Segment Position Exception
16.2. Example of Segment Position . . . . . . . . . . . . . . 104 16.2. Example of Segment Position
17. Linked Segments . . . . . . . . . . . . . . . . . . . . . . . 105 17. Linked Segments
17.1. Hard Linking . . . . . . . . . . . . . . . . . . . . . . 106 17.1. Hard Linking
17.2. Medium Linking . . . . . . . . . . . . . . . . . . . . . 108 17.2. Medium Linking
17.2.1. Linked-Duration . . . . . . . . . . . . . . . . . . 109 17.2.1. Linked-Duration
17.2.2. Linked-Edition . . . . . . . . . . . . . . . . . . . 109 17.2.2. Linked-Edition
18. Track Flags . . . . . . . . . . . . . . . . . . . . . . . . . 109 18. Track Flags
18.1. Default flag . . . . . . . . . . . . . . . . . . . . . . 109 18.1. Default Flag
18.2. Forced flag . . . . . . . . . . . . . . . . . . . . . . 110 18.2. Forced Flag
18.3. Hearing-impaired flag . . . . . . . . . . . . . . . . . 110 18.3. Hearing-Impaired Flag
18.4. Visual-impaired flag . . . . . . . . . . . . . . . . . . 110 18.4. Visual-Impaired Flag
18.5. Descriptions flag . . . . . . . . . . . . . . . . . . . 110 18.5. Descriptions Flag
18.6. Original flag . . . . . . . . . . . . . . . . . . . . . 110 18.6. Original Flag
18.7. Commentary flag . . . . . . . . . . . . . . . . . . . . 110 18.7. Commentary Flag
18.8. Track Operation . . . . . . . . . . . . . . . . . . . . 110 18.8. Track Operation
18.9. Overlay Track . . . . . . . . . . . . . . . . . . . . . 111 18.9. Overlay Track
18.10. Multi-planar and 3D videos . . . . . . . . . . . . . . . 111 18.10. Multi-planar and 3D Videos
19. Default track selection . . . . . . . . . . . . . . . . . . . 112 19. Default Track Selection
19.1. Audio Selection . . . . . . . . . . . . . . . . . . . . 112 19.1. Audio Selection
19.2. Subtitle selection . . . . . . . . . . . . . . . . . . . 114 19.2. Subtitle Selection
20. Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . 116 20. Chapters
20.1. EditionEntry . . . . . . . . . . . . . . . . . . . . . . 116 20.1. EditionEntry
20.1.1. EditionFlagDefault . . . . . . . . . . . . . . . . . 116 20.1.1. EditionFlagDefault
20.1.2. Default Edition . . . . . . . . . . . . . . . . . . 116 20.1.2. Default Edition
20.1.3. EditionFlagOrdered . . . . . . . . . . . . . . . . . 117 20.1.3. EditionFlagOrdered
20.1.3.1. Ordered-Edition and Matroska Segment-Linking . . 118 20.1.3.1. Ordered-Edition and Matroska Segment Linking
20.2. ChapterAtom . . . . . . . . . . . . . . . . . . . . . . 119 20.2. ChapterAtom
20.2.1. ChapterTimeStart . . . . . . . . . . . . . . . . . . 119 20.2.1. ChapterTimeStart
20.2.2. ChapterTimeEnd . . . . . . . . . . . . . . . . . . . 119 20.2.2. ChapterTimeEnd
20.2.3. Nested Chapters . . . . . . . . . . . . . . . . . . 119 20.2.3. Nested Chapters
20.2.4. Nested Chapters in Ordered Chapters . . . . . . . . 120 20.2.4. Nested Chapters in Ordered Chapters
20.2.5. ChapterFlagHidden . . . . . . . . . . . . . . . . . 120 20.2.5. ChapterFlagHidden
20.3. Menu features . . . . . . . . . . . . . . . . . . . . . 121 20.3. Menu Features
20.4. Physical Types . . . . . . . . . . . . . . . . . . . . . 121 20.4. Physical Types
20.5. Chapter Examples . . . . . . . . . . . . . . . . . . . . 122 20.5. Chapter Examples
20.5.1. Example 1 : basic chaptering . . . . . . . . . . . . 122 20.5.1. Example 1: Basic Chaptering
20.5.2. Example 2 : nested chapters . . . . . . . . . . . . 124 20.5.2. Example 2: Nested Chapters
20.5.2.1. The Micronauts "Bleep To Bleep" . . . . . . . . 124 20.5.2.1. The Micronauts "Bleep To Bleep"
21. Attachments . . . . . . . . . . . . . . . . . . . . . . . . . 126 21. Attachments
21.1. Cover Art . . . . . . . . . . . . . . . . . . . . . . . 126 21.1. Cover Art
21.2. Font files . . . . . . . . . . . . . . . . . . . . . . . 128 21.2. Font Files
22. Cues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 22. Cues
22.1. Recommendations . . . . . . . . . . . . . . . . . . . . 130 22.1. Recommendations
23. Matroska Streaming . . . . . . . . . . . . . . . . . . . . . 130 23. Matroska Streaming
23.1. File Access . . . . . . . . . . . . . . . . . . . . . . 130 23.1. File Access
23.2. Livestreaming . . . . . . . . . . . . . . . . . . . . . 131 23.2. Livestreaming
24. Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 24. Tags
24.1. Tags Precedence . . . . . . . . . . . . . . . . . . . . 132 24.1. Tags Precedence
24.2. Tag Levels . . . . . . . . . . . . . . . . . . . . . . . 133 24.2. Tag Levels
25. Implementation Recommendations . . . . . . . . . . . . . . . 133 25. Implementation Recommendations
25.1. Cluster . . . . . . . . . . . . . . . . . . . . . . . . 133 25.1. Cluster
25.2. SeekHead . . . . . . . . . . . . . . . . . . . . . . . . 133 25.2. SeekHead
25.3. Optimum Layouts . . . . . . . . . . . . . . . . . . . . 133 25.3. Optimum Layouts
25.3.1. Optimum layout for a muxer . . . . . . . . . . . . . 133 25.3.1. Optimum Layout for a Muxer
25.3.2. Optimum layout after editing tags . . . . . . . . . 134 25.3.2. Optimum Layout after Editing Tags
25.3.3. Optimum layout with Cues at the front . . . . . . . 134 25.3.3. Optimum Layout with Cues at the Front
25.3.4. Optimum layout for livestreaming . . . . . . . . . . 134 25.3.4. Optimum Layout for Livestreaming
26. Security Considerations . . . . . . . . . . . . . . . . . . . 135 26. Security Considerations
27. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 135 27. IANA Considerations
27.1. Matroska Element IDs Registry . . . . . . . . . . . . . 136 27.1. Matroska Element IDs Registry
27.2. Chapter Codec IDs Registry . . . . . . . . . . . . . . . 152 27.2. Chapter Codec IDs Registry
27.3. Media Types . . . . . . . . . . . . . . . . . . . . . . 153 27.3. Track Types Registry
27.3.1. For files containing video tracks . . . . . . . . . 153 27.4. Tags Target Types Registry
27.3.2. For files containing audio tracks with no video 27.5. Alpha Modes Registry
tracks . . . . . . . . . . . . . . . . . . . . . . . 154 27.6. Content Encoding Scopes Registry
27.3.3. For files containing a stereoscopic video track . . 154 27.7. Content Encoding Types Registry
28. Annex A: Historic Deprecated Elements . . . . . . . . . . . . 155 27.8. Compression Algorithms Registry
28.1. SilentTracks Element . . . . . . . . . . . . . . . . . . 155 27.9. Encryption Algorithms Registry
28.2. SilentTrackNumber Element . . . . . . . . . . . . . . . 156 27.10. AES Cipher Modes Registry
28.3. BlockVirtual Element . . . . . . . . . . . . . . . . . . 156 27.11. Stereo Modes Registry
28.4. ReferenceVirtual Element . . . . . . . . . . . . . . . . 156 27.12. Display Units Registry
28.5. Slices Element . . . . . . . . . . . . . . . . . . . . . 156 27.13. Projection Types Registry
28.6. TimeSlice Element . . . . . . . . . . . . . . . . . . . 156 27.14. Track Plane Types Registry
28.7. LaceNumber Element . . . . . . . . . . . . . . . . . . . 156 27.15. Horizontal Chroma Sitings Registry
28.8. FrameNumber Element . . . . . . . . . . . . . . . . . . 157 27.16. Vertical Chroma Sitings Registry
28.9. BlockAdditionID Element . . . . . . . . . . . . . . . . 157 27.17. Color Ranges Registry
28.10. Delay Element . . . . . . . . . . . . . . . . . . . . . 157 27.18. Media Types
28.11. SliceDuration Element . . . . . . . . . . . . . . . . . 157 27.18.1. For Files Containing Video Tracks
28.12. ReferenceFrame Element . . . . . . . . . . . . . . . . . 157 27.18.2. For Files Containing Audio Tracks with No Video
28.13. ReferenceOffset Element . . . . . . . . . . . . . . . . 157 Tracks
28.14. ReferenceTimestamp Element . . . . . . . . . . . . . . . 157 27.18.3. For Files Containing a Stereoscopic Video Track
28.15. EncryptedBlock Element . . . . . . . . . . . . . . . . . 158 28. References
28.16. MinCache Element . . . . . . . . . . . . . . . . . . . . 158 28.1. Normative References
28.17. MaxCache Element . . . . . . . . . . . . . . . . . . . . 158 28.2. Informative References
28.18. TrackOffset Element . . . . . . . . . . . . . . . . . . 158 Appendix A. Historic Deprecated Elements
28.19. CodecSettings Element . . . . . . . . . . . . . . . . . 158 A.1. SilentTracks Element
28.20. CodecInfoURL Element . . . . . . . . . . . . . . . . . . 158 A.2. SilentTrackNumber Element
28.21. CodecDownloadURL Element . . . . . . . . . . . . . . . . 159 A.3. BlockVirtual Element
28.22. CodecDecodeAll Element . . . . . . . . . . . . . . . . . 159 A.4. ReferenceVirtual Element
28.23. TrackOverlay Element . . . . . . . . . . . . . . . . . . 159 A.5. Slices Element
28.24. AspectRatioType Element . . . . . . . . . . . . . . . . 159 A.6. TimeSlice Element
28.25. GammaValue Element . . . . . . . . . . . . . . . . . . . 159 A.7. LaceNumber Element
28.26. FrameRate Element . . . . . . . . . . . . . . . . . . . 159 A.8. FrameNumber Element
28.27. ChannelPositions Element . . . . . . . . . . . . . . . . 160 A.9. BlockAdditionID Element
28.28. TrickTrackUID Element . . . . . . . . . . . . . . . . . 160 A.10. Delay Element
28.29. TrickTrackSegmentUID Element . . . . . . . . . . . . . . 160 A.11. SliceDuration Element
28.30. TrickTrackFlag Element . . . . . . . . . . . . . . . . . 160 A.12. ReferenceFrame Element
28.31. TrickMasterTrackUID Element . . . . . . . . . . . . . . 160 A.13. ReferenceOffset Element
28.32. TrickMasterTrackSegmentUID Element . . . . . . . . . . . 160 A.14. ReferenceTimestamp Element
28.33. ContentSignature Element . . . . . . . . . . . . . . . . 161 A.15. EncryptedBlock Element
28.34. ContentSigKeyID Element . . . . . . . . . . . . . . . . 161 A.16. MinCache Element
28.35. ContentSigAlgo Element . . . . . . . . . . . . . . . . . 161 A.17. MaxCache Element
28.36. ContentSigHashAlgo Element . . . . . . . . . . . . . . . 161 A.18. TrackOffset Element
28.37. CueRefCluster Element . . . . . . . . . . . . . . . . . 161 A.19. CodecSettings Element
28.38. CueRefNumber Element . . . . . . . . . . . . . . . . . . 161 A.20. CodecInfoURL Element
28.39. CueRefCodecState Element . . . . . . . . . . . . . . . . 161 A.21. CodecDownloadURL Element
28.40. FileReferral Element . . . . . . . . . . . . . . . . . . 162 A.22. CodecDecodeAll Element
28.41. FileUsedStartTime Element . . . . . . . . . . . . . . . 162 A.23. TrackOverlay Element
28.42. FileUsedEndTime Element . . . . . . . . . . . . . . . . 162 A.24. AspectRatioType Element
28.43. TagDefaultBogus Element . . . . . . . . . . . . . . . . 162 A.25. GammaValue Element
29. Normative References . . . . . . . . . . . . . . . . . . . . 162 A.26. FrameRate Element
30. Informative References . . . . . . . . . . . . . . . . . . . 164 A.27. ChannelPositions Element
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 166 A.28. TrickTrackUID Element
A.29. TrickTrackSegmentUID Element
A.30. TrickTrackFlag Element
A.31. TrickMasterTrackUID Element
A.32. TrickMasterTrackSegmentUID Element
A.33. ContentSignature Element
A.34. ContentSigKeyID Element
A.35. ContentSigAlgo Element
A.36. ContentSigHashAlgo Element
A.37. CueRefCluster Element
A.38. CueRefNumber Element
A.39. CueRefCodecState Element
A.40. FileReferral Element
A.41. FileUsedStartTime Element
A.42. FileUsedEndTime Element
A.43. TagDefaultBogus Element
Authors' Addresses
1. Introduction 1. Introduction
Matroska is an audiovisual data container format. It was derived Matroska is an audiovisual data container format. It was derived
from a project called [MCF], but diverges from it significantly from a project called [MCF] but diverges from it significantly
because it is based on EBML (Extensible Binary Meta Language) because it is based on EBML (Extensible Binary Meta Language)
[RFC8794], a binary derivative of XML. EBML provides significant [RFC8794], a binary derivative of XML. EBML provides significant
advantages in terms of future format extensibility, without breaking advantages in terms of future format extensibility, without breaking
file support in parsers reading the previous versions. file support in parsers reading the previous versions.
First, it is essential to clarify exactly "What an Audio/Video To avoid any misunderstandings, it is essential to clarify exactly
container is", to avoid any misunderstandings: what an audio/video container is:
* It is NOT a video or audio compression format (codec).
* It is NOT a video or audio compression format (codec)
* It is an envelope in which there can be many audio, video, and * It is an envelope in which there can be many audio, video, and
subtitles streams, allowing the user to store a complete movie or subtitles streams, allowing the user to store a complete movie or
CD in a single file. CD in a single file.
Matroska is designed with the future in mind. It incorporates Matroska is designed with the future in mind. It incorporates
features such as: features such as:
* Fast seeking in the file * Fast seeking in the file
* Chapter entries * Chapter entries
* Full metadata (tags) support * Full metadata (tags) support
* Selectable subtitle/audio/video streams * Selectable subtitle/audio/video streams
* Modularly expandable * Modularly expandable
* Error resilience (can recover playback even when the stream is * Error resilience (can recover playback even when the stream is
damaged) damaged)
* Streamable over the internet and local networks (HTTP [RFC9110],
* Streamable over the Internet and local networks (HTTP [RFC9110],
FTP [RFC0959], SMB [SMB-CIFS], etc.) FTP [RFC0959], SMB [SMB-CIFS], etc.)
* Menus (like DVDs have [DVD-Video])
2. Status of this document * Menus (like menus that DVDs have [DVD-Video])
This document covers Matroska versions 1, 2, 3 and 4. Matroska v4 is 2. Status of This Document
the current version. Matroska 1 to 3 are no longer maintained. No
new elements are expected in files with version numbers 1, 2, or 3. This document covers Matroska versions 1, 2, 3, and 4. Matroska
version 4 is the current version. Matroska versions 1 to 3 are no
longer maintained. No new elements are expected in files with
version numbers 1, 2, or 3.
3. Notation and Conventions 3. 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.
This document defines specific terms in order to define the format This document defines the following terms in order to define the
and application of Matroska. Specific terms are defined below: format and application of Matroska:
Matroska: A multimedia container format based on EBML (Extensible Matroska: A multimedia container format based on EBML (Extensible
Binary Meta Language). Binary Meta Language).
Matroska Reader: A data parser that interprets the semantics of a Matroska Reader: A data parser that interprets the semantics of a
Matroska document and creates a way for programs to use Matroska. Matroska document and creates a way for programs to use Matroska.
Matroska Player: A Matroska Reader with a primary purpose of playing
audiovisual files, including Matroska documents. Matroska Player: A Matroska Reader with the primary purpose of
playing audiovisual files, including Matroska documents.
Matroska Writer: A data writer that creates Matroska documents. Matroska Writer: A data writer that creates Matroska documents.
4. Matroska Overview 4. Matroska Overview
4.1. Principles 4.1. Principles
Matroska is a Document Type of EBML (Extensible Binary Meta Matroska is a Document Type of EBML. This specification is dependent
Language). This specification is dependent on the EBML Specification on the EBML specification [RFC8794]. For an understanding of
[RFC8794]. For an understanding of Matroska's EBML Schema, see in Matroska's EBML Schema, see in particular the sections of the EBML
particular the sections of the EBML Specification covering EBML specification that cover EBML Element Types (Section 7), EBML Schema
Element Types (Section 7), EBML Schema (Section 11.1), and EBML (Section 11.1), and EBML Structure (Section 3).
Structure (Section 3).
4.2. Updates to RFC 8794 4.2. Updates to RFC 8794
Because of an oversight, [RFC8794] reserved EBML ID 0x80, which is Because of an oversight, [RFC8794] reserved EBML ID 0x80, which is
used by deployed Matroska implementations. For this reason, this used by deployed Matroska implementations. For this reason, this
specification updates [RFC8794] to make 0x80 a legal EBML ID. specification updates [RFC8794] to make 0x80 a legal EBML ID.
Specifically, the following are changed in [RFC8794]: Additionally, this specification makes the following updates:
* From Errata 7189
In Section 17.1, * Section 17.1 of [RFC8794] (per Erratum ID #7189 [Err7189])
OLD: OLD:
One-octet Element IDs MUST be between 0x81 and 0xFE. These items are | One-octet Element IDs MUST be between 0x81 and 0xFE. These items
valuable because they are short, and they need to be used for | are valuable because they are short, and they need to be used for
commonly repeated elements. Element IDs are to be allocated within | commonly repeated elements. Element IDs are to be allocated
this range according to the "RFC Required" policy [RFC8126]. | within this range according to the "RFC Required" policy
| [RFC8126].
The following one-octet Element IDs are RESERVED: 0xFF and 0x80. |
| The following one-octet Element IDs are RESERVED: 0xFF and 0x80.
NEW: NEW:
One-octet Element IDs MUST be between 0x80 and 0xFE. These items are | One-octet Element IDs MUST be between 0x80 and 0xFE. These items
valuable because they are short, and they need to be used for | are valuable because they are short, and they need to be used for
commonly repeated elements. Element IDs are to be allocated within | commonly repeated elements. Element IDs are to be allocated
this range according to the "RFC Required" policy [RFC8126]. | within this range according to the "RFC Required" policy
| [RFC8126].
The following one-octet Element ID is RESERVED: 0xFF. |
| The following one-octet Element ID is RESERVED: 0xFF.
* From Errata 7191
In Section 5, * Section 5 of [RFC8794] (per Erratum ID #7191 [Err7191])
OLD: OLD:
+=========================+================+=================+ +=========================+================+=================+
| Element ID Octet Length | Range of Valid | Number of Valid | | Element ID Octet Length | Range of Valid | Number of Valid |
| | Element IDs | Element IDs | | | Element IDs | Element IDs |
+=========================+================+=================+ +=========================+================+=================+
| 1 | 0x81 - 0xFE | 126 | | 1 | 0x81 - 0xFE | 126 |
+-------------------------+----------------+-----------------+ +-------------------------+----------------+-----------------+
skipping to change at page 8, line 46 skipping to change at line 392
+=========================+================+=================+ +=========================+================+=================+
| Element ID Octet Length | Range of Valid | Number of Valid | | Element ID Octet Length | Range of Valid | Number of Valid |
| | Element IDs | Element IDs | | | Element IDs | Element IDs |
+=========================+================+=================+ +=========================+================+=================+
| 1 | 0x80 - 0xFE | 127 | | 1 | 0x80 - 0xFE | 127 |
+-------------------------+----------------+-----------------+ +-------------------------+----------------+-----------------+
4.3. Added EBML Constraints 4.3. Added EBML Constraints
As an EBML Document Type, Matroska adds the following constraints to As an EBML Document Type, Matroska adds the following constraints to
the EBML specification. the EBML specification [RFC8794]:
* The docType of the EBML Header MUST be "matroska". * The docType of the EBML Header MUST be "matroska".
* The EBMLMaxIDLength of the EBML Header MUST be 4. * The EBMLMaxIDLength of the EBML Header MUST be 4.
* The EBMLMaxSizeLength of the EBML Header MUST be between 1 and 8
* The EBMLMaxSizeLength of the EBML Header MUST be between 1 and 8,
inclusive. inclusive.
4.4. Design Rules 4.4. Design Rules
The Root Element and all Top-Levels Elements MUST use 4 octets for The Root Element and all Top-Level Elements MUST use 4 octets for
their EBML Element ID -- i.e. Segment and direct children of Segment. their EBML Element ID -- i.e., Segment and direct children of
Segment.
Legacy EBML/Matroska parsers did not handle Empty Elements properly, Legacy EBML/Matroska parsers did not handle Empty Elements properly;
elements present in the file but with a length of zero. They always elements were present in the file but had a length of 0. They always
assumed the value was 0 for integers/dates or 0x0p+0, the textual assumed the value was 0 for integers/dates or 0x0p+0, the textual
expression of floats using the [ISO9899] format, no matter the expression of floats using the format in [ISO9899], no matter the
default value of the element which should have been used instead. default value of the element that should have been used instead.
Therefore, Matroska writers MUST NOT use EBML Empty Elements, if the Therefore, Matroska Writers MUST NOT use EBML Empty Elements if the
element has a default value that is not 0 for integers/dates and element has a default value that is not 0 for integers/dates and
0x0p+0 for floats. 0x0p+0 for floats.
When adding new elements to Matroska, these rules apply: When adding new elements to Matroska, these rules apply:
* A non-mandatory integer/date Element MUST NOT have a default value * A non-mandatory integer/date Element MUST NOT have a default value
other than 0. other than 0.
* A non-mandatory float Element MUST NOT have a default value other * A non-mandatory float Element MUST NOT have a default value other
than 0x0p+0. than 0x0p+0.
* A non-mandatory string Element MUST NOT have a default value, as * A non-mandatory string Element MUST NOT have a default value, as
empty string cannot be defined in the XML Schema. empty strings cannot be defined in the XML Schema.
4.5. Data Layout 4.5. Data Layout
A Matroska file MUST be composed of at least one EBML Document using A Matroska file MUST be composed of at least one EBML Document using
the Matroska Document Type. Each EBML Document MUST start with an the Matroska Document Type. Each EBML Document MUST start with an
EBML Header and MUST be followed by the EBML Root Element, defined as EBML Header and MUST be followed by the EBML Root Element, defined as
Segment in Matroska. Matroska defines several Top-Level Elements Segment in Matroska. Matroska defines several Top-Level Elements
which may occur within the Segment. that may occur within the Segment.
As an example, a simple Matroska file consisting of a single EBML As an example, a simple Matroska file consisting of a single EBML
Document could be represented like this: Document could be represented like this:
* EBML Header * EBML Header
* Segment * Segment
A more complex Matroska file consisting of an EBML Stream (consisting A more complex Matroska file consisting of an EBML Stream (consisting
of two EBML Documents) could be represented like this: of two EBML Documents) could be represented like this:
* EBML Header * EBML Header
* Segment * Segment
* EBML Header * EBML Header
* Segment * Segment
The following diagram represents a simple Matroska file, comprised of The following diagram represents a simple Matroska file, comprised of
an EBML Document with an EBML Header, a Segment Element (the Root an EBML Document with an EBML Header, a Segment element (the Root
Element), and all eight Matroska Top-Level Elements. In the Element), and all eight Matroska Top-Level Elements. In the diagrams
following diagrams of this section, horizontal spacing expresses a in this section, horizontal spacing expresses a parent-child
parent-child relationship between Matroska Elements (e.g., the Info relationship between Matroska elements (e.g., the Info element is
Element is contained within the Segment Element) whereas vertical contained within the Segment element), whereas vertical alignment
alignment represents the storage order within the file. represents the storage order within the file.
+-------------+ +-------------+
| EBML Header | | EBML Header |
+---------------------------+ +---------------------------+
| Segment | SeekHead | | Segment | SeekHead |
| |-------------| | |-------------|
| | Info | | | Info |
| |-------------| | |-------------|
| | Tracks | | | Tracks |
| |-------------| | |-------------|
skipping to change at page 10, line 29 skipping to change at line 477
| |-------------| | |-------------|
| | Cluster | | | Cluster |
| |-------------| | |-------------|
| | Cues | | | Cues |
| |-------------| | |-------------|
| | Attachments | | | Attachments |
| |-------------| | |-------------|
| | Tags | | | Tags |
+---------------------------+ +---------------------------+
Figure 1: Basic layout of a Matroska file. Figure 1: Basic Layout of a Matroska File
The Matroska EBML Schema defines eight Top-Level Elements: The Matroska EBML Schema defines eight Top-Level Elements:
* SeekHead (Section 6.3), * SeekHead (Section 6.3)
* Info (Section 6.5),
* Tracks (Section 18),
* Chapters (Section 20),
* Cluster (Section 10),
* Cues (Section 22),
* Attachments (Section 21),
* and Tags (Section 6.8).
The SeekHead Element (also known as MetaSeek) contains an index of * Info (Section 6.5)
* Tracks (Section 18)
* Chapters (Section 20)
* Cluster (Section 10)
* Cues (Section 22)
* Attachments (Section 21)
* Tags (Section 6.8)
The SeekHead element (also known as MetaSeek) contains an index of
Top-Level Elements locations within the Segment. Use of the SeekHead Top-Level Elements locations within the Segment. Use of the SeekHead
Element is RECOMMENDED. Without a SeekHead Element, a Matroska element is RECOMMENDED. Without a SeekHead element, a Matroska
parser would have to search the entire file to find all of the other parser would have to search the entire file to find all of the other
Top-Level Elements. This is due to Matroska's flexible ordering Top-Level Elements. This is due to Matroska's flexible ordering
requirements; for instance, it is acceptable for the Chapters Element requirements; for instance, it is acceptable for the Chapters element
to be stored after the Cluster Elements. to be stored after the Cluster element(s).
+--------------------------------+ +--------------------------------+
| SeekHead | Seek | SeekID | | SeekHead | Seek | SeekID |
| | |--------------| | | |--------------|
| | | SeekPosition | | | | SeekPosition |
+--------------------------------+ +--------------------------------+
Figure 2: Representation of a SeekHead Element. Figure 2: Representation of a SeekHead Element
The Info Element contains vital information for identifying the whole The Info element contains vital information for identifying the whole
Segment. This includes the title for the Segment, a randomly Segment. This includes the title for the Segment, a randomly
generated unique identifier, and the unique identifier(s) of any generated unique identifier (UID), and the UID(s) of any linked
linked Segment Elements. Segment elements.
+-------------------------+ +-------------------------+
| Info | SegmentUUID | | Info | SegmentUUID |
| |------------------| | |------------------|
| | SegmentFilename | | | SegmentFilename |
| |------------------| | |------------------|
| | PrevUUID | | | PrevUUID |
| |------------------| | |------------------|
| | PrevFilename | | | PrevFilename |
| |------------------| | |------------------|
skipping to change at page 11, line 48 skipping to change at line 548
| |------------------| | |------------------|
| | DateUTC | | | DateUTC |
| |------------------| | |------------------|
| | Title | | | Title |
| |------------------| | |------------------|
| | MuxingApp | | | MuxingApp |
| |------------------| | |------------------|
| | WritingApp | | | WritingApp |
|-------------------------| |-------------------------|
Figure 3: Representation of an Info Element and its Child Elements. Figure 3: Representation of an Info Element and Its Child Elements
The Tracks Element defines the technical details for each track and The Tracks element defines the technical details for each track and
can store the name, number, unique identifier, language, and type can store the name, number, UID, language, and type (audio, video,
(audio, video, subtitles, etc.) of each track. For example, the subtitles, etc.) of each track. For example, the Tracks element MAY
Tracks Element MAY store information about the resolution of a video store information about the resolution of a video track or sample
track or sample rate of an audio track. rate of an audio track.
The Tracks Element MUST identify all the data needed by the codec to The Tracks element MUST identify all the data needed by the codec to
decode the data of the specified track. However, the data required decode the data of the specified track. However, the data required
is contingent on the codec used for the track. For example, a Track is contingent on the codec used for the track. For example, a Track
Element for uncompressed audio only requires the audio bit rate to be element for uncompressed audio only requires the audio bit rate to be
present. A codec such as AC-3 would require that the CodecID Element present. A codec such as AC-3 would require that the CodecID element
be present for all tracks, as it is the primary way to identify which be present for all tracks, as it is the primary way to identify which
codec to use to decode the track. codec to use to decode the track.
+------------------------------------+ +------------------------------------+
| Tracks | TrackEntry | TrackNumber | | Tracks | TrackEntry | TrackNumber |
| | |--------------| | | |--------------|
| | | TrackUID | | | | TrackUID |
| | |--------------| | | |--------------|
| | | TrackType | | | | TrackType |
| | |--------------| | | |--------------|
skipping to change at page 13, line 40 skipping to change at line 599
| | | | PixelWidth | | | | | PixelWidth |
| | | |-------------------| | | | |-------------------|
| | | | PixelHeight | | | | | PixelHeight |
| | | |-------------------| | | | |-------------------|
| | | | DisplayWidth | | | | | DisplayWidth |
| | | |-------------------| | | | |-------------------|
| | | | DisplayHeight | | | | | DisplayHeight |
| | | |-------------------| | | | |-------------------|
| | | | AspectRatioType | | | | | AspectRatioType |
| | | |-------------------| | | | |-------------------|
| | | | Color | | | | | Colour |
| | |----------------------------------| | | |----------------------------------|
| | | Audio | SamplingFrequency | | | | Audio | SamplingFrequency |
| | | |-------------------| | | | |-------------------|
| | | | Channels | | | | | Channels |
| | | |-------------------| | | | |-------------------|
| | | | BitDepth | | | | | BitDepth |
|--------------------------------------------------------| |--------------------------------------------------------|
Figure 4: Representation of the Tracks Element and a selection of its Figure 4: Representation of the Tracks Element and a Selection of Its
Descendant Elements. Descendant Elements
The Chapters Element lists all of the chapters. Chapters are a way The Chapters element lists all of the chapters. Chapters are a way
to set predefined points to jump to in video or audio. to set predefined points to jump to in video or audio.
+-----------------------------------------+ +-----------------------------------------+
| Chapters | Edition | EditionUID | | Chapters | Edition | EditionUID |
| | Entry |--------------------| | | Entry |--------------------|
| | | EditionFlagDefault | | | | EditionFlagDefault |
| | |--------------------| | | |--------------------|
| | | EditionFlagOrdered | | | | EditionFlagOrdered |
| | |---------------------------------+ | | |---------------------------------+
| | | ChapterAtom | ChapterUID | | | | ChapterAtom | ChapterUID |
skipping to change at page 14, line 30 skipping to change at line 636
| | | |-------------------| | | | |-------------------|
| | | | ChapterTimeEnd | | | | | ChapterTimeEnd |
| | | |-------------------| | | | |-------------------|
| | | | ChapterFlagHidden | | | | | ChapterFlagHidden |
| | | |-------------------------------+ | | | |-------------------------------+
| | | | ChapterDisplay | ChapString | | | | | ChapterDisplay | ChapString |
| | | | |--------------| | | | | |--------------|
| | | | | ChapLanguage | | | | | | ChapLanguage |
+------------------------------------------------------------------+ +------------------------------------------------------------------+
Figure 5: Representation of the Chapters Element and a selection Figure 5: Representation of the Chapters Element and a Selection
of its Descendant Elements. of Its Descendant Elements
Cluster Elements contain the content for each track, e.g., video Cluster elements contain the content for each track, e.g., video
frames. A Matroska file SHOULD contain at least one Cluster Element. frames. A Matroska file SHOULD contain at least one Cluster element.
In the rare case it doesn't, there should be a form of Segment In the rare case it doesn't, there should be a method for Segments to
linking with other Segments, possibly using Chapters, see Section 17. link together, possibly using Chapters; see Section 17.
The Cluster Element helps to break up SimpleBlock or BlockGroup The Cluster element helps to break up SimpleBlock or BlockGroup
Elements and helps with seeking and error protection. Every Cluster elements and helps with seeking and error protection. Every Cluster
Element MUST contain a Timestamp Element. This SHOULD be the element MUST contain a Timestamp element. This SHOULD be the
Timestamp Element used to play the first Block in the Cluster Timestamp element used to play the first Block in the Cluster
Element, unless a different value is needed to accommodate for more element, unless a different value is needed to accommodate for more
Blocks, see Section 11.2. Blocks; see Section 11.2.
Cluster Elements contain one or more block element, such as Cluster elements contain one or more Block element, such as
BlockGroup or SimpleBlock elements. In some situations, a Cluster BlockGroup or SimpleBlock elements. In some situations, a Cluster
Element MAY contain no block element, for example in a live recording element MAY contain no Block element, for example, in a live
when no data has been collected. recording when no data has been collected.
A BlockGroup Element MAY contain a Block of data and any information A BlockGroup element MAY contain a Block of data and any information
relating directly to that Block. relating directly to that Block.
+--------------------------+ +--------------------------+
| Cluster | Timestamp | | Cluster | Timestamp |
| |----------------| | |----------------|
| | Position | | | Position |
| |----------------| | |----------------|
| | PrevSize | | | PrevSize |
| |----------------| | |----------------|
| | SimpleBlock | | | SimpleBlock |
| |----------------| | |----------------|
| | BlockGroup | | | BlockGroup |
+--------------------------+ +--------------------------+
Figure 6: Representation of a Cluster Element and its immediate Figure 6: Representation of a Cluster Element and Its Immediate
Child Elements. Child Elements
+----------------------------------+ +----------------------------------+
| Block | Portion of | Data Type | | Block | Portion of | Data Type |
| | a Block | - Bit Flag | | | a Block | - Bit Flag |
| |--------------------------+ | |--------------------------+
| | Header | TrackNumber | | | Header | TrackNumber |
| | |-------------| | | |-------------|
| | | Timestamp | | | | Timestamp |
| | |-------------| | | |-------------|
| | | Flags | | | | Flags |
| | | - Gap | | | | - Gap |
| | | - Lacing | | | | - Lacing |
| | | - Reserved | | | | - Reserved |
| |--------------------------| | |--------------------------|
| | Optional | FrameSize | | | Optional | FrameSize |
| |--------------------------| | |--------------------------|
| | Data | Frame | | | Data | Frame |
+----------------------------------+ +----------------------------------+
Figure 7: Representation of the Block Element structure. Figure 7: Representation of the Block Element Structure
Each Cluster MUST contain exactly one Timestamp element. The
Timestamp element value MUST be stored once per Cluster. The
Timestamp element in the Cluster is relative to the entire Segment.
The Timestamp element SHOULD be the first element in the Cluster it
belongs to or the second element if that Cluster contains a CRC-32
element (Section 6.2).
Each Cluster MUST contain exactly one Timestamp Element. The
Timestamp Element value MUST be stored once per Cluster. The
Timestamp Element in the Cluster is relative to the entire Segment.
The Timestamp Element SHOULD be the first Element in the Cluster it
belongs to, or the second Element if that Cluster contains a CRC-32
element (Section 6.2)
Additionally, the Block contains an offset that, when added to the Additionally, the Block contains an offset that, when added to the
Cluster's Timestamp Element value, yields the Block's effective Cluster's Timestamp element value, yields the Block's effective
timestamp. Therefore, timestamp in the Block itself is relative to timestamp. Therefore, the timestamp in the Block itself is relative
the Timestamp Element in the Cluster. For example, if the Timestamp to the Timestamp element in the Cluster. For example, if the
Element in the Cluster is set to 10 seconds and a Block in that Timestamp element in the Cluster is set to 10 seconds and a Block in
Cluster is supposed to be played 12 seconds into the clip, the that Cluster is supposed to be played 12 seconds into the clip, the
timestamp in the Block would be set to 2 seconds. timestamp in the Block would be set to 2 seconds.
The ReferenceBlock in the BlockGroup is used instead of the basic The ReferenceBlock in the BlockGroup is used instead of the basic
"P-frame"/"B-frame" description. Instead of simply saying that this "P-frame"/"B-frame" description. Instead of simply saying that this
Block depends on the Block directly before, or directly afterwards, Block depends on the Block directly before or directly after, the
the Timestamp of the necessary Block is used. Because there can be Timestamp of the necessary Block is used. Because there can be as
as many ReferenceBlock Elements as necessary for a Block, it allows many ReferenceBlock elements as necessary for a Block, it allows for
for some extremely complex referencing. some extremely complex referencing.
The Cues Element is used to seek when playing back a file by The Cues element is used to seek when playing back a file by
providing a temporal index for some of the Tracks. It is similar to providing a temporal index for some of the Tracks. It is similar to
the SeekHead Element, but used for seeking to a specific time when the SeekHead element but is used for seeking to a specific time when
playing back the file. It is possible to seek without this element, playing back the file. It is possible to seek without this element,
but it is much more difficult because a Matroska Reader would have to but it is much more difficult because a Matroska Reader would have to
'hunt and peck' through the file looking for the correct timestamp. "hunt and peck" through the file to look for the correct timestamp.
The Cues Element SHOULD contain at least one CuePoint Element. Each The Cues element SHOULD contain at least one CuePoint element. Each
CuePoint Element stores the position of the Cluster that contains the CuePoint element stores the position of the Cluster that contains the
BlockGroup or SimpleBlock Element. The timestamp is stored in the BlockGroup or SimpleBlock element. The timestamp is stored in the
CueTime Element and location is stored in the CueTrackPositions CueTime element, and the location is stored in the CueTrackPositions
Element. element.
The Cues Element is flexible. For instance, Cues Element can be used The Cues element is flexible. For instance, the Cues element can be
to index every single timestamp of every Block or they can be indexed used to index every single timestamp of every Block or they can be
selectively. indexed selectively.
+-------------------------------------+ +-------------------------------------+
| Cues | CuePoint | CueTime | | Cues | CuePoint | CueTime |
| | |-------------------| | | |-------------------|
| | | CueTrackPositions | | | | CueTrackPositions |
| |------------------------------| | |------------------------------|
| | CuePoint | CueTime | | | CuePoint | CueTime |
| | |-------------------| | | |-------------------|
| | | CueTrackPositions | | | | CueTrackPositions |
+-------------------------------------+ +-------------------------------------+
Figure 8: Representation of a Cues Element and two levels of its Figure 8: Representation of a Cues Element and Two Levels of Its
Descendant Elements. Descendant Elements
The Attachments Element is for attaching files to a Matroska file The Attachments element is for attaching files to a Matroska file,
such as pictures, fonts, webpages, etc. such as pictures, fonts, web pages, etc.
+------------------------------------------------+ +------------------------------------------------+
| Attachments | AttachedFile | FileDescription | | Attachments | AttachedFile | FileDescription |
| | |-------------------| | | |-------------------|
| | | FileName | | | | FileName |
| | |-------------------| | | |-------------------|
| | | FileMediaType | | | | FileMediaType |
| | |-------------------| | | |-------------------|
| | | FileData | | | | FileData |
| | |-------------------| | | |-------------------|
| | | FileUID | | | | FileUID |
| | |-------------------|
| | | FileName |
| | |-------------------|
| | | FileReferral |
| | |-------------------|
| | | FileUsedStartTime |
| | |-------------------|
| | | FileUsedEndTime |
+------------------------------------------------+ +------------------------------------------------+
Figure 9: Representation of an Attachments Element. Figure 9: Representation of an Attachments Element
The Tags Element contains metadata that describes the Segment and The Tags element contains metadata that describes the Segment and
potentially its Tracks, Chapters, and Attachments. Each Track or potentially its Tracks, Chapters, and Attachments. Each Track or
Chapter that those tags applies to has its UID listed in the Tags. Chapter that those tags applies to has its UID listed in the Tags.
The Tags contain all extra information about the file: scriptwriter, The Tags contain all extra information about the file: scriptwriters,
singer, actors, directors, titles, edition, price, dates, genre, singers, actors, directors, titles, edition, price, dates, genre,
comments, etc. Tags can contain their values in multiple languages. comments, etc. Tags can contain their values in multiple languages.
For example, a movie's "title" Tag might contain both the original For example, a movie's "TITLE" tag value might contain both the
English title as well as the title it was released as in Germany. original English title as well as the German title.
+-------------------------------------------+ +-------------------------------------------+
| Tags | Tag | Targets | TargetTypeValue | | Tags | Tag | Targets | TargetTypeValue |
| | | |------------------| | | | |------------------|
| | | | TargetType | | | | | TargetType |
| | | |------------------| | | | |------------------|
| | | | TagTrackUID | | | | | TagTrackUID |
| | | |------------------| | | | |------------------|
| | | | TagEditionUID | | | | | TagEditionUID |
| | | |------------------| | | | |------------------|
skipping to change at page 18, line 31 skipping to change at line 798
| | | |------------------| | | | |------------------|
| | | | TagDefault | | | | | TagDefault |
| | | |------------------| | | | |------------------|
| | | | TagString | | | | | TagString |
| | | |------------------| | | | |------------------|
| | | | TagBinary | | | | | TagBinary |
| | | |------------------| | | | |------------------|
| | | | SimpleTag | | | | | SimpleTag |
+-------------------------------------------+ +-------------------------------------------+
Figure 10: Representation of a Tags Element and three levels of Figure 10: Representation of a Tags Element and Three Levels of
its Children Elements. Its Children Elements
5. Matroska Schema 5. Matroska Schema
This specification includes an EBML Schema, which defines the This specification includes an EBML Schema that defines the elements
Elements and structure of Matroska using the EBML Schema elements and and structure of Matroska using the EBML Schema elements and
attributes defined in Section 11.1 of [RFC8794]. The EBML Schema attributes defined in Section 11.1 of [RFC8794].
defines every valid Matroska element in a manner defined by the EBML
specification.
Attributes using their default value like minOccurs, minver, etc. or Attributes using their default value (like minOccurs, minver, etc.)
with undefined values like length, maxver, etc. are omitted. or attributes with undefined values (like length, maxver, etc.) are
omitted.
Here the definition of each Matroska Element is provided. The definitions for each Matroska element are provided below.
5.1. Segment Element 5.1. Segment Element
id / type: 0x18538067 / master id / type: 0x18538067 / master
unknownsizeallowed: True
unknownsizeallowed: True
path: \Segment path: \Segment
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The Root Element that contains all other Top-Level definition: The Root Element that contains all other Top-Level
Elements; see Section 4.5. Elements; see Section 4.5.
5.1.1. SeekHead Element 5.1.1. SeekHead Element
id / type: 0x114D9B74 / master id / type: 0x114D9B74 / master
path: \Segment\SeekHead path: \Segment\SeekHead
maxOccurs: 2 maxOccurs: 2
skipping to change at page 19, line 45 skipping to change at line 858
path: \Segment\SeekHead\Seek\SeekPosition path: \Segment\SeekHead\Seek\SeekPosition
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The Segment Position (Section 16) of a Top-Level definition: The Segment Position (Section 16) of a Top-Level
Element. Element.
5.1.2. Info Element 5.1.2. Info Element
id / type: 0x1549A966 / master id / type: 0x1549A966 / master
path: \Segment\Info path: \Segment\Info
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
recurring: True
recurring: True
definition: Contains general information about the Segment. definition: Contains general information about the Segment.
5.1.2.1. SegmentUUID Element 5.1.2.1. SegmentUUID Element
id / type: 0x73A4 / binary id / type: 0x73A4 / binary
length: 16 length: 16
path: \Segment\Info\SegmentUUID path: \Segment\Info\SegmentUUID
maxOccurs: 1 maxOccurs: 1
definition: A randomly generated unique ID to identify the Segment definition: A randomly generated UID that identifies the Segment
amongst many others (128 bits). It is equivalent to a UUID v4 amongst many others (128 bits). It is equivalent to a Universally
[RFC4122] with all bits randomly (or pseudo-randomly) chosen. An Unique Identifier (UUID) v4 [RFC4122] with all bits randomly (or
actual UUID v4 value, where some bits are not random, MAY also be pseudorandomly) chosen. An actual UUID v4 value, where some bits
used. are not random, MAY also be used.
usage notes: If the Segment is a part of a Linked Segment, then this usage notes: If the Segment is a part of a Linked Segment, then this
Element is REQUIRED. The value of the unique ID MUST contain at element is REQUIRED. The value of the UID MUST contain at least
least one bit set to 1. one bit set to 1.
5.1.2.2. SegmentFilename Element 5.1.2.2. SegmentFilename Element
id / type: 0x7384 / utf-8 id / type: 0x7384 / utf-8
path: \Segment\Info\SegmentFilename path: \Segment\Info\SegmentFilename
maxOccurs: 1 maxOccurs: 1
definition: A filename corresponding to this Segment. definition: A filename corresponding to this Segment.
5.1.2.3. PrevUUID Element 5.1.2.3. PrevUUID Element
id / type: 0x3CB923 / binary id / type: 0x3CB923 / binary
length: 16 length: 16
path: \Segment\Info\PrevUUID path: \Segment\Info\PrevUUID
maxOccurs: 1 maxOccurs: 1
definition: An ID to identify the previous Segment of a Linked definition: An ID that identifies the previous Segment of a Linked
Segment. Segment.
usage notes: If the Segment is a part of a Linked Segment that uses usage notes: If the Segment is a part of a Linked Segment that uses
Hard Linking (Section 17.1), then either the PrevUUID or the Hard Linking (Section 17.1), then either the PrevUUID or the
NextUUID Element is REQUIRED. If a Segment contains a PrevUUID NextUUID element is REQUIRED. If a Segment contains a PrevUUID
but not a NextUUID, then it MAY be considered as the last Segment but not a NextUUID, then it MAY be considered as the last Segment
of the Linked Segment. The PrevUUID MUST NOT be equal to the of the Linked Segment. The PrevUUID MUST NOT be equal to the
SegmentUUID. SegmentUUID.
5.1.2.4. PrevFilename Element 5.1.2.4. PrevFilename Element
id / type: 0x3C83AB / utf-8 id / type: 0x3C83AB / utf-8
path: \Segment\Info\PrevFilename path: \Segment\Info\PrevFilename
maxOccurs: 1 maxOccurs: 1
definition: A filename corresponding to the file of the previous definition: A filename corresponding to the file of the previous
skipping to change at page 21, line 11 skipping to change at line 915
usage notes: Provision of the previous filename is for display usage notes: Provision of the previous filename is for display
convenience, but PrevUUID SHOULD be considered authoritative for convenience, but PrevUUID SHOULD be considered authoritative for
identifying the previous Segment in a Linked Segment. identifying the previous Segment in a Linked Segment.
5.1.2.5. NextUUID Element 5.1.2.5. NextUUID Element
id / type: 0x3EB923 / binary id / type: 0x3EB923 / binary
length: 16 length: 16
path: \Segment\Info\NextUUID path: \Segment\Info\NextUUID
maxOccurs: 1 maxOccurs: 1
definition: An ID to identify the next Segment of a Linked Segment. definition: An ID that identifies the next Segment of a Linked
Segment.
usage notes: If the Segment is a part of a Linked Segment that uses usage notes: If the Segment is a part of a Linked Segment that uses
Hard Linking (Section 17.1), then either the PrevUUID or the Hard Linking (Section 17.1), then either the PrevUUID or the
NextUUID Element is REQUIRED. If a Segment contains a NextUUID NextUUID element is REQUIRED. If a Segment contains a NextUUID
but not a PrevUUID, then it MAY be considered as the first Segment but not a PrevUUID, then it MAY be considered as the first Segment
of the Linked Segment. The NextUUID MUST NOT be equal to the of the Linked Segment. The NextUUID MUST NOT be equal to the
SegmentUUID. SegmentUUID.
5.1.2.6. NextFilename Element 5.1.2.6. NextFilename Element
id / type: 0x3E83BB / utf-8 id / type: 0x3E83BB / utf-8
path: \Segment\Info\NextFilename path: \Segment\Info\NextFilename
maxOccurs: 1 maxOccurs: 1
definition: A filename corresponding to the file of the next Linked definition: A filename corresponding to the file of the next Linked
Segment. Segment.
usage notes: Provision of the next filename is for display usage notes: Provision of the next filename is for display
convenience, but NextUUID SHOULD be considered authoritative for convenience, but NextUUID SHOULD be considered authoritative for
identifying the Next Segment. identifying the Next Segment.
5.1.2.7. SegmentFamily Element 5.1.2.7. SegmentFamily Element
id / type: 0x4444 / binary id / type: 0x4444 / binary
length: 16 length: 16
path: \Segment\Info\SegmentFamily path: \Segment\Info\SegmentFamily
definition: A unique ID that all Segments of a Linked Segment MUST definition: A UID that all Segments of a Linked Segment MUST share
share (128 bits). It is equivalent to a UUID v4 [RFC4122] with (128 bits). It is equivalent to a UUID v4 [RFC4122] with all bits
all bits randomly (or pseudo-randomly) chosen. An actual UUID v4 randomly (or pseudorandomly) chosen. An actual UUID v4 value,
value, where some bits are not random, MAY also be used. where some bits are not random, MAY also be used.
usage notes: If the Segment Info contains a ChapterTranslate usage notes: If the Segment Info contains a ChapterTranslate
element, this Element is REQUIRED. element, this element is REQUIRED.
5.1.2.8. ChapterTranslate Element 5.1.2.8. ChapterTranslate Element
id / type: 0x6924 / master id / type: 0x6924 / master
path: \Segment\Info\ChapterTranslate path: \Segment\Info\ChapterTranslate
definition: The mapping between this Segment and a segment value in definition: The mapping between this Segment and a segment value in
the given Chapter Codec. the given Chapter Codec.
rationale: Chapter Codec may need to address different segments, but rationale: Chapter Codecs may need to address different segments,
they may not know of the way to identify such segment when stored but they may not know of the way to identify such segments when
in Matroska. This element and its child elements add a way to map stored in Matroska. This element and its child elements add a way
the internal segments known to the Chapter Codec to the Segment to map the internal segments known to the Chapter Codec to the
IDs in Matroska. This allows remuxing a file with Chapter Codec SegmentUUIDs in Matroska. This allows remuxing a file with
without changing the content of the codec data, just the Segment Chapter Codec without changing the content of the codec data, just
mapping. the Segment mapping.
5.1.2.8.1. ChapterTranslateID Element 5.1.2.8.1. ChapterTranslateID Element
id / type: 0x69A5 / binary id / type: 0x69A5 / binary
path: \Segment\Info\ChapterTranslate\ChapterTranslateID path: \Segment\Info\ChapterTranslate\ChapterTranslateID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The binary value used to represent this Segment in the definition: The binary value used to represent this Segment in the
chapter codec data. The format depends on the ChapProcessCodecID chapter codec data. The format depends on the ChapProcessCodecID
used; see Section 5.1.7.1.4.15. used; see Section 5.1.7.1.4.15.
5.1.2.8.2. ChapterTranslateCodec Element 5.1.2.8.2. ChapterTranslateCodec Element
id / type: 0x69BF / uinteger id / type: 0x69BF / uinteger
path: \Segment\Info\ChapterTranslate\ChapterTranslateCodec path: \Segment\Info\ChapterTranslate\ChapterTranslateCodec
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: This ChapterTranslate applies to this chapter codec of definition: Applies to the chapter codec of the given chapter
the given chapter edition(s); see Section 5.1.7.1.4.15. edition(s); see Section 5.1.7.1.4.15.
defined values: See Table 1. Additional values can be registered in
defined values: the "Matroska Chapter Codec IDs" registry defined in Section 27.2.
+=======+=================+============================+ +=======+=================+============================+
| value | label | definition | | value | label | definition |
+=======+=================+============================+ +=======+=================+============================+
| 0 | Matroska Script | Chapter commands using the | | 0 | Matroska Script | Chapter commands using the |
| | | Matroska Script codec. | | | | Matroska Script codec. |
+-------+-----------------+----------------------------+ +-------+-----------------+----------------------------+
| 1 | DVD-menu | Chapter commands using the | | 1 | DVD-menu | Chapter commands using the |
| | | DVD-like codec. | | | | DVD-like codec. |
+-------+-----------------+----------------------------+ +-------+-----------------+----------------------------+
Table 1: ChapterTranslateCodec values Table 1: ChapterTranslateCodec Values
5.1.2.8.3. ChapterTranslateEditionUID Element 5.1.2.8.3. ChapterTranslateEditionUID Element
id / type: 0x69FC / uinteger id / type: 0x69FC / uinteger
path: \Segment\Info\ChapterTranslate\ChapterTranslateEditionUID path: \Segment\Info\ChapterTranslate\ChapterTranslateEditionUID
definition: Specify a chapter edition UID on which this definition: Specifies a chapter edition UID to which this
ChapterTranslate applies. ChapterTranslate applies.
usage notes: When no ChapterTranslateEditionUID is specified in the usage notes: When no ChapterTranslateEditionUID is specified in the
ChapterTranslate, the ChapterTranslate applies to all chapter ChapterTranslate, the ChapterTranslate applies to all chapter
editions found in the Segment using the given editions found in the Segment using the given
ChapterTranslateCodec. ChapterTranslateCodec.
5.1.2.9. TimestampScale Element 5.1.2.9. TimestampScale Element
id / type / default: 0x2AD7B1 / uinteger / 1000000 id / type / default: 0x2AD7B1 / uinteger / 1000000
range: not 0 range: not 0
skipping to change at page 23, line 22 skipping to change at line 1020
nanoseconds. A TimestampScale value of 1000000 means scaled nanoseconds. A TimestampScale value of 1000000 means scaled
timestamps in the Segment are expressed in milliseconds; see timestamps in the Segment are expressed in milliseconds; see
Section 11 on how to interpret timestamps. Section 11 on how to interpret timestamps.
5.1.2.10. Duration Element 5.1.2.10. Duration Element
id / type: 0x4489 / float id / type: 0x4489 / float
range: > 0x0p+0 range: > 0x0p+0
path: \Segment\Info\Duration path: \Segment\Info\Duration
maxOccurs: 1 maxOccurs: 1
definition: Duration of the Segment, expressed in Segment Ticks definition: Duration of the Segment, expressed in Segment Ticks,
which is based on TimestampScale; see Section 11.1. which are based on TimestampScale; see Section 11.1.
5.1.2.11. DateUTC Element 5.1.2.11. DateUTC Element
id / type: 0x4461 / date id / type: 0x4461 / date
path: \Segment\Info\DateUTC path: \Segment\Info\DateUTC
maxOccurs: 1 maxOccurs: 1
definition: The date and time that the Segment was created by the definition: The date and time that the Segment was created by the
muxing application or library. muxing application or library.
5.1.2.12. Title Element 5.1.2.12. Title Element
skipping to change at page 24, line 13 skipping to change at line 1060
id / type: 0x5741 / utf-8 id / type: 0x5741 / utf-8
path: \Segment\Info\WritingApp path: \Segment\Info\WritingApp
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Writing application (example: "mkvmerge-0.3.3"). definition: Writing application (example: "mkvmerge-0.3.3").
usage notes: Include the full name of the application followed by usage notes: Include the full name of the application followed by
the version number. the version number.
5.1.3. Cluster Element 5.1.3. Cluster Element
id / type: 0x1F43B675 / master id / type: 0x1F43B675 / master
unknownsizeallowed: True
unknownsizeallowed: True
path: \Segment\Cluster path: \Segment\Cluster
definition: The Top-Level Element containing the (monolithic) Block definition: The Top-Level Element containing the (monolithic) Block
structure. structure.
5.1.3.1. Timestamp Element 5.1.3.1. Timestamp Element
id / type: 0xE7 / uinteger id / type: 0xE7 / uinteger
path: \Segment\Cluster\Timestamp path: \Segment\Cluster\Timestamp
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Absolute timestamp of the cluster, expressed in Segment definition: Absolute timestamp of the cluster, expressed in Segment
Ticks which is based on TimestampScale; see Section 11.1. Ticks, which are based on TimestampScale; see Section 11.1.
usage notes: This element SHOULD be the first child element of the usage notes: This element SHOULD be the first child element of the
Cluster it belongs to, or the second if that Cluster contains a Cluster it belongs to or the second if that Cluster contains a
CRC-32 element (Section 6.2). CRC-32 element (Section 6.2).
5.1.3.2. Position Element 5.1.3.2. Position Element
id / type: 0xA7 / uinteger id / type: 0xA7 / uinteger
path: \Segment\Cluster\Position path: \Segment\Cluster\Position
maxOccurs: 1 maxOccurs: 1
maxver: 4 maxver: 4
definition: The Segment Position of the Cluster in the Segment (0 in definition: The Segment Position of the Cluster in the Segment (0 in
live streams). It might help to resynchronise offset on damaged live streams). It might help to resynchronize the offset on
streams. damaged streams.
5.1.3.3. PrevSize Element 5.1.3.3. PrevSize Element
id / type: 0xAB / uinteger id / type: 0xAB / uinteger
path: \Segment\Cluster\PrevSize path: \Segment\Cluster\PrevSize
maxOccurs: 1 maxOccurs: 1
definition: Size of the previous Cluster, in octets. Can be useful definition: Size of the previous Cluster, in octets. Can be useful
for backward playing. for backward playing.
5.1.3.4. SimpleBlock Element 5.1.3.4. SimpleBlock Element
id / type: 0xA3 / binary id / type: 0xA3 / binary
path: \Segment\Cluster\SimpleBlock path: \Segment\Cluster\SimpleBlock
minver: 2 minver: 2
definition: Similar to Block, see Section 10.1, but without all the definition: Similar to Block (see Section 10.1) but without all the
extra information, mostly used to reduced overhead when no extra extra information. Mostly used to reduce overhead when no extra
feature is needed; see Section 10.2 on SimpleBlock Structure. feature is needed; see Section 10.2 on SimpleBlock Structure.
5.1.3.5. BlockGroup Element 5.1.3.5. BlockGroup Element
id / type: 0xA0 / master id / type: 0xA0 / master
path: \Segment\Cluster\BlockGroup path: \Segment\Cluster\BlockGroup
definition: Basic container of information containing a single Block definition: Basic container of information containing a single Block
and information specific to that Block. and information specific to that Block.
5.1.3.5.1. Block Element 5.1.3.5.1. Block Element
skipping to change at page 25, line 31 skipping to change at line 1124
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Block containing the actual data to be rendered and a definition: Block containing the actual data to be rendered and a
timestamp relative to the Cluster Timestamp; see Section 10.1 on timestamp relative to the Cluster Timestamp; see Section 10.1 on
Block Structure. Block Structure.
5.1.3.5.2. BlockAdditions Element 5.1.3.5.2. BlockAdditions Element
id / type: 0x75A1 / master id / type: 0x75A1 / master
path: \Segment\Cluster\BlockGroup\BlockAdditions path: \Segment\Cluster\BlockGroup\BlockAdditions
maxOccurs: 1 maxOccurs: 1
definition: Contain additional binary data to complete the main one; definition: Contains additional binary data to complete the Block
see Codec BlockAdditions section of [MatroskaCodec] for more element; see Section 4.1.5 of [MatroskaCodec] for more
information. An EBML parser that has no knowledge of the Block information. An EBML parser that has no knowledge of the Block
structure could still see and use/skip these data. structure could still see and use/skip these data.
5.1.3.5.2.1. BlockMore Element 5.1.3.5.2.1. BlockMore Element
id / type: 0xA6 / master id / type: 0xA6 / master
path: \Segment\Cluster\BlockGroup\BlockAdditions\BlockMore path: \Segment\Cluster\BlockGroup\BlockAdditions\BlockMore
minOccurs: 1 minOccurs: 1
definition: Contain the BlockAdditional and some parameters. definition: Contains the BlockAdditional and some parameters.
5.1.3.5.2.2. BlockAdditional Element 5.1.3.5.2.2. BlockAdditional Element
id / type: 0xA5 / binary id / type: 0xA5 / binary
path: \Segment\Cluster\BlockGroup\BlockAdditions\BlockMore\BlockAddi path: \Segment\Cluster\BlockGroup\BlockAdditions\BlockMore\BlockAddi
tional tional
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Interpreted by the codec as it wishes (using the definition: Interpreted by the codec as it wishes (using the
BlockAddID). BlockAddID).
5.1.3.5.2.3. BlockAddID Element 5.1.3.5.2.3. BlockAddID Element
id / type / default: 0xEE / uinteger / 1 id / type / default: 0xEE / uinteger / 1
range: not 0 range: not 0
path: \Segment\Cluster\BlockGroup\BlockAdditions\BlockMore\BlockAddI path: \Segment\Cluster\BlockGroup\BlockAdditions\BlockMore\BlockAddI
D D
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: An ID to identify how to interpret the BlockAdditional definition: An ID that identifies how to interpret the
data; see Codec BlockAdditions section of [MatroskaCodec] for more BlockAdditional data; see Section 4.1.5 of [MatroskaCodec] for
information. A value of 1 indicates that the meaning of the more information. A value of 1 indicates that the BlockAdditional
BlockAdditional data is defined by the codec. Any other value data is defined by the codec. Any other value indicates that the
indicates the meaning of the BlockAdditional data is found in the BlockAdditional data should be handled according to the
BlockAddIDType found in the TrackEntry. BlockAddIDType that is located in the TrackEntry.
usage notes: Each BlockAddID value MUST be unique between all usage notes: Each BlockAddID value MUST be unique between all
BlockMore elements found in a BlockAdditions. BlockMore elements found in a BlockAdditions element. To keep
usage notes: To keep MaxBlockAdditionID as low as possible, small MaxBlockAdditionID as low as possible, small values SHOULD be
values SHOULD be used. used.
5.1.3.5.3. BlockDuration Element 5.1.3.5.3. BlockDuration Element
id / type: 0x9B / uinteger id / type: 0x9B / uinteger
path: \Segment\Cluster\BlockGroup\BlockDuration path: \Segment\Cluster\BlockGroup\BlockDuration
minOccurs / maxOccurs: see implementation notes / 1 minOccurs / maxOccurs: See Table 2 / 1
definition: The duration of the Block, expressed in Track Ticks; see definition: The duration of the Block, expressed in Track Ticks; see
Section 11.1. The BlockDuration Element can be useful at the end Section 11.1. The BlockDuration element can be useful at the end
of a Track to define the duration of the last frame (as there is of a Track to define the duration of the last frame (as there is
no subsequent Block available), or when there is a break in a no subsequent Block available) or when there is a break in a track
track like for subtitle tracks. like for subtitle tracks.
notes: See Table 2.
notes:
+===========+===================================================+ +===========+==================================================+
| attribute | note | | attribute | note |
+===========+===================================================+ +===========+==================================================+
| minOccurs | BlockDuration MUST be set (minOccurs=1) if the | | minOccurs | BlockDuration MUST be set (minOccurs=1) if the |
| | associated TrackEntry stores a DefaultDuration | | | associated TrackEntry stores a DefaultDuration |
| | value. | | | value. |
+-----------+---------------------------------------------------+ +-----------+--------------------------------------------------+
| default | When not written and with no DefaultDuration, the | | default | If a value is not present and no DefaultDuration |
| | value is assumed to be the difference between the | | | is defined, the value is assumed to be the |
| | timestamp of this Block and the timestamp of the | | | difference between the timestamp of this Block |
| | next Block in "display" order (not coding order). | | | and the timestamp of the next Block in "display" |
+-----------+---------------------------------------------------+ | | order (not coding order). |
+-----------+--------------------------------------------------+
Table 2: BlockDuration implementation notes Table 2: BlockDuration Implementation Notes
5.1.3.5.4. ReferencePriority Element 5.1.3.5.4. ReferencePriority Element
id / type / default: 0xFA / uinteger / 0 id / type / default: 0xFA / uinteger / 0
path: \Segment\Cluster\BlockGroup\ReferencePriority path: \Segment\Cluster\BlockGroup\ReferencePriority
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: This frame is referenced and has the specified cache definition: This frame is referenced and has the specified cache
priority. In cache only a frame of the same or higher priority priority. In the cache, only a frame of the same or higher
can replace this frame. A value of 0 means the frame is not priority can replace this frame. A value of 0 means the frame is
referenced. not referenced.
5.1.3.5.5. ReferenceBlock Element 5.1.3.5.5. ReferenceBlock Element
id / type: 0xFB / integer id / type: 0xFB / integer
path: \Segment\Cluster\BlockGroup\ReferenceBlock path: \Segment\Cluster\BlockGroup\ReferenceBlock
definition: A timestamp value, relative to the timestamp of the definition: A timestamp value, relative to the timestamp of the
Block in this BlockGroup, expressed in Track Ticks; see Block in this BlockGroup, expressed in Track Ticks; see
Section 11.1. This is used to reference other frames necessary to Section 11.1. This is used to reference other frames necessary to
decode this frame. The relative value SHOULD correspond to a decode this frame. The relative value SHOULD correspond to a
valid Block this Block depends on. Historically Matroska Writer valid Block that this Block depends on. Historically, Matroska
didn't write the actual Block(s) this Block depends on, but _some_ Writers didn't write the actual Block(s) that this Block depends
Block in the past. on, but they did write _some_ Block(s) in the past.
The value "0" MAY also be used to signify this Block cannot be
decoded on its own, but without knownledge of which Block is
necessary. In this case, other ReferenceBlock MUST NOT be found in
the same BlockGroup.
If the BlockGroup doesn't have any ReferenceBlock element, then the The value "0" MAY also be used to signify that this Block cannot be
Block it contains can be decoded without using any other Block data. decoded on its own, but the necessary reference Block(s) is unknown.
In this case, other ReferenceBlock elements MUST NOT be found in the
same BlockGroup. If the BlockGroup doesn't have a ReferenceBlock
element, then the Block it contains can be decoded without using any
other Block data.
5.1.3.5.6. CodecState Element 5.1.3.5.6. CodecState Element
id / type: 0xA4 / binary id / type: 0xA4 / binary
path: \Segment\Cluster\BlockGroup\CodecState path: \Segment\Cluster\BlockGroup\CodecState
maxOccurs: 1 maxOccurs: 1
minver: 2 minver: 2
definition: The new codec state to use. Data interpretation is definition: The new codec state to use. Data interpretation is
private to the codec. This information SHOULD always be private to the codec. This information SHOULD always be
referenced by a seek entry. referenced by a seek entry.
5.1.3.5.7. DiscardPadding Element 5.1.3.5.7. DiscardPadding Element
id / type: 0x75A2 / integer id / type: 0x75A2 / integer
path: \Segment\Cluster\BlockGroup\DiscardPadding path: \Segment\Cluster\BlockGroup\DiscardPadding
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Duration of the silent data added to the Block, definition: Duration of the silent data added to the Block,
expressed in Matroska Ticks -- i.e., in nanoseconds; see expressed in Matroska Ticks -- i.e., in nanoseconds; see
Section 11.1 (padding at the end of the Block for positive value, Section 11.1 (padding at the end of the Block for positive values
at the beginning of the Block for negative value). The duration and at the beginning of the Block for negative values). The
of DiscardPadding is not calculated in the duration of the duration of DiscardPadding is not calculated in the duration of
TrackEntry and SHOULD be discarded during playback. the TrackEntry and SHOULD be discarded during playback.
5.1.4. Tracks Element 5.1.4. Tracks Element
id / type: 0x1654AE6B / master id / type: 0x1654AE6B / master
path: \Segment\Tracks path: \Segment\Tracks
maxOccurs: 1 maxOccurs: 1
recurring: True
recurring: True
definition: A Top-Level Element of information with many tracks definition: A Top-Level Element of information with many tracks
described. described.
5.1.4.1. TrackEntry Element 5.1.4.1. TrackEntry Element
id / type: 0xAE / master id / type: 0xAE / master
path: \Segment\Tracks\TrackEntry path: \Segment\Tracks\TrackEntry
minOccurs: 1 minOccurs: 1
definition: Describes a track with all Elements. definition: Describes a track with all elements.
5.1.4.1.1. TrackNumber Element 5.1.4.1.1. TrackNumber Element
id / type: 0xD7 / uinteger id / type: 0xD7 / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\TrackNumber path: \Segment\Tracks\TrackEntry\TrackNumber
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The track number as used in the Block Header. definition: The track number as used in the Block Header.
5.1.4.1.2. TrackUID Element 5.1.4.1.2. TrackUID Element
id / type: 0x73C5 / uinteger id / type: 0x73C5 / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\TrackUID path: \Segment\Tracks\TrackEntry\TrackUID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: A unique ID to identify the Track. definition: A UID that identifies the Track.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.3. TrackType Element 5.1.4.1.3. TrackType Element
id / type: 0x83 / uinteger id / type: 0x83 / uinteger
path: \Segment\Tracks\TrackEntry\TrackType path: \Segment\Tracks\TrackEntry\TrackType
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The TrackType defines the type of each frame found in definition: The TrackType defines the type of each frame found in
the Track. The value SHOULD be stored on 1 octet. the Track. The value SHOULD be stored on 1 octet.
defined values: See Table 3. Additional values can be registered in
defined values: the "Track Types" registry defined in Section 27.3.
stream copy: True (Section 8)
+=======+==========+==========================================+ +=======+==========+==========================================+
| value | label | each frame contains | | value | label | contents of each frame |
+=======+==========+==========================================+ +=======+==========+==========================================+
| 1 | video | An image. | | 1 | video | An image. |
+-------+----------+------------------------------------------+ +-------+----------+------------------------------------------+
| 2 | audio | Audio samples. | | 2 | audio | Audio samples. |
+-------+----------+------------------------------------------+ +-------+----------+------------------------------------------+
| 3 | complex | A mix of different other TrackType. The | | 3 | complex | A mix of different other TrackType. The |
| | | codec needs to define how the Matroska | | | | codec needs to define how the Matroska |
| | | Player should interpret such data. | | | | Player should interpret such data. |
+-------+----------+------------------------------------------+ +-------+----------+------------------------------------------+
| 16 | logo | An image to be rendered over the video | | 16 | logo | An image to be rendered over the video |
skipping to change at page 29, line 35 skipping to change at line 1314
| 18 | buttons | Interactive button(s) to be rendered | | 18 | buttons | Interactive button(s) to be rendered |
| | | over the video track(s). | | | | over the video track(s). |
+-------+----------+------------------------------------------+ +-------+----------+------------------------------------------+
| 32 | control | Metadata used to control the player of | | 32 | control | Metadata used to control the player of |
| | | the Matroska Player. | | | | the Matroska Player. |
+-------+----------+------------------------------------------+ +-------+----------+------------------------------------------+
| 33 | metadata | Timed metadata that can be passed on to | | 33 | metadata | Timed metadata that can be passed on to |
| | | the Matroska Player. | | | | the Matroska Player. |
+-------+----------+------------------------------------------+ +-------+----------+------------------------------------------+
Table 3: TrackType values Table 3: TrackType Values
stream copy: True (Section 8)
5.1.4.1.4. FlagEnabled Element 5.1.4.1.4. FlagEnabled Element
id / type / default: 0xB9 / uinteger / 1 id / type / default: 0xB9 / uinteger / 1
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagEnabled path: \Segment\Tracks\TrackEntry\FlagEnabled
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 2 minver: 2
definition: Set to 1 if the track is usable. It is possible to turn definition: Set to 1 if the track is usable. It is possible to turn
a not usable track into a usable track using chapter codecs or a track that is not usable into a usable track using chapter
control tracks. codecs or control tracks.
5.1.4.1.5. FlagDefault Element 5.1.4.1.5. FlagDefault Element
id / type / default: 0x88 / uinteger / 1 id / type / default: 0x88 / uinteger / 1
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagDefault path: \Segment\Tracks\TrackEntry\FlagDefault
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Set if that track (audio, video or subs) is eligible for definition: Set to 1 if the track (audio, video, or subtitles) is
automatic selection by the player; see Section 19 for more eligible for automatic selection by the player; see Section 19 for
details. more details.
5.1.4.1.6. FlagForced Element 5.1.4.1.6. FlagForced Element
id / type / default: 0x55AA / uinteger / 0 id / type / default: 0x55AA / uinteger / 0
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagForced path: \Segment\Tracks\TrackEntry\FlagForced
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Applies only to subtitles. Set if that track is definition: Applies only to subtitles. Set to 1 if the track is
eligible for automatic selection by the player if it matches the eligible for automatic selection by the player if it matches the
user's language preference, even if the user's preferences would user's language preference, even if the user's preferences would
normally not enable subtitles with the selected audio track; this not normally enable subtitles with the selected audio track; this
can be used for tracks containing only translations of foreign- can be used for tracks containing only translations of audio in
language audio or onscreen text. See Section 19 for more details. foreign languages or on-screen text. See Section 19 for more
details.
5.1.4.1.7. FlagHearingImpaired Element 5.1.4.1.7. FlagHearingImpaired Element
id / type: 0x55AB / uinteger id / type: 0x55AB / uinteger
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagHearingImpaired path: \Segment\Tracks\TrackEntry\FlagHearingImpaired
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Set to 1 if and only if that track is suitable for users definition: Set to 1 if and only if the track is suitable for users
with hearing impairments. with hearing impairments.
5.1.4.1.8. FlagVisualImpaired Element 5.1.4.1.8. FlagVisualImpaired Element
id / type: 0x55AC / uinteger id / type: 0x55AC / uinteger
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagVisualImpaired path: \Segment\Tracks\TrackEntry\FlagVisualImpaired
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Set to 1 if and only if that track is suitable for users definition: Set to 1 if and only if the track is suitable for users
with visual impairments. with visual impairments.
5.1.4.1.9. FlagTextDescriptions Element 5.1.4.1.9. FlagTextDescriptions Element
id / type: 0x55AD / uinteger id / type: 0x55AD / uinteger
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagTextDescriptions path: \Segment\Tracks\TrackEntry\FlagTextDescriptions
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Set to 1 if and only if that track contains textual definition: Set to 1 if and only if the track contains textual
descriptions of video content. descriptions of video content.
5.1.4.1.10. FlagOriginal Element 5.1.4.1.10. FlagOriginal Element
id / type: 0x55AE / uinteger id / type: 0x55AE / uinteger
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagOriginal path: \Segment\Tracks\TrackEntry\FlagOriginal
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Set to 1 if and only if that track is in the content's definition: Set to 1 if and only if the track is in the content's
original language. original language.
5.1.4.1.11. FlagCommentary Element 5.1.4.1.11. FlagCommentary Element
id / type: 0x55AF / uinteger id / type: 0x55AF / uinteger
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagCommentary path: \Segment\Tracks\TrackEntry\FlagCommentary
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Set to 1 if and only if that track contains commentary. definition: Set to 1 if and only if the track contains commentary.
5.1.4.1.12. FlagLacing Element 5.1.4.1.12. FlagLacing Element
id / type / default: 0x9C / uinteger / 1 id / type / default: 0x9C / uinteger / 1
range: 0-1 range: 0-1
path: \Segment\Tracks\TrackEntry\FlagLacing path: \Segment\Tracks\TrackEntry\FlagLacing
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Set to 1 if the track MAY contain blocks using lacing. definition: Set to 1 if the track MAY contain blocks that use
When set to 0 all blocks MUST have their lacing flags set to No lacing. When set to 0, all blocks MUST have their lacing flags
lacing; see Section 10.3 on Block Lacing. set to "no lacing"; see Section 10.3 on 'Block' Lacing.
5.1.4.1.13. DefaultDuration Element 5.1.4.1.13. DefaultDuration Element
id / type: 0x23E383 / uinteger id / type: 0x23E383 / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\DefaultDuration path: \Segment\Tracks\TrackEntry\DefaultDuration
maxOccurs: 1 maxOccurs: 1
definition: Number of nanoseconds per frame, expressed in Matroska definition: Number of nanoseconds per frame, expressed in Matroska
Ticks -- i.e., in nanoseconds; see Section 11.1 (frame in the Ticks -- i.e., in nanoseconds; see Section 11.1 ("frame" in the
Matroska sense -- one Element put into a (Simple)Block). Matroska sense -- one element put into a (Simple)Block).
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.14. DefaultDecodedFieldDuration Element 5.1.4.1.14. DefaultDecodedFieldDuration Element
id / type: 0x234E7A / uinteger id / type: 0x234E7A / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\DefaultDecodedFieldDuration path: \Segment\Tracks\TrackEntry\DefaultDecodedFieldDuration
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The period between two successive fields at the output definition: The period between two successive fields at the output
of the decoding process, expressed in Matroska Ticks -- i.e., in of the decoding process, expressed in Matroska Ticks -- i.e., in
nanoseconds; see Section 11.1. see Section 9 for more information nanoseconds; see Section 11.1. See Section 9 for more
information.
stream copy: True (Section 8) stream copy: True (Section 8)
5.1.4.1.15. TrackTimestampScale Element 5.1.4.1.15. TrackTimestampScale Element
id / type / default: 0x23314F / float / 0x1p+0 id / type / default: 0x23314F / float / 0x1p+0
range: > 0x0p+0 range: > 0x0p+0
path: \Segment\Tracks\TrackEntry\TrackTimestampScale path: \Segment\Tracks\TrackEntry\TrackTimestampScale
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
maxver: 3 maxver: 3
definition: The scale to apply on this track to work at normal speed definition: The scale to apply on this track to work at normal speed
in relation with other tracks (mostly used to adjust video speed in relation with other tracks (mostly used to adjust video speed
when the audio length differs). when the audio length differs).
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.16. MaxBlockAdditionID Element 5.1.4.1.16. MaxBlockAdditionID Element
id / type / default: 0x55EE / uinteger / 0 id / type / default: 0x55EE / uinteger / 0
path: \Segment\Tracks\TrackEntry\MaxBlockAdditionID path: \Segment\Tracks\TrackEntry\MaxBlockAdditionID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The maximum value of BlockAddID (Section 5.1.3.5.2.3). definition: The maximum value of BlockAddID (Section 5.1.3.5.2.3).
A value 0 means there is no BlockAdditions (Section 5.1.3.5.2) for A value of 0 means there is no BlockAdditions (Section 5.1.3.5.2)
this track. for this track.
5.1.4.1.17. BlockAdditionMapping Element 5.1.4.1.17. BlockAdditionMapping Element
id / type: 0x41E4 / master id / type: 0x41E4 / master
path: \Segment\Tracks\TrackEntry\BlockAdditionMapping path: \Segment\Tracks\TrackEntry\BlockAdditionMapping
minver: 4 minver: 4
definition: Contains elements that extend the track format, by definition: Contains elements that extend the track format by adding
adding content either to each frame, with BlockAddID content either to each frame, with BlockAddID
(Section 5.1.3.5.2.3), or to the track as a whole with (Section 5.1.3.5.2.3), or to the track as a whole with
BlockAddIDExtraData. BlockAddIDExtraData.
5.1.4.1.17.1. BlockAddIDValue Element 5.1.4.1.17.1. BlockAddIDValue Element
id / type: 0x41F0 / uinteger id / type: 0x41F0 / uinteger
range: >=2 range: >=2
path: \Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddIDValu path: \Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddIDValu
e e
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: If the track format extension needs content beside definition: If the track format extension needs content beside
frames, the value refers to the BlockAddID (Section 5.1.3.5.2.3), frames, the value refers to the BlockAddID (Section 5.1.3.5.2.3)
value being described. value being described.
usage notes: To keep MaxBlockAdditionID as low as possible, small usage notes: To keep MaxBlockAdditionID as low as possible, small
values SHOULD be used. values SHOULD be used.
5.1.4.1.17.2. BlockAddIDName Element 5.1.4.1.17.2. BlockAddIDName Element
id / type: 0x41A4 / string id / type: 0x41A4 / string
path: \Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddIDName path: \Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddIDName
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
skipping to change at page 34, line 13 skipping to change at line 1525
path: \Segment\Tracks\TrackEntry\Name path: \Segment\Tracks\TrackEntry\Name
maxOccurs: 1 maxOccurs: 1
definition: A human-readable track name. definition: A human-readable track name.
5.1.4.1.19. Language Element 5.1.4.1.19. Language Element
id / type / default: 0x22B59C / string / eng id / type / default: 0x22B59C / string / eng
path: \Segment\Tracks\TrackEntry\Language path: \Segment\Tracks\TrackEntry\Language
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The language of the track, in the Matroska languages definition: The language of the track, in the Matroska languages
form; see Section 12 on language codes. This Element MUST be form; see Section 12 on language codes. This element MUST be
ignored if the LanguageBCP47 Element is used in the same ignored if the LanguageBCP47 element is used in the same
TrackEntry. TrackEntry.
5.1.4.1.20. LanguageBCP47 Element 5.1.4.1.20. LanguageBCP47 Element
id / type: 0x22B59D / string id / type: 0x22B59D / string
path: \Segment\Tracks\TrackEntry\LanguageBCP47 path: \Segment\Tracks\TrackEntry\LanguageBCP47
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The language of the track, in the [BCP47] form; see definition: The language of the track, in the form defined in
Section 12 on language codes. If this Element is used, then any [RFC5646]; see Section 12 on language codes. If this element is
Language Elements used in the same TrackEntry MUST be ignored. used, then any Language elements used in the same TrackEntry MUST
be ignored.
5.1.4.1.21. CodecID Element 5.1.4.1.21. CodecID Element
id / type: 0x86 / string id / type: 0x86 / string
path: \Segment\Tracks\TrackEntry\CodecID path: \Segment\Tracks\TrackEntry\CodecID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: An ID corresponding to the codec, see [MatroskaCodec] definition: An ID corresponding to the codec; see [MatroskaCodec]
for more info. for more info.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.22. CodecPrivate Element 5.1.4.1.22. CodecPrivate Element
id / type: 0x63A2 / binary id / type: 0x63A2 / binary
path: \Segment\Tracks\TrackEntry\CodecPrivate path: \Segment\Tracks\TrackEntry\CodecPrivate
maxOccurs: 1 maxOccurs: 1
definition: Private data only known to the codec. definition: Private data only known to the codec.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.23. CodecName Element 5.1.4.1.23. CodecName Element
id / type: 0x258688 / utf-8 id / type: 0x258688 / utf-8
path: \Segment\Tracks\TrackEntry\CodecName path: \Segment\Tracks\TrackEntry\CodecName
maxOccurs: 1 maxOccurs: 1
definition: A human-readable string specifying the codec. definition: A human-readable string specifying the codec.
5.1.4.1.24. AttachmentLink Element 5.1.4.1.24. AttachmentLink Element
skipping to change at page 35, line 22 skipping to change at line 1581
definition: The UID of an attachment that is used by this codec. definition: The UID of an attachment that is used by this codec.
usage notes: The value MUST match the FileUID value of an attachment usage notes: The value MUST match the FileUID value of an attachment
found in this Segment. found in this Segment.
5.1.4.1.25. CodecDelay Element 5.1.4.1.25. CodecDelay Element
id / type / default: 0x56AA / uinteger / 0 id / type / default: 0x56AA / uinteger / 0
path: \Segment\Tracks\TrackEntry\CodecDelay path: \Segment\Tracks\TrackEntry\CodecDelay
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: CodecDelay is The codec-built-in delay, expressed in definition: The built-in delay for the codec, expressed in Matroska
Matroska Ticks -- i.e., in nanoseconds; see Section 11.1. It Ticks -- i.e., in nanoseconds; see Section 11.1. It represents
represents the amount of codec samples that will be discarded by the number of codec samples that will be discarded by the decoder
the decoder during playback. This timestamp value MUST be during playback. This timestamp value MUST be subtracted from
subtracted from each frame timestamp in order to get the timestamp each frame timestamp in order to get the timestamp that will be
that will be actually played. The value SHOULD be small so the actually played. The value SHOULD be small so the muxing of
muxing of tracks with the same actual timestamp are in the same tracks with the same actual timestamp are in the same Cluster.
Cluster. stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.26. SeekPreRoll Element 5.1.4.1.26. SeekPreRoll Element
id / type / default: 0x56BB / uinteger / 0 id / type / default: 0x56BB / uinteger / 0
path: \Segment\Tracks\TrackEntry\SeekPreRoll path: \Segment\Tracks\TrackEntry\SeekPreRoll
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: After a discontinuity, SeekPreRoll is the duration of definition: After a discontinuity, the duration of the data that the
the data the decoder MUST decode before the decoded data is valid, decoder MUST decode before the decoded data is valid, expressed in
expressed in Matroska Ticks -- i.e., in nanoseconds; see Matroska Ticks -- i.e., in nanoseconds; see Section 11.1.
Section 11.1. stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.27. TrackTranslate Element 5.1.4.1.27. TrackTranslate Element
id / type: 0x6624 / master id / type: 0x6624 / master
path: \Segment\Tracks\TrackEntry\TrackTranslate path: \Segment\Tracks\TrackEntry\TrackTranslate
definition: The mapping between this TrackEntry and a track value in definition: The mapping between this TrackEntry and a track value in
the given Chapter Codec. the given Chapter Codec.
rationale: Chapter Codec may need to address content in specific rationale: Chapter Codecs may need to address content in a specific
track, but they may not know of the way to identify tracks in track, but they may not know of the way to identify tracks in
Matroska. This element and its child elements add a way to map Matroska. This element and its child elements add a way to map
the internal tracks known to the Chapter Codec to the track IDs in the internal tracks known to the Chapter Codec to the track IDs in
Matroska. This allows remuxing a file with Chapter Codec without Matroska. This allows remuxing a file with Chapter Codec without
changing the content of the codec data, just the track mapping. changing the content of the codec data, just the track mapping.
5.1.4.1.27.1. TrackTranslateTrackID Element 5.1.4.1.27.1. TrackTranslateTrackID Element
id / type: 0x66A5 / binary id / type: 0x66A5 / binary
path: \Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateTrackI path: \Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateTrackI
skipping to change at page 36, line 25 skipping to change at line 1629
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The binary value used to represent this TrackEntry in definition: The binary value used to represent this TrackEntry in
the chapter codec data. The format depends on the the chapter codec data. The format depends on the
ChapProcessCodecID used; see Section 5.1.7.1.4.15. ChapProcessCodecID used; see Section 5.1.7.1.4.15.
5.1.4.1.27.2. TrackTranslateCodec Element 5.1.4.1.27.2. TrackTranslateCodec Element
id / type: 0x66BF / uinteger id / type: 0x66BF / uinteger
path: \Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateCodec path: \Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateCodec
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: This TrackTranslate applies to this chapter codec of the definition: Applies to the chapter codec of the given chapter
given chapter edition(s); see Section 5.1.7.1.4.15. edition(s); see Section 5.1.7.1.4.15.
defined values: See Table 4. Additional values can be registered in
defined values: the "Matroska Chapter Codec IDs" registry defined in Section 27.2.
+=======+=================+============================+ +=======+=================+============================+
| value | label | definition | | value | label | definition |
+=======+=================+============================+ +=======+=================+============================+
| 0 | Matroska Script | Chapter commands using the | | 0 | Matroska Script | Chapter commands using the |
| | | Matroska Script codec. | | | | Matroska Script codec. |
+-------+-----------------+----------------------------+ +-------+-----------------+----------------------------+
| 1 | DVD-menu | Chapter commands using the | | 1 | DVD-menu | Chapter commands using the |
| | | DVD-like codec. | | | | DVD-like codec. |
+-------+-----------------+----------------------------+ +-------+-----------------+----------------------------+
Table 4: TrackTranslateCodec values Table 4: TrackTranslateCodec Values
5.1.4.1.27.3. TrackTranslateEditionUID Element 5.1.4.1.27.3. TrackTranslateEditionUID Element
id / type: 0x66FC / uinteger id / type: 0x66FC / uinteger
path: \Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateEditio path: \Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateEditio
nUID nUID
definition: Specify a chapter edition UID on which this definition: Specifies a chapter edition UID to which this
TrackTranslate applies. TrackTranslate applies.
usage notes: When no TrackTranslateEditionUID is specified in the usage notes: When no TrackTranslateEditionUID is specified in the
TrackTranslate, the TrackTranslate applies to all chapter editions TrackTranslate, the TrackTranslate applies to all chapter editions
found in the Segment using the given TrackTranslateCodec. found in the Segment using the given TrackTranslateCodec.
5.1.4.1.28. Video Element 5.1.4.1.28. Video Element
id / type: 0xE0 / master id / type: 0xE0 / master
path: \Segment\Tracks\TrackEntry\Video path: \Segment\Tracks\TrackEntry\Video
maxOccurs: 1 maxOccurs: 1
definition: Video settings. definition: Video settings.
5.1.4.1.28.1. FlagInterlaced Element 5.1.4.1.28.1. FlagInterlaced Element
id / type / default: 0x9A / uinteger / 0 id / type / default: 0x9A / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\FlagInterlaced path: \Segment\Tracks\TrackEntry\Video\FlagInterlaced
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 2 minver: 2
definition: Specify whether the video frames in this track are definition: Specifies whether the video frames in this track are
interlaced. interlaced.
restrictions: See Table 5.
defined values: stream copy: True (Section 8)
+=======+==============+==========================+ +=======+==============+==========================+
| value | label | definition | | value | label | definition |
+=======+==============+==========================+ +=======+==============+==========================+
| 0 | undetermined | Unknown status.This | | 0 | undetermined | Unknown status. This |
| | | value SHOULD be avoided. | | | | value SHOULD be avoided. |
+-------+--------------+--------------------------+ +-------+--------------+--------------------------+
| 1 | interlaced | Interlaced frames. | | 1 | interlaced | Interlaced frames. |
+-------+--------------+--------------------------+ +-------+--------------+--------------------------+
| 2 | progressive | No interlacing. | | 2 | progressive | No interlacing. |
+-------+--------------+--------------------------+ +-------+--------------+--------------------------+
Table 5: FlagInterlaced values Table 5: FlagInterlaced Values
stream copy: True (Section 8)
5.1.4.1.28.2. FieldOrder Element 5.1.4.1.28.2. FieldOrder Element
id / type / default: 0x9D / uinteger / 2 id / type / default: 0x9D / uinteger / 2
path: \Segment\Tracks\TrackEntry\Video\FieldOrder path: \Segment\Tracks\TrackEntry\Video\FieldOrder
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: Specify the field ordering of video frames in this definition: Specifies the field ordering of video frames in this
track. track.
restrictions: See Table 6.
defined values: usage notes: If FlagInterlaced is not set to 1, this element MUST be
+=======+==============+=========================================+
| value | label | definition |
+=======+==============+=========================================+
| 0 | progressive | Interlaced frames.This value SHOULD be |
| | | avoided, setting FlagInterlaced to 2 is |
| | | sufficient. |
+-------+--------------+-----------------------------------------+
| 1 | tff | Top field displayed first. Top field |
| | | stored first. |
+-------+--------------+-----------------------------------------+
| 2 | undetermined | Unknown field order.This value SHOULD |
| | | be avoided. |
+-------+--------------+-----------------------------------------+
| 6 | bff | Bottom field displayed first. Bottom |
| | | field stored first. |
+-------+--------------+-----------------------------------------+
| 9 | bff(swapped) | Top field displayed first. Fields are |
| | | interleaved in storage with the top |
| | | line of the top field stored first. |
+-------+--------------+-----------------------------------------+
| 14 | tff(swapped) | Bottom field displayed first. Fields |
| | | are interleaved in storage with the top |
| | | line of the top field stored first. |
+-------+--------------+-----------------------------------------+
Table 6: FieldOrder values
usage notes: If FlagInterlaced is not set to 1, this Element MUST be
ignored. ignored.
stream copy: True (Section 8)
stream copy: True (Section 8) +=======+===============+=========================================+
| value | label | definition |
+=======+===============+=========================================+
| 0 | progressive | Interlaced frames. This value SHOULD |
| | | be avoided; setting FlagInterlaced to 2 |
| | | is sufficient. |
+-------+---------------+-----------------------------------------+
| 1 | tff | Top field displayed first. Top field |
| | | stored first. |
+-------+---------------+-----------------------------------------+
| 2 | undetermined | Unknown field order. This value SHOULD |
| | | be avoided. |
+-------+---------------+-----------------------------------------+
| 6 | bff | Bottom field displayed first. Bottom |
| | | field stored first. |
+-------+---------------+-----------------------------------------+
| 9 | tff | Top field displayed first. Fields are |
| | (interleaved) | interleaved in storage with the top |
| | | line of the top field stored first. |
+-------+---------------+-----------------------------------------+
| 14 | bff | Bottom field displayed first. Fields |
| | (interleaved) | are interleaved in storage with the top |
| | | line of the top field stored first. |
+-------+---------------+-----------------------------------------+
Table 6: FieldOrder Values
5.1.4.1.28.3. StereoMode Element 5.1.4.1.28.3. StereoMode Element
id / type / default: 0x53B8 / uinteger / 0 id / type / default: 0x53B8 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\StereoMode path: \Segment\Tracks\TrackEntry\Video\StereoMode
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 3 minver: 3
definition: Stereo-3D video mode. There are some more details in definition: Stereo-3D video mode. See Section 18.10 for more
Section 18.10. details.
defined values: See Table 7. Additional values can be registered in
restrictions: the "Stereo Modes" registry defined in Section 27.11.
stream copy: True (Section 8)
+=======+===================================================+ +=======+===================================================+
| value | label | | value | label |
+=======+===================================================+ +=======+===================================================+
| 0 | mono | | 0 | mono |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
| 1 | side by side (left eye first) | | 1 | side by side (left eye first) |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
| 2 | top - bottom (right eye is first) | | 2 | top - bottom (right eye is first) |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
skipping to change at page 39, line 39 skipping to change at line 1774
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
| 11 | side by side (right eye first) | | 11 | side by side (right eye first) |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
| 12 | anaglyph (green/magenta) | | 12 | anaglyph (green/magenta) |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
| 13 | both eyes laced in one Block (left eye is first) | | 13 | both eyes laced in one Block (left eye is first) |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
| 14 | both eyes laced in one Block (right eye is first) | | 14 | both eyes laced in one Block (right eye is first) |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
Table 7: StereoMode values Table 7: StereoMode Values
stream copy: True (Section 8)
5.1.4.1.28.4. AlphaMode Element 5.1.4.1.28.4. AlphaMode Element
id / type / default: 0x53C0 / uinteger / 0 id / type / default: 0x53C0 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\AlphaMode path: \Segment\Tracks\TrackEntry\Video\AlphaMode
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 3 minver: 3
definition: Indicate whether the BlockAdditional Element with definition: Indicates whether the BlockAdditional element with
BlockAddID of "1" contains Alpha data, as defined by to the Codec BlockAddID of "1" contains Alpha data as defined by the Codec
Mapping for the CodecID. Undefined values SHOULD NOT be used as Mapping for the CodecID. Undefined values (i.e., values other
the behavior of known implementations is different (considered than 0 or 1) SHOULD NOT be used, as the behavior of known
either as 0 or 1). implementations is different.
defined values: See Table 8. Additional values can be registered in
defined values: the "Alpha Modes" registry defined in Section 27.5.
stream copy: True (Section 8)
+=======+=========+============================================+ +=======+=========+============================================+
| value | label | definition | | value | label | definition |
+=======+=========+============================================+ +=======+=========+============================================+
| 0 | none | The BlockAdditional Element with | | 0 | none | The BlockAdditional element with |
| | | BlockAddID of "1" does not exist or SHOULD | | | | BlockAddID of "1" does not exist or SHOULD |
| | | NOT be considered as containing such data. | | | | NOT be considered as containing such data. |
+-------+---------+--------------------------------------------+ +-------+---------+--------------------------------------------+
| 1 | present | The BlockAdditional Element with | | 1 | present | The BlockAdditional element with |
| | | BlockAddID of "1" contains alpha channel | | | | BlockAddID of "1" contains alpha channel |
| | | data. | | | | data. |
+-------+---------+--------------------------------------------+ +-------+---------+--------------------------------------------+
Table 8: AlphaMode values Table 8: AlphaMode Values
stream copy: True (Section 8)
5.1.4.1.28.5. OldStereoMode Element 5.1.4.1.28.5. OldStereoMode Element
id / type: 0x53B9 / uinteger id / type: 0x53B9 / uinteger
path: \Segment\Tracks\TrackEntry\Video\OldStereoMode path: \Segment\Tracks\TrackEntry\Video\OldStereoMode
maxOccurs: 1 maxOccurs: 1
maxver: 2 maxver: 2
definition: Bogus StereoMode value used in old versions of definition: Bogus StereoMode value used in old versions of
libmatroska. [libmatroska].
restrictions: See Table 9.
restrictions: usage notes: This element MUST NOT be used. It was an incorrect
value used in libmatroska up to 0.9.0.
+=======+===========+ +=======+===========+
| value | label | | value | label |
+=======+===========+ +=======+===========+
| 0 | mono | | 0 | mono |
+-------+-----------+ +-------+-----------+
| 1 | right eye | | 1 | right eye |
+-------+-----------+ +-------+-----------+
| 2 | left eye | | 2 | left eye |
+-------+-----------+ +-------+-----------+
| 3 | both eyes | | 3 | both eyes |
+-------+-----------+ +-------+-----------+
Table 9: OldStereoMode Table 9: OldStereoMode
values Values
usage notes: This Element MUST NOT be used. It was an incorrect
value used in libmatroska up to 0.9.0.
5.1.4.1.28.6. PixelWidth Element 5.1.4.1.28.6. PixelWidth Element
id / type: 0xB0 / uinteger id / type: 0xB0 / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\Video\PixelWidth path: \Segment\Tracks\TrackEntry\Video\PixelWidth
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Width of the encoded video frames in pixels. definition: Width of the encoded video frames in pixels.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.7. PixelHeight Element 5.1.4.1.28.7. PixelHeight Element
id / type: 0xBA / uinteger id / type: 0xBA / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\Video\PixelHeight path: \Segment\Tracks\TrackEntry\Video\PixelHeight
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Height of the encoded video frames in pixels. definition: Height of the encoded video frames in pixels.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.8. PixelCropBottom Element 5.1.4.1.28.8. PixelCropBottom Element
id / type / default: 0x54AA / uinteger / 0 id / type / default: 0x54AA / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\PixelCropBottom path: \Segment\Tracks\TrackEntry\Video\PixelCropBottom
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The number of video pixels to remove at the bottom of definition: The number of video pixels to remove at the bottom of
the image. the image.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.9. PixelCropTop Element 5.1.4.1.28.9. PixelCropTop Element
id / type / default: 0x54BB / uinteger / 0 id / type / default: 0x54BB / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\PixelCropTop path: \Segment\Tracks\TrackEntry\Video\PixelCropTop
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The number of video pixels to remove at the top of the definition: The number of video pixels to remove at the top of the
image. image.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.10. PixelCropLeft Element 5.1.4.1.28.10. PixelCropLeft Element
id / type / default: 0x54CC / uinteger / 0 id / type / default: 0x54CC / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\PixelCropLeft path: \Segment\Tracks\TrackEntry\Video\PixelCropLeft
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The number of video pixels to remove on the left of the definition: The number of video pixels to remove on the left of the
image. image.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.11. PixelCropRight Element 5.1.4.1.28.11. PixelCropRight Element
id / type / default: 0x54DD / uinteger / 0 id / type / default: 0x54DD / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\PixelCropRight path: \Segment\Tracks\TrackEntry\Video\PixelCropRight
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The number of video pixels to remove on the right of the definition: The number of video pixels to remove on the right of the
image. image.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.12. DisplayWidth Element 5.1.4.1.28.12. DisplayWidth Element
id / type: 0x54B0 / uinteger id / type: 0x54B0 / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\Video\DisplayWidth path: \Segment\Tracks\TrackEntry\Video\DisplayWidth
maxOccurs: 1 maxOccurs: 1
definition: Width of the video frames to display. Applies to the definition: Width of the video frames to display. Applies to the
video frame after cropping (PixelCrop* Elements). video frame after cropping (PixelCrop* Elements).
notes: See Table 10.
stream copy: True (Section 8)
notes: +===========+==================================================+
| attribute | note |
+===========+=================================================+ +===========+==================================================+
| attribute | note | | default | If the DisplayUnit of the same TrackEntry is 0, |
+===========+=================================================+ | | then the default value for DisplayWidth is equal |
| default | If the DisplayUnit of the same TrackEntry is 0, | | | to PixelWidth - PixelCropLeft - PixelCropRight; |
| | then the default value for DisplayWidth is | | | else, there is no default value. |
| | equal toPixelWidth - PixelCropLeft - | +-----------+--------------------------------------------------+
| | PixelCropRight, else there is no default value. |
+-----------+-------------------------------------------------+
Table 10: DisplayWidth implementation notes
stream copy: True (Section 8) Table 10: DisplayWidth Implementation Notes
5.1.4.1.28.13. DisplayHeight Element 5.1.4.1.28.13. DisplayHeight Element
id / type: 0x54BA / uinteger id / type: 0x54BA / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\Video\DisplayHeight path: \Segment\Tracks\TrackEntry\Video\DisplayHeight
maxOccurs: 1 maxOccurs: 1
definition: Height of the video frames to display. Applies to the definition: Height of the video frames to display. Applies to the
video frame after cropping (PixelCrop* Elements). video frame after cropping (PixelCrop* Elements).
notes: See Table 11.
stream copy: True (Section 8)
notes: +===========+===================================================+
| attribute | note |
+===========+==================================================+ +===========+===================================================+
| attribute | note | | default | If the DisplayUnit of the same TrackEntry is 0, |
+===========+==================================================+ | | then the default value for DisplayHeight is equal |
| default | If the DisplayUnit of the same TrackEntry is 0, | | | to PixelHeight - PixelCropTop - PixelCropBottom; |
| | then the default value for DisplayHeight is | | | else, there is no default value. |
| | equal toPixelHeight - PixelCropTop - | +-----------+---------------------------------------------------+
| | PixelCropBottom, else there is no default value. |
+-----------+--------------------------------------------------+
Table 11: DisplayHeight implementation notes
stream copy: True (Section 8) Table 11: DisplayHeight Implementation Notes
5.1.4.1.28.14. DisplayUnit Element 5.1.4.1.28.14. DisplayUnit Element
id / type / default: 0x54B2 / uinteger / 0 id / type / default: 0x54B2 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\DisplayUnit path: \Segment\Tracks\TrackEntry\Video\DisplayUnit
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: How DisplayWidth & DisplayHeight are interpreted. definition: How DisplayWidth and DisplayHeight are interpreted.
defined values: See Table 12. Additional values can be registered
restrictions: in the "Display Units" registry defined in Section 27.12.
+=======+======================+ +=======+======================+
| value | label | | value | label |
+=======+======================+ +=======+======================+
| 0 | pixels | | 0 | pixels |
+-------+----------------------+ +-------+----------------------+
| 1 | centimeters | | 1 | centimeters |
+-------+----------------------+ +-------+----------------------+
| 2 | inches | | 2 | inches |
+-------+----------------------+ +-------+----------------------+
| 3 | display aspect ratio | | 3 | display aspect ratio |
+-------+----------------------+ +-------+----------------------+
| 4 | unknown | | 4 | unknown |
+-------+----------------------+ +-------+----------------------+
Table 12: DisplayUnit values Table 12: DisplayUnit Values
5.1.4.1.28.15. UncompressedFourCC Element 5.1.4.1.28.15. UncompressedFourCC Element
id / type: 0x2EB524 / binary id / type: 0x2EB524 / binary
length: 4 length: 4
path: \Segment\Tracks\TrackEntry\Video\UncompressedFourCC path: \Segment\Tracks\TrackEntry\Video\UncompressedFourCC
minOccurs / maxOccurs: see implementation notes / 1 minOccurs / maxOccurs: See Table 13 / 1
definition: Specify the uncompressed pixel format used for the definition: Specifies the uncompressed pixel format used for the
Track's data as a FourCC. This value is similar in scope to the Track's data as a FourCC. This value is similar in scope to the
biCompression value of AVI's BITMAPINFO [AVIFormat]. There is no biCompression value of AVI's BITMAPINFO [AVIFormat]. There is
definitive list of FourCC values, nor an official registry. Some neither a definitive list of FourCC values nor an official
common values for YUV pixel formats can be found at [MSYUV8], registry. Some common values for YUV pixel formats can be found
[MSYUV16] and [FourCC-YUV]. Some common values for uncompressed at [MSYUV8], [MSYUV16], and [FourCC-YUV]. Some common values for
RGB pixel formats can be found at [MSRGB] and [FourCC-RGB]. uncompressed RGB pixel formats can be found at [MSRGB] and
[FourCC-RGB].
notes: notes: See Table 13.
stream copy: True (Section 8)
+===========+==============================================+ +===========+==============================================+
| attribute | note | | attribute | note |
+===========+==============================================+ +===========+==============================================+
| minOccurs | UncompressedFourCC MUST be set (minOccurs=1) | | minOccurs | UncompressedFourCC MUST be set (minOccurs=1) |
| | in TrackEntry, when the CodecID Element of | | | in TrackEntry when the CodecID element of |
| | the TrackEntry is set to "V_UNCOMPRESSED". | | | the TrackEntry is set to "V_UNCOMPRESSED". |
+-----------+----------------------------------------------+ +-----------+----------------------------------------------+
Table 13: UncompressedFourCC implementation notes Table 13: UncompressedFourCC Implementation Notes
stream copy: True (Section 8)
5.1.4.1.28.16. Colour Element 5.1.4.1.28.16. Colour Element
id / type: 0x55B0 / master id / type: 0x55B0 / master
path: \Segment\Tracks\TrackEntry\Video\Colour path: \Segment\Tracks\TrackEntry\Video\Colour
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Settings describing the colour format. definition: Settings describing the color format.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.17. MatrixCoefficients Element 5.1.4.1.28.17. MatrixCoefficients Element
id / type / default: 0x55B1 / uinteger / 2 id / type / default: 0x55B1 / uinteger / 2
path: \Segment\Tracks\TrackEntry\Video\Colour\MatrixCoefficients path: \Segment\Tracks\TrackEntry\Video\Colour\MatrixCoefficients
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: The Matrix Coefficients of the video used to derive luma definition: The Matrix Coefficients of the video used to derive luma
and chroma values from red, green, and blue color primaries. For and chroma values from red, green, and blue color primaries. For
clarity, the value and meanings for MatrixCoefficients are adopted clarity, the value and meanings for MatrixCoefficients are adopted
from Table 4 of [ITU-H.273]. from Table 4 of [ITU-H.273].
restrictions: See Table 14.
restrictions: stream copy: True (Section 8)
+=======+=======================================+ +=======+=======================================+
| value | label | | value | label |
+=======+=======================================+ +=======+=======================================+
| 0 | Identity | | 0 | Identity |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 1 | ITU-R BT.709 | | 1 | ITU-R BT.709 |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 2 | unspecified | | 2 | unspecified |
+-------+---------------------------------------+ +-------+---------------------------------------+
skipping to change at page 45, line 39 skipping to change at line 2038
+-------+---------------------------------------+ +-------+---------------------------------------+
| 11 | SMPTE ST 2085 | | 11 | SMPTE ST 2085 |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 12 | Chroma-derived Non-constant Luminance | | 12 | Chroma-derived Non-constant Luminance |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 13 | Chroma-derived Constant Luminance | | 13 | Chroma-derived Constant Luminance |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 14 | ITU-R BT.2100-0 | | 14 | ITU-R BT.2100-0 |
+-------+---------------------------------------+ +-------+---------------------------------------+
Table 14: MatrixCoefficients values Table 14: MatrixCoefficients Values
stream copy: True (Section 8)
5.1.4.1.28.18. BitsPerChannel Element 5.1.4.1.28.18. BitsPerChannel Element
id / type / default: 0x55B2 / uinteger / 0 id / type / default: 0x55B2 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\Colour\BitsPerChannel path: \Segment\Tracks\TrackEntry\Video\Colour\BitsPerChannel
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: Number of decoded bits per channel. A value of 0 definition: Number of decoded bits per channel. A value of 0
indicates that the BitsPerChannel is unspecified. indicates that the BitsPerChannel is unspecified.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.19. ChromaSubsamplingHorz Element 5.1.4.1.28.19. ChromaSubsamplingHorz Element
id / type: 0x55B3 / uinteger id / type: 0x55B3 / uinteger
path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingHorz path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingHorz
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The amount of pixels to remove in the Cr and Cb channels definition: The number of pixels to remove in the Cr and Cb channels
for every pixel not removed horizontally. Example: For video with for every pixel not removed horizontally. Example: For video with
4:2:0 chroma subsampling, the ChromaSubsamplingHorz SHOULD be set 4:2:0 chroma subsampling, the ChromaSubsamplingHorz SHOULD be set
to 1. to 1.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.20. ChromaSubsamplingVert Element 5.1.4.1.28.20. ChromaSubsamplingVert Element
id / type: 0x55B4 / uinteger id / type: 0x55B4 / uinteger
path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingVert path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingVert
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The amount of pixels to remove in the Cr and Cb channels definition: The number of pixels to remove in the Cr and Cb channels
for every pixel not removed vertically. Example: For video with for every pixel not removed vertically. Example: For video with
4:2:0 chroma subsampling, the ChromaSubsamplingVert SHOULD be set 4:2:0 chroma subsampling, the ChromaSubsamplingVert SHOULD be set
to 1. to 1.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.21. CbSubsamplingHorz Element 5.1.4.1.28.21. CbSubsamplingHorz Element
id / type: 0x55B5 / uinteger id / type: 0x55B5 / uinteger
path: \Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingHorz path: \Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingHorz
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The amount of pixels to remove in the Cb channel for definition: The number of pixels to remove in the Cb channel for
every pixel not removed horizontally. This is additive with every pixel not removed horizontally. This is additive with
ChromaSubsamplingHorz. Example: For video with 4:2:1 chroma ChromaSubsamplingHorz. Example: For video with 4:2:1 chroma
subsampling, the ChromaSubsamplingHorz SHOULD be set to 1 and subsampling, the ChromaSubsamplingHorz SHOULD be set to 1, and
CbSubsamplingHorz SHOULD be set to 1. CbSubsamplingHorz SHOULD be set to 1.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.22. CbSubsamplingVert Element 5.1.4.1.28.22. CbSubsamplingVert Element
id / type: 0x55B6 / uinteger id / type: 0x55B6 / uinteger
path: \Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingVert path: \Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingVert
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The amount of pixels to remove in the Cb channel for definition: The number of pixels to remove in the Cb channel for
every pixel not removed vertically. This is additive with every pixel not removed vertically. This is additive with
ChromaSubsamplingVert. ChromaSubsamplingVert.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.23. ChromaSitingHorz Element 5.1.4.1.28.23. ChromaSitingHorz Element
id / type / default: 0x55B7 / uinteger / 0 id / type / default: 0x55B7 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingHorz path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingHorz
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: How chroma is subsampled horizontally. definition: How chroma is subsampled horizontally.
defined values: See Table 15. Additional values can be registered
restrictions: in the "Horizontal Chroma Sitings" registry defined in
Section 27.15.
stream copy: True (Section 8)
+=======+=================+ +=======+=================+
| value | label | | value | label |
+=======+=================+ +=======+=================+
| 0 | unspecified | | 0 | unspecified |
+-------+-----------------+ +-------+-----------------+
| 1 | left collocated | | 1 | left collocated |
+-------+-----------------+ +-------+-----------------+
| 2 | half | | 2 | half |
+-------+-----------------+ +-------+-----------------+
Table 15: Table 15:
ChromaSitingHorz values ChromaSitingHorz Values
stream copy: True (Section 8)
5.1.4.1.28.24. ChromaSitingVert Element 5.1.4.1.28.24. ChromaSitingVert Element
id / type / default: 0x55B8 / uinteger / 0 id / type / default: 0x55B8 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingVert path: \Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingVert
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: How chroma is subsampled vertically. definition: How chroma is subsampled vertically.
defined values: See Table 16. Additional values can be registered
restrictions: in the "Vertical Chroma Sitings" registry defined in
Section 27.16.
stream copy: True (Section 8)
+=======+================+ +=======+================+
| value | label | | value | label |
+=======+================+ +=======+================+
| 0 | unspecified | | 0 | unspecified |
+-------+----------------+ +-------+----------------+
| 1 | top collocated | | 1 | top collocated |
+-------+----------------+ +-------+----------------+
| 2 | half | | 2 | half |
+-------+----------------+ +-------+----------------+
Table 16: Table 16:
ChromaSitingVert ChromaSitingVert
values Values
stream copy: True (Section 8)
5.1.4.1.28.25. Range Element 5.1.4.1.28.25. Range Element
id / type / default: 0x55B9 / uinteger / 0 id / type / default: 0x55B9 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\Colour\Range path: \Segment\Tracks\TrackEntry\Video\Colour\Range
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: Clipping of the color ranges. definition: Clipping of the color ranges.
defined values: See Table 17. Additional values can be defined in
restrictions: the "Color Ranges" registry defined in Section 27.17.
stream copy: True (Section 8)
+=======+=========================================================+ +=======+=========================================================+
| value | label | | value | label |
+=======+=========================================================+ +=======+=========================================================+
| 0 | unspecified | | 0 | unspecified |
+-------+---------------------------------------------------------+ +-------+---------------------------------------------------------+
| 1 | broadcast range | | 1 | broadcast range |
+-------+---------------------------------------------------------+ +-------+---------------------------------------------------------+
| 2 | full range (no clipping) | | 2 | full range (no clipping) |
+-------+---------------------------------------------------------+ +-------+---------------------------------------------------------+
| 3 | defined by MatrixCoefficients / TransferCharacteristics | | 3 | defined by MatrixCoefficients / TransferCharacteristics |
+-------+---------------------------------------------------------+ +-------+---------------------------------------------------------+
Table 17: Range values Table 17: Range Values
stream copy: True (Section 8)
5.1.4.1.28.26. TransferCharacteristics Element 5.1.4.1.28.26. TransferCharacteristics Element
id / type / default: 0x55BA / uinteger / 2 id / type / default: 0x55BA / uinteger / 2
path: \Segment\Tracks\TrackEntry\Video\Colour\TransferCharacteristic path: \Segment\Tracks\TrackEntry\Video\Colour\TransferCharacteristic
s s
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: The transfer characteristics of the video. For clarity, definition: The transfer characteristics of the video. For clarity,
the value and meanings for TransferCharacteristics are adopted the value and meanings for TransferCharacteristics are adopted
from Table 3 of [ITU-H.273]. from Table 3 of [ITU-H.273].
restrictions: See Table 18.
restrictions: stream copy: True (Section 8)
+=======+=======================================+ +=======+=======================================+
| value | label | | value | label |
+=======+=======================================+ +=======+=======================================+
| 0 | reserved | | 0 | reserved |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 1 | ITU-R BT.709 | | 1 | ITU-R BT.709 |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 2 | unspecified | | 2 | unspecified |
+-------+---------------------------------------+ +-------+---------------------------------------+
skipping to change at page 50, line 47 skipping to change at line 2229
+-------+---------------------------------------+ +-------+---------------------------------------+
| 15 | ITU-R BT.2020 12 bit | | 15 | ITU-R BT.2020 12 bit |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 16 | ITU-R BT.2100 Perceptual Quantization | | 16 | ITU-R BT.2100 Perceptual Quantization |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 17 | SMPTE ST 428-1 | | 17 | SMPTE ST 428-1 |
+-------+---------------------------------------+ +-------+---------------------------------------+
| 18 | ARIB STD-B67 (HLG) | | 18 | ARIB STD-B67 (HLG) |
+-------+---------------------------------------+ +-------+---------------------------------------+
Table 18: TransferCharacteristics values Table 18: TransferCharacteristics Values
stream copy: True (Section 8)
5.1.4.1.28.27. Primaries Element 5.1.4.1.28.27. Primaries Element
id / type / default: 0x55BB / uinteger / 2 id / type / default: 0x55BB / uinteger / 2
path: \Segment\Tracks\TrackEntry\Video\Colour\Primaries path: \Segment\Tracks\TrackEntry\Video\Colour\Primaries
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: The colour primaries of the video. For clarity, the definition: The color primaries of the video. For clarity, the
value and meanings for Primaries are adopted from Table 2 of value and meanings for Primaries are adopted from Table 2 of
[ITU-H.273]. [ITU-H.273].
restrictions: See Table 19.
restrictions: stream copy: True (Section 8)
+=======+========================================+ +=======+========================================+
| value | label | | value | label |
+=======+========================================+ +=======+========================================+
| 0 | reserved | | 0 | reserved |
+-------+----------------------------------------+ +-------+----------------------------------------+
| 1 | ITU-R BT.709 | | 1 | ITU-R BT.709 |
+-------+----------------------------------------+ +-------+----------------------------------------+
| 2 | unspecified | | 2 | unspecified |
+-------+----------------------------------------+ +-------+----------------------------------------+
skipping to change at page 51, line 49 skipping to change at line 2275
+-------+----------------------------------------+ +-------+----------------------------------------+
| 10 | SMPTE ST 428-1 | | 10 | SMPTE ST 428-1 |
+-------+----------------------------------------+ +-------+----------------------------------------+
| 11 | SMPTE RP 432-2 | | 11 | SMPTE RP 432-2 |
+-------+----------------------------------------+ +-------+----------------------------------------+
| 12 | SMPTE EG 432-2 | | 12 | SMPTE EG 432-2 |
+-------+----------------------------------------+ +-------+----------------------------------------+
| 22 | EBU Tech. 3213-E - JEDEC P22 phosphors | | 22 | EBU Tech. 3213-E - JEDEC P22 phosphors |
+-------+----------------------------------------+ +-------+----------------------------------------+
Table 19: Primaries values Table 19: Primaries Values
stream copy: True (Section 8)
5.1.4.1.28.28. MaxCLL Element 5.1.4.1.28.28. MaxCLL Element
id / type: 0x55BC / uinteger id / type: 0x55BC / uinteger
path: \Segment\Tracks\TrackEntry\Video\Colour\MaxCLL path: \Segment\Tracks\TrackEntry\Video\Colour\MaxCLL
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Maximum brightness of a single pixel (Maximum Content definition: Maximum brightness of a single pixel (Maximum Content
Light Level) in candelas per square meter (cd/m^2). Light Level) in candelas per square meter (cd/m^2).
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.29. MaxFALL Element 5.1.4.1.28.29. MaxFALL Element
id / type: 0x55BD / uinteger id / type: 0x55BD / uinteger
path: \Segment\Tracks\TrackEntry\Video\Colour\MaxFALL path: \Segment\Tracks\TrackEntry\Video\Colour\MaxFALL
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Maximum brightness of a single full frame (Maximum definition: Maximum brightness of a single full frame (Maximum
Frame-Average Light Level) in candelas per square meter (cd/m^2). Frame-Average Light Level) in candelas per square meter (cd/m^2).
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.30. MasteringMetadata Element 5.1.4.1.28.30. MasteringMetadata Element
id / type: 0x55D0 / master id / type: 0x55D0 / master
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: SMPTE 2086 mastering data. definition: SMPTE 2086 mastering data.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.31. PrimaryRChromaticityX Element 5.1.4.1.28.31. PrimaryRChromaticityX Element
id / type: 0x55D1 / float id / type: 0x55D1 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim
aryRChromaticityX aryRChromaticityX
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Red X chromaticity coordinate, as defined by [CIE-1931]. definition: Red X chromaticity coordinate, as defined by [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.32. PrimaryRChromaticityY Element 5.1.4.1.28.32. PrimaryRChromaticityY Element
id / type: 0x55D2 / float id / type: 0x55D2 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim
aryRChromaticityY aryRChromaticityY
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Red Y chromaticity coordinate, as defined by [CIE-1931]. definition: Red Y chromaticity coordinate, as defined by [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.33. PrimaryGChromaticityX Element 5.1.4.1.28.33. PrimaryGChromaticityX Element
id / type: 0x55D3 / float id / type: 0x55D3 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim
aryGChromaticityX aryGChromaticityX
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Green X chromaticity coordinate, as defined by definition: Green X chromaticity coordinate, as defined by
[CIE-1931]. [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.34. PrimaryGChromaticityY Element 5.1.4.1.28.34. PrimaryGChromaticityY Element
id / type: 0x55D4 / float id / type: 0x55D4 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim
aryGChromaticityY aryGChromaticityY
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Green Y chromaticity coordinate, as defined by definition: Green Y chromaticity coordinate, as defined by
[CIE-1931]. [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.35. PrimaryBChromaticityX Element 5.1.4.1.28.35. PrimaryBChromaticityX Element
id / type: 0x55D5 / float id / type: 0x55D5 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim
aryBChromaticityX aryBChromaticityX
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Blue X chromaticity coordinate, as defined by definition: Blue X chromaticity coordinate, as defined by
[CIE-1931]. [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.36. PrimaryBChromaticityY Element 5.1.4.1.28.36. PrimaryBChromaticityY Element
id / type: 0x55D6 / float id / type: 0x55D6 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Prim
aryBChromaticityY aryBChromaticityY
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Blue Y chromaticity coordinate, as defined by definition: Blue Y chromaticity coordinate, as defined by
[CIE-1931]. [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.37. WhitePointChromaticityX Element 5.1.4.1.28.37. WhitePointChromaticityX Element
id / type: 0x55D7 / float id / type: 0x55D7 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Whit path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Whit
ePointChromaticityX ePointChromaticityX
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: White X chromaticity coordinate, as defined by definition: White X chromaticity coordinate, as defined by
[CIE-1931]. [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.38. WhitePointChromaticityY Element 5.1.4.1.28.38. WhitePointChromaticityY Element
id / type: 0x55D8 / float id / type: 0x55D8 / float
range: 0x0p+0-0x1p+0 range: 0x0p+0-0x1p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Whit path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Whit
ePointChromaticityY ePointChromaticityY
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: White Y chromaticity coordinate, as defined by definition: White Y chromaticity coordinate, as defined by
[CIE-1931]. [CIE-1931].
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.39. LuminanceMax Element 5.1.4.1.28.39. LuminanceMax Element
id / type: 0x55D9 / float id / type: 0x55D9 / float
range: >= 0x0p+0 range: >= 0x0p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Lumi path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Lumi
nanceMax nanceMax
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Maximum luminance. Represented in candelas per square definition: Maximum luminance. Represented in candelas per square
meter (cd/m^2). meter (cd/m^2).
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.40. LuminanceMin Element 5.1.4.1.28.40. LuminanceMin Element
id / type: 0x55DA / float id / type: 0x55DA / float
range: >= 0x0p+0 range: >= 0x0p+0
path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Lumi path: \Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\Lumi
nanceMin nanceMin
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Minimum luminance. Represented in candelas per square definition: Minimum luminance. Represented in candelas per square
meter (cd/m^2). meter (cd/m^2).
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.41. Projection Element 5.1.4.1.28.41. Projection Element
id / type: 0x7670 / master id / type: 0x7670 / master
path: \Segment\Tracks\TrackEntry\Video\Projection path: \Segment\Tracks\TrackEntry\Video\Projection
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Describes the video projection details. Used to render definition: Describes the video projection details. Used to render
spherical, VR videos or flipping videos horizontally/vertically. spherical or VR videos or to flip videos horizontally or
vertically.
stream copy: True (Section 8) stream copy: True (Section 8)
5.1.4.1.28.42. ProjectionType Element 5.1.4.1.28.42. ProjectionType Element
id / type / default: 0x7671 / uinteger / 0 id / type / default: 0x7671 / uinteger / 0
path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionType path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionType
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: Describes the projection used for this video track. definition: Describes the projection used for this video track.
defined values: See Table 20. Additional values can be registered
restrictions: in the "Projection Types" registry defined in Section 27.13.
stream copy: True (Section 8)
+=======+=================+ +=======+=================+
| value | label | | value | label |
+=======+=================+ +=======+=================+
| 0 | rectangular | | 0 | rectangular |
+-------+-----------------+ +-------+-----------------+
| 1 | equirectangular | | 1 | equirectangular |
+-------+-----------------+ +-------+-----------------+
| 2 | cubemap | | 2 | cubemap |
+-------+-----------------+ +-------+-----------------+
| 3 | mesh | | 3 | mesh |
+-------+-----------------+ +-------+-----------------+
Table 20: Table 20:
ProjectionType values ProjectionType Values
stream copy: True (Section 8)
5.1.4.1.28.43. ProjectionPrivate Element 5.1.4.1.28.43. ProjectionPrivate Element
id / type: 0x7672 / binary id / type: 0x7672 / binary
path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPrivate path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPrivate
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Private data that only applies to a specific projection. definition: Private data that only applies to a specific projection.
* If ProjectionType equals 0 (Rectangular), then this element MUST * If ProjectionType equals 0 (rectangular), then this element MUST
NOT be present. NOT be present.
* If ProjectionType equals 1 (Equirectangular), then this element * If ProjectionType equals 1 (equirectangular), then this element
MUST be present and contain the same binary data that would be MUST be present and contain the same binary data that would be
stored inside an ISOBMFF Equirectangular Projection Box ('equi'). stored inside an ISOBMFF Equirectangular Projection Box ("equi").
* If ProjectionType equals 2 (Cubemap), then this element MUST be * If ProjectionType equals 2 (cubemap), then this element MUST be
present and contain the same binary data that would be stored present and contain the same binary data that would be stored
inside an ISOBMFF Cubemap Projection Box ('cbmp'). inside an ISOBMFF Cubemap Projection Box ("cbmp").
* If ProjectionType equals 3 (Mesh), then this element MUST be * If ProjectionType equals 3 (mesh), then this element MUST be
present and contain the same binary data that would be stored present and contain the same binary data that would be stored
inside an ISOBMFF Mesh Projection Box ('mshp'). inside an ISOBMFF Mesh Projection Box ("mshp").
usage notes: ISOBMFF box size and fourcc fields are not included in usage notes: ISOBMFF box size and FourCC fields are not included in
the binary data, but the FullBox version and flag fields are. the binary data, but the FullBox version and flag fields are.
This is to avoid redundant framing information while preserving This is to avoid redundant framing information while preserving
versioning and semantics between the two container formats. versioning and semantics between the two container formats.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.44. ProjectionPoseYaw Element 5.1.4.1.28.44. ProjectionPoseYaw Element
id / type / default: 0x7673 / float / 0x0p+0 id / type / default: 0x7673 / float / 0x0p+0
range: >= -0xB4p+0, <= 0xB4p+0 range: >= -0xB4p+0, <= 0xB4p+0
path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseYaw path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseYaw
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: Specifies a yaw rotation to the projection. definition: Specifies a yaw rotation to the projection. Value
represents a clockwise rotation, in degrees, around the up vector.
Value represents a clockwise rotation, in degrees, around the up This rotation must be applied before any ProjectionPosePitch or
vector. This rotation must be applied before any ProjectionPosePitch ProjectionPoseRoll rotations. The value of this element MUST be
or ProjectionPoseRoll rotations. The value of this element MUST be in the -180 to 180 degree range, both inclusive.
in the -180 to 180 degree range, both included.
Setting ProjectionPoseYaw to 180 or -180 degrees, with the Setting ProjectionPoseYaw to 180 or -180 degrees with
ProjectionPoseRoll and ProjectionPosePitch set to 0 degrees flips the ProjectionPoseRoll and ProjectionPosePitch set to 0 degrees flips the
image horizontally. image horizontally.
stream copy: True (Section 8) stream copy: True (Section 8)
5.1.4.1.28.45. ProjectionPosePitch Element 5.1.4.1.28.45. ProjectionPosePitch Element
id / type / default: 0x7674 / float / 0x0p+0 id / type / default: 0x7674 / float / 0x0p+0
range: >= -0x5Ap+0, <= 0x5Ap+0 range: >= -0x5Ap+0, <= 0x5Ap+0
path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPosePitc path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPosePitc
h h
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: Specifies a pitch rotation to the projection. definition: Specifies a pitch rotation to the projection. Value
represents a counter-clockwise rotation, in degrees, around the
Value represents a counter-clockwise rotation, in degrees, around the right vector. This rotation must be applied after the
right vector. This rotation must be applied after the ProjectionPoseYaw rotation and before the ProjectionPoseRoll
ProjectionPoseYaw rotation and before the ProjectionPoseRoll rotation. The value of this element MUST be in the -90 to 90
rotation. The value of this element MUST be in the -90 to 90 degree degree range, both inclusive.
range, both included. stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.28.46. ProjectionPoseRoll Element 5.1.4.1.28.46. ProjectionPoseRoll Element
id / type / default: 0x7675 / float / 0x0p+0 id / type / default: 0x7675 / float / 0x0p+0
range: >= -0xB4p+0, <= 0xB4p+0 range: >= -0xB4p+0, <= 0xB4p+0
path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseRoll path: \Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseRoll
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: Specifies a roll rotation to the projection. definition: Specifies a roll rotation to the projection. Value
represents a counter-clockwise rotation, in degrees, around the
Value represents a counter-clockwise rotation, in degrees, around the forward vector. This rotation must be applied after the
forward vector. This rotation must be applied after the ProjectionPoseYaw and ProjectionPosePitch rotations. The value of
ProjectionPoseYaw and ProjectionPosePitch rotations. The value of this element MUST be in the -180 to 180 degree range, both
this element MUST be in the -180 to 180 degree range, both included. inclusive. Setting ProjectionPoseRoll to 180 or -180 degrees and
ProjectionPoseYaw to 180 or -180 degrees with ProjectionPosePitch
Setting ProjectionPoseRoll to 180 or -180 degrees, the set to 0 degrees flips the image vertically. Setting
ProjectionPoseYaw to 180 or -180 degrees with ProjectionPosePitch set ProjectionPoseRoll to 180 or -180 degrees with ProjectionPoseYaw
to 0 degrees flips the image vertically. and ProjectionPosePitch set to 0 degrees flips the image
horizontally and vertically.
Setting ProjectionPoseRoll to 180 or -180 degrees, with the stream copy: True (Section 8)
ProjectionPoseYaw and ProjectionPosePitch set to 0 degrees flips the
image horizontally and vertically.
stream copy: True (Section 8)
5.1.4.1.29. Audio Element 5.1.4.1.29. Audio Element
id / type: 0xE1 / master id / type: 0xE1 / master
path: \Segment\Tracks\TrackEntry\Audio path: \Segment\Tracks\TrackEntry\Audio
maxOccurs: 1 maxOccurs: 1
definition: Audio settings. definition: Audio settings.
5.1.4.1.29.1. SamplingFrequency Element 5.1.4.1.29.1. SamplingFrequency Element
id / type / default: 0xB5 / float / 0x1.f4p+12 id / type / default: 0xB5 / float / 0x1.f4p+12
range: > 0x0p+0 range: > 0x0p+0
path: \Segment\Tracks\TrackEntry\Audio\SamplingFrequency path: \Segment\Tracks\TrackEntry\Audio\SamplingFrequency
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Sampling frequency in Hz. definition: Sampling frequency in Hz.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.29.2. OutputSamplingFrequency Element 5.1.4.1.29.2. OutputSamplingFrequency Element
id / type: 0x78B5 / float id / type: 0x78B5 / float
range: > 0x0p+0 range: > 0x0p+0
path: \Segment\Tracks\TrackEntry\Audio\OutputSamplingFrequency path: \Segment\Tracks\TrackEntry\Audio\OutputSamplingFrequency
maxOccurs: 1 maxOccurs: 1
definition: Real output sampling frequency in Hz (used for SBR definition: Real output sampling frequency in Hz that is used for
techniques). Spectral Band Replication (SBR) techniques.
notes: See Table 21.
notes:
+===========+======================================================+ +===========+======================================================+
| attribute | note | | attribute | note |
+===========+======================================================+ +===========+======================================================+
| default | The default value for OutputSamplingFrequency of the | | default | The default value for OutputSamplingFrequency of the |
| | same TrackEntry is equal to the SamplingFrequency. | | | same TrackEntry is equal to the SamplingFrequency. |
+-----------+------------------------------------------------------+ +-----------+------------------------------------------------------+
Table 21: OutputSamplingFrequency implementation notes Table 21: OutputSamplingFrequency Implementation Notes
5.1.4.1.29.3. Channels Element 5.1.4.1.29.3. Channels Element
id / type / default: 0x9F / uinteger / 1 id / type / default: 0x9F / uinteger / 1
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\Audio\Channels path: \Segment\Tracks\TrackEntry\Audio\Channels
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Numbers of channels in the track. definition: Numbers of channels in the track.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.29.4. BitDepth Element 5.1.4.1.29.4. BitDepth Element
id / type: 0x6264 / uinteger id / type: 0x6264 / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\Audio\BitDepth path: \Segment\Tracks\TrackEntry\Audio\BitDepth
maxOccurs: 1 maxOccurs: 1
definition: Bits per sample, mostly used for PCM. definition: Bits per sample, mostly used for PCM.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.30. TrackOperation Element 5.1.4.1.30. TrackOperation Element
id / type: 0xE2 / master id / type: 0xE2 / master
path: \Segment\Tracks\TrackEntry\TrackOperation path: \Segment\Tracks\TrackEntry\TrackOperation
maxOccurs: 1 maxOccurs: 1
minver: 3 minver: 3
definition: Operation that needs to be applied on tracks to create definition: Operation that needs to be applied on tracks to create
this virtual track. For more details look at Section 18.8. this virtual track. For more details, see Section 18.8.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.30.1. TrackCombinePlanes Element 5.1.4.1.30.1. TrackCombinePlanes Element
id / type: 0xE3 / master id / type: 0xE3 / master
path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes
maxOccurs: 1 maxOccurs: 1
minver: 3 minver: 3
definition: Contains the list of all video plane tracks that need to definition: Contains the list of all video plane tracks that need to
be combined to create this 3D track be combined to create this 3D track.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.30.2. TrackPlane Element 5.1.4.1.30.2. TrackPlane Element
id / type: 0xE4 / master id / type: 0xE4 / master
path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes\T path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes\T
rackPlane rackPlane
minOccurs: 1 minOccurs: 1
minver: 3 minver: 3
definition: Contains a video plane track that need to be combined to definition: Contains a video plane track that needs to be combined
create this 3D track to create this 3D track.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.30.3. TrackPlaneUID Element 5.1.4.1.30.3. TrackPlaneUID Element
id / type: 0xE5 / uinteger id / type: 0xE5 / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes\T path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes\T
rackPlane\TrackPlaneUID rackPlane\TrackPlaneUID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 3 minver: 3
definition: The trackUID number of the track representing the plane. definition: The TrackUID number of the track representing the plane.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.30.4. TrackPlaneType Element 5.1.4.1.30.4. TrackPlaneType Element
id / type: 0xE6 / uinteger id / type: 0xE6 / uinteger
path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes\T path: \Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes\T
rackPlane\TrackPlaneType rackPlane\TrackPlaneType
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 3 minver: 3
definition: The kind of plane this track corresponds to. definition: The kind of plane this track corresponds to.
defined values: See Table 22. Additional values can be registered
restrictions: in the "Track Plane Types" registry defined in Section 27.14.
stream copy: True (Section 8)
+=======+============+ +=======+============+
| value | label | | value | label |
+=======+============+ +=======+============+
| 0 | left eye | | 0 | left eye |
+-------+------------+ +-------+------------+
| 1 | right eye | | 1 | right eye |
+-------+------------+ +-------+------------+
| 2 | background | | 2 | background |
+-------+------------+ +-------+------------+
Table 22: Table 22:
TrackPlaneType values TrackPlaneType Values
stream copy: True (Section 8)
5.1.4.1.30.5. TrackJoinBlocks Element 5.1.4.1.30.5. TrackJoinBlocks Element
id / type: 0xE9 / master id / type: 0xE9 / master
path: \Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks path: \Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks
maxOccurs: 1 maxOccurs: 1
minver: 3 minver: 3
definition: Contains the list of all tracks whose Blocks need to be definition: Contains the list of all tracks whose Blocks need to be
combined to create this virtual track combined to create this virtual track.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.30.6. TrackJoinUID Element 5.1.4.1.30.6. TrackJoinUID Element
id / type: 0xED / uinteger id / type: 0xED / uinteger
range: not 0 range: not 0
path: \Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks\Trac path: \Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks\Trac
kJoinUID kJoinUID
minOccurs: 1 minOccurs: 1
minver: 3 minver: 3
definition: The trackUID number of a track whose blocks are used to definition: The TrackUID number of a track whose blocks are used to
create this virtual track. create this virtual track.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31. ContentEncodings Element 5.1.4.1.31. ContentEncodings Element
id / type: 0x6D80 / master id / type: 0x6D80 / master
path: \Segment\Tracks\TrackEntry\ContentEncodings path: \Segment\Tracks\TrackEntry\ContentEncodings
maxOccurs: 1 maxOccurs: 1
definition: Settings for several content encoding mechanisms like definition: Settings for several content encoding mechanisms like
compression or encryption. compression or encryption.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31.1. ContentEncoding Element 5.1.4.1.31.1. ContentEncoding Element
id / type: 0x6240 / master id / type: 0x6240 / master
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding
minOccurs: 1 minOccurs: 1
definition: Settings for one content encoding like compression or definition: Settings for one content encoding like compression or
encryption. encryption.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31.2. ContentEncodingOrder Element 5.1.4.1.31.2. ContentEncodingOrder Element
id / type / default: 0x5031 / uinteger / 0 id / type / default: 0x5031 / uinteger / 0
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncodingOrder ntentEncodingOrder
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Tell in which order to apply each ContentEncoding of the definition: Defines the order to apply each ContentEncoding of the
ContentEncodings. The decoder/demuxer MUST start with the ContentEncodings. The decoder/demuxer MUST start with the
ContentEncoding with the highest ContentEncodingOrder and work its ContentEncoding with the highest ContentEncodingOrder and work its
way down to the ContentEncoding with the lowest way down to the ContentEncoding with the lowest
ContentEncodingOrder. This value MUST be unique over for each ContentEncodingOrder. This value MUST be unique for each
ContentEncoding found in the ContentEncodings of this TrackEntry. ContentEncoding found in the ContentEncodings of this TrackEntry.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31.3. ContentEncodingScope Element 5.1.4.1.31.3. ContentEncodingScope Element
id / type / default: 0x5032 / uinteger / 1 id / type / default: 0x5032 / uinteger / 1
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncodingScope ntentEncodingScope
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: A bit field that describes which Elements have been definition: A bit field that describes which elements have been
modified in this way. Values (big-endian) can be OR'ed. modified in this way. Values (big-endian) can be OR'ed.
defined values: See Table 23. Additional values can be registered
in the "Content Encoding Scopes" registry defined in Section 27.6.
stream copy: True (Section 8)
defined values: +=======+=========+============================================+
| value | label | definition |
+=======+=========+===========================================+ +=======+=========+============================================+
| value | label | definition | | 1 | Block | All frame contents, excluding lacing data. |
+=======+=========+===========================================+ +-------+---------+--------------------------------------------+
| 1 | Block | All frame contents, excluding lacing | | 2 | Private | The track's CodecPrivate data. |
| | | data. | +-------+---------+--------------------------------------------+
+-------+---------+-------------------------------------------+ | 4 | Next | The next ContentEncoding (next |
| 2 | Private | The track's CodecPrivate data. | | | | ContentEncodingOrder; the data inside |
+-------+---------+-------------------------------------------+ | | | ContentCompression and/or |
| 4 | Next | The next ContentEncoding (next | | | | ContentEncryption). This value SHOULD NOT |
| | | ContentEncodingOrder. Either the data | | | | be used, as it's not supported by players. |
| | | inside ContentCompression and/or | +-------+---------+--------------------------------------------+
| | | ContentEncryption).This value SHOULD NOT |
| | | be used as it's not supported by players. |
+-------+---------+-------------------------------------------+
Table 23: ContentEncodingScope values
stream copy: True (Section 8) Table 23: ContentEncodingScope Values
5.1.4.1.31.4. ContentEncodingType Element 5.1.4.1.31.4. ContentEncodingType Element
id / type / default: 0x5033 / uinteger / 0 id / type / default: 0x5033 / uinteger / 0
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncodingType ntentEncodingType
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: A value describing what kind of transformation is definition: A value describing the kind of transformation that is
applied. applied.
defined values: See Table 24. Additional values can be registered
restrictions: in the "Content Encoding Types" registry defined in Section 27.7.
stream copy: True (Section 8)
+=======+=============+ +=======+=============+
| value | label | | value | label |
+=======+=============+ +=======+=============+
| 0 | Compression | | 0 | Compression |
+-------+-------------+ +-------+-------------+
| 1 | Encryption | | 1 | Encryption |
+-------+-------------+ +-------+-------------+
Table 24: Table 24:
ContentEncodingType ContentEncodingType
values Values
stream copy: True (Section 8)
5.1.4.1.31.5. ContentCompression Element 5.1.4.1.31.5. ContentCompression Element
id / type: 0x5034 / master id / type: 0x5034 / master
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentCompression ntentCompression
maxOccurs: 1 maxOccurs: 1
definition: Settings describing the compression used. This Element definition: Settings describing the compression used. This element
MUST be present if the value of ContentEncodingType is 0 and MUST be present if the value of ContentEncodingType is 0 and
absent otherwise. Each block MUST be decompressable even if no absent otherwise. Each block MUST be decompressable, even if no
previous block is available in order not to prevent seeking. previous block is available in order to not prevent seeking.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31.6. ContentCompAlgo Element 5.1.4.1.31.6. ContentCompAlgo Element
id / type / default: 0x4254 / uinteger / 0 id / type / default: 0x4254 / uinteger / 0
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentCompression\ContentCompAlgo ntentCompression\ContentCompAlgo
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The compression algorithm used. definition: The compression algorithm used.
defined values: See Table 25. Additional values can be registered
in the "Compression Algorithms" registry defined in Section 27.8.
usage notes: Compression method "1" (bzlib) and "2" (lzo1x) lack
proper documentation on the format, which limits implementation
possibilities. Due to licensing conflicts on commonly available
libraries' compression methods, "2" (lzo1x) does not offer
widespread interoperability. A Matroska Writer SHOULD NOT use
these compression methods by default. A Matroska Reader MAY
support methods "1" and "2" and SHOULD support other methods.
stream copy: True (Section 8)
defined values: +=======+===========+========================================+
| value | label | definition |
+=======+===========+=========================================+ +=======+===========+========================================+
| value | label | definition | | 0 | zlib | zlib compression [RFC1950]. |
+=======+===========+=========================================+ +-------+-----------+----------------------------------------+
| 0 | zlib | zlib compression [RFC1950]. | | 1 | bzlib | bzip2 compression [BZIP2] SHOULD NOT |
+-------+-----------+-----------------------------------------+ | | | be used; see usage notes. |
| 1 | bzlib | bzip2 compression [BZIP2], SHOULD NOT | +-------+-----------+----------------------------------------+
| | | be used; see usage notes. | | 2 | lzo1x | Lempel-Ziv-Oberhumer compression [LZO] |
+-------+-----------+-----------------------------------------+ | | | SHOULD NOT be used; see usage notes. |
| 2 | lzo1x | Lempel-Ziv-Oberhumer compression [LZO], | +-------+-----------+----------------------------------------+
| | | SHOULD NOT be used; see usage notes. | | 3 | Header | Octets in ContentCompSettings |
+-------+-----------+-----------------------------------------+ | | Stripping | (Section 5.1.4.1.31.7) have been |
| 3 | Header | Octets in ContentCompSettings | | | | stripped from each frame. |
| | Stripping | (Section 5.1.4.1.31.7) have been | +-------+-----------+----------------------------------------+
| | | stripped from each frame. |
+-------+-----------+-----------------------------------------+
Table 25: ContentCompAlgo values
usage notes: Compression method "1" (bzlib) and "2" (lzo1x) are
lacking proper documentation on the format which limits
implementation possibilities. Due to licensing conflicts on
commonly available libraries compression methods "2" (lzo1x) does
not offer widespread interoperability. A Matroska Writer SHOULD
NOT use these compression methods by default. A Matroska Reader
MAY support methods "1" and "2" as possible, and SHOULD support
other methods.
stream copy: True (Section 8) Table 25: ContentCompAlgo Values
5.1.4.1.31.7. ContentCompSettings Element 5.1.4.1.31.7. ContentCompSettings Element
id / type: 0x4255 / binary id / type: 0x4255 / binary
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentCompression\ContentCompSettings ntentCompression\ContentCompSettings
maxOccurs: 1 maxOccurs: 1
definition: Settings that might be needed by the decompressor. For definition: Settings that might be needed by the decompressor. For
Header Stripping (ContentCompAlgo=3), the bytes that were removed Header Stripping (ContentCompAlgo=3), the bytes that were removed
from the beginning of each frames of the track. from the beginning of each frame of the track.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31.8. ContentEncryption Element 5.1.4.1.31.8. ContentEncryption Element
id / type: 0x5035 / master id / type: 0x5035 / master
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption ntentEncryption
maxOccurs: 1 maxOccurs: 1
definition: Settings describing the encryption used. This Element definition: Settings describing the encryption used. This element
MUST be present if the value of ContentEncodingType is 1 MUST be present if the value of ContentEncodingType is 1
(encryption) and MUST be ignored otherwise. A Matroska Player MAY (encryption) and MUST be ignored otherwise. A Matroska Player MAY
support encryption. support encryption.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31.9. ContentEncAlgo Element 5.1.4.1.31.9. ContentEncAlgo Element
id / type / default: 0x47E1 / uinteger / 0 id / type / default: 0x47E1 / uinteger / 0
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentEncAlgo ntentEncryption\ContentEncAlgo
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The encryption algorithm used. definition: The encryption algorithm used.
defined values: See Table 26. Additional values can be registered
in the "Encryption Algorithms" registry defined in Section 27.9.
stream copy: True (Section 8)
defined values: +=======+===========+============================================+
| value | label | definition |
+=======+===============+===========================================+ +=======+===========+============================================+
| value | label | definition | | 0 | Not | The data are not encrypted. |
+=======+===============+===========================================+ | | encrypted | |
| 0 | Not | The data are not encrypted. | +-------+-----------+--------------------------------------------+
| | encrypted | | | 1 | DES | Data Encryption Standard (DES) [FIPS46-3]. |
+-------+---------------+-------------------------------------------+ | | | This value SHOULD be avoided. |
| 1 | DES | Data Encryption Standard (DES) | +-------+-----------+--------------------------------------------+
| | | [FIPS.46-3].This value SHOULD be avoided. | | 2 | 3DES | Triple Data Encryption Algorithm |
+-------+---------------+-------------------------------------------+ | | | [SP800-67]. This value SHOULD be avoided. |
| 2 | 3DES | Triple Data Encryption Algorithm | +-------+-----------+--------------------------------------------+
| | | [SP.800-67].This value SHOULD be avoided. | | 3 | Twofish | Twofish Encryption Algorithm [Twofish]. |
+-------+---------------+-------------------------------------------+ +-------+-----------+--------------------------------------------+
| 3 | Twofish | Twofish Encryption Algorithm [Twofish]. | | 4 | Blowfish | Blowfish Encryption Algorithm [Blowfish]. |
+-------+---------------+-------------------------------------------+ | | | This value SHOULD be avoided. |
| 4 | Blowfish | Blowfish Encryption Algorithm | +-------+-----------+--------------------------------------------+
| | | [Blowfish].This value SHOULD be avoided. | | 5 | AES | Advanced Encryption Standard (AES) |
+-------+---------------+-------------------------------------------+ | | | [FIPS197]. |
| 5 | AES | Advanced Encryption Standard (AES) | +-------+-----------+--------------------------------------------+
| | | [FIPS.197]. |
+-------+---------------+-------------------------------------------+
Table 26: ContentEncAlgo values
stream copy: True (Section 8) Table 26: ContentEncAlgo Values
5.1.4.1.31.10. ContentEncKeyID Element 5.1.4.1.31.10. ContentEncKeyID Element
id / type: 0x47E2 / binary id / type: 0x47E2 / binary
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentEncKeyID ntentEncryption\ContentEncKeyID
maxOccurs: 1 maxOccurs: 1
definition: For public key algorithms this is the ID of the public definition: For public key algorithms, the ID of the public key that
key the data was encrypted with. the data was encrypted with.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.4.1.31.11. ContentEncAESSettings Element 5.1.4.1.31.11. ContentEncAESSettings Element
id / type: 0x47E7 / master id / type: 0x47E7 / master
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentEncAESSettings ntentEncryption\ContentEncAESSettings
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: Settings describing the encryption algorithm used. definition: Settings describing the encryption algorithm used.
notes: See Table 27.
notes: stream copy: True (Section 8)
+===========+=================================================+ +===========+=================================================+
| attribute | note | | attribute | note |
+===========+=================================================+ +===========+=================================================+
| maxOccurs | ContentEncAESSettings MUST NOT be set | | maxOccurs | ContentEncAESSettings MUST NOT be set |
| | (maxOccurs=0) if ContentEncAlgo is not AES (5). | | | (maxOccurs=0) if ContentEncAlgo is not AES (5). |
+-----------+-------------------------------------------------+ +-----------+-------------------------------------------------+
Table 27: ContentEncAESSettings implementation notes Table 27: ContentEncAESSettings Implementation Notes
stream copy: True (Section 8)
5.1.4.1.31.12. AESSettingsCipherMode Element 5.1.4.1.31.12. AESSettingsCipherMode Element
id / type: 0x47E8 / uinteger id / type: 0x47E8 / uinteger
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentEncAESSettings\AESSettingsCipherMode ntentEncryption\ContentEncAESSettings\AESSettingsCipherMode
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 4 minver: 4
definition: The AES cipher mode used in the encryption. definition: The AES cipher mode used in the encryption.
defined values: See Table 28. Additional values can be registered
in the "AES Cipher Modes" registry defined in Section 27.10.
notes: See Table 29.
stream copy: True (Section 8)
defined values: +=======+=========+===================================+
| value | label | definition |
+=======+=========+=====================================+ +=======+=========+===================================+
| value | label | definition | | 1 | AES-CTR | Counter [SP800-38A] |
+=======+=========+=====================================+ +-------+---------+-----------------------------------+
| 1 | AES-CTR | Counter [SP.800-38A]. | | 2 | AES-CBC | Cipher Block Chaining [SP800-38A] |
+-------+---------+-------------------------------------+ +-------+---------+-----------------------------------+
| 2 | AES-CBC | Cipher Block Chaining [SP.800-38A]. |
+-------+---------+-------------------------------------+
Table 28: AESSettingsCipherMode values
notes: Table 28: AESSettingsCipherMode Values
+===========+=================================================+ +===========+=================================================+
| attribute | note | | attribute | note |
+===========+=================================================+ +===========+=================================================+
| maxOccurs | AESSettingsCipherMode MUST NOT be set | | maxOccurs | AESSettingsCipherMode MUST NOT be set |
| | (maxOccurs=0) if ContentEncAlgo is not AES (5). | | | (maxOccurs=0) if ContentEncAlgo is not AES (5). |
+-----------+-------------------------------------------------+ +-----------+-------------------------------------------------+
Table 29: AESSettingsCipherMode implementation notes Table 29: AESSettingsCipherMode Implementation Notes
stream copy: True (Section 8)
5.1.5. Cues Element 5.1.5. Cues Element
id / type: 0x1C53BB6B / master id / type: 0x1C53BB6B / master
path: \Segment\Cues path: \Segment\Cues
minOccurs / maxOccurs: see implementation notes / 1 minOccurs / maxOccurs: See Table 30 / 1
definition: A Top-Level Element to speed seeking access. All definition: A Top-Level Element to speed seeking access. All
entries are local to the Segment. entries are local to the Segment.
notes: See Table 30.
notes:
+===========+====================================================+ +===========+====================================================+
| attribute | note | | attribute | note |
+===========+====================================================+ +===========+====================================================+
| minOccurs | This Element SHOULD be set when the Segment is not | | minOccurs | This element SHOULD be set when the Segment is not |
| | transmitted as a live stream; see Section 23.2. | | | transmitted as a live stream; see Section 23.2. |
+-----------+----------------------------------------------------+ +-----------+----------------------------------------------------+
Table 30: Cues implementation notes Table 30: Cues Implementation Notes
5.1.5.1. CuePoint Element 5.1.5.1. CuePoint Element
id / type: 0xBB / master id / type: 0xBB / master
path: \Segment\Cues\CuePoint path: \Segment\Cues\CuePoint
minOccurs: 1 minOccurs: 1
definition: Contains all information relative to a seek point in the definition: Contains all information relative to a seek point in the
Segment. Segment.
5.1.5.1.1. CueTime Element 5.1.5.1.1. CueTime Element
id / type: 0xB3 / uinteger id / type: 0xB3 / uinteger
path: \Segment\Cues\CuePoint\CueTime path: \Segment\Cues\CuePoint\CueTime
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Absolute timestamp of the seek point, expressed in definition: Absolute timestamp of the seek point, expressed in
Matroska Ticks -- i.e., in nanoseconds; see Section 11.1. Segment Ticks, which are based on TimestampScale; see
Section 11.1.
5.1.5.1.2. CueTrackPositions Element 5.1.5.1.2. CueTrackPositions Element
id / type: 0xB7 / master id / type: 0xB7 / master
path: \Segment\Cues\CuePoint\CueTrackPositions path: \Segment\Cues\CuePoint\CueTrackPositions
minOccurs: 1 minOccurs: 1
definition: Contain positions for different tracks corresponding to definition: Contains positions for different tracks corresponding to
the timestamp. the timestamp.
5.1.5.1.2.1. CueTrack Element 5.1.5.1.2.1. CueTrack Element
id / type: 0xF7 / uinteger id / type: 0xF7 / uinteger
range: not 0 range: not 0
path: \Segment\Cues\CuePoint\CueTrackPositions\CueTrack path: \Segment\Cues\CuePoint\CueTrackPositions\CueTrack
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The track for which a position is given. definition: The track for which a position is given.
skipping to change at page 68, line 37 skipping to change at line 3002
containing the associated Block. containing the associated Block.
5.1.5.1.2.3. CueRelativePosition Element 5.1.5.1.2.3. CueRelativePosition Element
id / type: 0xF0 / uinteger id / type: 0xF0 / uinteger
path: \Segment\Cues\CuePoint\CueTrackPositions\CueRelativePosition path: \Segment\Cues\CuePoint\CueTrackPositions\CueRelativePosition
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The relative position inside the Cluster of the definition: The relative position inside the Cluster of the
referenced SimpleBlock or BlockGroup with 0 being the first referenced SimpleBlock or BlockGroup with 0 being the first
possible position for an Element inside that Cluster. possible position for an element inside that Cluster.
5.1.5.1.2.4. CueDuration Element 5.1.5.1.2.4. CueDuration Element
id / type: 0xB2 / uinteger id / type: 0xB2 / uinteger
path: \Segment\Cues\CuePoint\CueTrackPositions\CueDuration path: \Segment\Cues\CuePoint\CueTrackPositions\CueDuration
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The duration of the block, expressed in Segment Ticks definition: The duration of the block, expressed in Segment Ticks,
which is based on TimestampScale; see Section 11.1. If missing, which are based on TimestampScale; see Section 11.1. If missing,
the track's DefaultDuration does not apply and no duration the track's DefaultDuration does not apply and no duration
information is available in terms of the cues. information is available in terms of the cues.
5.1.5.1.2.5. CueBlockNumber Element 5.1.5.1.2.5. CueBlockNumber Element
id / type: 0x5378 / uinteger id / type: 0x5378 / uinteger
range: not 0 range: not 0
path: \Segment\Cues\CuePoint\CueTrackPositions\CueBlockNumber path: \Segment\Cues\CuePoint\CueTrackPositions\CueBlockNumber
maxOccurs: 1 maxOccurs: 1
definition: Number of the Block in the specified Cluster. definition: Number of the Block in the specified Cluster.
5.1.5.1.2.6. CueCodecState Element 5.1.5.1.2.6. CueCodecState Element
id / type / default: 0xEA / uinteger / 0 id / type / default: 0xEA / uinteger / 0
path: \Segment\Cues\CuePoint\CueTrackPositions\CueCodecState path: \Segment\Cues\CuePoint\CueTrackPositions\CueCodecState
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 2 minver: 2
definition: The Segment Position (Section 16) of the Codec State definition: The Segment Position (Section 16) of the Codec State
corresponding to this Cue Element. 0 means that the data is taken corresponding to this Cues element. 0 means that the data is taken
from the initial Track Entry. from the initial TrackEntry.
5.1.5.1.2.7. CueReference Element 5.1.5.1.2.7. CueReference Element
id / type: 0xDB / master id / type: 0xDB / master
path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference
minver: 2 minver: 2
definition: The Clusters containing the referenced Blocks. definition: The Clusters containing the referenced Blocks.
5.1.5.1.2.8. CueRefTime Element 5.1.5.1.2.8. CueRefTime Element
id / type: 0x96 / uinteger id / type: 0x96 / uinteger
path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefTi path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefTi
me me
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
minver: 2 minver: 2
definition: Timestamp of the referenced Block, expressed in Matroska definition: Timestamp of the referenced Block, expressed in Segment
Ticks -- i.e., in nanoseconds; see Section 11.1. Ticks which is based on TimestampScale; see Section 11.1.
5.1.6. Attachments Element 5.1.6. Attachments Element
id / type: 0x1941A469 / master id / type: 0x1941A469 / master
path: \Segment\Attachments path: \Segment\Attachments
maxOccurs: 1 maxOccurs: 1
definition: Contain attached files. definition: Contains attached files.
5.1.6.1. AttachedFile Element 5.1.6.1. AttachedFile Element
id / type: 0x61A7 / master id / type: 0x61A7 / master
path: \Segment\Attachments\AttachedFile path: \Segment\Attachments\AttachedFile
minOccurs: 1 minOccurs: 1
definition: An attached file. definition: An attached file.
5.1.6.1.1. FileDescription Element 5.1.6.1.1. FileDescription Element
skipping to change at page 70, line 24 skipping to change at line 3083
id / type: 0x466E / utf-8 id / type: 0x466E / utf-8
path: \Segment\Attachments\AttachedFile\FileName path: \Segment\Attachments\AttachedFile\FileName
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Filename of the attached file. definition: Filename of the attached file.
5.1.6.1.3. FileMediaType Element 5.1.6.1.3. FileMediaType Element
id / type: 0x4660 / string id / type: 0x4660 / string
path: \Segment\Attachments\AttachedFile\FileMediaType path: \Segment\Attachments\AttachedFile\FileMediaType
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Media type of the file following the [RFC6838] format. definition: Media type of the file following the format described in
[RFC6838].
stream copy: True (Section 8) stream copy: True (Section 8)
5.1.6.1.4. FileData Element 5.1.6.1.4. FileData Element
id / type: 0x465C / binary id / type: 0x465C / binary
path: \Segment\Attachments\AttachedFile\FileData path: \Segment\Attachments\AttachedFile\FileData
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The data of the file. definition: The data of the file.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.6.1.5. FileUID Element 5.1.6.1.5. FileUID Element
id / type: 0x46AE / uinteger id / type: 0x46AE / uinteger
range: not 0 range: not 0
path: \Segment\Attachments\AttachedFile\FileUID path: \Segment\Attachments\AttachedFile\FileUID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Unique ID representing the file, as random as possible. definition: UID representing the file, as random as possible.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.7. Chapters Element 5.1.7. Chapters Element
id / type: 0x1043A770 / master id / type: 0x1043A770 / master
path: \Segment\Chapters path: \Segment\Chapters
maxOccurs: 1 maxOccurs: 1
recurring: True recurring: True
definition: A system to define basic menus and partition data. For definition: A system to define basic menus and partition data. For
more detailed information, look at the Chapters explanation in more detailed information, see Section 20.
Section 20.
5.1.7.1. EditionEntry Element 5.1.7.1. EditionEntry Element
id / type: 0x45B9 / master id / type: 0x45B9 / master
path: \Segment\Chapters\EditionEntry path: \Segment\Chapters\EditionEntry
minOccurs: 1 minOccurs: 1
definition: Contains all information about a Segment edition. definition: Contains all information about a Segment edition.
5.1.7.1.1. EditionUID Element 5.1.7.1.1. EditionUID Element
id / type: 0x45BC / uinteger id / type: 0x45BC / uinteger
range: not 0 range: not 0
path: \Segment\Chapters\EditionEntry\EditionUID path: \Segment\Chapters\EditionEntry\EditionUID
maxOccurs: 1 maxOccurs: 1
definition: A unique ID to identify the edition. It's useful for definition: A UID that identifies the edition. It's useful for
tagging an edition. tagging an edition.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.7.1.2. EditionFlagDefault Element 5.1.7.1.2. EditionFlagDefault Element
id / type / default: 0x45DB / uinteger / 0 id / type / default: 0x45DB / uinteger / 0
range: 0-1 range: 0-1
path: \Segment\Chapters\EditionEntry\EditionFlagDefault path: \Segment\Chapters\EditionEntry\EditionFlagDefault
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Set to 1 if the edition SHOULD be used as the default definition: Set to 1 if the edition SHOULD be used as the default
one. one.
skipping to change at page 72, line 4 skipping to change at line 3153
path: \Segment\Chapters\EditionEntry\EditionFlagOrdered path: \Segment\Chapters\EditionEntry\EditionFlagOrdered
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Set to 1 if the chapters can be defined multiple times definition: Set to 1 if the chapters can be defined multiple times
and the order to play them is enforced; see Section 20.1.3. and the order to play them is enforced; see Section 20.1.3.
5.1.7.1.4. ChapterAtom Element 5.1.7.1.4. ChapterAtom Element
id / type: 0xB6 / master id / type: 0xB6 / master
path: \Segment\Chapters\EditionEntry\+ChapterAtom path: \Segment\Chapters\EditionEntry\+ChapterAtom
minOccurs: 1 minOccurs: 1
recursive: True recursive: True
definition: Contains the atom information to use as the chapter atom definition: Contains the atom information to use as the chapter atom
(apply to all tracks). (applies to all tracks).
5.1.7.1.4.1. ChapterUID Element 5.1.7.1.4.1. ChapterUID Element
id / type: 0x73C4 / uinteger id / type: 0x73C4 / uinteger
range: not 0 range: not 0
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterUID path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterUID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: A unique ID to identify the Chapter. definition: A UID that identifies the Chapter.
stream copy: True (Section 8)
stream copy: True (Section 8)
5.1.7.1.4.2. ChapterStringUID Element 5.1.7.1.4.2. ChapterStringUID Element
id / type: 0x5654 / utf-8 id / type: 0x5654 / utf-8
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterStringUID path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterStringUID
maxOccurs: 1 maxOccurs: 1
minver: 3 minver: 3
definition: A unique string ID to identify the Chapter. For example definition: A unique string ID that identifies the Chapter. For
it is used as the storage for [WebVTT] cue identifier values. example, it is used as the storage for cue identifier values
[WebVTT].
5.1.7.1.4.3. ChapterTimeStart Element 5.1.7.1.4.3. ChapterTimeStart Element
id / type: 0x91 / uinteger id / type: 0x91 / uinteger
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterTimeStart path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterTimeStart
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Timestamp of the start of Chapter, expressed in Matroska definition: Timestamp of the start of Chapter, expressed in Matroska
Ticks -- i.e., in nanoseconds; see Section 11.1. Ticks -- i.e., in nanoseconds; see Section 11.1.
5.1.7.1.4.4. ChapterTimeEnd Element 5.1.7.1.4.4. ChapterTimeEnd Element
id / type: 0x92 / uinteger id / type: 0x92 / uinteger
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterTimeEnd path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterTimeEnd
minOccurs / maxOccurs: see implementation notes / 1 minOccurs / maxOccurs: See Table 31 / 1
definition: Timestamp of the end of Chapter timestamp excluded, definition: Timestamp of the end of Chapter (timestamp excluded),
expressed in Matroska Ticks -- i.e., in nanoseconds; see expressed in Matroska Ticks -- i.e., in nanoseconds; see
Section 11.1. The value MUST be greater than or equal to the Section 11.1. The value MUST be greater than or equal to the
ChapterTimeStart of the same ChapterAtom. ChapterTimeStart of the same ChapterAtom.
usage notes: The ChapterTimeEnd timestamp value being excluded, it usage notes: With the ChapterTimeEnd timestamp value being excluded,
MUST take in account the duration of the last frame it includes, it MUST take into account the duration of the last frame it
especially for the ChapterAtom using the last frames of the includes, especially for the ChapterAtom using the last frames of
Segment. the Segment.
notes: See Table 31.
notes:
+===========+====================================================+ +===========+====================================================+
| attribute | note | | attribute | note |
+===========+====================================================+ +===========+====================================================+
| minOccurs | ChapterTimeEnd MUST be set (minOccurs=1) if the | | minOccurs | ChapterTimeEnd MUST be set (minOccurs=1) if the |
| | Edition is an ordered edition; see Section 20.1.3, | | | Edition is an ordered edition; see Section 20.1.3. |
| | unless it's a Parent Chapter; see Section 20.2.3 | | | If it's a Parent Chapter, see Section 20.2.3. |
+-----------+----------------------------------------------------+ +-----------+----------------------------------------------------+
Table 31: ChapterTimeEnd implementation notes Table 31: ChapterTimeEnd Implementation Notes
5.1.7.1.4.5. ChapterFlagHidden Element 5.1.7.1.4.5. ChapterFlagHidden Element
id / type / default: 0x98 / uinteger / 0 id / type / default: 0x98 / uinteger / 0
range: 0-1 range: 0-1
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterFlagHidden path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterFlagHidden
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Set to 1 if a chapter is hidden. Hidden chapters SHOULD definition: Set to 1 if a chapter is hidden. Hidden chapters SHOULD
NOT be available to the user interface (but still to Control NOT be available to the user interface (but still be available to
Tracks; see Section 20.2.5 on Chapter flags). Control Tracks; see Section 20.2.5 on Chapter flags).
5.1.7.1.4.6. ChapterSegmentUUID Element 5.1.7.1.4.6. ChapterSegmentUUID Element
id / type: 0x6E67 / binary id / type: 0x6E67 / binary
length: 16 length: 16
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterSegmentUUID path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterSegmentUUID
minOccurs / maxOccurs: see implementation notes / 1 minOccurs / maxOccurs: See Table 32 / 1
definition: The SegmentUUID of another Segment to play during this definition: The SegmentUUID of another Segment to play during this
chapter. chapter.
usage notes: The value MUST NOT be the SegmentUUID value of the usage notes: The value MUST NOT be the SegmentUUID value of the
Segment it belongs to. Segment it belongs to.
notes: See Table 32.
notes:
+===========+==============================================+ +===========+==============================================+
| attribute | note | | attribute | note |
+===========+==============================================+ +===========+==============================================+
| minOccurs | ChapterSegmentUUID MUST be set (minOccurs=1) | | minOccurs | ChapterSegmentUUID MUST be set (minOccurs=1) |
| | if ChapterSegmentEditionUID is used; see | | | if ChapterSegmentEditionUID is used; see |
| | Section 17.2 on medium-linking Segments. | | | Section 17.2 on Medium-Linking Segments. |
+-----------+----------------------------------------------+ +-----------+----------------------------------------------+
Table 32: ChapterSegmentUUID implementation notes Table 32: ChapterSegmentUUID Implementation Notes
5.1.7.1.4.7. ChapterSegmentEditionUID Element 5.1.7.1.4.7. ChapterSegmentEditionUID Element
id / type: 0x6EBC / uinteger id / type: 0x6EBC / uinteger
range: not 0 range: not 0
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterSegmentEdit path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterSegmentEdit
ionUID ionUID
maxOccurs: 1 maxOccurs: 1
definition: The EditionUID to play from the Segment linked in definition: The EditionUID to play from the Segment linked in
ChapterSegmentUUID. If ChapterSegmentEditionUID is undeclared, ChapterSegmentUUID. If ChapterSegmentEditionUID is undeclared,
then no Edition of the linked Segment is used; see Section 17.2 on then no Edition of the Linked Segment is used; see Section 17.2 on
medium-linking Segments. Medium-Linking Segments.
5.1.7.1.4.8. ChapterPhysicalEquiv Element 5.1.7.1.4.8. ChapterPhysicalEquiv Element
id / type: 0x63C3 / uinteger id / type: 0x63C3 / uinteger
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterPhysicalEqu path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterPhysicalEqu
iv iv
maxOccurs: 1 maxOccurs: 1
definition: Specify the physical equivalent of this ChapterAtom like definition: Specifies the physical equivalent of this ChapterAtom,
"DVD" (60) or "SIDE" (50); see Section 20.4 for a complete list of e.g., "DVD" (60) or "SIDE" (50); see Section 20.4 for a complete
values. list of values.
5.1.7.1.4.9. ChapterDisplay Element 5.1.7.1.4.9. ChapterDisplay Element
id / type: 0x80 / master id / type: 0x80 / master
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay
definition: Contains all possible strings to use for the chapter definition: Contains all possible strings to use for the chapter
display. display.
5.1.7.1.4.10. ChapString Element 5.1.7.1.4.10. ChapString Element
skipping to change at page 74, line 43 skipping to change at line 3285
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Contains the string to use as the chapter atom. definition: Contains the string to use as the chapter atom.
5.1.7.1.4.11. ChapLanguage Element 5.1.7.1.4.11. ChapLanguage Element
id / type / default: 0x437C / string / eng id / type / default: 0x437C / string / eng
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay\Cha path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay\Cha
pLanguage pLanguage
minOccurs: 1 minOccurs: 1
definition: A language corresponding to the string, in the Matroska definition: A language corresponding to the string, in the Matroska
languages form; see Section 12 on language codes. This Element languages form; see Section 12 on language codes. This element
MUST be ignored if a ChapLanguageBCP47 Element is used within the MUST be ignored if a ChapLanguageBCP47 element is used within the
same ChapterDisplay Element. same ChapterDisplay element.
5.1.7.1.4.12. ChapLanguageBCP47 Element 5.1.7.1.4.12. ChapLanguageBCP47 Element
id / type: 0x437D / string id / type: 0x437D / string
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay\Cha path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay\Cha
pLanguageBCP47 pLanguageBCP47
minver: 4 minver: 4
definition: A language corresponding to the ChapString, in the definition: A language corresponding to the ChapString, in the form
[BCP47] form; see Section 12 on language codes. If a defined in [RFC5646]; see Section 12 on language codes. If a
ChapLanguageBCP47 Element is used, then any ChapLanguage and ChapLanguageBCP47 element is used, then any ChapLanguage and
ChapCountry Elements used in the same ChapterDisplay MUST be ChapCountry elements used in the same ChapterDisplay MUST be
ignored. ignored.
5.1.7.1.4.13. ChapCountry Element 5.1.7.1.4.13. ChapCountry Element
id / type: 0x437E / string id / type: 0x437E / string
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay\Cha path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapterDisplay\Cha
pCountry pCountry
definition: A country corresponding to the string, in the Matroska definition: A country corresponding to the string, in the Matroska
countries form; see Section 13 on country codes. This Element countries form; see Section 13 on country codes. This element
MUST be ignored if a ChapLanguageBCP47 Element is used within the MUST be ignored if a ChapLanguageBCP47 element is used within the
same ChapterDisplay Element. same ChapterDisplay element.
5.1.7.1.4.14. ChapProcess Element 5.1.7.1.4.14. ChapProcess Element
id / type: 0x6944 / master id / type: 0x6944 / master
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess
definition: Contains all the commands associated to the Atom. definition: Contains all the commands associated with the Atom.
5.1.7.1.4.15. ChapProcessCodecID Element 5.1.7.1.4.15. ChapProcessCodecID Element
id / type / default: 0x6955 / uinteger / 0 id / type / default: 0x6955 / uinteger / 0
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr
ocessCodecID ocessCodecID
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Contains the type of the codec used for the processing. definition: Contains the type of the codec used for processing.
A value of 0 means built-in Matroska processing (to be defined), a defined values: See Table 33. Additional values can be registered
value of 1 means the DVD command set is used; see Section 20.3 on in the "Matroska Chapter Codec IDs" registry defined in
DVD menus. More codec IDs can be added later. Section 27.2.
+=======+=================+============================+
| value | label | definition |
+=======+=================+============================+
| 0 | Matroska Script | Chapter commands using the |
| | | Matroska Script codec. |
+-------+-----------------+----------------------------+
| 1 | DVD-menu | Chapter commands using the |
| | | DVD-like codec. |
+-------+-----------------+----------------------------+
Table 33: ChapProcessCodecID Values
5.1.7.1.4.16. ChapProcessPrivate Element 5.1.7.1.4.16. ChapProcessPrivate Element
id / type: 0x450D / binary id / type: 0x450D / binary
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr
ocessPrivate ocessPrivate
maxOccurs: 1 maxOccurs: 1
definition: Some optional data attached to the ChapProcessCodecID definition: Optional data attached to the ChapProcessCodecID
information. For ChapProcessCodecID = 1, it is the "DVD level" information. For ChapProcessCodecID = 1, it is the "DVD level"
equivalent; see Section 20.3 on DVD menus. equivalent; see Section 20.3 on DVD menus.
5.1.7.1.4.17. ChapProcessCommand Element 5.1.7.1.4.17. ChapProcessCommand Element
id / type: 0x6911 / master id / type: 0x6911 / master
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr
ocessCommand ocessCommand
definition: Contains all the commands associated to the Atom. definition: Contains all the commands associated with the Atom.
5.1.7.1.4.18. ChapProcessTime Element 5.1.7.1.4.18. ChapProcessTime Element
id / type: 0x6922 / uinteger id / type: 0x6922 / uinteger
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr
ocessCommand\ChapProcessTime ocessCommand\ChapProcessTime
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Defines when the process command SHOULD be handled definition: Defines when the process command SHOULD be handled.
restrictions: See Table 34.
restrictions:
+=======+===============================+ +=======+===============================+
| value | label | | value | label |
+=======+===============================+ +=======+===============================+
| 0 | during the whole chapter | | 0 | during the whole chapter |
+-------+-------------------------------+ +-------+-------------------------------+
| 1 | before starting playback | | 1 | before starting playback |
+-------+-------------------------------+ +-------+-------------------------------+
| 2 | after playback of the chapter | | 2 | after playback of the chapter |
+-------+-------------------------------+ +-------+-------------------------------+
Table 33: ChapProcessTime values Table 34: ChapProcessTime Values
5.1.7.1.4.19. ChapProcessData Element 5.1.7.1.4.19. ChapProcessData Element
id / type: 0x6933 / binary id / type: 0x6933 / binary
path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr path: \Segment\Chapters\EditionEntry\+ChapterAtom\ChapProcess\ChapPr
ocessCommand\ChapProcessData ocessCommand\ChapProcessData
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Contains the command information. The data SHOULD be definition: Contains the command information. The data SHOULD be
interpreted depending on the ChapProcessCodecID value. For interpreted depending on the ChapProcessCodecID value. For
ChapProcessCodecID = 1, the data correspond to the binary DVD cell ChapProcessCodecID = 1, the data correspond to the binary DVD cell
skipping to change at page 77, line 13 skipping to change at line 3410
path: \Segment\Tags\Tag path: \Segment\Tags\Tag
minOccurs: 1 minOccurs: 1
definition: A single metadata descriptor. definition: A single metadata descriptor.
5.1.8.1.1. Targets Element 5.1.8.1.1. Targets Element
id / type: 0x63C0 / master id / type: 0x63C0 / master
path: \Segment\Tags\Tag\Targets path: \Segment\Tags\Tag\Targets
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Specifies which other elements the metadata represented definition: Specifies which other elements the metadata represented
by the Tag applies to. If empty or omitted, then the Tag by the tag value applies to. If empty or omitted, then the tag
describes everything in the Segment. value describes everything in the Segment.
5.1.8.1.1.1. TargetTypeValue Element 5.1.8.1.1.1. TargetTypeValue Element
id / type / default: 0x68CA / uinteger / 50 id / type / default: 0x68CA / uinteger / 50
path: \Segment\Tags\Tag\Targets\TargetTypeValue path: \Segment\Tags\Tag\Targets\TargetTypeValue
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: A number to indicate the logical level of the target. definition: A number to indicate the logical level of the target.
defined values: See Table 35. Additional values can be registered
in the "Tags Target Types" registry defined in Section 27.4.
defined values: +=======+==========================+================================+
| value | label | definition |
+=======+===================+=================================+ +=======+==========================+================================+
| value | label | definition | | 70 | COLLECTION | The highest hierarchical level |
+=======+===================+=================================+ | | | that tags can describe. |
| 70 | COLLECTION | The highest hierarchical level | +-------+--------------------------+--------------------------------+
| | | that tags can describe. | | 60 | EDITION / ISSUE / | A list of lower levels grouped |
+-------+-------------------+---------------------------------+ | | VOLUME / OPUS / | together. |
| 60 | EDITION / ISSUE / | A list of lower levels grouped | | | SEASON / SEQUEL | |
| | VOLUME / OPUS / | together. | +-------+--------------------------+--------------------------------+
| | SEASON / SEQUEL | | | 50 | ALBUM / OPERA / | The most common grouping level |
+-------+-------------------+---------------------------------+ | | CONCERT / MOVIE / | of music and video (e.g., an |
| 50 | ALBUM / OPERA / | The most common grouping level | | | EPISODE | episode for TV series). |
| | CONCERT / MOVIE / | of music and video (equals to | +-------+--------------------------+--------------------------------+
| | EPISODE | an episode for TV series). | | 40 | PART / SESSION | When an album or episode has |
+-------+-------------------+---------------------------------+ | | | different logical parts. |
| 40 | PART / SESSION | When an album or episode has | +-------+--------------------------+--------------------------------+
| | | different logical parts. | | 30 | TRACK / SONG / | The common parts of an album |
+-------+-------------------+---------------------------------+ | | CHAPTER | or movie. |
| 30 | TRACK / SONG / | The common parts of an album or | +-------+--------------------------+--------------------------------+
| | CHAPTER | movie. | | 20 | SUBTRACK / | Corresponds to parts of a |
+-------+-------------------+---------------------------------+ | | MOVEMENT / SCENE | track for audio, such as a |
| 20 | SUBTRACK / | Corresponds to parts of a track | | | | movement or scene in a movie. |
| | MOVEMENT / SCENE | for audio like a movement, or a | +-------+--------------------------+--------------------------------+
| | | scene in a movie. | | 10 | SHOT | The lowest hierarchy found in |
+-------+-------------------+---------------------------------+ | | | music or movies. |
| 10 | SHOT | The lowest hierarchy found in | +-------+--------------------------+--------------------------------+
| | | music or movies. |
+-------+-------------------+---------------------------------+
Table 34: TargetTypeValue values Table 35: TargetTypeValue Values
5.1.8.1.1.2. TargetType Element 5.1.8.1.1.2. TargetType Element
id / type: 0x63CA / string id / type: 0x63CA / string
path: \Segment\Tags\Tag\Targets\TargetType path: \Segment\Tags\Tag\Targets\TargetType
maxOccurs: 1 maxOccurs: 1
definition: An informational string that can be used to display the definition: An informational string that can be used to display the
logical level of the target like "ALBUM", "TRACK", "MOVIE", logical level of the target, such as "ALBUM", "TRACK", "MOVIE",
"CHAPTER", etc. "CHAPTER", etc.
restrictions: See Table 36.
restrictions:
+============+====================+ +============+====================+
| value | label | | value | label |
+============+====================+ +============+====================+
| COLLECTION | TargetTypeValue 70 | | COLLECTION | TargetTypeValue 70 |
+------------+--------------------+ +------------+--------------------+
| EDITION | TargetTypeValue 60 | | EDITION | TargetTypeValue 60 |
+------------+--------------------+ +------------+--------------------+
| ISSUE | TargetTypeValue 60 | | ISSUE | TargetTypeValue 60 |
+------------+--------------------+ +------------+--------------------+
skipping to change at page 79, line 51 skipping to change at line 3508
+------------+--------------------+ +------------+--------------------+
| SUBTRACK | TargetTypeValue 20 | | SUBTRACK | TargetTypeValue 20 |
+------------+--------------------+ +------------+--------------------+
| MOVEMENT | TargetTypeValue 20 | | MOVEMENT | TargetTypeValue 20 |
+------------+--------------------+ +------------+--------------------+
| SCENE | TargetTypeValue 20 | | SCENE | TargetTypeValue 20 |
+------------+--------------------+ +------------+--------------------+
| SHOT | TargetTypeValue 10 | | SHOT | TargetTypeValue 10 |
+------------+--------------------+ +------------+--------------------+
Table 35: TargetType values Table 36: TargetType Values
5.1.8.1.1.3. TagTrackUID Element 5.1.8.1.1.3. TagTrackUID Element
id / type / default: 0x63C5 / uinteger / 0 id / type / default: 0x63C5 / uinteger / 0
path: \Segment\Tags\Tag\Targets\TagTrackUID path: \Segment\Tags\Tag\Targets\TagTrackUID
definition: A unique ID to identify the Track(s) the tags belong to. definition: A UID that identifies the Track(s) that the tags belong
to.
usage notes: If the value is 0 at this level, the tags apply to all usage notes: If the value is 0 at this level, the tags apply to all
tracks in the Segment. If set to any other value, it MUST match tracks in the Segment. If set to any other value, it MUST match
the TrackUID value of a track found in this Segment. the TrackUID value of a track found in this Segment.
5.1.8.1.1.4. TagEditionUID Element 5.1.8.1.1.4. TagEditionUID Element
id / type / default: 0x63C9 / uinteger / 0 id / type / default: 0x63C9 / uinteger / 0
path: \Segment\Tags\Tag\Targets\TagEditionUID path: \Segment\Tags\Tag\Targets\TagEditionUID
definition: A unique ID to identify the EditionEntry(s) the tags definition: A UID that identifies the EditionEntry(s) that the tags
belong to. belong to.
usage notes: If the value is 0 at this level, the tags apply to all usage notes: If the value is 0 at this level, the tags apply to all
editions in the Segment. If set to any other value, it MUST match editions in the Segment. If set to any other value, it MUST match
the EditionUID value of an edition found in this Segment. the EditionUID value of an edition found in this Segment.
5.1.8.1.1.5. TagChapterUID Element 5.1.8.1.1.5. TagChapterUID Element
id / type / default: 0x63C4 / uinteger / 0 id / type / default: 0x63C4 / uinteger / 0
path: \Segment\Tags\Tag\Targets\TagChapterUID path: \Segment\Tags\Tag\Targets\TagChapterUID
definition: A unique ID to identify the Chapter(s) the tags belong definition: A UID that identifies the Chapter(s) that the tags
to. belong to.
usage notes: If the value is 0 at this level, the tags apply to all usage notes: If the value is 0 at this level, the tags apply to all
chapters in the Segment. If set to any other value, it MUST match chapters in the Segment. If set to any other value, it MUST match
the ChapterUID value of a chapter found in this Segment. the ChapterUID value of a chapter found in this Segment.
5.1.8.1.1.6. TagAttachmentUID Element 5.1.8.1.1.6. TagAttachmentUID Element
id / type / default: 0x63C6 / uinteger / 0 id / type / default: 0x63C6 / uinteger / 0
path: \Segment\Tags\Tag\Targets\TagAttachmentUID path: \Segment\Tags\Tag\Targets\TagAttachmentUID
definition: A unique ID to identify the Attachment(s) the tags definition: A UID that identifies the Attachment(s) that the tags
belong to. belong to.
usage notes: If the value is 0 at this level, the tags apply to all usage notes: If the value is 0 at this level, the tags apply to all
the attachments in the Segment. If set to any other value, it the attachments in the Segment. If set to any other value, it
MUST match the FileUID value of an attachment found in this MUST match the FileUID value of an attachment found in this
Segment. Segment.
5.1.8.1.2. SimpleTag Element 5.1.8.1.2. SimpleTag Element
id / type: 0x67C8 / master id / type: 0x67C8 / master
path: \Segment\Tags\Tag\+SimpleTag path: \Segment\Tags\Tag\+SimpleTag
minOccurs: 1 minOccurs: 1
recursive: True
recursive: True
definition: Contains general information about the target. definition: Contains general information about the target.
5.1.8.1.2.1. TagName Element 5.1.8.1.2.1. TagName Element
id / type: 0x45A3 / utf-8 id / type: 0x45A3 / utf-8
path: \Segment\Tags\Tag\+SimpleTag\TagName path: \Segment\Tags\Tag\+SimpleTag\TagName
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: The name of the Tag that is going to be stored. definition: The name of the tag value that is going to be stored.
5.1.8.1.2.2. TagLanguage Element 5.1.8.1.2.2. TagLanguage Element
id / type / default: 0x447A / string / und id / type / default: 0x447A / string / und
path: \Segment\Tags\Tag\+SimpleTag\TagLanguage path: \Segment\Tags\Tag\+SimpleTag\TagLanguage
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: Specifies the language of the tag specified, in the definition: Specifies the language of the specified tag in the
Matroska languages form; see Section 12 on language codes. This Matroska languages form; see Section 12 on language codes. This
Element MUST be ignored if the TagLanguageBCP47 Element is used element MUST be ignored if the TagLanguageBCP47 element is used
within the same SimpleTag Element. within the same SimpleTag element.
5.1.8.1.2.3. TagLanguageBCP47 Element 5.1.8.1.2.3. TagLanguageBCP47 Element
id / type: 0x447B / string id / type: 0x447B / string
path: \Segment\Tags\Tag\+SimpleTag\TagLanguageBCP47 path: \Segment\Tags\Tag\+SimpleTag\TagLanguageBCP47
maxOccurs: 1 maxOccurs: 1
minver: 4 minver: 4
definition: The language used in the TagString, in the [BCP47] form; definition: The language used in the TagString, in the form defined
see Section 12 on language codes. If this Element is used, then in [RFC5646]; see Section 12 on language codes. If this element
any TagLanguage Elements used in the same SimpleTag MUST be is used, then any TagLanguage elements used in the same SimpleTag
ignored. MUST be ignored.
5.1.8.1.2.4. TagDefault Element 5.1.8.1.2.4. TagDefault Element
id / type / default: 0x4484 / uinteger / 1 id / type / default: 0x4484 / uinteger / 1
range: 0-1 range: 0-1
path: \Segment\Tags\Tag\+SimpleTag\TagDefault path: \Segment\Tags\Tag\+SimpleTag\TagDefault
minOccurs / maxOccurs: 1 / 1 minOccurs / maxOccurs: 1 / 1
definition: A boolean value to indicate if this is the default/ definition: A boolean value to indicate if this is the default/
original language to use for the given tag. original language to use for the given tag.
5.1.8.1.2.5. TagString Element 5.1.8.1.2.5. TagString Element
id / type: 0x4487 / utf-8 id / type: 0x4487 / utf-8
path: \Segment\Tags\Tag\+SimpleTag\TagString path: \Segment\Tags\Tag\+SimpleTag\TagString
maxOccurs: 1 maxOccurs: 1
definition: The value of the Tag. definition: The tag value.
5.1.8.1.2.6. TagBinary Element 5.1.8.1.2.6. TagBinary Element
id / type: 0x4485 / binary id / type: 0x4485 / binary
path: \Segment\Tags\Tag\+SimpleTag\TagBinary path: \Segment\Tags\Tag\+SimpleTag\TagBinary
maxOccurs: 1 maxOccurs: 1
definition: The values of the Tag, if it is binary. Note that this definition: The tag value if it is binary. Note that this cannot be
cannot be used in the same SimpleTag as TagString. used in the same SimpleTag as TagString.
6. Matroska Element Ordering 6. Matroska Element Ordering
Except for the EBML Header and the CRC-32 Element, the EBML With the exceptions of the EBML Header and the CRC-32 element, the
specification does not require any particular storage order for EBML specification [RFC8794] does not require any particular storage
Elements. This specification however defines mandates and order for elements. However, this specification defines mandates and
recommendations for ordering certain Elements in order to facilitate recommendations for ordering certain elements to facilitate better
better playback, seeking, and editing efficiency. This section playback, seeking, and editing efficiency. This section describes
describes and offers rationale for ordering requirements and and offers rationale for ordering requirements and recommendations
recommendations for Matroska. for Matroska.
6.1. Top-Level Elements 6.1. Top-Level Elements
The Info Element is the only REQUIRED Top-Level Element in a Matroska The Info element is the only REQUIRED Top-Level Element in a Matroska
file. To be playable, Matroska MUST also contain at least one Tracks file. To be playable, Matroska MUST also contain at least one Tracks
Element and Cluster Element. The first Info Element and the first element and Cluster element. The first Info element and the first
Tracks Element MUST either be stored before the first Cluster Element Tracks element either MUST be stored before the first Cluster element
or both SHALL be referenced by a SeekHead Element occurring before or SHALL both be referenced by a SeekHead element occurring before
the first Cluster Element. the first Cluster element.
All Top-Level Elements MUST use a 4-octet long EBML Element ID. All Top-Level Elements MUST use a 4-octet EBML Element ID.
When using Medium Linking, chapters are used to reference other When using Medium Linking, chapters are used to reference other
Segments to play in a given order Section 17.2. A Segment containing Segments to play in a given order (see Section 17.2). A Segment
these linked Chapters does not require a Track Element or a Cluster containing these Linked Chapters does not require a Tracks element or
Element. a Cluster element.
It is possible to edit a Matroska file after it has been created. It is possible to edit a Matroska file after it has been created.
For example, chapters, tags, or attachments can be added. When new For example, chapters, tags, or attachments can be added. When new
Top-Level Elements are added to a Matroska file, the SeekHead Top-Level Elements are added to a Matroska file, the SeekHead
Element(s) MUST be updated so that the SeekHead Element(s) itemize element(s) MUST be updated so that the SeekHead element(s) itemizes
the identity and position of all Top-Level Elements. the identity and position of all Top-Level Elements.
Editing, removing, or adding Elements to a Matroska file often Editing, removing, or adding elements to a Matroska file often
requires that some existing Elements be voided or extended. requires that some existing elements be voided or extended.
Transforming the existing Elements into Void Elements as padding can Transforming the existing elements into Void elements as padding can
be used as a method to avoid moving large amounts of data around. be used as a method to avoid moving large amounts of data around.
6.2. CRC-32 6.2. CRC-32
As noted by the EBML specification, if a CRC-32 Element is used, then As noted by the EBML specification [RFC8794], if a CRC-32 element is
the CRC-32 Element MUST be the first ordered Element within its used, then the CRC-32 element MUST be the first ordered element
Parent Element. within its Parent Element.
In Matroska all Top-Level Elements of an EBML Document SHOULD include In Matroska, all Top-Level Elements of an EBML Document SHOULD
a CRC-32 Element as their first Child Element. The Segment Element, include a CRC-32 element as their first Child Element. The Segment
which is the Root Element, SHOULD NOT have a CRC-32 Element. element, which is the Root Element, SHOULD NOT have a CRC-32 element.
6.3. SeekHead 6.3. SeekHead
If used, the first SeekHead Element MUST be the first non-CRC-32 If used, the first SeekHead element MUST be the first non-CRC-32
Child Element of the Segment Element. If a second SeekHead Element Child element of the Segment element. If a second SeekHead element
is used, then the first SeekHead Element MUST reference the identity is used, then the first SeekHead element MUST reference the identity
and position of the second SeekHead. and position of the second SeekHead element.
Additionally, the second SeekHead Element MUST only reference Cluster Additionally, the second SeekHead element MUST only reference Cluster
Elements and not any other Top-Level Element already contained within elements and not any other Top-Level Element already contained within
the first SeekHead Element. the first SeekHead element.
The second SeekHead Element MAY be stored in any order relative to The second SeekHead element MAY be stored in any order relative to
the other Top-Level Elements. Whether one or two SeekHead Element(s) the other Top-Level Elements. Whether one or two SeekHead elements
are used, the SeekHead Element(s) MUST collectively reference the are used, the SeekHead element(s) MUST collectively reference the
identity and position of all Top-Level Elements except for the first identity and position of all Top-Level Elements except for the first
SeekHead Element. SeekHead element.
6.4. Cues (index) 6.4. Cues (Index)
The Cues Element is RECOMMENDED to optimize seeking access in The Cues element is RECOMMENDED to optimize seeking access in
Matroska. It is programmatically simpler to add the Cues Element Matroska. It is programmatically simpler to add the Cues element
after all Cluster Elements have been written because this does not after all Cluster elements have been written because this does not
require a prediction of how much space to reserve before writing the require a prediction of how much space to reserve before writing the
Cluster Elements. However, storing the Cues Element before the Cluster elements. However, storing the Cues element before the
Cluster Elements can provide some seeking advantages. If the Cues Cluster elements can provide some seeking advantages. If the Cues
Element is present, then it SHOULD either be stored before the first element is present, then it SHOULD either be stored before the first
Cluster Element or be referenced by a SeekHead Element. Cluster element or be referenced by a SeekHead element.
6.5. Info 6.5. Info
The first Info Element SHOULD occur before the first Tracks Element The first Info element SHOULD occur before the first Tracks element
and first Cluster Element except when referenced by a SeekHead and first Cluster element except when referenced by a SeekHead
Element. element.
6.6. Chapters Element 6.6. Chapters Element
The Chapters Element SHOULD be placed before the Cluster Element(s). The Chapters element SHOULD be placed before the Cluster element(s).
The Chapters Element can be used during playback even if the user The Chapters element can be used during playback even if the user
does not need to seek. It immediately gives the user information does not need to seek. It immediately gives the user information
about what section is being read and what other sections are about what section is being read and what other sections are
available. In the case of Ordered Chapters it is RECOMMENDED to available.
evaluate the logical linking even before playing. The Chapters
Element SHOULD be placed before the first Tracks Element and after In the case of Ordered Chapters, it is RECOMMENDED to evaluate the
the first Info Element. logical linking before playing. The Chapters element SHOULD be
placed before the first Tracks element and after the first Info
element.
6.7. Attachments 6.7. Attachments
The Attachments Element is not intended to be used by default when The Attachments element is not intended to be used by default when
playing the file, but could contain information relevant to the playing the file but could contain information relevant to the
content, such as cover art or fonts. Cover art is useful even before content, such as cover art or fonts. Cover art is useful even before
the file is played and fonts could be needed before playback starts the file is played, and fonts could be needed before playback starts
for initialization of subtitles. The Attachments Element MAY be for the initialization of subtitles. The Attachments element MAY be
placed before the first Cluster Element; however, if the Attachments placed before the first Cluster element; however, if the Attachments
Element is likely to be edited, then it SHOULD be placed after the element is likely to be edited, then it SHOULD be placed after the
last Cluster Element. last Cluster element.
6.8. Tags 6.8. Tags
The Tags Element is most subject to changes after the file was The Tags element is most subject to changes after the file was
originally created. For easier editing, the Tags Element can be originally created. For easier editing, the Tags element can be
placed at the end of the Segment Element, even after the Attachments placed at the end of the Segment element, even after the Attachments
Element. On the other hand, it is inconvenient to have to seek in element. On the other hand, it is inconvenient to have to seek in
the Segment for tags, especially for network streams. So it's better the Segment for tags, especially for network streams; thus, it's
if the Tags Element is found early in the stream. When editing the better if the Tags element is found early in the stream. When
Tags Element, the original Tags Element at the beginning can be editing the Tags element, the original Tags element at the beginning
overwritten with a Void Element and a new Tags Element written at the can be overwritten with a Void element and a new Tags element written
end of the Segment Element. The file and Segment sizes will only at the end of the Segment element. The file and Segment sizes will
marginally change. only marginally change.
7. Matroska versioning 7. Matroska Versioning
Matroska is based upon the principle that a reading application does Matroska is based on the principle that a reading application does
not have to support 100% of the specifications in order to be able to not have to support 100% of the specifications in order to be able to
play the file. A Matroska file therefore contains version indicators play the file. Therefore, a Matroska file contains version
that tell a reading application what to expect. indicators that tell a reading application what to expect.
It is possible and valid to have the version fields indicate that the It is possible and valid to have the version fields indicate that the
file contains Matroska Elements from a higher specification version file contains Matroska elements from a higher specification version
number while signaling that a reading application MUST only support a number while signaling that a reading application MUST only support a
lower version number properly in order to play it back (possibly with lower version number properly in order to play it back (possibly with
a reduced feature set). a reduced feature set).
The EBML Header of each Matroska document informs the reading The EBML Header of each Matroska document informs the reading
application on what version of Matroska to expect. The Elements application on what version of Matroska to expect. The elements
within EBML Header with jurisdiction over this information are within the EBML Header with jurisdiction over this information are
DocTypeVersion and DocTypeReadVersion. DocTypeVersion and DocTypeReadVersion.
DocTypeVersion MUST be equal to or greater than the highest Matroska DocTypeVersion MUST be equal to or greater than the highest Matroska
version number of any Element present in the Matroska file. For version number of any element present in the Matroska file. For
example, a file using the SimpleBlock Element (Section 5.1.3.4) MUST example, a file using the SimpleBlock element (Section 5.1.3.4) MUST
have a DocTypeVersion equal to or greater than 2. A file containing have a DocTypeVersion equal to or greater than 2. A file containing
CueRelativePosition Elements (Section 5.1.5.1.2.3) MUST have a CueRelativePosition elements (Section 5.1.5.1.2.3) MUST have a
DocTypeVersion equal to or greater than 4. DocTypeVersion equal to or greater than 4.
The DocTypeReadVersion MUST contain the minimum version number that a The DocTypeReadVersion MUST contain the minimum version number that a
reading application can minimally support in order to play the file reading application can minimally support in order to play the file
back -- optionally with a reduced feature set. For example, if a back -- optionally with a reduced feature set. For example, if a
file contains only Elements of version 2 or lower except for file contains only elements of version 2 or lower except for
CueRelativePosition (which is a version 4 Matroska Element), then CueRelativePosition (which is a version 4 Matroska element), then
DocTypeReadVersion SHOULD still be set to 2 and not 4 because DocTypeReadVersion SHOULD still be set to 2 and not 4 because
evaluating CueRelativePosition is not necessary for standard playback evaluating CueRelativePosition is not necessary for standard playback
-- it makes seeking more precise if used. -- it makes seeking more precise if used.
A reading application supporting Matroska version V MUST NOT refuse A reading application supporting Matroska version V MUST NOT refuse
to read a file with DocReadTypeVersion equal to or lower than V even to read a file with DocReadTypeVersion equal to or lower than V, even
if DocTypeVersion is greater than V. if DocTypeVersion is greater than V.
A reading application supporting at least Matroska version V reading A reading application supporting at least Matroska version V and
a file whose DocTypeReadVersion field is equal to or lower than V reading a file whose DocTypeReadVersion field is equal to or lower
MUST skip Matroska/EBML Elements it encounters but does not know than V MUST skip Matroska/EBML elements it encounters but does not
about if that unknown element fits into the size constraints set by know about if that unknown element fits into the size constraints set
the current Parent Element. by the current Parent Element.
8. Stream Copy 8. Stream Copy
It is sometimes necessary to create a Matroska file from another It is sometimes necessary to create a Matroska file from another
Matroska file, for example to add subtitles in a language or to edit Matroska file, for example, to add subtitles in a language or to edit
out a portion of the content. Some values from the original Matroska out a portion of the content. Some values from the original Matroska
file need to be kept the same in the destination file. For example, file need to be kept the same in the destination file. For example,
the SamplingFrequency of an audio track wouldn't change between the the SamplingFrequency of an audio track wouldn't change between the
two files. Some other values may change between the two files, for two files. Some other values may change between the two files, for
example the TrackNumber of an audio track when another track has been example, the TrackNumber of an audio track when another track has
added. been added.
An Element is marked with a property: stream copy: True when the An element is marked with a property "stream copy: True" when the
values of that Element need to be kept identical between the source values of that element need to be kept identical between the source
and destination file. If that property is not set, elements may or and destination files. If that property is not set, elements may or
may not keep the same value between the source and destination. may not keep the same value between the source and destination files.
9. DefaultDecodedFieldDuration 9. DefaultDecodedFieldDuration
The DefaultDecodedFieldDuration Element can signal to the displaying The DefaultDecodedFieldDuration element can signal to the displaying
application how often fields of a video sequence will be available application how often fields of a video sequence will be available
for displaying. It can be used for both interlaced and progressive for displaying. It can be used for both interlaced and progressive
content. content.
If the video sequence is signaled as interlaced Section 5.1.4.1.28.1, If the video sequence is signaled as interlaced
then DefaultDecodedFieldDuration equals the period between two (Section 5.1.4.1.28.1), then DefaultDecodedFieldDuration equals the
successive fields at the output of the decoding process. For video period between two successive fields at the output of the decoding
sequences signaled as progressive, DefaultDecodedFieldDuration is process. For video sequences signaled as progressive,
half of the period between two successive frames at the output of the DefaultDecodedFieldDuration is half of the period between two
decoding process. successive frames at the output of the decoding process.
These values are valid at the end of the decoding process before These values are valid at the end of the decoding process before
post-processing (such as deinterlacing or inverse telecine) is post-processing (such as deinterlacing or inverse telecine) is
applied. applied.
Examples: Examples:
* Blu-ray movie: 1000000000 ns/(48/1.001) = 20854167 ns * Blu-ray movie: 1000000000 ns/(48/1.001) = 20854167 ns
* PAL broadcast/DVD: 1000000000 ns/(50/1.000) = 20000000 ns * PAL broadcast/DVD: 1000000000 ns/(50/1.000) = 20000000 ns
* N/ATSC broadcast: 1000000000 ns/(60/1.001) = 16683333 ns * N/ATSC broadcast: 1000000000 ns/(60/1.001) = 16683333 ns
* hard-telecined DVD: 1000000000 ns/(60/1.001) = 16683333 ns (60
* Hard-telecined DVD: 1000000000 ns/(60/1.001) = 16683333 ns (60
encoded interlaced fields per second) encoded interlaced fields per second)
* soft-telecined DVD: 1000000000 ns/(60/1.001) = 16683333 ns (48
* Soft-telecined DVD: 1000000000 ns/(60/1.001) = 16683333 ns (48
encoded interlaced fields per second, with "repeat_first_field = encoded interlaced fields per second, with "repeat_first_field =
1") 1")
10. Cluster Blocks 10. Cluster Blocks
Frames using references SHOULD be stored in "coding order". That Frames using references SHOULD be stored in "coding order" (i.e., the
means the references first, and then the frames referencing them. A references first and then the frames referencing them). A
consequence is that timestamps might not be consecutive. But a frame consequence is that timestamps might not be consecutive. However, a
with a past timestamp MUST reference a frame already known, otherwise frame with a past timestamp MUST reference a frame already known;
it's considered bad/void. otherwise, it is considered bad/void.
Matroska has two similar ways to store frames in a block: Matroska has two similar ways to store frames in a block:
* in a Block which is contained inside a BlockGroup, * in a Block that is contained inside a BlockGroup
* or in a SimpleBlock which is directly in the Cluster.
* in a SimpleBlock that is directly in the Cluster
The SimpleBlock is usually preferred unless some extra elements of The SimpleBlock is usually preferred unless some extra elements of
the BlockGroup need to be used. A Matroska Reader MUST support both the BlockGroup need to be used. A Matroska Reader MUST support both
types of blocks. types of blocks.
Each block contains the same parts in the following order: Each block contains the same parts in the following order:
* a variable length header, * a variable-length header
* optionally the lacing information,
* the lacing information (optional)
* the consecutive frame(s) * the consecutive frame(s)
The block header starts with the number of the Track it corresponds The block header starts with the number of the Track it corresponds
to. The value MUST corresponding to the TrackNumber to. The value MUST correspond to the TrackNumber (Section 5.1.4.1.1)
(Section 5.1.4.1.1) of a TrackEntry of the Segment. of a TrackEntry of the Segment.
The TrackNumber is coded using the VINT mechanism described in The TrackNumber is coded using the Variable-Size Integer (VINT)
Section 4 of [RFC8794]. To save space, the shortest VINT form SHOULD mechanism described in Section 4 of [RFC8794]. To save space, the
be used. The value can be coded on up to 8 octets. This is the only shortest VINT form SHOULD be used. The value can be coded using up
element with a variable size in the block header. to 8 octets. This is the only element with a variable size in the
block header.
The timestamp is expressed in Track Ticks; see Section 11.1. The The timestamp is expressed in Track Ticks; see Section 11.1. The
value is stored as a signed value on 16 bits. value is stored as a signed value on 16 bits.
10.1. Block Structure 10.1. Block Structure
This section describes the binary data contained in the Block Element This section describes the binary data contained in the Block element
Section 5.1.3.5.1. Bit 0 is the most significant bit. (Section 5.1.3.5.1). Bit 0 is the most significant bit.
As the TrackNumber size can vary between 1 and 8 octets, there are 8 As the TrackNumber size can vary between 1 and 8 octets, there are 8
different sizes for the Block header. We only provide the different sizes for the Block header. The definitions for
definitions for TrackNumber sizes of 1 and 2. The other variants can TrackNumber sizes of 1 and 2 are provided; the other variants can be
be deduced by extending the size of the TrackNumber by multiples of 8 deduced by extending the size of the TrackNumber by multiples of 8
bits. bits.
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |I|LAC|U| | | | |I|LAC|U|
| Track Number | Timestamp | Rsvrd |N|ING|N| | Track Number | Timestamp | Rsvrd |N|ING|N|
| | | |V| |U| | | | |V| |U|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 11: Block Header with 1 octet TrackNumber Figure 11: Block Header with 1-Octet TrackNumber
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Track Number | Timestamp | | Track Number | Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |I|LAC|U| | |I|LAC|U|
| Rsvrd |N|ING|N| ... | Rsvrd |N|ING|N| ...
| |V| |U| | |V| |U|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 12: Block Header with 2 octets TrackNumber Figure 12: Block Header with 2-Octet TrackNumber
where: where:
Track Number: 8, 16, 24, 32, 40, 48 or 64 bits Track Number: 8, 16, 24, 32, 40, 48, or 56 bits. An EBML VINT-coded
an EBML VINT coded track number track number.
Timestamp: 16 bits Timestamp: 16 bits. Signed timestamp in Track Ticks.
signed timestamp in Track Ticks
Rsvrd: 4 bits Rsvrd: 4 bits. Reserved bits MUST be set to 0.
Reserved bits MUST be set to 0
INV: 1 bit INV: 1 bit. Invisible. The codec SHOULD decode this frame but not
Invisible, the codec SHOULD decode this frame but not display it display it.
LACING: 2 bits LACING: 2 bits. Uses lacing mode.
using lacing mode
* 00b : no lacing (Section 10.3.1) 00b: no lacing (Section 10.3.1)
* 01b : Xiph lacing (Section 10.3.2)
* 11b : EBML lacing (Section 10.3.3)
* 10b : fixed-size lacing (Section 10.3.4)
UNU: 1 bit 01b: : Xiph lacing (Section 10.3.2)
unused bit
The following data in the Block correspond to the lacing data and 11b: : EBML lacing (Section 10.3.3)
frames usage as described in each respective lacing mode.
10b: : fixed-size lacing (Section 10.3.4)
UNU: 1 bit. Unused bit.
The remaining data in the Block corresponds to the lacing data and
frames usage as described in each respective lacing mode (see
Section 10.3).
10.2. SimpleBlock Structure 10.2. SimpleBlock Structure
This section describes the binary data contained in the SimpleBlock This section describes the binary data contained in the SimpleBlock
Element Section 5.1.3.4. Bit 0 is the most significant bit. element (Section 5.1.3.4). Bit 0 is the most significant bit.
The SimpleBlock is inspired by the Block structure; see Section 10.1. The SimpleBlock structure is inspired by the Block structure; see
The main differences are the added Keyframe flag and Discardable Section 10.1. The main differences are the added Keyframe flag and
flag. Otherwise, everything is the same. Discardable flag. Otherwise, everything is the same.
As the TrackNumber size can vary between 1 and 8 octets, there are 8 As the TrackNumber size can vary between 1 and 8 octets, there are 8
different sizes for the SimpleBlock header. We only provide the different sizes for the SimpleBlock header. The definitions for
definitions for TrackNumber sizes of 1 and 2. The other variants can TrackNumber sizes of 1 and 2 are provided; the other variants can be
be deduced by extending the size of the TrackNumber by multiples of 8 deduced by extending the size of the TrackNumber by multiples of 8
bits. bits.
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |K| |I|LAC|D| | | |K| |I|LAC|D|
| Track Number | Timestamp |E|Rsvrd|N|ING|I| | Track Number | Timestamp |E|Rsvrd|N|ING|I|
| | |Y| |V| |S| | | |Y| |V| |S|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 13: SimpleBlock Header with 1 octet TrackNumber Figure 13: SimpleBlock Header with 1-Octet TrackNumber
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Track Number | Timestamp | | Track Number | Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|K| |I|LAC|D| |K| |I|LAC|D|
|E|Rsvrd|N|ING|I| ... |E|Rsvrd|N|ING|I| ...
|Y| |V| |S| |Y| |V| |S|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 14: SimpleBlock Header with 2 octets TrackNumber Figure 14: SimpleBlock Header with 2-Octet TrackNumber
where: where:
Track Number: 8, 16, 24, 32, 40, 48 or 64 bits Track Number: 8, 16, 24, 32, 40, 48, or 56 bits. An EBML VINT-coded
an EBML VINT coded track number track number.
Timestamp: 16 bits Timestamp: 16 bits. Signed timestamp in Track Ticks.
signed timestamp in Track Ticks
KEY: 1 bit KEY: 1 bit. Keyframe. Set when the Block contains only keyframes.
Keyframe, set when the Block contains only keyframes
Rsvrd: 3 bits Rsvrd: 3 bits. Reserved bits MUST be set to 0.
Reserved bits MUST be set to 0
INV: 1 bit INV: 1 bit. Invisible; the codec SHOULD decode this frame but not
Invisible, the codec SHOULD decode this frame but not display it display it.
LACING: 2 bits LACING: 2 bits. Uses lacing mode.
using lacing mode
* 00b : no lacing (Section 10.3.1) 00b: no lacing (Section 10.3.1)
* 01b : Xiph lacing (Section 10.3.2)
* 11b : EBML lacing (Section 10.3.3)
* 10b : fixed-size lacing (Section 10.3.4)
DIS: 1 bit 01b: : Xiph lacing (Section 10.3.2)
Discardable, the frames of the Block can be discarded during
playing if needed
The following data in the SimpleBlock correspond to the lacing data 11b: : EBML lacing (Section 10.3.3)
and frames usage as described in each respective lacing mode.
10b: : fixed-size lacing (Section 10.3.4)
DIS: 1 bit. Discardable. The frames of the Block can be discarded
during playing if needed.
The remaining data in the SimpleBlock corresponds to the lacing data
and frames usage as described in each respective lacing mode (see
Section 10.3).
10.3. Block Lacing 10.3. Block Lacing
Lacing is a mechanism to save space when storing data. It is Lacing is a mechanism to save space when storing data. It is
typically used for small blocks of data (referred to as frames in typically used for small blocks of data (referred to as frames in
Matroska). It packs multiple frames into a single Block or Matroska). It packs multiple frames into a single Block or
SimpleBlock. SimpleBlock.
Lacing MUST NOT be used to store a single frame in a Block or Lacing MUST NOT be used to store a single frame in a Block or
SimpleBlock. SimpleBlock.
There are 3 types of lacing: There are three types of lacing:
1. Xiph, inspired by what is found in the Ogg container [RFC3533] * Xiph, which is inspired by what is found in the Ogg container
2. EBML, which is the same with sizes coded differently [RFC3533]
3. fixed-size, where the size is not coded
When lacing is not used, i.e. to store a single frame, the lacing * EBML, which is the same with sizes coded differently
bits 5 and 6 of the Block or SimpleBlock MUST be set to zero.
For example, a user wants to store 3 frames of the same track. The * Fixed-size, where the size is not coded
first frame is 800 octets long, the second is 500 octets long and the
third is 1000 octets long. As these data are small, they can be
stored in a lace to save space.
It is possible not to use lacing at all and just store a single frame When lacing is not used, i.e., to store a single frame, the lacing
without any extra data. When the FlagLacing -- Section 5.1.4.1.12 -- bits (bits 5 and 6) of the Block or SimpleBlock MUST be set to zero.
is set to "0" all blocks of that track MUST NOT use lacing.
10.3.1. No lacing For example, a user wants to store three frames of the same track.
The first frame is 800 octets long, the second is 500 octets long,
and the third is 1000 octets long. Because these frames are small,
they can be stored in a lace to save space.
When no lacing is used, the number of frames in the lace is ommitted It is possible to not use lacing at all and just store a single frame
and only one frame can be stored in the Block. The bits 5-6 of the without any extra data. When the FlagLacing (Section 5.1.4.1.12) is
Block Header flags are set to 0b00. set to 0, all blocks of that track MUST NOT use lacing.
The Block for an 800 octets frame is as follows: 10.3.1. No Lacing
+==============+=========+===================+ When no lacing is used, the number of frames in the lace is ommitted,
| Block Octets | Value | Description | and only one frame can be stored in the Block. The LACING bits of
+==============+=========+===================+ the Block Header flags are set to 00b.
| 4-803 | <frame> | Single frame data |
+--------------+---------+-------------------+
Table 36: No lacing The Block for an 800-octet frame is as follows:
When a Block contains a single frame, it MUST use this No lacing +=============+=========+===================+
| Block Octet | Value | Description |
+=============+=========+===================+
| 4-803 | <frame> | Single frame data |
+-------------+---------+-------------------+
Table 37: No Lacing
When a Block contains a single frame, it MUST use this "no lacing"
mode. mode.
10.3.2. Xiph lacing 10.3.2. Xiph Lacing
The Xiph lacing uses the same coding of size as found in the Ogg The Xiph lacing uses the same coding of size as found in the Ogg
container [RFC3533]. The bits 5-6 of the Block Header flags are set container [RFC3533]. The LACING bits of the Block Header flags are
to 0b01. set to 01b.
The Block data with laced frames is stored as follows: The Block data with laced frames is stored as follows:
* Lacing Head on 1 Octet: Number of frames in the lace minus 1. * Lacing Head on 1 Octet: Number of frames in the lace minus 1.
* Lacing size of each frame except the last one. * Lacing size of each frame except the last one.
* Binary data of each frame consecutively. * Binary data of each frame consecutively.
The lacing size is split into 255 values, stored as unsigned octets The lacing size is split into 255 values, stored as unsigned octets
-- for example, 500 is coded 255;245 or [0xFF 0xF5]. A frame with a -- for example, 500 is coded 255;245 or [0xFF 0xF5]. A frame with a
size multiple of 255 is coded with a 0 at the end of the size -- for size multiple of 255 is coded with a 0 at the end of the size -- for
example, 765 is coded 255;255;255;0 or [0xFF 0xFF 0xFF 0x00]. example, 765 is coded 255;255;255;0 or [0xFF 0xFF 0xFF 0x00].
The size of the last frame is deduced from the size remaining in the The size of the last frame is deduced from the size remaining in the
Block after the other frames. Block after the other frames.
Because large sizes result in large coding of the sizes, it is Because large sizes result in large coding of the sizes, it is
RECOMMENDED to use Xiph lacing only with small frames. RECOMMENDED to use Xiph lacing only with small frames.
In our example, the 800, 500 and 1000 frames are stored with Xiph In our example, the 800-, 500-, and 1000-octet frames are stored with
lacing in a Block as follows: Xiph lacing in a Block as follows:
+=============+=====================+==========================+ +==============+=====================+==========================+
| Block Octet | Value | Description | | Block Octets | Value | Description |
+=============+=====================+==========================+ +==============+=====================+==========================+
| 4 | 0x02 | Number of frames minus 1 | | 4 | 0x02 | Number of frames minus 1 |
+-------------+---------------------+--------------------------+ +--------------+---------------------+--------------------------+
| 5-8 | 0xFF 0xFF 0xFF 0x23 | Size of the first frame | | 5-8 | 0xFF 0xFF 0xFF 0x23 | Size of the first frame |
| | | (255;255;255;35) | | | | (255;255;255;35) |
+-------------+---------------------+--------------------------+ +--------------+---------------------+--------------------------+
| 9-10 | 0xFF 0xF5 | Size of the second frame | | 9-10 | 0xFF 0xF5 | Size of the second frame |
| | | (255;245) | | | | (255;245) |
+-------------+---------------------+--------------------------+ +--------------+---------------------+--------------------------+
| 11-810 | | First frame data | | 11-810 | | First frame data |
+-------------+---------------------+--------------------------+ +--------------+---------------------+--------------------------+
| 811-1310 | | Second frame data | | 811-1310 | | Second frame data |
+-------------+---------------------+--------------------------+ +--------------+---------------------+--------------------------+
| 1311-2310 | | Third frame data | | 1311-2310 | | Third frame data |
+-------------+---------------------+--------------------------+ +--------------+---------------------+--------------------------+
Table 37: Xiph lacing example Table 38: Xiph Lacing Example
The Block is 2311 octets large and the last frame starts at 1311, so The Block is 2311 octets, and the last frame starts at 1311, so we
we can deduce the size of the last frame is 2311 - 1311 = 1000. can deduce that the size of the last frame is 2311 - 1311 = 1000.
10.3.3. EBML lacing 10.3.3. EBML Lacing
The EBML lacing encodes the frame size with an EBML-like encoding The EBML lacing encodes the frame size with an EBML-like encoding
[RFC8794]. The bits 5-6 of the Block Header flags are set to 0b11. [RFC8794]. The LACING bits of the Block Header flags are set to 11b.
The Block data with laced frames is stored as follows: The Block data with laced frames is stored as follows:
* Lacing Head on 1 Octet: Number of frames in the lace minus 1. * Lacing Head on 1 Octet: Number of frames in the lace minus 1.
* Lacing size of each frame except the last one. * Lacing size of each frame except the last one.
* Binary data of each frame consecutively. * Binary data of each frame consecutively.
The first frame size is encoded as an EBML Variable-Size Integer The first frame size is encoded as an EBML VINT value. The remaining
value, also known as VINT in [RFC8794]. The remaining frame sizes frame sizes are encoded as signed values using the difference between
are encoded as signed values using the difference between the frame the frame size and the previous frame size. These signed values are
size and the previous frame size. These signed values are encoded as encoded as VINT, with a mapping from signed to unsigned numbers.
VINT, with a mapping from signed to unsigned numbers. Decoding the Decoding the unsigned number stored in the VINT to a signed number is
unsigned number stored in the VINT to a signed number is done by done by subtracting 2^((7*n)-1)-1, where n is the octet size of the
subtracting 2^((7*n)-1)-1, where n is the octet size of the VINT. VINT.
+===================================+======================+ +===================================+======================+
| Bit Representation of signed VINT | Possible Value Range | | Bit Representation of Signed VINT | Possible Value Range |
+===================================+======================+ +===================================+======================+
| 1xxx xxxx | 2^7 values from | | 1xxx xxxx | 2^7 values from |
| | -(2^6-1) to 2^6 | | | -(2^6-1) to 2^6 |
+-----------------------------------+----------------------+ +-----------------------------------+----------------------+
| 01xx xxxx xxxx xxxx | 2^14 values from | | 01xx xxxx xxxx xxxx | 2^14 values from |
| | -(2^13-1) to 2^13 | | | -(2^13-1) to 2^13 |
+-----------------------------------+----------------------+ +-----------------------------------+----------------------+
| 001x xxxx xxxx xxxx xxxx xxxx | 2^21 values from | | 001x xxxx xxxx xxxx xxxx xxxx | 2^21 values from |
| | -(2^20-1) to 2^20 | | | -(2^20-1) to 2^20 |
+-----------------------------------+----------------------+ +-----------------------------------+----------------------+
| 0001 xxxx xxxx xxxx xxxx xxxx | 2^28 values from | | 0001 xxxx xxxx xxxx xxxx xxxx | 2^28 values from |
| xxxx xxxx | -(2^27-1) to 2^27 | | xxxx xxxx | -(2^27-1) to 2^27 |
+-----------------------------------+----------------------+ +-----------------------------------+----------------------+
| 0000 1xxx xxxx xxxx xxxx xxxx | 2^35 values from | | 0000 1xxx xxxx xxxx xxxx xxxx | 2^35 values from |
| xxxx xxxx xxxx xxxx | -(2^34-1) to 2^34 | | xxxx xxxx xxxx xxxx | -(2^34-1) to 2^34 |
+-----------------------------------+----------------------+ +-----------------------------------+----------------------+
Table 38: EBML Lacing signed VINT bits usage Table 39: EBML Lacing Signed VINT Bits Usage
In our example, the 800, 500 and 1000 frames are stored with EBML In our example, the 800-, 500-, and 1000-octet frames are stored with
lacing in a Block as follows: EBML lacing in a Block as follows:
+==============+===========+=====================================+ +==============+===========+=====================================+
| Block Octets | Value | Description | | Block Octets | Value | Description |
+==============+===========+=====================================+ +==============+===========+=====================================+
| 4 | 0x02 | Number of frames minus 1 | | 4 | 0x02 | Number of frames minus 1 |
+--------------+-----------+-------------------------------------+ +--------------+-----------+-------------------------------------+
| 5-6 | 0x43 0x20 | Size of the first frame (800 = | | 5-6 | 0x43 0x20 | Size of the first frame (800 = |
| | | 0x320 + 0x4000) | | | | 0x320 + 0x4000) |
+--------------+-----------+-------------------------------------+ +--------------+-----------+-------------------------------------+
| 7-8 | 0x5E 0xD3 | Size of the second frame (500 - 800 | | 7-8 | 0x5E 0xD3 | Size of the second frame (500 - 800 |
| | | = -300 = - 0x12C + 0x1FFF + 0x4000) | | | | = -300 = - 0x12C + 0x1FFF + 0x4000) |
+--------------+-----------+-------------------------------------+ +--------------+-----------+-------------------------------------+
| 8-807 | <frame1> | First frame data | | 8-807 | <frame1> | First frame data |
+--------------+-----------+-------------------------------------+ +--------------+-----------+-------------------------------------+
| 808-1307 | <frame2> | Second frame data | | 808-1307 | <frame2> | Second frame data |
+--------------+-----------+-------------------------------------+ +--------------+-----------+-------------------------------------+
| 1308-2307 | <frame3> | Third frame data | | 1308-2307 | <frame3> | Third frame data |
+--------------+-----------+-------------------------------------+ +--------------+-----------+-------------------------------------+
Table 39: EBML lacing example Table 40: EBML Lacing Example
The Block is 2308 octets large and the last frame starts at 1308, so The Block is 2308 octets, and the last frame starts at 1308, so we
we can deduce the size of the last frame is 2308 - 1308 = 1000. can deduce that the size of the last frame is 2308 - 1308 = 1000.
10.3.4. Fixed-size lacing 10.3.4. Fixed-size Lacing
The Fixed-size lacing doesn't store the frame size, only the number Fixed-size lacing doesn't store the frame size; rather, it only
of frames in the lace. Each frame MUST have the same size. The stores the number of frames in the lace. Each frame MUST have the
frame size of each frame is deduced from the total size of the Block. same size. The frame size of each frame is deduced from the total
The bits 5-6 of the Block Header flags are set to 0b10. size of the Block. The LACING bits of the Block Header flags are set
to 10b.
The Block data with laced frames is stored as follows: The Block data with laced frames is stored as follows:
* Lacing Head on 1 Octet: Number of frames in the lace minus 1. * Lacing Head on 1 Octet: Number of frames in the lace minus 1.
* Binary data of each frame consecutively. * Binary data of each frame consecutively.
For example, for 3 frames of 800 octets each: For example, for three frames that are 800 octets each:
+==============+==========+==========================+ +==============+==========+==========================+
| Block Octets | Value | Description | | Block Octets | Value | Description |
+==============+==========+==========================+ +==============+==========+==========================+
| 4 | 0x02 | Number of frames minus 1 | | 4 | 0x02 | Number of frames minus 1 |
+--------------+----------+--------------------------+ +--------------+----------+--------------------------+
| 5-804 | <frame1> | First frame data | | 5-804 | <frame1> | First frame data |
+--------------+----------+--------------------------+ +--------------+----------+--------------------------+
| 805-1604 | <frame2> | Second frame data | | 805-1604 | <frame2> | Second frame data |
+--------------+----------+--------------------------+ +--------------+----------+--------------------------+
| 1605-2404 | <frame3> | Third frame data | | 1605-2404 | <frame3> | Third frame data |
+--------------+----------+--------------------------+ +--------------+----------+--------------------------+
Table 40: Fixed-size lacing example Table 41: Fixed-Size Lacing Example
This gives a Block of 2405 octets. When reading the Block we find This gives a Block of 2405 octets. When reading the Block, we find
that there are 3 frames (Octet 4). The data start at Octet 5, so the that there are three frames (Octet 4). The data start at Octet 5, so
size of each frame is (2405 - 5) / 3 = 800. the size of each frame is (2405 - 5) / 3 = 800.
10.3.5. Laced Frames Timestamp 10.3.5. Laced Frames Timestamp
A Block only contains a single timestamp value. But when lacing is A Block only contains a single timestamp value. But when lacing is
used, it contains more than one frame. Each frame originally has its used, it contains more than one frame. Each frame originally has its
own timestamp, or Presentation Timestamp (PTS). That timestamp own timestamp, or Presentation Timestamp (PTS). That timestamp
applies to the first frame in the lace. applies to the first frame in the lace.
In the lace, each frame after the first one has an underdetermined In the lace, each frame after the first one has an underdetermined
timestamp. But each of these frames MUST be contiguous -- i.e. the timestamp. However, each of these frames MUST be contiguous -- i.e.,
decoded data MUST NOT contain any gap between them. If there is a the decoded data MUST NOT contain any gap between them. If there is
gap in the stream, the frames around the gap MUST NOT be in the same a gap in the stream, the frames around the gap MUST NOT be in the
Block. same Block.
Lacing is only useful for small contiguous data to save space. This Lacing is only useful for small contiguous data to save space. This
is usually the case for audio tracks and not the case for video -- is usually the case for audio tracks and not the case for video
which use a lot of data -- or subtitle tracks -- which have long (which use a lot of data) or subtitle tracks (which have long gaps).
gaps. For audio, there is usually a fixed output sampling frequency For audio, there is usually a fixed output sampling frequency for the
for the whole track. So the decoder should be able to recover the whole track, so the decoder should be able to recover the timestamp
timestamp of each sample, knowing each output sample is contiguous of each sample, knowing each output sample is contiguous with a fixed
with a fixed frequency. For subtitles this is usually not the case frequency. For subtitles, this is usually not the case, so lacing
so lacing SHOULD NOT be used. SHOULD NOT be used.
10.4. Random Access Points 10.4. Random Access Points
Random Access Points (RAP) are positions where the parser can seek to Random Access Points (RAPs) are positions where the parser can seek
and start playback without decoding of what was before. In Matroska to and start playback without decoding what was before. In Matroska,
BlockGroups and SimpleBlocks can be RAPs. To seek to these elements BlockGroups and SimpleBlocks can be RAPs. To seek to these elements,
it is still necessary to seek to the Cluster containing them, read it is still necessary to seek to the Cluster containing them, read
the Cluster Timestamp and start playback from the BlockGroup or the Cluster Timestamp, and start playback from the BlockGroup or
SimpleBlock that is a RAP. SimpleBlock that is a RAP.
Because a Matroska File is usually composed of multiple tracks Because a Matroska File is usually composed of multiple tracks
playing at the same time -- video, audio and subtitles -- to seek playing at the same time -- video, audio, and subtitles -- to seek
properly to a RAP, each selected track must be taken in account. properly to a RAP, each selected track must be taken into account.
Usually all audio and subtitle BlockGroup or SimpleBlock are RAP. Usually, all audio and subtitle BlockGroups or SimpleBlocks are RAPs.
They are independent of each other and can be played randomly. They are independent of each other and can be played randomly.
Video tracks on the other hand often use references to previous and On the other hand, video tracks often use references to previous and
future frames for better coding efficiency. Frames with such future frames for better coding efficiency. Frames with such
reference MUST either contain one or more ReferenceBlock Elements in references MUST either contain one or more ReferenceBlock elements in
their BlockGroup or MUST be marked as non-keyframe in a SimpleBlock; their BlockGroup or MUST be marked as non-keyframe in a SimpleBlock;
see Section 10.2. see Section 10.2.
* BlockGroup with a frame that references another frame, with the
EBML tree shown as XML:
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<BlockGroup> <BlockGroup>
<!-- References a Block 40 Track Ticks before this one --> <!-- References a Block 40 Track Ticks before this one -->
<ReferenceBlock>-40</ReferenceBlock> <ReferenceBlock>-40</ReferenceBlock>
<Block/> <Block/>
</BlockGroup> </BlockGroup>
... ...
</Cluster> </Cluster>
* SimpleBlock with a frame that references another frame, with the Figure 15: BlockGroup with a Frame That References Another Frame,
EBML tree shown as XML: with the EBML Tree Shown as XML
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<SimpleBlock/> (octet 3 bit 0 not set) <SimpleBlock/> (octet 3 bit 0 not set)
... ...
</Cluster> </Cluster>
Frames that are RAP -- i.e. they don't depend on other frames -- MUST
set the keyframe flag if they are in a SimpleBlock or their parent
BlockGroup MUST NOT contain a ReferenceBlock.
* BlockGroup with a frame that references no other frame, with the Figure 16: SimpleBlock with a Frame That References Another
EBML tree shown as XML: Frame, with the EBML Tree Shown as XML
Frames that are RAPs (i.e., frames that don't depend on other frames)
MUST set the keyframe flag if they are in a SimpleBlock or their
parent BlockGroup MUST NOT contain a ReferenceBlock.
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<BlockGroup> <BlockGroup>
<!-- No ReferenceBlock allowed in this BlockGroup --> <!-- No ReferenceBlock allowed in this BlockGroup -->
<Block/> <Block/>
</BlockGroup> </BlockGroup>
... ...
</Cluster> </Cluster>
* SimpleBlock with a frame that references no other frame, with the Figure 17: BlockGroup with a Frame That References No Other
EBML tree shown as XML: Frame, with the EBML Tree Shown as XML
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<SimpleBlock/> (octet 3 bit 0 set) <SimpleBlock/> (octet 3 bit 0 set)
... ...
</Cluster> </Cluster>
Figure 18: SimpleBlock with a Frame That References No Other
Frame, with the EBML Tree Shown as XML
There may be cases where the use of BlockGroup is necessary, as the There may be cases where the use of BlockGroup is necessary, as the
frame may need a BlockDuration, BlockAdditions, CodecState or a frame may need a BlockDuration, BlockAdditions, CodecState, or
DiscardPadding element. For thoses cases a SimpleBlock MUST NOT be DiscardPadding element. For those cases, a SimpleBlock MUST NOT be
used, the reference information SHOULD be recovered for non-RAP used; the reference information SHOULD be recovered for non-RAP
frames. frames.
* SimpleBlock with a frame that references another frame, with the
EBML tree shown as XML:
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<SimpleBlock/> (octet 3 bit 0 not set) <SimpleBlock/> (octet 3 bit 0 not set)
... ...
</Cluster> </Cluster>
* Same frame that references another frame put inside a BlockGroup Figure 19: SimpleBlock with a Frame That References Another
to add BlockDuration, with the EBML tree shown as XML: Frame, with the EBML Tree Shown as XML
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<BlockGroup> <BlockGroup>
<!-- ReferenceBlock value recovered based on the codec --> <!-- ReferenceBlock value recovered based on the codec -->
<ReferenceBlock>-40</ReferenceBlock> <ReferenceBlock>-40</ReferenceBlock>
<BlockDuration>20<BlockDuration> <BlockDuration>20</BlockDuration>
<Block/> <Block/>
</BlockGroup> </BlockGroup>
... ...
</Cluster> </Cluster>
Figure 20: Same Frame That References Another Frame Put inside a
BlockGroup to Add BlockDuration, with the EBML Tree Shown as XML
When a frame in a BlockGroup is not a RAP, the BlockGroup MUST When a frame in a BlockGroup is not a RAP, the BlockGroup MUST
contain at least a ReferenceBlock. The ReferenceBlocks MUST be used contain at least a ReferenceBlock. The ReferenceBlocks MUST be used
in one of the following ways: in one of the following ways:
* each reference frame listed as a ReferenceBlock, * each reference frame listed as a ReferenceBlock,
* some referenced frame listed as a ReferenceBlock, even if the
timestamp value is accurate,
* or one ReferenceBlock with the timestamp value "0" corresponding
to a self or unknown reference.
The lack of ReferenceBlock would mean such a frame is a RAP and * some referenced frames listed as a ReferenceBlock, even if the
seeking on that frame that actually depends on other frames may timestamp value is accurate, or
create bogus output or even crash.
* Same frame that references another frame put inside a BlockGroup * one ReferenceBlock with the timestamp value "0" corresponding to a
but the reference could not be recovered, with the EBML tree shown self or unknown reference.
as XML:
The lack of ReferenceBlock would mean such a frame is a RAP, and
seeking on that frame that actually depends on other frames may
create a bogus output or even crash.
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<BlockGroup> <BlockGroup>
<!-- ReferenceBlock value not recovered from the codec --> <!-- ReferenceBlock value not recovered from the codec -->
<ReferenceBlock>0</ReferenceBlock> <ReferenceBlock>0</ReferenceBlock>
<BlockDuration>20<BlockDuration> <BlockDuration>20</BlockDuration>
<Block/> <Block/>
</BlockGroup> </BlockGroup>
... ...
</Cluster> </Cluster>
* BlockGroup with a frame that references two other frames, with the Figure 21: Same Frame That References Another Frame Put inside a
EBML tree shown as XML: BlockGroup, but the Reference Could Not Be Recovered, with the
EBML Tree Shown as XML
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<BlockGroup> <BlockGroup>
<!-- References a Block 80 Track Ticks before this one --> <!-- References a Block 80 Track Ticks before this one -->
<ReferenceBlock>-80</ReferenceBlock> <ReferenceBlock>-80</ReferenceBlock>
<!-- References a Block 40 Track Ticks after this one --> <!-- References a Block 40 Track Ticks after this one -->
<ReferenceBlock>40</ReferenceBlock> <ReferenceBlock>40</ReferenceBlock>
<Block/> <Block/>
</BlockGroup> </BlockGroup>
... ...
</Cluster> </Cluster>
Figure 22: BlockGroup with a Frame That References Two Other
Frames, with the EBML Tree Shown as XML
Intra-only video frames, such as the ones found in AV1 or VP9, can be Intra-only video frames, such as the ones found in AV1 or VP9, can be
decoded without any other frame, but they don't reset the codec decoded without any other frame, but they don't reset the codec
state. So seeking to these frames is not possible as the next frames state. Thus, seeking to these frames is not possible, as the next
may need frames that are not known from this seeking point. Such frames may need frames that are not known from this seeking point.
intra-only frames MUST NOT be considered as keyframes so the keyframe Such intra-only frames MUST NOT be considered as keyframes, so the
flag MUST NOT be set in the SimpleBlock or a ReferenceBlock MUST be keyframe flag MUST NOT be set in the SimpleBlock or a ReferenceBlock
used to signify the frame is not a RAP. The timestamp value of the MUST be used to signify the frame is not a RAP. The timestamp value
ReferenceBlock MUST be "0", meaning it's referencing itself. of the ReferenceBlock MUST be "0", meaning it's referencing itself.
* Intra-only frame not an RAP, with the EBML tree shown as XML:
<Cluster> <Cluster>
<Timestamp>123456</Timestamp> <Timestamp>123456</Timestamp>
<BlockGroup> <BlockGroup>
<!-- References itself to mark it should not be used as RAP --> <!-- References itself to mark it should not be used as RAP -->
<ReferenceBlock>0</ReferenceBlock> <ReferenceBlock>0</ReferenceBlock>
<Block/> <Block/>
</BlockGroup> </BlockGroup>
... ...
</Cluster> </Cluster>
Because a video SimpleBlock has less references information than a Figure 23: Intra-Only Frame (Not a RAP), with the EBML Tree Shown
as XML
Because a video SimpleBlock has less information on references than a
video BlockGroup, it is possible to remux a video track using video BlockGroup, it is possible to remux a video track using
BlockGroup into a SimpleBlock, as long as it doesn't use any other BlockGroup into a SimpleBlock, as long as it doesn't use any other
BlockGroup features than ReferenceBlock. BlockGroup features than ReferenceBlock.
11. Timestamps 11. Timestamps
Historically timestamps in Matroska were mistakenly called timecodes. Historically, timestamps in Matroska were mistakenly called
The Timestamp Element was called Timecode, the TimestampScale Element timecodes. The Timestamp element was called Timecode, the
was called TimecodeScale, the TrackTimestampScale Element was called TimestampScale element was called TimecodeScale, the
TrackTimecodeScale and the ReferenceTimestamp Element was called TrackTimestampScale element was called TrackTimecodeScale, and the
ReferenceTimeCode. ReferenceTimestamp element was called ReferenceTimeCode.
11.1. Timestamp Ticks 11.1. Timestamp Ticks
All timestamp values in Matroska are expressed in multiples of a All timestamp values in Matroska are expressed in multiples of a
tick. They are usually stored as integers. There are three types of tick. They are usually stored as integers. There are three types of
ticks possible: ticks possible: Matroska Ticks, Segment Ticks, and Track Ticks.
11.1.1. Matroska Ticks 11.1.1. Matroska Ticks
For such elements, the timestamp value is stored directly in The timestamp value is stored directly in nanoseconds.
nanoseconds.
The elements storing values in Matroska Ticks/nanoseconds are: The elements storing values in Matroska Ticks/nanoseconds are:
* TrackEntry\DefaultDuration; defined in Section 5.1.4.1.13 * TrackEntry\DefaultDuration; defined in Section 5.1.4.1.13
* TrackEntry\DefaultDecodedFieldDuration; defined in * TrackEntry\DefaultDecodedFieldDuration; defined in
Section 5.1.4.1.14 Section 5.1.4.1.14
* TrackEntry\SeekPreRoll; defined in Section 5.1.4.1.26 * TrackEntry\SeekPreRoll; defined in Section 5.1.4.1.26
* TrackEntry\CodecDelay; defined in Section 5.1.4.1.25 * TrackEntry\CodecDelay; defined in Section 5.1.4.1.25
* BlockGroup\DiscardPadding; defined in Section 5.1.3.5.7 * BlockGroup\DiscardPadding; defined in Section 5.1.3.5.7
* ChapterAtom\ChapterTimeStart; defined in Section 5.1.7.1.4.3 * ChapterAtom\ChapterTimeStart; defined in Section 5.1.7.1.4.3
* ChapterAtom\ChapterTimeEnd; defined in Section 5.1.7.1.4.4 * ChapterAtom\ChapterTimeEnd; defined in Section 5.1.7.1.4.4
* CuePoint\CueTime; defined in Section 5.1.5.1.1
* CueReference\CueRefTime; defined in Section 5.1.5.1.1
11.1.2. Segment Ticks 11.1.2. Segment Ticks
Elements in Segment Ticks involve the use of the TimestampScale Elements in Segment Ticks involve the use of the TimestampScale
Element of the Segment to get the timestamp in nanoseconds of the element of the Segment to get the timestamp in nanoseconds of the
element, with the following formula: element, with the following formula:
timestamp in nanosecond = element value * TimestampScale timestamp in nanosecond = element value * TimestampScale
This allows storing smaller integer values in the elements. This allows for storage of smaller integer values in the elements.
When using the default value of TimestampScale of "1,000,000", one When using the default value of "1,000,000" for TimestampScale, one
Segment Tick represents one millisecond. Segment Tick represents one millisecond.
The elements storing values in Segment Ticks are: The elements storing values in Segment Ticks are:
* Cluster\Timestamp; defined in Section 5.1.3.1 * Cluster\Timestamp; defined in Section 5.1.3.1
* Info\Duration is stored as a floating-point but the same formula
* Info\Duration is stored as a floating-point, but the same formula
applies; defined in Section 5.1.2.10 applies; defined in Section 5.1.2.10
* CuePoint\CueTime; defined in Section 5.1.5.1.1
* CuePoint\CueTrackPositions\CueDuration; defined in * CuePoint\CueTrackPositions\CueDuration; defined in
Section 5.1.5.1.2.4 Section 5.1.5.1.2.4
* CueReference\CueRefTime; defined in Section 5.1.5.1.1
11.1.3. Track Ticks 11.1.3. Track Ticks
Elements in Track Ticks involve the use of the TimestampScale Element Elements in Track Ticks involve the use of the TimestampScale element
of the Segment and the TrackTimestampScale Element of the Track to of the Segment and the TrackTimestampScale element of the Track to
get the timestamp in nanoseconds of the element, with the following get the timestamp in nanoseconds of the element, with the following
formula: formula:
timestamp in nanoseconds = timestamp in nanoseconds =
element value * TrackTimestampScale * TimestampScale element value * TrackTimestampScale * TimestampScale
This allows storing smaller integer values in the elements. The This allows for storage of smaller integer values in the elements.
resulting floating-point values of the timestamps are still expressed The resulting floating-point values of the timestamps are still
in nanoseconds. expressed in nanoseconds.
When using the default values for TimestampScale and When using the default values of "1,000,000" for TimestampScale and
TrackTimestampScale of "1,000,000" and of "1.0" respectively, one "1.0" for TrackTimestampScale, one Track Tick represents one
Track Tick represents one millisecond. millisecond.
The elements storing values in Track Ticks are: The elements storing values in Track Ticks are:
* Cluster\BlockGroup\Block and Cluster\SimpleBlock timestamps; * Cluster\BlockGroup\Block and Cluster\SimpleBlock timestamps;
detailed in Section 11.2 detailed in Section 11.2
* Cluster\BlockGroup\BlockDuration; defined in Section 5.1.3.5.3 * Cluster\BlockGroup\BlockDuration; defined in Section 5.1.3.5.3
* Cluster\BlockGroup\ReferenceBlock; defined in Section 5.1.3.5.5 * Cluster\BlockGroup\ReferenceBlock; defined in Section 5.1.3.5.5
When the TrackTimestampScale is interpreted as "1.0", Track Ticks are When the TrackTimestampScale is interpreted as "1.0", Track Ticks are
equivalent to Segment Ticks and give an integer value in nanoseconds. equivalent to Segment Ticks and give an integer value in nanoseconds.
This is the most common case as TrackTimestampScale is usually This is the most common case as TrackTimestampScale is usually
omitted. omitted.
A value of TrackTimestampScale other than "1.0" MAY be used to scale A value of TrackTimestampScale other than "1.0" MAY be used to scale
the timestamps more in tune with each Track sampling frequency. For the timestamps more in tune with each Track sampling frequency. For
historical reasons, a lot of Matroska readers don't take the historical reasons, a lot of Matroska Readers don't take the
TrackTimestampScale value in account. So using a value other than TrackTimestampScale value into account. Thus, using a value other
"1.0" might not work in many places. than "1.0" might not work in many places.
11.2. Block Timestamps 11.2. Block Timestamps
A Block Element and SimpleBlock Element timestamp is the time when A Block element and SimpleBlock element timestamp is the time when
the decoded data of the first frame in the Block/SimpleBlock MUST be the decoded data of the first frame in the Block/SimpleBlock MUST be
presented, if the track of that Block/SimpleBlock is selected for presented if the track of that Block/SimpleBlock is selected for
playback. This is also known as the Presentation Timestamp (PTS). playback. This is also known as the Presentation Timestamp (PTS).
The Block Element and SimpleBlock Element store their timestamps as The Block element and SimpleBlock element store their timestamps as
signed integers, relative to the Cluster\Timestamp value of the signed integers, relative to the Cluster\Timestamp value of the
Cluster they are stored in. To get the timestamp of a Block or Cluster they are stored in. To get the timestamp of a Block or
SimpleBlock in nanoseconds you have to use the following formula: SimpleBlock in nanoseconds, the following formula is used:
( Cluster\Timestamp + ( block timestamp * TrackTimestampScale ) ) * ( Cluster\Timestamp + ( block timestamp * TrackTimestampScale ) ) *
TimestampScale TimestampScale
The Block Element and SimpleBlock Element store their timestamps as The Block element and SimpleBlock element store their timestamps as
16bit signed integers, allowing a range from "-32768" to "+32767" 16-bit signed integers, allowing a range from "-32768" to "+32767"
Track Ticks. Although these values can be negative, when added to Track Ticks. Although these values can be negative, when added to
the Cluster\Timestamp, the resulting frame timestamp SHOULD NOT be the Cluster\Timestamp, the resulting frame timestamp SHOULD NOT be
negative. negative.
When a CodecDelay Element is set, its value MUST be substracted from When a CodecDelay element is set, its value MUST be substracted from
each Block timestamp of that track. To get the timestamp in each Block timestamp of that track. To get the timestamp in
nanoseconds of the first frame in a Block or SimpleBlock, the formula nanoseconds of the first frame in a Block or SimpleBlock, the formula
becomes: becomes:
( ( Cluster\Timestamp + ( block timestamp * TrackTimestampScale ) ) * ( ( Cluster\Timestamp + ( block timestamp * TrackTimestampScale ) ) *
TimestampScale ) - CodecDelay TimestampScale ) - CodecDelay
The resulting frame timestamp SHOULD NOT be negative. The resulting frame timestamp SHOULD NOT be negative.
During playback, when a frame has a negative timestamp, the content During playback, when a frame has a negative timestamp, the content
MUST be decoded by the decoder but not played to the user. MUST be decoded by the decoder but not played to the user.
11.3. TimestampScale Rounding 11.3. TimestampScale Rounding
The default Track Tick duration is one millisecond. The default Track Tick duration is one millisecond.
The TimestampScale is a floating-point value, which is usually 1.0. The TimestampScale is a floating-point value that is usually "1.0".
But when it's not, the multiplied Block Timestamp is a floating-point But when it's not, the multiplied Block Timestamp is a floating-point
value in nanoseconds. The Matroska Reader SHOULD use the nearest value in nanoseconds. The Matroska Reader SHOULD use the nearest
rounding value in nanosecond to get the proper nanosecond timestamp rounding value in nanoseconds to get the proper nanosecond timestamp
of a Block. This allows some clever TimestampScale values to have of a Block. This allows some clever TimestampScale values to have a
more refined timestamp precision per frame. more refined timestamp precision per frame.
12. Language Codes 12. Language Codes
Matroska from version 1 through 3 uses language codes that can be Matroska versions 1 through 3 use language codes that can be either
either the 3 letters bibliographic ISO-639-2 form [ISO639-2] (like the three-letter bibliographic ISO 639-2 form [ISO639-2] (like "fre"
"fre" for French), or such a language code followed by a dash and a for French) or such a language code followed by a dash and a country
country code for specialities in languages (like "fre-ca" for code for specialities in languages (like "fre-ca" for Canadian
Canadian French). The ISO 639-2 Language Elements are "Language French). The ISO 639-2 Language elements are Language element,
Element", "TagLanguage Element", and "ChapLanguage Element". TagLanguage element, and ChapLanguage element.
Starting in Matroska version 4, either [ISO639-2] or [BCP47] MAY be Starting in Matroska version 4, the forms defined in either
used, although BCP 47 is RECOMMENDED. The BCP 47 Language Elements [ISO639-2] or [RFC5646] MAY be used, although the form in [RFC5646]
are "LanguageBCP47 Element", "TagLanguageBCP47 Element", and is RECOMMENDED. The Language elements in the [RFC5646] form are
"ChapLanguageBCP47 Element". If a BCP 47 Language Element and an ISO LanguageBCP47 element, TagLanguageBCP47 element, and
639-2 Language Element are used within the same Parent Element, then ChapLanguageBCP47 element. If both an [ISO639-2] Language element
the ISO 639-2 Language Element MUST be ignored and precedence given and an [RFC5646] Language element are used within the same Parent
to the BCP 47 Language Element. Element, then the Language element in the [ISO639-2] form MUST be
ignored and precedence given to the Language element in the [RFC5646]
form.
In this document, "BCP47" in element names refers specifically to
[RFC5646], which is part of BCP 47.
13. Country Codes 13. Country Codes
Country codes are the [BCP47] two-letter region subtag, without the Country codes are the [RFC5646] two-letter region subtags, without
UK exception. the UK exception.
14. Encryption 14. Encryption
This Matroska specification provides no interoperable solution for This Matroska specification provides no interoperable solution for
securing the data container with any assurances of confidentiality, securing the data container with any assurances of confidentiality,
integrity, authenticity, or to provide authorization. The integrity, authenticity, or authorization. The ContentEncryption
ContentEncryption Element (Section 5.1.4.1.31.8) and associated sub- element (Section 5.1.4.1.31.8) and associated sub-fields
fields (Section 5.1.4.1.31.9 to Section 5.1.4.1.31.12) are defined (Section 5.1.4.1.31.9 to Section 5.1.4.1.31.12) are defined only for
only for the benefit of implementers to construct their own the benefit of implementers to construct their own proprietary
proprietary solution or as the basis for further standardization solution or as the basis for further standardization activities. How
activities. How to use these fields to secure a Matroska data to use these fields to secure a Matroska data container is out of
container is out of scope, as are any related issues such as key scope, as are any related issues such as key management and
management and distribution. distribution.
A Matroska Reader who encounters containers that use the fields A Matroska Reader who encounters containers that use the fields
defined in this section MUST rely on out-of-scope guidance to decode defined in this section MUST rely on out-of-scope guidance to decode
the associated content. the associated content.
Because encryption occurs within the Block Element, it is possible to Because encryption occurs within the Block element, it is possible to
manipulate encrypted streams without decrypting them. The streams manipulate encrypted streams without decrypting them. The streams
could potentially be copied, deleted, cut, appended, or any number of could potentially be copied, deleted, cut, appended, or any number of
other possible editing techniques without decryption. The data can other possible editing techniques without decryption. The data can
be used without having to expose it or go through the decrypting be used without having to expose it or go through the decrypting
process. process.
Encryption can also be layered within Matroska. This means that two Encryption can also be layered within Matroska. This means that two
completely different types of encryption can be used, requiring two completely different types of encryption can be used, requiring two
separate keys to be able to decrypt a stream. separate keys to be able to decrypt a stream.
Encryption information is stored in the ContentEncodings Element Encryption information is stored in the ContentEncodings element
under the ContentEncryption Element. under the ContentEncryption element.
For encryption systems sharing public/private keys, the creation of For encryption systems sharing public/private keys, the creation of
the keys and the exchange of keys are not covered by this document. the keys and the exchange of keys are not covered by this document.
They have to be handled by the system using Matroska. They have to be handled by the system using Matroska.
The algorithms described in Table 26 support different modes of The algorithms described in Table 26 support different modes of
operations and key sizes. The specification of these parameters is operations and key sizes. The specification of these parameters is
required for a complete solution, but is out of scope of this required for a complete solution but is out of scope of this document
document and left to the proprietary implementations using them or and left to the proprietary implementations using them or subsequent
subsequent profiles of this document. profiles of this document.
The ContentEncodingScope Element gives an idea of which part of the The ContentEncodingScope element gives an idea of which part of the
track are encrypted. But each ContentEncAlgo Element and its sub track is encrypted, but each ContentEncAlgo element and its sub-
elements like AESSettingsCipherMode really define how the encrypted elements (like AESSettingsCipherMode) define exactly how the
should be exactly interpreted. encrypted track should be interpreted.
An example of an extension that builds upon these security-related An example of an extension that builds upon these security-related
fields in this specification is [WebM-Enc]. It uses AES-CTR, fields in this specification is [WebM-Enc]. It uses AES-CTR,
ContentEncAlgo = 5 (Section 5.1.4.1.31.9) and AESSettingsCipherMode = ContentEncAlgo = 5 (Section 5.1.4.1.31.9), and AESSettingsCipherMode
1 (Section 5.1.4.1.31.12). = 1 (Section 5.1.4.1.31.12).
A Matroska Writer MUST NOT use insecure cryptographic algorithms to A Matroska Writer MUST NOT use insecure cryptographic algorithms to
create new archives or streams, but a Matroska Reader MAY support create new archives or streams, but a Matroska Reader MAY support
these algorithms to read previously made archives or stream. these algorithms to read previously made archives or streams.
15. Image Presentation 15. Image Presentation
15.1. Cropping 15.1. Cropping
The PixelCrop Elements (PixelCropTop, PixelCropBottom, The PixelCrop elements (PixelCropTop, PixelCropBottom,
PixelCropRight, and PixelCropLeft) indicate when, and by how much, PixelCropRight, and PixelCropLeft) indicate when, and by how much,
encoded videos frames SHOULD be cropped for display. These Elements encoded video frames SHOULD be cropped for display. These elements
allow edges of the frame that are not intended for display, such as allow edges of the frame that are not intended for display (such as
the sprockets of a full-frame film scan or the VANC area of a the sprockets of a full-frame film scan or the Video ANCillary (VANC)
digitized analog videotape, to be stored but hidden. PixelCropTop area of a digitized analog videotape) to be stored but hidden.
and PixelCropBottom store an integer of how many rows of pixels PixelCropTop and PixelCropBottom store an integer of how many rows of
SHOULD be cropped from the top and bottom of the image pixels SHOULD be cropped from the top and bottom of the image,
(respectively). PixelCropLeft and PixelCropRight store an integer of respectively. PixelCropLeft and PixelCropRight store an integer of
how many columns of pixels SHOULD be cropped from the left and right how many columns of pixels SHOULD be cropped from the left and right
of the image (respectively). of the image, respectively.
For example, a pillar-boxed video that stores a 1440x1080 visual For example, a pillar-boxed video that stores a 1440x1080 visual
image within the center of a padded 1920x1080 encoded image may set image within the center of a padded 1920x1080 encoded image may set
both PixelCropLeft and PixelCropRight to "240", so that a Matroska both PixelCropLeft and PixelCropRight to "240", so a Matroska Player
Player should crop off 240 columns of pixels from the left and right should crop off 240 columns of pixels from the left and right of the
of the encoded image to present the image with the pillar-boxes encoded image to present the image with the pillar-boxes hidden.
hidden.
Cropping has to be performed before resizing and the display Cropping has to be performed before resizing and the display
dimensions given by DisplayWidth, DisplayHeight and DisplayUnit apply dimensions given by DisplayWidth, DisplayHeight, and DisplayUnit
to the already cropped image. apply to the already-cropped image.
15.2. Rotation 15.2. Rotation
The ProjectionPoseRoll Element (see Section 5.1.4.1.28.46) can be The ProjectionPoseRoll element (Section 5.1.4.1.28.46) can be used to
used to indicate that the image from the associated video track indicate that the image from the associated video track SHOULD be
SHOULD be rotated for presentation. For instance, the following rotated for presentation. For instance, the following example of the
representation of the Projection Element Section 5.1.4.1.28.41) and Projection element (Section 5.1.4.1.28.41) and the ProjectionPoseRoll
the ProjectionPoseRoll Element represents a video track where the element represents a video track where the image SHOULD be presented
image SHOULD be presented with a 90-degree counter-clockwise with a 90-degree counter-clockwise rotation, with the EBML tree shown
rotation, with the EBML tree shown as XML : as XML:
<Projection> <Projection>
<ProjectionPoseRoll>90</ProjectionPoseRoll> <ProjectionPoseRoll>90</ProjectionPoseRoll>
</Projection> </Projection>
Figure 15: Rotation example. Figure 24: Rotation Example
16. Segment Position 16. Segment Position
The Segment Position of an Element refers to the position of the The Segment Position of an element refers to the position of the
first octet of the Element ID of that Element, measured in octets, first octet of the Element ID of that element, measured in octets,
from the beginning of the Element Data section of the containing from the beginning of the Element Data section of the containing
Segment Element. In other words, the Segment Position of an Element Segment element. In other words, the Segment Position of an element
is the distance in octets from the beginning of its containing is the distance in octets from the beginning of its containing
Segment Element minus the size of the Element ID and Element Data Segment element minus the size of the Element ID and Element Data
Size of that Segment Element. The Segment Position of the first Size of that Segment element. The Segment Position of the first
Child Element of the Segment Element is 0. An Element which is not Child Element of the Segment element is 0. An element that is not
stored within a Segment Element, such as the Elements of the EBML stored within a Segment element, such as the elements of the EBML
Header, do not have a Segment Position. Header, do not have a Segment Position.
16.1. Segment Position Exception 16.1. Segment Position Exception
Elements that are defined to store a Segment Position MAY define Elements that are defined to store a Segment Position MAY define
reserved values to indicate a special meaning. reserved values to indicate a special meaning.
16.2. Example of Segment Position 16.2. Example of Segment Position
This table presents an example of Segment Position by showing a This table presents an example of Segment Position by showing a
hexadecimal representation of a very small Matroska file with labels hexadecimal representation of a very small Matroska file with labels
to show the offsets in octets. The file contains a Segment Element to show the offsets in octets. The file contains a Segment element
with an Element ID of "0x18538067" and a MuxingApp Element with an with an Element ID of "0x18538067" and a MuxingApp element with an
Element ID of "0x4D80". Element ID of "0x4D80".
0 1 2 0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
0 |1A|45|DF|A3|8B|42|82|88|6D|61|74|72|6F|73|6B|61| 0 |1A|45|DF|A3|8B|42|82|88|6D|61|74|72|6F|73|6B|61|
^ EBML Header ^ EBML Header
0 | |18|53|80|67| 0 | |18|53|80|67|
^ Segment ID ^ Segment ID
20 |93| 20 |93|
^ Segment Data Size ^ Segment Data Size
20 | |15|49|A9|66|8E|4D|80|84|69|65|74|66|57|41|84|69|65|74|66| 20 | |15|49|A9|66|8E|4D|80|84|69|65|74|66|57|41|84|69|65|74|66|
^ Start of Segment data ^ Start of Segment data
20 | |4D|80|84|69|65|74|66|57|41|84|69|65|74|66| 20 | |4D|80|84|69|65|74|66|57|41|84|69|65|74|66|
^ MuxingApp start ^ MuxingApp start
In the above example, the Element ID of the Segment Element is stored In the above example, the Element ID of the Segment element is stored
at offset 16, the Element Data Size of the Segment Element is stored at offset 16, the Element Data Size of the Segment element is stored
at offset 20, and the Element Data of the Segment Element is stored at offset 20, and the Element Data of the Segment element is stored
at offset 21. at offset 21.
The MuxingApp Element is stored at offset 26. Since the Segment The MuxingApp element is stored at offset 26. Since the Segment
Position of an Element is calculated by subtracting the position of Position of an element is calculated by subtracting the position of
the Element Data of the containing Segment Element from the position the Element Data of the containing Segment element from the position
of that Element, the Segment Position of MuxingApp Element in the of that element, the Segment Position of the MuxingApp element in the
above example is '26 - 21' or '5'. above example is "26 - 21" or "5".
17. Linked Segments 17. Linked Segments
Matroska provides several methods to link two or more Segment Matroska provides several methods to link two or more Segment
Elements together to create a Linked Segment. A Linked Segment is a elements together to create a Linked Segment. A Linked Segment is a
set of multiple Segments linked together into a single presentation set of multiple Segments linked together into a single presentation
by using Hard Linking or Medium Linking. by using Hard Linking or Medium Linking.
All Segments within a Linked Segment MUST have a SegmentUUID. All Segments within a Linked Segment MUST have a SegmentUUID.
All Segments within a Linked Segment SHOULD be stored within the same All Segments within a Linked Segment SHOULD be stored within the same
directory or be accessible quickly based on their SegmentUUID in directory or be quickly accessible based on their SegmentUUID in
order to have seamless transition between segments. order to have a seamless transition between segments.
All Segments within a Linked Segment MAY set a SegmentFamily with a All Segments within a Linked Segment MAY set a SegmentFamily with a
common value to make it easier for a Matroska Player to know which common value to make it easier for a Matroska Player to know which
Segments are meant to be played together. Segments are meant to be played together.
The SegmentFilename, PrevFilename and NextFilename elements MAY also The SegmentFilename, PrevFilename, and NextFilename elements MAY also
give hints on the original filenames that were used when the Segment give hints on the original filenames that were used when the Segment
links were created, in case some SegmentUUID are damaged. links were created, in case some SegmentUUIDs are damaged.
17.1. Hard Linking 17.1. Hard Linking
Hard Linking, also called splitting, is the process of creating a Hard Linking, also called "splitting", is the process of creating a
Linked Segment by linking multiple Segment Elements using the Linked Segment by linking multiple Segment elements using the
NextUUID and PrevUUID Elements. NextUUID and PrevUUID elements.
All Segments within a Hard Linked Segment MUST use the same Tracks All Segments within a Hard Linked Segment MUST use the same Tracks
list and TimestampScale. list and TimestampScale.
Within a Linked Segment, the timestamps of Block and SimpleBlock MUST Within a Linked Segment, the timestamps of Block and SimpleBlock MUST
follow consecutively the timestamps of Block and SimpleBlock from the consecutively follow the timestamps of Block and SimpleBlock from the
previous Segment in linking order. previous Segment in linking order.
With Hard Linking, the chapters of any Segment within the Linked With Hard Linking, the chapters of any Segment within the Linked
Segment MUST only reference the current Segment. The NextUUID and Segment MUST only reference the current Segment. The NextUUID and
PrevUUID reference the respective SegmentUUID values of the next and PrevUUID reference the respective SegmentUUID values of the next and
previous Segments. previous Segments.
The first Segment of a Linked Segment MUST NOT have a PrevUUID The first Segment of a Linked Segment MUST NOT have a PrevUUID
Element. The last Segment of a Linked Segment MUST NOT have a element. The last Segment of a Linked Segment MUST NOT have a
NextUUID Element. NextUUID element.
For each node of the chain of Segments of a Linked Segment at least For each node of the chain of Segments of a Linked Segment, at least
one Segment MUST reference the other Segment within the chain. one Segment MUST reference the other Segment within the chain.
In a chain of Segments of a Linked Segment the NextUUID always takes In a chain of Segments of a Linked Segment, the NextUUID always takes
precedence over the PrevUUID. So if SegmentA has a NextUUID to precedence over the PrevUUID. Thus, if SegmentA has a NextUUID to
SegmentB and SegmentB has a PrevUUID to SegmentC, the link to use is SegmentB and SegmentB has a PrevUUID to SegmentC, the link to use is
NextUUID between SegmentA and SegmentB, SegmentC is not part of the NextUUID between SegmentA and SegmentB, and SegmentC is not part of
Linked Segment. the Linked Segment.
If SegmentB has a PrevUUID to SegmentA but SegmentA has no NextUUID, If SegmentB has a PrevUUID to SegmentA, but SegmentA has no NextUUID,
then the Matroska Player MAY consider these two Segments linked as then the Matroska Player MAY consider these two Segments linked as
SegmentA followed by SegmentB. SegmentA followed by SegmentB.
As an example, three Segments can be Hard Linked as a Linked Segment As an example, three Segments can be Hard Linked as a Linked Segment
through cross-referencing each other with SegmentUUID, PrevUUID, and through cross-referencing each other with SegmentUUID, PrevUUID, and
NextUUID, as in this table: NextUUID as shown in this table:
+==========+================+==================+==================+ +==========+================+==================+==================+
|file name |SegmentUUID | PrevUUID | NextUUID | |file name |SegmentUUID | PrevUUID | NextUUID |
+==========+================+==================+==================+ +==========+================+==================+==================+
|start.mkv |71000c23cd310998| Invalid | a77b3598941cb803 | |start.mkv |71000c23cd310998| Invalid | a77b3598941cb803 |
| |53fbc94dd984a5dd| | eac0fcdafe44fac9 | | |53fbc94dd984a5dd| | eac0fcdafe44fac9 |
+----------+----------------+------------------+------------------+ +----------+----------------+------------------+------------------+
|middle.mkv|a77b3598941cb803| 71000c23cd310998 | 6c92285fa6d3e827 | |middle.mkv|a77b3598941cb803| 71000c23cd310998 | 6c92285fa6d3e827 |
| |eac0fcdafe44fac9| 53fbc94dd984a5dd | b198d120ea3ac674 | | |eac0fcdafe44fac9| 53fbc94dd984a5dd | b198d120ea3ac674 |
+----------+----------------+------------------+------------------+ +----------+----------------+------------------+------------------+
|end.mkv |6c92285fa6d3e827| a77b3598941cb803 | Invalid | |end.mkv |6c92285fa6d3e827| a77b3598941cb803 | Invalid |
| |b198d120ea3ac674| eac0fcdafe44fac9 | | | |b198d120ea3ac674| eac0fcdafe44fac9 | |
+----------+----------------+------------------+------------------+ +----------+----------------+------------------+------------------+
Table 41: Usual Hard Linking UIDs Table 42: Usual Hard Linking UIDs
An other example where only the NextUUID Element is used: An example where only the NextUUID element is used:
+============+==================+==========+==================+ +============+==================+==========+==================+
| file name | SegmentUUID | PrevUUID | NextUUID | | file name | SegmentUUID | PrevUUID | NextUUID |
+============+==================+==========+==================+ +============+==================+==========+==================+
| start.mkv | 71000c23cd310998 | Invalid | a77b3598941cb803 | | start.mkv | 71000c23cd310998 | Invalid | a77b3598941cb803 |
| | 53fbc94dd984a5dd | | eac0fcdafe44fac9 | | | 53fbc94dd984a5dd | | eac0fcdafe44fac9 |
+------------+------------------+----------+------------------+ +------------+------------------+----------+------------------+
| middle.mkv | a77b3598941cb803 | n/a | 6c92285fa6d3e827 | | middle.mkv | a77b3598941cb803 | n/a | 6c92285fa6d3e827 |
| | eac0fcdafe44fac9 | | b198d120ea3ac674 | | | eac0fcdafe44fac9 | | b198d120ea3ac674 |
+------------+------------------+----------+------------------+ +------------+------------------+----------+------------------+
| end.mkv | 6c92285fa6d3e827 | n/a | Invalid | | end.mkv | 6c92285fa6d3e827 | n/a | Invalid |
| | b198d120ea3ac674 | | | | | b198d120ea3ac674 | | |
+------------+------------------+----------+------------------+ +------------+------------------+----------+------------------+
Table 42: Hard Linking without PrevUUID Table 43: Hard Linking without PrevUUID
An example where only the PrevUUID Element is used: An example where only the PrevUUID element is used:
+============+==================+==================+==========+ +============+==================+==================+==========+
| file name | SegmentUUID | PrevUUID | NextUUID | | file name | SegmentUUID | PrevUUID | NextUUID |
+============+==================+==================+==========+ +============+==================+==================+==========+
| start.mkv | 71000c23cd310998 | Invalid | n/a | | start.mkv | 71000c23cd310998 | Invalid | n/a |
| | 53fbc94dd984a5dd | | | | | 53fbc94dd984a5dd | | |
+------------+------------------+------------------+----------+ +------------+------------------+------------------+----------+
| middle.mkv | a77b3598941cb803 | 71000c23cd310998 | n/a | | middle.mkv | a77b3598941cb803 | 71000c23cd310998 | n/a |
| | eac0fcdafe44fac9 | 53fbc94dd984a5dd | | | | eac0fcdafe44fac9 | 53fbc94dd984a5dd | |
+------------+------------------+------------------+----------+ +------------+------------------+------------------+----------+
| end.mkv | 6c92285fa6d3e827 | a77b3598941cb803 | Invalid | | end.mkv | 6c92285fa6d3e827 | a77b3598941cb803 | Invalid |
| | b198d120ea3ac674 | eac0fcdafe44fac9 | | | | b198d120ea3ac674 | eac0fcdafe44fac9 | |
+------------+------------------+------------------+----------+ +------------+------------------+------------------+----------+
Table 43: Hard Linking without NextUUID Table 44: Hard Linking without NextUUID
In this example only the middle.mkv is using the PrevUUID and An example where only the middle.mkv is using the PrevUUID and
NextUUID Elements: NextUUID elements:
+==========+================+==================+==================+ +==========+================+==================+==================+
|file name |SegmentUUID | PrevUUID | NextUUID | |file name |SegmentUUID | PrevUUID | NextUUID |
+==========+================+==================+==================+ +==========+================+==================+==================+
|start.mkv |71000c23cd310998| Invalid | n/a | |start.mkv |71000c23cd310998| Invalid | n/a |
| |53fbc94dd984a5dd| | | | |53fbc94dd984a5dd| | |
+----------+----------------+------------------+------------------+ +----------+----------------+------------------+------------------+
|middle.mkv|a77b3598941cb803| 71000c23cd310998 | 6c92285fa6d3e827 | |middle.mkv|a77b3598941cb803| 71000c23cd310998 | 6c92285fa6d3e827 |
| |eac0fcdafe44fac9| 53fbc94dd984a5dd | b198d120ea3ac674 | | |eac0fcdafe44fac9| 53fbc94dd984a5dd | b198d120ea3ac674 |
+----------+----------------+------------------+------------------+ +----------+----------------+------------------+------------------+
|end.mkv |6c92285fa6d3e827| n/a | Invalid | |end.mkv |6c92285fa6d3e827| n/a | Invalid |
| |b198d120ea3ac674| | | | |b198d120ea3ac674| | |
+----------+----------------+------------------+------------------+ +----------+----------------+------------------+------------------+
Table 44: Hard Linking with mixed UID links Table 45: Hard Linking with Mixed UID Links
17.2. Medium Linking 17.2. Medium Linking
Medium Linking creates relationships between Segments using Ordered Medium Linking creates relationships between Segments using Ordered
Chapters (Section 20.1.3) and the ChapterSegmentUUID Element. A Chapters (Section 20.1.3) and the ChapterSegmentUUID element. A
Chapter Edition with Ordered Chapters MAY contain Chapter elements Chapter Edition with Ordered Chapters MAY contain Chapters elements
that reference timestamp ranges from other Segments. The Segment that reference timestamp ranges from other Segments. The Segment
referenced by the Ordered Chapter via the ChapterSegmentUUID Element referenced by the Ordered Chapter via the ChapterSegmentUUID element
SHOULD be played as part of a Linked Segment. SHOULD be played as part of a Linked Segment.
The timestamps of Segment content referenced by Ordered Chapters MUST The timestamps of Segment content referenced by Ordered Chapters MUST
be adjusted according to the cumulative duration of the previous be adjusted according to the cumulative duration of the previous
Ordered Chapters. Ordered Chapters.
As an example a file named intro.mkv could have a SegmentUUID of As an example, a file named intro.mkv could have a SegmentUUID of
"0xb16a58609fc7e60653a60c984fc11ead". Another file called "0xb16a58609fc7e60653a60c984fc11ead". Another file called
program.mkv could use a Chapter Edition that contains two Ordered program.mkv could use a Chapter Edition that contains two Ordered
Chapters. The first chapter references the Segment of intro.mkv with Chapters. The first chapter references the Segment of intro.mkv with
the use of a ChapterSegmentUUID, ChapterSegmentEditionUID, the use of a ChapterSegmentUUID, ChapterSegmentEditionUID,
ChapterTimeStart, and optionally a ChapterTimeEnd element. The ChapterTimeStart, and an optional ChapterTimeEnd element. The second
second chapter references content within the Segment of program.mkv. chapter references content within the Segment of program.mkv. A
A Matroska Player SHOULD recognize the Linked Segment created by the Matroska Player SHOULD recognize the Linked Segment created by the
use of ChapterSegmentUUID in an enabled Edition and present the use of ChapterSegmentUUID in an enabled Edition and present the
reference content of the two Segments as a single presentation. reference content of the two Segments as a single presentation.
The ChapterSegmentUUID represents the Segment that holds the content The ChapterSegmentUUID represents the Segment that holds the content
to play in place of the Linked Chapter. The ChapterSegmentUUID MUST to play in place of the Linked Chapter. The ChapterSegmentUUID MUST
NOT be the SegmentUUID of its own Segment. NOT be the SegmentUUID of its own Segment.
There are 2 ways to use a chapter link: There are two ways to use a chapter link:
* Linked-Duration linking, * Linked-Duration linking
* Linked-Edition linking * Linked-Edition linking
17.2.1. Linked-Duration 17.2.1. Linked-Duration
A Matroska Player MUST play the content of the linked Segment from A Matroska Player MUST play the content of the Linked Segment from
the ChapterTimeStart until ChapterTimeEnd timestamp in place of the the ChapterTimeStart until the ChapterTimeEnd timestamp in place of
Linked Chapter. the Linked Chapter.
ChapterTimeStart and ChapterTimeEnd represent timestamps in the ChapterTimeStart and ChapterTimeEnd represent timestamps in the
Linked Segment matching the value of ChapterSegmentUUID. Their Linked Segment matching the value of ChapterSegmentUUID. Their
values MUST be in the range of the linked Segment duration. values MUST be in the range of the Linked Segment duration.
The ChapterTimeEnd value MUST be set when using linked-duration The ChapterTimeEnd value MUST be set when using Linked-Duration
chapter linking. ChapterSegmentEditionUID MUST NOT be set. chapter linking. ChapterSegmentEditionUID MUST NOT be set.
17.2.2. Linked-Edition 17.2.2. Linked-Edition
A Matroska Player MUST play the whole linked Edition of the linked A Matroska Player MUST play the whole Linked Edition of the Linked
Segment in place of the Linked Chapter. Segment in place of the Linked Chapter.
ChapterSegmentEditionUID represents a valid Edition from the Linked ChapterSegmentEditionUID represents a valid Edition from the Linked
Segment matching the value of ChapterSegmentUUID. Segment matching the value of ChapterSegmentUUID.
When using linked-edition chapter linking. ChapterTimeEnd is When using Linked-Edition chapter linking, ChapterTimeEnd is
OPTIONAL. OPTIONAL.
18. Track Flags 18. Track Flags
18.1. Default flag 18.1. Default Flag
The "default track" flag is a hint for a Matroska Player indicating The Default flag is a hint for a Matroska Player indicating that a
that a given track SHOULD be eligible to be automatically selected as given track SHOULD be eligible to be automatically selected as the
the default track for a given language. If no tracks in a given default track for a given language. If no tracks in a given language
language have the default track flag set, then all tracks in that have the Default flag set, then all tracks in that language are
language are eligible for automatic selection. This can be used to eligible for automatic selection. This can be used to indicate that
indicate that a track provides "regular service" suitable for users a track provides "regular service" that is suitable for users with
with default settings, as opposed to specialized services, such as default settings, as opposed to specialized services, such as
commentary, hearing-impaired captions, or descriptive audio. commentary, captions for users with hearing impairments, or
descriptive audio.
The Matroska Player MAY override the "default track" flag for any The Matroska Player MAY override the Default flag for any reason,
reason, including user preferences to prefer tracks providing including user preferences to prefer tracks providing accessibility
accessibility services. services.
18.2. Forced flag 18.2. Forced Flag
The "forced" flag tells the Matroska Player that it SHOULD display The Forced flag tells the Matroska Player that it SHOULD display this
this subtitle track, even if user preferences usually would not call subtitle track, even if user preferences usually would not call for
for any subtitles to be displayed alongside the current selected any subtitles to be displayed alongside the audio track that is
audio track. This can be used to indicate that a track contains currently selected. This can be used to indicate that a track
translations of onscreen text, or of dialogue spoken in a different contains translations of on-screen text or dialogue spoken in a
language than the track's primary one. different language than the track's primary language.
18.3. Hearing-impaired flag 18.3. Hearing-Impaired Flag
The "hearing impaired" flag tells the Matroska Player that it SHOULD The Hearing-Impaired flag tells the Matroska Player that it SHOULD
prefer this track when selecting a default track for a hearing- prefer this track when selecting a default track for a user with a
impaired user, and that it MAY prefer to select a different track hearing impairment and that it MAY prefer to select a different track
when selecting a default track for a non-hearing-impaired user. when selecting a default track for a user that is not hearing
impaired.
18.4. Visual-impaired flag 18.4. Visual-Impaired Flag
The "visual impaired" flag tells the Matroska Player that it SHOULD The Visual-Impaired flag tells the Matroska Player that it SHOULD
prefer this track when selecting a default track for a visually- prefer this track when selecting a default track for a user with a
impaired user, and that it MAY prefer to select a different track visual impairment and that it MAY prefer to select a different track
when selecting a default track for a non-visually-impaired user. when selecting a default track for a user that is not visually
impaired.
18.5. Descriptions flag 18.5. Descriptions Flag
The "descriptions" flag tells the Matroska Player that this track is The Descriptions flag tells the Matroska Player that this track is
suitable to play via a text-to-speech system for a visually-impaired suitable to play via a text-to-speech system for a user with a visual
user, and that it SHOULD NOT automatically select this track when impairment and that it SHOULD NOT automatically select this track
selecting a default track for a non-visually-impaired user. when selecting a default track for a user that is not visually
impaired.
18.6. Original flag 18.6. Original Flag
The "original" flag tells the Matroska Player that this track is in The Original flag tells the Matroska Player that this track is in the
the original language, and that it SHOULD prefer it if configured to original language and that it SHOULD prefer this track if configured
prefer original-language tracks of this track's type. to prefer original-language tracks of this track's type.
18.7. Commentary flag 18.7. Commentary Flag
The "commentary" flag tells the Matroska Player that this track The Commentary flag tells the Matroska Player that this track
contains commentary on the content. contains commentary on the content.
18.8. Track Operation 18.8. Track Operation
TrackOperation allows combining multiple tracks to make a virtual TrackOperation allows for the combination of multiple tracks to make
one. It uses two separate system to combine tracks. One to create a a virtual one. It uses two separate system to combine tracks. One
3D "composition" (left/right/background planes) and one to simplify to create a 3D "composition" (left/right/background planes) and one
join two tracks together to make a single track. to simplify join two tracks together to make a single track.
A track created with TrackOperation is a proper track with a UID and A track created with TrackOperation is a proper track with a UID and
all its flags. However, the codec ID is meaningless because each all its flags. However, the codec ID is meaningless because each
"sub" track needs to be decoded by its own decoder before the "sub" track needs to be decoded by its own decoder before the
"operation" is applied. The Cues Elements corresponding to such a "operation" is applied. The Cues elements corresponding to such a
virtual track SHOULD be the union of the Cues Elements for each of virtual track SHOULD be the union of the Cues elements for each of
the tracks it's composed of (when the Cues are defined per track). the tracks it's composed of (when the Cues are defined per track).
In the case of TrackJoinBlocks, the Block Elements (from BlockGroup In the case of TrackJoinBlocks, the Block elements (from BlockGroup
and SimpleBlock) of all the tracks SHOULD be used as if they were and SimpleBlock) of all the tracks SHOULD be used as if they were
defined for this new virtual Track. When two Block Elements have defined for this new virtual Track. When two Block elements have
overlapping start or end timestamps, it's up to the underlying system overlapping start or end timestamps, it's up to the underlying system
to either drop some of these frames or render them the way they to either drop some of these frames or render them the way they
overlap. This situation SHOULD be avoided when creating such tracks overlap. This situation SHOULD be avoided when creating such tracks,
as you can never be sure of the end result on different platforms. as you can never be sure of the end result on different platforms.
18.9. Overlay Track 18.9. Overlay Track
Overlay tracks SHOULD be rendered in the same channel as the track An overlay track SHOULD be rendered in the same channel as the track
it's linked to. When content is found in such a track, it SHOULD be it's linked to. When content is found in such a track, it SHOULD be
played on the rendering channel instead of the original track. played on the rendering channel instead of the original track.
18.10. Multi-planar and 3D videos 18.10. Multi-planar and 3D Videos
There are two different ways to compress 3D videos: have each eye There are two different ways to compress 3D videos: have each eye
track in a separate track and have one track have both eyes combined track in a separate track and have one track have both eyes combined
inside (which is more efficient, compression-wise). Matroska inside (which is more efficient compression-wise). Matroska supports
supports both ways. both ways.
For the single track variant, there is the StereoMode Element, which For the single-track variant, there is the StereoMode element, which
defines how planes are assembled in the track (mono or left-right defines how planes are assembled in the track (mono or left-right
combined). Odd values of StereoMode means the left plane comes first combined). Odd values of StereoMode means the left plane comes first
for more convenient reading. The pixel count of the track for more convenient reading. The pixel count of the track
(PixelWidth/PixelHeight) is the raw amount of pixels, for example (PixelWidth/PixelHeight) is the raw number of pixels (for example,
3840x1080 for full HD side by side, and the DisplayWidth/ 3840x1080 for full HD side by side), and the DisplayWidth/
DisplayHeight in pixels is the amount of pixels for one plane DisplayHeight in pixels is the number of pixels for one plane
(1920x1080 for that full HD stream). Old stereo 3D were displayed (1920x1080 for that full HD stream). Old stereo 3D movies were
using anaglyph (cyan and red colors separated). For compatibility displayed using anaglyph (cyan and red colors separated). For
with such movies, there is a value of the StereoMode that corresponds compatibility with such movies, there is a value of the StereoMode
to AnaGlyph. that corresponds to anaglyph.
There is also a "packed" mode (values 13 and 14) which consists of There is also a "packed" mode (values 13 and 14) that consists of
packing two frames together in a Block using lacing. The first frame packing two frames together in a Block that uses lacing. The first
is the left eye and the other frame is the right eye (or vice versa). frame is the left eye and the other frame is the right eye (or vice
The frames SHOULD be decoded in that order and are possibly dependent versa). The frames SHOULD be decoded in that order and are possibly
on each other (P and B frames). dependent on each other (P and B frames).
For separate tracks, Matroska needs to define exactly which track For separate tracks, Matroska needs to define exactly which track
does what. TrackOperation with TrackCombinePlanes do that. For more does what. TrackOperation with TrackCombinePlanes does that. For
details look at Section 18.8 on how TrackOperation works. more details, see Section 18.8 on how TrackOperation works.
The 3D support is still in infancy and may evolve to support more The 3D support is still in infancy and may evolve to support more
features. features.
The StereoMode used to be part of Matroska v2 but it didn't meet the The StereoMode used to be part of Matroska v2, but it didn't meet the
requirement for multiple tracks. There was also a bug in libmatroska requirement for multiple tracks. There was also a bug in
prior to 0.9.0 that would save/read it as 0x53B9 instead of 0x53B8; [libmatroska] prior to 0.9.0 that would save/read it as 0x53B9
see OldStereoMode (Section 5.1.4.1.28.5). Matroska Readers MAY instead of 0x53B8; see OldStereoMode (Section 5.1.4.1.28.5).
support these legacy files by checking Matroska v2 or 0x53B9. The Matroska Readers MAY support these legacy files by checking Matroska
older values of StereoMode were 0: mono, 1: right eye, 2: left eye, v2 or 0x53B9. The older values of StereoMode were 0 (mono), 1 (right
3: both eyes, the only values that can be found in OldStereoMode. eye), 2 (left eye), and 3 (both eyes); these are the only values that
They are not compatible with the StereoMode values found in Matroska can be found in OldStereoMode. They are not compatible with the
v3 and above. StereoMode values found in Matroska v3 and above.
19. Default track selection 19. Default Track Selection
This section provides some example sets of Tracks and hypothetical This section provides some example sets of Tracks and hypothetical
user settings, along with indications of which ones a similarly- user settings, along with indications of which ones a similarly
configured Matroska Player SHOULD automatically select for playback configured Matroska Player SHOULD automatically select for playback
by default in such a situation. A player MAY provide additional by default in such a situation. A player MAY provide additional
settings with more detailed controls for more nuanced scenarios. settings with more detailed controls for more nuanced scenarios.
These examples are provided as guidelines to illustrate the intended These examples are provided as guidelines to illustrate the intended
usages of the various supported Track flags, and their expected usages of the various supported Track flags and their expected
behaviors. behaviors.
Track names are shown in English for illustrative purposes; actual Track names are shown in English for illustrative purposes; actual
files may have titles in the language of each track, or provide files may have titles in the language of each track or provide titles
titles in multiple languages. in multiple languages.
19.1. Audio Selection 19.1. Audio Selection
Example track set: Example track set:
+===+=====+====+======+========+=======+===============+===========+ +===+=====+====+======+========+=======+===============+===========+
|No.|Type |Lang|Layout|Original|Default|Other flags |Name | |No.|Type |Lang|Layout|Original|Default|Other Flags |Name |
+===+=====+====+======+========+=======+===============+===========+ +===+=====+====+======+========+=======+===============+===========+
|1 |Video|und |N/A |N/A |N/A |None | | |1 |Video|und |N/A |N/A |N/A |None | |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
|2 |Audio|eng |5.1 |1 |1 |None | | |2 |Audio|eng |5.1 |1 |1 |None | |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
|3 |Audio|eng |2.0 |1 |1 |None | | |3 |Audio|eng |2.0 |1 |1 |None | |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
|4 |Audio|eng |2.0 |1 |0 |Visual-impaired|Descriptive| |4 |Audio|eng |2.0 |1 |0 |Visual-Impaired|Descriptive|
| | | | | | | |audio | | | | | | | | |audio |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
|5 |Audio|esp |5.1 |0 |1 |None | | |5 |Audio|esp |5.1 |0 |1 |None | |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
|6 |Audio|esp |2.0 |0 |0 |Visual-impaired|Descriptive| |6 |Audio|esp |2.0 |0 |0 |Visual-Impaired|Descriptive|
| | | | | | | |audio | | | | | | | | |audio |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
|7 |Audio|eng |2.0 |1 |0 |Commentary |Director's | |7 |Audio|eng |2.0 |1 |0 |Commentary |Director's |
| | | | | | | |Commentary | | | | | | | | |Commentary |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
|8 |Audio|eng |2.0 |1 |0 |None |Karaoke | |8 |Audio|eng |2.0 |1 |0 |None |Karaoke |
+---+-----+----+------+--------+-------+---------------+-----------+ +---+-----+----+------+--------+-------+---------------+-----------+
Table 45: Audio Tracks for default selection Table 46: Audio Tracks for Default Selection
Here we have a file with 7 audio tracks, of which 5 are in English The table above shows a file with seven audio tracks -- five in
and 2 are in Spanish. English and two in Spanish.
The English tracks all have the Original flag, indicating that The English tracks all have the Original flag, indicating that
English is the original content language. English is the original content language.
Generally the player will first consider the track languages: if the Generally, the player will first consider the track languages. If
player has an option to prefer original-language audio and the user the player has an option to prefer original-language audio and the
has enabled it, then it should prefer one of the Original-flagged user has enabled it, then it should prefer one of the tracks with the
tracks. If configured to specifically prefer audio tracks in English Original flag. If the user has configured to specifically prefer
or Spanish, the player should select one of the tracks in the audio tracks in English or Spanish, the player should select one of
corresponding language. The player may also wish to prefer an the tracks in the corresponding language. The player may also wish
Original-flagged track if no tracks matching any of the user's to prefer a track with the Original flag if no tracks matching any of
explicitly-preferred languages are available. the user's explicitly preferred languages are available.
Two of the tracks have the Visual-impaired flag. If the player has Two of the tracks have the Visual-Impaired flag. If the player has
been configured to prefer such tracks, it should select one; been configured to prefer such tracks, it should select one;
otherwise, it should avoid them if possible. otherwise, it should avoid them if possible.
If selecting an English track, when other settings have left multiple If selecting an English track, when other settings have left multiple
possible options, it may be useful to exclude the tracks that lack possible options, it may be useful to exclude the tracks that lack
the Default flag: here, one provides descriptive service for the the Default flag. Here, one provides descriptive service for
visually impaired (which has its own flag and may be automatically individuals with visual impairments (which has its own flag and may
selected by user configuration, but is unsuitable for users with be automatically selected by user configuration but is unsuitable for
default-configured players), one is a commentary track (which has its users with default-configured players), one is a commentary track
own flag, which the player may or may not have specialized handling (which has its own flag and the player may or may not have
for), and the last contains karaoke versions of the music that plays specialized handling for), and the last contains karaoke versions of
during the film, which is an unusual specialized audio service that the music that plays during the film (which is an unusual specialized
Matroska has no built-in support for indicating, so it's indicated in audio service that Matroska has no built-in support for indicating,
the track name instead. By not setting the Default flag on these so it's indicated in the track name instead). By not setting the
specialized tracks, the file's author hints that they should not be Default flag on these specialized tracks, the file's author hints
automatically selected by a default-configured player. that they should not be automatically selected by a default-
configured player.
Having narrowed its choices down, our example player now may have to Having narrowed its choices down, the example player now may have to
select between tracks 2 and 3. The only difference between these select between tracks 2 and 3. The only difference between these
tracks is their channel layouts: 2 is 5.1 surround, while 3 is tracks is their channel layouts: 2 is 5.1 surround, while 3 is
stereo. If the player is aware that the output device is a pair of stereo. If the player is aware that the output device is a pair of
headphones or stereo speakers, it may wish to prefer the stereo mix headphones or stereo speakers, it may wish to prefer the stereo mix
automatically. On the other hand, if it knows that the device is a automatically. On the other hand, if it knows that the device is a
surround system, it may wish to prefer the surround mix. surround system, it may wish to prefer the surround mix.
If the player finishes analyzing all of the available audio tracks If the player finishes analyzing all of the available audio tracks
and finds that multiple seems equally and maximally preferable, it and finds that more than one seem equally and maximally preferable,
SHOULD default to the first of the group. it SHOULD default to the first of the group.
19.2. Subtitle selection 19.2. Subtitle Selection
Example track set: Example track set:
+===+===========+====+========+=======+======+==========+==========+ +===+=========+====+========+=======+======+========+==============+
|No.| Type |Lang|Original|Default|Forced| Other | Name | |No.|Type |Lang|Original|Default|Forced|Other | Name |
| | | | | | | flags | | | | | | | | |Flags | |
+===+===========+====+========+=======+======+==========+==========+ +===+=========+====+========+=======+======+========+==============+
|1 | Video |und |N/A |N/A |N/A | None | | |1 |Video |und |N/A |N/A |N/A |None | |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
|2 | Audio |fra |1 |1 |N/A | None | | |2 |Audio |fra |1 |1 |N/A |None | |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
|3 | Audio |por |0 |1 |N/A | None | | |3 |Audio |por |0 |1 |N/A |None | |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
|4 | Subtitles |fra |1 |1 |0 | None | | |4 |Subtitles|fra |1 |1 |0 |None | |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
|5 | Subtitles |fra |1 |0 |0 | Hearing- | Captions | |5 |Subtitles|fra |1 |0 |0 |Hearing-| Captions for |
| | | | | | | impaired | for the | | | | | | | |Impaired| users with |
| | | | | | | | hearing- | | | | | | | | | hearing |
| | | | | | | | impaired | | | | | | | | | impairments |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
|6 | Subtitles |por |0 |1 |0 | None | | |6 |Subtitles|por |0 |1 |0 |None | |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
|7 | Subtitles |por |0 |0 |1 | None | Signs | |7 |Subtitles|por |0 |0 |1 |None | Signs |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
|8 | Subtitles |por |0 |0 |0 | Hearing- | SDH | |8 |Subtitles|por |0 |0 |0 |Hearing-| SDH |
| | | | | | | impaired | | | | | | | | |Impaired| |
+---+-----------+----+--------+-------+------+----------+----------+ +---+---------+----+--------+-------+------+--------+--------------+
Table 46: Subtitle Tracks for default selection Table 47: Subtitle Tracks for Default Selection
Here we have 2 audio tracks and 5 subtitle tracks. As we can see, The table above shows two audio tracks and five subtitle tracks. As
French is the original language. we can see, French is the original language.
We'll start by discussing the case where the user prefers French (or We'll start by discussing the case where the user prefers French (or
Original-language) audio (or has explicitly selected the French audio original-language) audio (or has explicitly selected the French audio
track), and also prefers French subtitles. track) and also prefers French subtitles.
In this case, if the player isn't configured to display captions when In this case, if the player isn't configured to display captions when
the audio matches their preferred subtitle languages, the player the audio matches their preferred subtitle languages, the player
doesn't need to select a subtitle track at all. doesn't need to select a subtitle track at all.
If the user _has_ indicated that they want captions to be displayed, If the user _has_ indicated that they want captions to be displayed,
the selection simply comes down to whether Hearing-impaired subtitles the selection simply comes down to whether hearing-impaired subtitles
are preferred. are preferred.
The situation for a user who prefers Portuguese subtitles starts out The situation for a user who prefers Portuguese subtitles starts out
somewhat analogous. If they select the original French audio (either somewhat analogous. If they select the original French audio (either
by explicit audio language preference, preference for Original- by explicit audio language preference, preference for original-
language tracks, or by explicitly selecting that track), then the language tracks, or explicitly selecting that track), then the
selection once again comes down to the hearing-impaired preference. selection once again comes down to the hearing-impaired preference.
However, the case where the Portuguese audio track is selected has an However, the case where the Portuguese audio track is selected has an
important catch: a Forced track in Portuguese is present. This may important catch: a Forced track in Portuguese is present. This may
contain translations of onscreen text from the video track, or of contain translations of on-screen text from the video track or of
portions of the audio that are not translated (music, for instance). portions of the audio that are not translated (music, for instance).
This means that even if the user's preferences wouldn't normally call This means that even if the user's preferences wouldn't normally call
for captions here, the Forced track should be selected nonetheless, for captions here, the Forced track should be selected nonetheless,
rather than selecting no track at all. On the other hand, if the rather than selecting no track at all. On the other hand, if the
user's preferences _do_ call for captions, the non-Forced tracks user's preferences _do_ call for captions, the non-Forced tracks
should be preferred, as the Forced track will not contain captioning should be preferred, as the Forced track will not contain captioning
for the dialogue. for the dialogue.
20. Chapters 20. Chapters
The Matroska Chapters system can have multiple Editions and each The Matroska Chapters system can have multiple Editions, and each
Edition can consist of Simple Chapters where a chapter start time is Edition can consist of Simple Chapters where a chapter start time is
used as marker in the timeline only. An Edition can be more complex used as a marker in the timeline only. An Edition can be more
with Ordered Chapters where a chapter end time stamp is additionally complex with Ordered Chapters where a chapter end timestamp is
used or much more complex with Linked Chapters. The Matroska additionally used or much more complex with Linked Chapters. The
Chapters system can also have a menu structure, borrowed from the DVD Matroska Chapters system can also have a menu structure borrowed from
menu system [DVD-Video], or have its own built-in Matroska menu the DVD-menu system [DVD-Video] or have its own built-in Matroska
structure. menu structure.
20.1. EditionEntry 20.1. EditionEntry
The EditionEntry is also called an Edition. An Edition contains a The EditionEntry is also called an Edition. An Edition contains a
set of Edition flags and MUST contain at least one ChapterAtom set of Edition flags and MUST contain at least one ChapterAtom
Element. Chapters are always inside an Edition (or a Chapter itself element. Chapters are always inside an Edition (or a Chapter itself
part of an Edition). Multiple Editions are allowed. Some of these is part of an Edition). Multiple Editions are allowed. Some of
Editions MAY be ordered and others not. these Editions MAY be ordered and others not.
20.1.1. EditionFlagDefault 20.1.1. EditionFlagDefault
Only one Edition SHOULD have an EditionFlagDefault flag set to true. Only one Edition SHOULD have an EditionFlagDefault flag set to true.
20.1.2. Default Edition 20.1.2. Default Edition
The Default Edition is the Edition that a Matroska Player SHOULD use The Default Edition is the Edition that a Matroska Player SHOULD use
for playback by default. for playback by default.
skipping to change at page 117, line 15 skipping to change at line 5219
+===========+=============+=================+ +===========+=============+=================+
| Edition | FlagDefault | Default Edition | | Edition | FlagDefault | Default Edition |
+===========+=============+=================+ +===========+=============+=================+
| Edition 1 | true | X | | Edition 1 | true | X |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
| Edition 2 | true | | | Edition 2 | true | |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
| Edition 3 | true | | | Edition 3 | true | |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
Table 47: Default edition, all default Table 48: Default Edition, All Default
+===========+=============+=================+ +===========+=============+=================+
| Edition | FlagDefault | Default Edition | | Edition | FlagDefault | Default Edition |
+===========+=============+=================+ +===========+=============+=================+
| Edition 1 | false | X | | Edition 1 | false | X |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
| Edition 2 | false | | | Edition 2 | false | |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
| Edition 3 | false | | | Edition 3 | false | |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
Table 48: Default edition, no default Table 49: Default Edition, No Default
+===========+=============+=================+ +===========+=============+=================+
| Edition | FlagDefault | Default Edition | | Edition | FlagDefault | Default Edition |
+===========+=============+=================+ +===========+=============+=================+
| Edition 1 | false | | | Edition 1 | false | |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
| Edition 2 | true | X | | Edition 2 | true | X |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
| Edition 3 | false | | | Edition 3 | false | |
+-----------+-------------+-----------------+ +-----------+-------------+-----------------+
Table 49: Default edition, with default Table 50: Default Edition, With Default
20.1.3. EditionFlagOrdered 20.1.3. EditionFlagOrdered
The EditionFlagOrdered Flag is a significant feature as it enables an The EditionFlagOrdered flag is a significant feature, as it enables
Edition of Ordered Chapters which defines and arranges a virtual an Edition of Ordered Chapters that defines and arranges a virtual
timeline rather than simply labeling points within the timeline. For timeline rather than simply labeling points within the timeline. For
example, with Editions of Ordered Chapters a single Matroska file can example, with Editions of Ordered Chapters, a single Matroska file
present multiple edits of a film without duplicating content. can present multiple edits of a film without duplicating content.
Alternatively, if a videotape is digitized in full, one Ordered Alternatively, if a videotape is digitized in full, one Ordered
Edition could present the full content (including colorbars, Edition could present the full content (including colorbars,
countdown, slate, a feature presentation, and black frames), while countdown, slate, a feature presentation, and black frames), while
another Edition of Ordered Chapters can use Chapters that only mark another Edition of Ordered Chapters can use Chapters that only mark
the intended presentation with the colorbars and other ancillary the intended presentation with the colorbars and other ancillary
visual information excluded. If an Edition of Ordered Chapters is visual information excluded. If an Edition of Ordered Chapters is
enabled, then the Matroska Player MUST play those Chapters in their enabled, then the Matroska Player MUST play those Chapters in their
stored order from the timestamp marked in the ChapterTimeStart stored order from the timestamp marked in the ChapterTimeStart
Element to the timestamp marked in to ChapterTimeEnd Element. element to the timestamp marked in to ChapterTimeEnd element.
If the EditionFlagOrdered Flag evaluates to "0", Simple Chapters are If the EditionFlagOrdered flag evaluates to "0", Simple Chapters are
used and only the ChapterTimeStart of a Chapter is used as chapter used and only the ChapterTimeStart of a Chapter is used as a chapter
mark to jump to the predefined point in the timeline. With Simple mark to jump to the predefined point in the timeline. With Simple
Chapters, a Matroska Player MUST ignore certain Chapter Elements. In Chapters, a Matroska Player MUST ignore certain elements inside a
that case these elements are informational only. Chapters element. In that case, these elements are informational
only.
The following list shows the different Chapter elements only found in The following list shows the different Chapters elements only found
Ordered Chapters. in Ordered Chapters.
+======================================+ * ChapterAtom\ChapterSegmentUUID
| Ordered Chapter elements |
+======================================+
| ChapterAtom/ChapterSegmentUUID |
+--------------------------------------+
| ChapterAtom/ChapterSegmentEditionUID |
+--------------------------------------+
| ChapterAtom/ChapterTrack |
+--------------------------------------+
| ChapterAtom/ChapProcess |
+--------------------------------------+
| Info/ChapterTranslate |
+--------------------------------------+
| TrackEntry/TrackTranslate |
+--------------------------------------+
Table 50: elements only found in * ChapterAtom\ChapterSegmentEditionUID
ordered chapters
Furthermore, there are other EBML Elements which could be used if the * ChapterAtom\ChapProcess
* Info\ChapterTranslate
* TrackEntry\TrackTranslate
Furthermore, there are other EBML elements that could be used if the
EditionFlagOrdered evaluates to "1". EditionFlagOrdered evaluates to "1".
20.1.3.1. Ordered-Edition and Matroska Segment-Linking 20.1.3.1. Ordered-Edition and Matroska Segment Linking
* Hard Linking: Ordered-Chapters supersedes the Hard Linking. Hard Linking: Ordered Chapters supersede the Hard Linking.
* Medium Linking: Ordered Chapters are used in a normal way and can Medium Linking: Ordered Chapters are used in a normal way and can be
be combined with the ChapterSegmentUUID element which establishes combined with the ChapterSegmentUUID element, which establishes a
a link to another Segment. link to another Segment.
See Section 17 on the Linked Segments for more information about Hard See Section 17 on Linked Segments for more information about Hard
Linking and Medium Linking. Linking and Medium Linking.
20.2. ChapterAtom 20.2. ChapterAtom
The ChapterAtom is also called a Chapter. The ChapterAtom is also called a Chapter.
20.2.1. ChapterTimeStart 20.2.1. ChapterTimeStart
The timestamp of the start of Chapter with nanosecond accuracy, not ChapterTimeStart is the timestamp of the start of Chapter with
scaled by TimestampScale. For Simple Chapters this is the position nanosecond accuracy and is not scaled by TimestampScale. For Simple
of the chapter markers in the timeline. Chapters, this is the position of the chapter markers in the
timeline.
20.2.2. ChapterTimeEnd 20.2.2. ChapterTimeEnd
The timestamp of the end of Chapter with nanosecond accuracy, not ChapterTimeEnd is the timestamp of the end of Chapter with nanosecond
scaled by TimestampScale. The timestamp defined by the accuracy and is not scaled by TimestampScale. The timestamp defined
ChapterTimeEnd is not part of the Chapter. A Matroska Player by the ChapterTimeEnd is not part of the Chapter. A Matroska Player
calculates the duration of this Chapter using the difference between calculates the duration of this Chapter using the difference between
the ChapterTimeEnd and ChapterTimeStart. The end timestamp MUST be the ChapterTimeEnd and ChapterTimeStart. The end timestamp MUST be
greater than or equal to the start timestamp. greater than or equal to the start timestamp.
When the ChapterTimeEnd timestamp is equal to the ChapterTimeStart When the ChapterTimeEnd timestamp is equal to the ChapterTimeStart
timestamp, the timestamps is included in the Chapter. It can be timestamp, the timestamp is included in the Chapter. It can be
useful to put markers in a file or add chapter commands with ordered useful to put markers in a file or add chapter commands with ordered
chapter commands without having to play anything; see chapter commands without having to play anything; see
Section 5.1.7.1.4.14. Section 5.1.7.1.4.14.
+===========+=================+===============+===============+ +===========+=================+===============+===============+
| Chapter | Start timestamp | End timestamp | Duration | | Chapter | Start timestamp | End timestamp | Duration |
+===========+=================+===============+===============+ +===========+=================+===============+===============+
| Chapter 1 | 0 | 1000000000 | 1000000000 | | Chapter 1 | 0 | 1000000000 | 1000000000 |
+-----------+-----------------+---------------+---------------+ +-----------+-----------------+---------------+---------------+
| Chapter 2 | 1000000000 | 5000000000 | 4000000000 | | Chapter 2 | 1000000000 | 5000000000 | 4000000000 |
+-----------+-----------------+---------------+---------------+ +-----------+-----------------+---------------+---------------+
| Chapter 3 | 6000000000 | 6000000000 | 0 | | Chapter 3 | 6000000000 | 6000000000 | 0 |
+-----------+-----------------+---------------+---------------+ +-----------+-----------------+---------------+---------------+
| Chapter 4 | 9000000000 | 8000000000 | Invalid | | Chapter 4 | 9000000000 | 8000000000 | Invalid |
| | | | (-1000000000) | | | | | (-1000000000) |
+-----------+-----------------+---------------+---------------+ +-----------+-----------------+---------------+---------------+
Table 51: ChapterTimeEnd usage possibilities Table 51: ChapterTimeEnd Usage Possibilities
20.2.3. Nested Chapters 20.2.3. Nested Chapters
A ChapterAtom element can contain other ChapterAtom elements. That A ChapterAtom element can contain other ChapterAtom elements. That
element is a Parent Chapter and the ChapterAtom elements it contains element is a Parent Chapter, and the ChapterAtom elements it contains
are Nested Chapters. are Nested Chapters.
Nested Chapters can be useful to tag small parts of a Segment that Nested Chapters can be useful to tag small parts of a Segment that
already have tags or add Chapter Codec commands on smaller parts of a already have tags or add Chapter Codec commands on smaller parts of a
Segment that already have Chapter Codec commands. Segment that already have Chapter Codec commands.
The ChapterTimeStart of a Nested Chapter MUST be greater than or The ChapterTimeStart of a Nested Chapter MUST be greater than or
equal to the ChapterTimeStart its Parent Chapter. equal to the ChapterTimeStart of its Parent Chapter.
If the Parent Chapter of a Nested Chapter has a ChapterTimeEnd, the If the Parent Chapter of a Nested Chapter has a ChapterTimeEnd, the
ChapterTimeStart of that Nested Chapter MUST be smaller than or equal ChapterTimeStart of that Nested Chapter MUST be smaller than or equal
to the ChapterTimeEnd of the Parent Chapter. to the ChapterTimeEnd of the Parent Chapter.
20.2.4. Nested Chapters in Ordered Chapters 20.2.4. Nested Chapters in Ordered Chapters
The ChapterTimeEnd of the lowest level of Nested Chapters MUST be set The ChapterTimeEnd of the lowest level of Nested Chapters MUST be set
for Ordered Chapters. for Ordered Chapters.
When used with Ordered Chapters, the ChapterTimeEnd value of a Parent When used with Ordered Chapters, the ChapterTimeEnd value of a Parent
Chapter is useless for playback as the proper playback sections are Chapter is useless for playback, as the proper playback sections are
described in its Nested Chapters. The ChapterTimeEnd SHOULD NOT be described in its Nested Chapters. The ChapterTimeEnd SHOULD NOT be
set in Parent Chapters and MUST be ignored for playback. set in Parent Chapters and MUST be ignored for playback.
20.2.5. ChapterFlagHidden 20.2.5. ChapterFlagHidden
Each Chapter ChapterFlagHidden flag works independently of parent Each Chapter's ChapterFlagHidden flag works independently of Parent
chapters. A Nested Chapter with a ChapterFlagHidden that evaluates Chapters. A Nested Chapter with a ChapterFlagHidden flag that
to "0" remains visible in the user interface even if the Parent evaluates to "0" remains visible in the user interface even if the
Chapter ChapterFlagHidden flag is set to "1". Parent Chapter's ChapterFlagHidden flag is set to "1".
+==========================+===================+=========+ +==========================+===================+=========+
| Chapter + Nested Chapter | ChapterFlagHidden | visible | | Chapter + Nested Chapter | ChapterFlagHidden | visible |
+==========================+===================+=========+ +==========================+===================+=========+
| Chapter 1 | 0 | yes | | Chapter 1 | 0 | yes |
+--------------------------+-------------------+---------+ +--------------------------+-------------------+---------+
| Nested Chapter 1.1 | 0 | yes | | Nested Chapter 1.1 | 0 | yes |
+--------------------------+-------------------+---------+ +--------------------------+-------------------+---------+
| Nested Chapter 1.2 | 1 | no | | Nested Chapter 1.2 | 1 | no |
+--------------------------+-------------------+---------+ +--------------------------+-------------------+---------+
| Chapter 2 | 1 | no | | Chapter 2 | 1 | no |
+--------------------------+-------------------+---------+ +--------------------------+-------------------+---------+
| Nested Chapter 2.1 | 0 | yes | | Nested Chapter 2.1 | 0 | yes |
+--------------------------+-------------------+---------+ +--------------------------+-------------------+---------+
| Nested Chapter 2.2 | 1 | no | | Nested Chapter 2.2 | 1 | no |
+--------------------------+-------------------+---------+ +--------------------------+-------------------+---------+
Table 52: ChapterFlagHidden nested visibility Table 52: ChapterFlagHidden Nested Visibility
20.3. Menu features 20.3. Menu Features
The menu features are handled like a chapter codec. That means each The menu features are handled like a chapter codec. That means each
codec has a type, some private data and some data in the chapters. codec has a type, some private data, and some data in the chapters.
The type of the menu system is defined by the ChapProcessCodecID The type of the menu system is defined by the ChapProcessCodecID
parameter. For now, only 2 values are supported : 0 matroska script, parameter. For now, only two values are supported: 0 (Matroska
1 menu borrowed from the DVD [DVD-Video]. The private data depend on Script) and 1 (menu borrowed from the DVD [DVD-Video]). The private
the type of menu system (stored in ChapProcessPrivate), idem for the data stored in ChapProcessPrivate and ChapProcessData depends on the
data in the chapters (stored in ChapProcessData). ChapProcessCodecID value.
The menu system, as well as Chapter Codecs in general, can do actions The menu system, as well as Chapter Codecs in general, can perform
on the Matroska Player like jumping to another Chapter or Edition, actions on the Matroska Player, such as jumping to another Chapter or
selecting different tracks and possibly more. The scope of all the Edition, selecting different tracks, and possibly more. The scope of
possibilities of Chapter Codecs is not covered in this document as it all the possibilities of Chapter Codecs is not covered in this
depends on the Chapter Codec features and its integration in a document, as it depends on the Chapter Codec features and its
Matroska Player. integration in a Matroska Player.
20.4. Physical Types 20.4. Physical Types
Each level can have different meanings for audio and video. The Each level can have different meanings for audio and video. The
ORIGINAL_MEDIA_TYPE tag [MatroskaTags] can be used to specify a ORIGINAL_MEDIA_TYPE tag [MatroskaTags] can be used to specify a
string for ChapterPhysicalEquiv = 60. Here is the list of possible string for ChapterPhysicalEquiv = 60. Here is the list of possible
levels for both audio and video: levels for both audio and video:
+=======+=======================+=============+=====================+ +=======+=======================+=============+=====================+
| Value | Audio | Video | Comment | | Value | Audio | Video | Comment |
skipping to change at page 122, line 33 skipping to change at line 5442
| | | | DVDs | | | | | DVDs |
+-------+-----------------------+-------------+---------------------+ +-------+-----------------------+-------------+---------------------+
| 20 | TRACK | - | as found on audio | | 20 | TRACK | - | as found on audio |
| | | | CDs | | | | | CDs |
+-------+-----------------------+-------------+---------------------+ +-------+-----------------------+-------------+---------------------+
| 10 | INDEX | - | the first logical | | 10 | INDEX | - | the first logical |
| | | | level of the side/ | | | | | level of the side/ |
| | | | medium | | | | | medium |
+-------+-----------------------+-------------+---------------------+ +-------+-----------------------+-------------+---------------------+
Table 53: ChapterPhysicalEquiv meaning per track type Table 53: ChapterPhysicalEquiv Meaning per Track Type
20.5. Chapter Examples 20.5. Chapter Examples
20.5.1. Example 1 : basic chaptering 20.5.1. Example 1: Basic Chaptering
In this example a movie is split in different chapters. It could In this example, a movie is split in different chapters. It could
also just be an audio file (album) on which each track corresponds to also just be an audio file (album) in which each track corresponds to
a chapter. a chapter.
* 00000 ms - 05000 ms : Intro * 00000 ms - 05000 ms: Intro
* 05000 ms - 25000 ms : Before the crime * 05000 ms - 25000 ms: Before the crime
* 25000 ms - 27500 ms : The crime * 25000 ms - 27500 ms: The crime
* 27500 ms - 38000 ms : The killer arrested * 27500 ms - 38000 ms: After the crime
* 38000 ms - 43000 ms : Credits * 38000 ms - 43000 ms: Credits
This would translate in the following matroska form, with the EBML This translates to Matroska form, with the EBML tree shown as follows
tree shown as XML : in XML:
<Chapters> <Chapters>
<EditionEntry> <EditionEntry>
<EditionUID>16603393396715046047</EditionUID> <EditionUID>16603393396715046047</EditionUID>
<ChapterAtom> <ChapterAtom>
<ChapterUID>1193046</ChapterUID> <ChapterUID>1193046</ChapterUID>
<ChapterTimeStart>0</ChapterTimeStart> <ChapterTimeStart>0</ChapterTimeStart>
<ChapterTimeEnd>5000000000</ChapterTimeEnd> <ChapterTimeEnd>5000000000</ChapterTimeEnd>
<ChapterDisplay> <ChapterDisplay>
<ChapString>Intro</ChapString> <ChapString>Intro</ChapString>
skipping to change at page 124, line 18 skipping to change at line 5523
<ChapString>Credits</ChapString> <ChapString>Credits</ChapString>
</ChapterDisplay> </ChapterDisplay>
<ChapterDisplay> <ChapterDisplay>
<ChapString>Generique</ChapString> <ChapString>Generique</ChapString>
<ChapLanguage>fra</ChapLanguage> <ChapLanguage>fra</ChapLanguage>
</ChapterDisplay> </ChapterDisplay>
</ChapterAtom> </ChapterAtom>
</EditionEntry> </EditionEntry>
</Chapters> </Chapters>
Figure 16: Basic Chapters Example. Figure 25: Basic Chapters Example
20.5.2. Example 2 : nested chapters 20.5.2. Example 2: Nested Chapters
In this example an (existing) album is split into different chapters, In this example, an (existing) album is split into different
and one of them contains another splitting. chapters, and one of them contains another splitting.
20.5.2.1. The Micronauts "Bleep To Bleep" 20.5.2.1. The Micronauts "Bleep To Bleep"
* 00:00 - 12:28 : Baby Wants To Bleep/Rock * 00:00 - 12:28: Baby wants to Bleep/Rock
- 00:00 - 04:38 : Baby wants to bleep (pt.1) - 00:00 - 04:38: Baby wants to bleep (pt.1)
- 04:38 - 07:12 : Baby wants to rock - 04:38 - 07:12: Baby wants to rock
- 07:12 - 10:33 : Baby wants to bleep (pt.2) - 07:12 - 10:33: Baby wants to bleep (pt.2)
- 10:33 - 12:28 : Baby wants to bleep (pt.3) - 10:33 - 12:28: Baby wants to bleep (pt.3)
* 12:30 - 19:38 : Bleeper_O+2 * 12:30 - 19:38: Bleeper_O+2
* 19:40 - 22:20 : Baby wants to bleep (pt.4) * 19:40 - 22:20: Baby wants to bleep (pt.4)
* 22:22 - 25:18 : Bleep to bleep * 22:22 - 25:18: Bleep to bleep
* 25:20 - 33:35 : Baby wants to bleep (k) * 25:20 - 33:35: Baby wants to bleep (k)
* 33:37 - 44:28 : Bleeper * 33:37 - 44:28: Bleeper
This would translate in the following matroska form, with the EBML This translates to Matroska form, with the EBML tree shown as follows
tree shown as XML : in XML:
<Chapters> <Chapters>
<EditionEntry> <EditionEntry>
<EditionUID>1281690858003401414</EditionUID> <EditionUID>1281690858003401414</EditionUID>
<ChapterAtom> <ChapterAtom>
<ChapterUID>1</ChapterUID> <ChapterUID>1</ChapterUID>
<ChapterTimeStart>0</ChapterTimeStart> <ChapterTimeStart>0</ChapterTimeStart>
<ChapterTimeEnd>748000000</ChapterTimeEnd> <ChapterTimeEnd>748000000</ChapterTimeEnd>
<ChapterDisplay> <ChapterDisplay>
<ChapString>Baby wants to Bleep/Rock</ChapString> <ChapString>Baby wants to Bleep/Rock</ChapString>
skipping to change at page 126, line 31 skipping to change at line 5632
<ChapterUID>10</ChapterUID> <ChapterUID>10</ChapterUID>
<ChapterTimeStart>2017000000</ChapterTimeStart> <ChapterTimeStart>2017000000</ChapterTimeStart>
<ChapterTimeEnd>2668000000</ChapterTimeEnd> <ChapterTimeEnd>2668000000</ChapterTimeEnd>
<ChapterDisplay> <ChapterDisplay>
<ChapString>Bleeper</ChapString> <ChapString>Bleeper</ChapString>
</ChapterDisplay> </ChapterDisplay>
</ChapterAtom> </ChapterAtom>
</EditionEntry> </EditionEntry>
</Chapters> </Chapters>
Figure 17: Nested Chapters Example. Figure 26: Nested Chapters Example
21. Attachments 21. Attachments
Matroska supports storage of related files and data in the Matroska supports storage of related files and data in the
Attachments Element (a Top-Level Element). Attachment Elements can Attachments element (a Top-Level Element). Attachments elements can
be used to store related cover art, font files, transcripts, reports, be used to store related cover art, font files, transcripts, reports,
error recovery files, picture, or text-based annotations, copies of error recovery files, pictures, text-based annotations, copies of
specifications, or other ancillary files related to the Segment. specifications, or other ancillary files related to the Segment.
Matroska Readers MUST NOT execute files stored as Attachment Matroska Readers MUST NOT execute files stored as Attachments
Elements. elements.
21.1. Cover Art 21.1. Cover Art
This section defines a set of guidelines for the storage of cover art This section defines a set of guidelines for the storage of cover art
in Matroska files. A Matroska Reader MAY use embedded cover art to in Matroska files. A Matroska Reader MAY use embedded cover art to
display a representational still-image depiction of the multimedia display a representational still-image depiction of the multimedia
contents of the Matroska file. contents of the Matroska file.
Only [JPEG] and PNG [RFC2083] image formats SHOULD be used for cover Only [JPEG] and PNG [RFC2083] image formats SHOULD be used for cover
art pictures. art pictures.
There can be two different covers for a movie/album: a portrait style There can be two different covers for a movie/album: a portrait style
(e.g., a DVD case) and a landscape style (e.g., a wide banner ad). (e.g., a DVD case) and a landscape style (e.g., a wide banner ad).
There can be two versions of the same cover, the normal cover and the There can be two versions of the same cover: the normal cover and the
small cover. The dimension of the normal cover SHOULD be 600 pixels small cover. The dimension of the normal cover SHOULD be 600 pixels
on the smallest side -- for example, 960x600 for landscape, 600x800 on the smallest side (e.g., 960x600 for landscape, 600x800 for
for portrait, or 600x600 for square. The dimension of the small portrait, or 600x600 for square). The dimension of the small cover
cover SHOULD be 120 pixels on the smallest side -- for example, SHOULD be 120 pixels on the smallest side (e.g., 192x120 or 120x160).
192x120 or 120x160.
Versions of cover art can be differentiated by the filename, which is Versions of cover art can be differentiated by the filename, which is
stored in the FileName Element. The default filename of the normal stored in the FileName element. The default filename of the normal
cover in square or portrait mode is cover.(jpg|png). When stored, cover in square or portrait mode is cover.(jpg|png). When stored,
the normal cover SHOULD be the first Attachment in storage order. the normal cover SHOULD be the first Attachments element in storage
The small cover SHOULD be prefixed with "small_", such as order. The small cover SHOULD be prefixed with "small_", such as
small_cover.(jpg|png). The landscape variant SHOULD be suffixed with small_cover.(jpg|png). The landscape variant SHOULD be suffixed with
"_land", such as cover_land.(jpg|png). The filenames are case- "_land", such as cover_land.(jpg|png). The filenames are case-
sensitive. sensitive.
The following table provides examples of file names for cover art in The following table provides examples of file names for cover art in
Attachments. Attachments.
+======================+===================+=================+ +======================+===================+=================+
| FileName | Image Orientation | Pixel Length of | | File Name | Image Orientation | Pixel Length of |
| | | Smallest Side | | | | Smallest Side |
+======================+===================+=================+ +======================+===================+=================+
| cover.jpg | Portrait or | 600 | | cover.jpg | Portrait or | 600 |
| | square | | | | square | |
+----------------------+-------------------+-----------------+ +----------------------+-------------------+-----------------+
| small_cover.png | Portrait or | 120 | | small_cover.png | Portrait or | 120 |
| | square | | | | square | |
+----------------------+-------------------+-----------------+ +----------------------+-------------------+-----------------+
| cover_land.png | Landscape | 600 | | cover_land.png | Landscape | 600 |
+----------------------+-------------------+-----------------+ +----------------------+-------------------+-----------------+
| small_cover_land.jpg | Landscape | 120 | | small_cover_land.jpg | Landscape | 120 |
+----------------------+-------------------+-----------------+ +----------------------+-------------------+-----------------+
Table 54: Cover Art Filenames Table 54: Cover Art Filenames
21.2. Font files 21.2. Font Files
Font files MAY be added to a Matroska file as Attachments so that the Font files MAY be added to a Matroska file as Attachments so that the
font file may be used to display an associated subtitle track. This font file may be used to display an associated subtitle track. This
allows the presentation of a Matroska file to be consistent in allows the presentation of a Matroska file to be consistent in
various environments where the needed fonts might not be available on various environments where the needed fonts might not be available on
the local system. the local system.
Depending on the font format in question, each font file can contain Depending on the font format in question, each font file can contain
multiple font variants. Each font variant has a name which will be multiple font variants. Each font variant has a name that will be
referred to as Font Name from now on. This Font Name can be referred to as Font Name from now on. This Font Name can be
different from the Attachment's FileName, even when disregarding the different from the Attachment's FileName, even when disregarding the
extension. In order to select a font for display, a Matroska player extension. In order to select a font for display, a Matroska Player
SHOULD consider both the Font Name and the base name of the SHOULD consider both the Font Name and the base name of the
Attachment's FileName, preferring the former when there are multiple Attachment's FileName, preferring the former when there are multiple
matches. matches.
Subtitle codecs, such as SubStation Alpha (SSA/ASS), usually refer to Subtitle codecs, such as SubStation Alpha (SSA) and Advanced
a font by its Font Name, not by its filename. If none of the SubStation Alpha (ASS), usually refer to a font by its Font Name, not
Attachments are a match for the Font Name, the Matroska player SHOULD by its filename. If none of the Attachments are a match for the Font
attempt to find a system font whose Font Name matches the one used in Name, the Matroska Player SHOULD attempt to find a system font whose
the subtitle track. Font Name matches the one used in the subtitle track.
Since loading fonts temporarily can take a while, a Matroska player Since loading fonts temporarily can take a while, a Matroska Player
usually loads or installs all the fonts found in attachments so they usually loads or installs all the fonts found in attachments so they
are ready to be used during playback. Failure to use the font are ready to be used during playback. Failure to use the font
attachment might result in incorrect rendering of the subtitles. attachment might result in incorrect rendering of the subtitles.
If a selected subtitle track has some AttachmentLink elements, the If a selected subtitle track has some AttachmentLink elements, the
player MAY restrict its font rendering to use only these fonts. player MAY restrict its font rendering to use only these fonts.
A Matroska player SHOULD handle the official font media types from A Matroska Player SHOULD handle the official font media types from
[RFC8081] when the system can handle the type: [RFC8081] when the system can handle the type:
* font/sfnt: Generic SFNT Font Type, * font/sfnt: Generic SFNT Font Type
* font/ttf: TTF Font Type, * font/ttf: TrueType Font (TTF) Font Type
* font/otf: OpenType Layout (OTF) Font Type, * font/otf: OpenType Layout (OTF) Font Type
* font/collection: Collection Font Type, * font/collection: Collection Font Type
* font/woff: WOFF 1.0, * font/woff: WOFF 1.0
* font/woff2: WOFF 2.0. * font/woff2: WOFF 2.0
Fonts in Matroska existed long before [RFC8081]. A few unofficial Fonts in Matroska existed long before [RFC8081]. A few unofficial
media types for fonts were used in existing files. Therefore, it is media types for fonts were used in existing files. Therefore, it is
RECOMMENDED for a Matroska player to support the following legacy RECOMMENDED for a Matroska Player to support the following legacy
media types for font attachments: media types for font attachments:
* application/x-truetype-font: Truetype fonts, equivalent to font/ * application/x-truetype-font: TrueType fonts, equivalent to font/
ttf and sometimes font/otf, ttf and sometimes font/otf
* application/x-font-ttf: TTF fonts, equivalent to font/ttf, * application/x-font-ttf: TrueType fonts, equivalent to font/ttf
* application/vnd.ms-opentype: OpenType Layout fonts, equivalent to * application/vnd.ms-opentype: OpenType Layout fonts, equivalent to
font/otf font/otf
* application/font-sfnt: Generic SFNT Font Type, equivalent to font/ * application/font-sfnt: Generic SFNT Font Type, equivalent to font/
sfnt sfnt
* application/font-woff: WOFF 1.0, equivalent to font/woff * application/font-woff: WOFF 1.0, equivalent to font/woff
There may also be some font attachments with the application/octet- There may also be some font attachments with the application/octet-
stream media type. In that case the Matroska player MAY try to guess stream media type. In that case, the Matroska Player MAY try to
the font type by checking the file extension of the guess the font type by checking the file extension of the
AttachedFile\FileName string. Common file extensions for fonts are: AttachedFile\FileName string. Common file extensions for fonts are:
* .ttf for Truetype fonts, equivalent to font/ttf, * .ttf for TrueType fonts, equivalent to font/ttf
* .otf for OpenType Layout fonts, equivalent to font/otf, * .otf for OpenType Layout fonts, equivalent to font/otf
* .ttc for Collection fonts, equivalent to font/collection * .ttc for Collection fonts, equivalent to font/collection
The file extension check MUST be case-insensitive. The file extension check MUST be case-insensitive.
Matroska writers SHOULD use a valid font media type from [RFC8081] in Matroska Writers SHOULD use a valid font media type from [RFC8081] in
the AttachedFile\FileMediaType of the font attachment. They MAY use the AttachedFile\FileMediaType of the font attachment. They MAY use
the media types found in older files when compatibility with older the media types found in older files when compatibility with older
players is necessary. players is necessary.
22. Cues 22. Cues
The Cues Element provides an index of certain Cluster Elements to The Cues element provides an index of certain Cluster elements to
allow for optimized seeking to absolute timestamps within the allow for optimized seeking to absolute timestamps within the
Segment. The Cues Element contains one or many CuePoint Elements Segment. The Cues element contains one or many CuePoint elements,
which each MUST reference an absolute timestamp (via the CueTime each of which MUST reference an absolute timestamp (via the CueTime
Element), a Track (via the CueTrack Element), and a Segment Position element), a Track (via the CueTrack element), and a Segment Position
(via the CueClusterPosition Element). Additional non-mandated (via the CueClusterPosition element). Additional non-mandated
Elements are part of the CuePoint Element such as CueDuration, elements are part of the CuePoint element, such as CueDuration,
CueRelativePosition, CueCodecState and others which provide any CueRelativePosition, CueCodecState, and others that provide any
Matroska Reader with additional information to use in the Matroska Reader with additional information to use in the
optimization of seeking performance. optimization of seeking performance.
22.1. Recommendations 22.1. Recommendations
The following recommendations are provided to optimize Matroska The following recommendations are provided to optimize Matroska
performance. performance.
* Unless Matroska is used as a live stream, it SHOULD contain a Cues * Unless Matroska is used as a live stream, it SHOULD contain a Cues
Element. element.
* For each video track, each keyframe SHOULD be referenced by a * For each video track, each keyframe SHOULD be referenced by a
CuePoint Element. CuePoint element.
* It is RECOMMENDED to not reference non-keyframes of video tracks * It is RECOMMENDED to not reference non-keyframes of video tracks
in Cues unless it references a Cluster Element which contains a in Cues unless it references a Cluster element that contains a
CodecState Element but no keyframes. CodecState element but no keyframes.
* For each subtitle track present, each subtitle frame SHOULD be * For each subtitle track present, each subtitle frame SHOULD be
referenced by a CuePoint Element with a CueDuration Element. referenced by a CuePoint element with a CueDuration element.
* References to audio tracks MAY be skipped in CuePoint Elements if * References to audio tracks MAY be skipped in CuePoint elements if
a video track is present. When included the CuePoint Elements a video track is present. When included, the CuePoint elements
SHOULD reference audio keyframes at most once every 500 SHOULD reference audio keyframes once every 500 milliseconds at
milliseconds. most.
* If the referenced frame is not stored within the first * If the referenced frame is not stored within the first SimpleBlock
SimpleBlock, or first BlockGroup within its Cluster Element, then or first BlockGroup within its Cluster element, then the
the CueRelativePosition Element SHOULD be written to reference CueRelativePosition element SHOULD be written to reference where
where in the Cluster the reference frame is stored. in the Cluster the reference frame is stored.
* If a CuePoint Element references Cluster Element that includes a * If a CuePoint element references a Cluster element that includes a
CodecState Element, then that CuePoint Element MUST use a CodecState element, then that CuePoint element MUST use a
CueCodecState Element. CueCodecState element.
* CuePoint Elements SHOULD be numerically sorted in storage order by * CuePoint elements SHOULD be numerically sorted in storage order by
the value of the CueTime Element. the value of the CueTime element.
23. Matroska Streaming 23. Matroska Streaming
In Matroska, there are two kinds of streaming: file access and In Matroska, there are two kinds of streaming: file access and
livestreaming. livestreaming.
23.1. File Access 23.1. File Access
File access can simply be reading a file located on your computer, File access can simply be reading a file located on your computer,
but also includes accessing a file from an HTTP (web) server or CIFS but it also includes accessing a file from an HTTP (web) server or
(Windows share) server. These protocols are usually safe from Common Internet File System (CIFS) (Windows share) server. These
reading errors and seeking in the stream is possible. However, when protocols are usually safe from reading errors, and seeking in the
a file is stored far away or on a slow server, seeking can be an stream is possible. However, when a file is stored far away or on a
expensive operation and should be avoided. The guidelines in slow server, seeking can be an expensive operation and should be
Section 25, when followed, help reduce the number of seeking avoided. When followed, the guidelines in Section 25 help reduce the
operations for regular playback and also have the playback start number of seeking operations for regular playback and also have the
quickly without a lot of data needed to read first (like a Cues playback start quickly without needing to read lot of data first
Element, Attachment Element or SeekHead Element). (like a Cues element, Attachments element, or SeekHead element).
Matroska, having a small overhead, is well suited for storing music/ Matroska, having a small overhead, is well suited for storing music/
videos on file servers without a big impact on the bandwidth used. videos on file servers without a big impact on the bandwidth used.
Matroska does not require the index to be loaded before playing, Matroska does not require the index to be loaded before playing,
which allows playback to start very quickly. The index can be loaded which allows playback to start very quickly. The index can be loaded
only when seeking is requested the first time. only when seeking is requested the first time.
23.2. Livestreaming 23.2. Livestreaming
Livestreaming is the equivalent of television broadcasting on the Livestreaming is the equivalent of television broadcasting on the
internet. There are 2 families of servers for livestreaming: RTP/ Internet. There are two families of servers for livestreaming: RTP /
RTSP and HTTP. Matroska is not meant to be used over RTP. RTP Real-Time Streaming Protocol (RTSP) and HTTP. Matroska is not meant
already has timing and channel mechanisms that would be wasted if to be used over RTP. RTP already has timing and channel mechanisms
doubled in Matroska. Additionally, having the same information at that would be wasted if doubled in Matroska. Additionally, having
the RTP and Matroska level would be a source of confusion if they do the same information at the RTP and Matroska level would be a source
not match. Livestreaming of Matroska over file-like protocols like of confusion if they do not match. Livestreaming of Matroska over
HTTP, QUIC, etc. is possible. file-like protocols like HTTP, QUIC, etc., is possible.
A live Matroska stream is different from a file because it usually A live Matroska stream is different from a file because it usually
has no known end (only ending when the client disconnects). For has no known end (only ending when the client disconnects). For
this, all bits of the "size" portion of the Segment Element MUST be this, all bits of the "size" portion of the Segment element MUST be
set to 1. Another option is to concatenate Segment Elements with set to 1. Another option is to concatenate Segment elements with
known sizes, one after the other. This solution allows a change of known sizes, one after the other. This solution allows a change of
codec/resolution between each segment. For example, this allows for codec/resolution between each segment. For example, this allows for
a switch between 4:3 and 16:9 in a television program. a switch between 4:3 and 16:9 in a television program.
When Segment Elements are continuous, certain Elements, like When Segment elements are continuous, certain elements (like
SeekHead, Cues, Chapters, and Attachments, MUST NOT be used. SeekHead, Cues, Chapters, and Attachments) MUST NOT be used.
It is possible for a Matroska Player to detect that a stream is not It is possible for a Matroska Player to detect that a stream is not
seekable. If the stream has neither a SeekHead list nor a Cues list seekable. If the stream has neither a SeekHead list nor a Cues list
at the beginning of the stream, it SHOULD be considered non-seekable. at the beginning of the stream, it SHOULD be considered non-seekable.
Even though it is possible to seek forward in the stream, it is NOT Even though it is possible to seek forward in the stream, it is NOT
RECOMMENDED. RECOMMENDED.
In the context of live radio or web TV, it is possible to "tag" the In the context of live radio or web TV, it is possible to "tag" the
content while it is playing. The Tags Element can be placed between content while it is playing. The Tags element can be placed between
Clusters each time it is necessary. In that case, the new Tags Clusters each time it is necessary. In that case, the new Tags
Element MUST reset the previously encountered Tags Elements and use element MUST reset the previously encountered Tags elements and use
the new values instead. the new values instead.
24. Tags 24. Tags
24.1. Tags Precedence 24.1. Tags Precedence
Tags allow tagging all kinds of Matroska parts with very detailed Tags allow tagging all kinds of Matroska parts with very detailed
metadata in multiple languages. metadata in multiple languages.
Some Matroska elements also contain their own string value like the Some Matroska elements also contain their own string value, like the
Track Name (Section 5.1.4.1.18) or the Chapter String track Name element (Section 5.1.4.1.18) or the ChapString element
(Section 5.1.7.1.4.10). (Section 5.1.7.1.4.10).
The following Matroska elements can also be defined with tags: The following Matroska elements can also be defined with tags:
* The Track Name Element (Section 5.1.4.1.18) corresponds to a tag * The track Name element (Section 5.1.4.1.18) corresponds to a tag
with the TagTrackUID (Section 5.1.8.1.1.3) set to the given track, with the TagTrackUID (Section 5.1.8.1.1.3) set to the given track,
a TagName of TITLE (Section 5.1.8.1.2.1) and a TagLanguage a TagName of TITLE (Section 5.1.8.1.2.1), and a TagLanguage
(Section 5.1.8.1.2.2) or TagLanguageBCP47 (Section 5.1.8.1.2.3) of (Section 5.1.8.1.2.2) or TagLanguageBCP47 (Section 5.1.8.1.2.3) of
"und". "und".
* The Chapter String Element (Section 5.1.7.1.4.10) corresponds to a * The ChapString element (Section 5.1.7.1.4.10) corresponds to a tag
tag with the TagChapterUID (Section 5.1.8.1.1.5) set to the same with the TagChapterUID (Section 5.1.8.1.1.5) set to the same
chapter UID, a TagName of TITLE (Section 5.1.8.1.2.1) and a chapter UID, a TagName of TITLE (Section 5.1.8.1.2.1), and a
TagLanguage (Section 5.1.8.1.2.2) or TagLanguageBCP47 TagLanguage (Section 5.1.8.1.2.2) or TagLanguageBCP47
(Section 5.1.8.1.2.3) matching the ChapLanguage (Section 5.1.8.1.2.3) matching the ChapLanguage
(Section 5.1.7.1.4.11) or ChapLanguageBCP47 (Section 5.1.7.1.4.12) (Section 5.1.7.1.4.11) or ChapLanguageBCP47
respectively. (Section 5.1.7.1.4.12), respectively.
* The FileDescription Element (Section 5.1.6.1.1) of an attachment * The FileDescription element (Section 5.1.6.1.1) of an attachment
corresponds to a tag with the TagAttachmentUID corresponds to a tag with the TagAttachmentUID
(Section 5.1.8.1.1.6) set to the given attachment, a TagName of (Section 5.1.8.1.1.6) set to the given attachment, a TagName of
TITLE (Section 5.1.8.1.2.1) and a TagLanguage TITLE (Section 5.1.8.1.2.1), and a TagLanguage
(Section 5.1.8.1.2.2) or TagLanguageBCP47 (Section 5.1.8.1.2.3) of (Section 5.1.8.1.2.2) or TagLanguageBCP47 (Section 5.1.8.1.2.3) of
"und". "und".
When both values exist in the file, the value found in Tags takes When both values exist in the file, the value found in Tags takes
precedence over the value found in original location of the element. precedence over the value found in the original location of the
For example, if you have a TrackEntry\Name element and Tag TITLE for element. For example, if you have a TrackEntry\Name element and a
that track in a Matroska Segment, the Tag string SHOULD be used and tag value TITLE for that track in a Matroska Segment, the tag value
not the TrackEntry\Name string to identify the track. string SHOULD be used instead of the TrackEntry\Name string to
identify the track.
As the Tag element is optional, a lot of Matroska Readers do not As the Tag element is optional, a lot of Matroska Readers do not
handle it and will not use the tags value when it's found. So for handle it and will not use the tags value when it's found. Thus, for
maximum compatibility, it's usually better to put the strings in the maximum compatibility, it's usually better to put the strings in the
TrackEntry, ChapterAtom and Attachment and keep the tags matching TrackEntry, ChapterAtom, and Attachments elements and keep the tags
these values if tags are also used. matching these values if tags are also used.
24.2. Tag Levels 24.2. Tag Levels
Tag elements allow tagging information on multiple levels, each level Tag elements allow tagging information on multiple levels, with each
having a TargetTypeValue Section 5.1.8.1.1.1. An element for a given level having a TargetTypeValue Section 5.1.8.1.1.1. An element for a
TargetTypeValue also applies to the lower levels denoted by smaller given TargetTypeValue also applies to the lower levels denoted by
TargetTypeValue values. If an upper value doesn't apply to a level smaller TargetTypeValue values. If an upper value doesn't apply to a
but the actual value to use is not known, an empty TagString level but the actual value to use is not known, an empty TagString
(Section 5.1.8.1.2.5) or an empty TagBinary (Section 5.1.8.1.2.6) (Section 5.1.8.1.2.5) or an empty TagBinary (Section 5.1.8.1.2.6)
element MUST be used as the tag value for this level. MUST be used as the tag value for this level.
See [MatroskaTags] for more details on common tag names, types and See [MatroskaTags] for more details on common tag names, types, and
descriptions. descriptions.
25. Implementation Recommendations 25. Implementation Recommendations
25.1. Cluster 25.1. Cluster
It is RECOMMENDED that each individual Cluster Element contains no It is RECOMMENDED that each individual Cluster element contain no
more than 5 seconds or 5 megabytes of content. more than five seconds or five megabytes of content.
25.2. SeekHead 25.2. SeekHead
It is RECOMMENDED that the first SeekHead Element be followed by a It is RECOMMENDED that the first SeekHead element be followed by a
Void Element to allow for the SeekHead Element to be expanded to Void element to allow for the SeekHead element to be expanded to
cover new Top-Level Elements that could be added to the Matroska cover new Top-Level Elements that could be added to the Matroska
file, such as Tags, Chapters, and Attachments Elements. file, such as Tags, Chapters, and Attachments elements.
The size of this Void Element should be adjusted depending on the The size of this Void element should be adjusted depending on the
Matroska file already having Tags, Chapters, and Attachments Tags, Chapters, and Attachments elements in the Matroska file.
Elements.
25.3. Optimum Layouts 25.3. Optimum Layouts
While there can be Top-Level Elements in any order, some ordering of While there can be Top-Level Elements in any order, some orderings of
Elements are better than others. Here are few optimum layouts for elements are better than others. The following subsections detail
different use case: optimum layouts for different use cases.
25.3.1. Optimum layout for a muxer 25.3.1. Optimum Layout for a Muxer
This is the basic layout muxers should be using for an efficient This is the basic layout muxers should be using for an efficient
playback experience. playback experience:
* SeekHead * SeekHead
* Info * Info
* Tracks * Tracks
* Chapters * Chapters
* Attachments * Attachments
* Tags * Tags
* Clusters * Clusters
* Cues * Cues
25.3.2. Optimum layout after editing tags 25.3.2. Optimum Layout after Editing Tags
When tags from the previous layout need to be extended, they are When tags from the previous layout need to be extended, they are
moved to the end with the extra information. The location where the moved to the end with the extra information. The location where the
old tags were located is voided. old tags were located is voided.
* SeekHead * SeekHead
* Info * Info
* Tracks * Tracks
* Chapters * Chapters
* Attachments * Attachments
* Void * Void
* Clusters * Clusters
* Cues * Cues
* Tags * Tags
25.3.3. Optimum layout with Cues at the front 25.3.3. Optimum Layout with Cues at the Front
Cues are usually a big chunk of data referencing a lot of locations Cues are usually a big chunk of data referencing a lot of locations
in the file. For players that want to seek in the file they need to in the file. Players that want to seek in the file need to seek to
seek to the end of the file to access these locations. It is often the end of the file to access these locations. It is often better if
better if they are placed early in the file. On the other hand that they are placed early in the file. On the other hand, that means
means players that don't intend to seek will have to read/skip these players that don't intend to seek will have to read/skip these data
data no matter what. no matter what.
Because the Cues reference locations further in the file, it's often Because the Cues reference locations further in the file, it's often
complicated to allocate the proper space for that element before all complicated to allocate the proper space for that element before all
the locations are known. Therefore, this layout is rarely used. the locations are known. Therefore, this layout is rarely used:
* SeekHead * SeekHead
* Info * Info
* Tracks * Tracks
* Chapters * Chapters
* Attachments * Attachments
* Tags * Tags
* Cues * Cues
* Clusters * Clusters
25.3.4. Optimum layout for livestreaming 25.3.4. Optimum Layout for Livestreaming
In Livestreaming (Section 23.2) only a few elements make sense. In livestreaming (Section 23.2), only a few elements make sense. For
SeekHead and Cues are useless for example. All elements other than example, SeekHead and Cues are useless. All elements other than the
the Clusters MUST be placed before the Clusters. Clusters MUST be placed before the Clusters.
* Info * Info
* Tracks * Tracks
* Attachments (rare) * Attachments (rare)
* Tags * Tags
* Clusters * Clusters
26. Security Considerations 26. Security Considerations
Matroska inherits security considerations from EBML. Matroska inherits security considerations from EBML [RFC8794].
Attacks on a Matroska Reader could include: Attacks on a Matroska Reader could include:
* Storage of an arbitrary and potentially executable data within an * Storage of an arbitrary and potentially executable data within an
Attachment Element. Matroska Readers that extract or use data Attachments element. Matroska Readers that extract or use data
from Matroska Attachments SHOULD check that the data adheres to from Matroska Attachments SHOULD check that the data adheres to
expectations or not use the attachement. expectations or not use the attachment.
* A Matroska Attachment with an inaccurate media type. * A Matroska Attachment with an inaccurate media type.
* Damage to the Encryption and Compression fields (Section 14) that * Damage to the Encryption and Compression fields (Section 14) that
would result in bogus binary data interpreted by the decoder. would result in bogus binary data interpreted by the decoder.
* Chapter Codecs running unwanted commands on the host system. * Chapter Codecs running unwanted commands on the host system.
The same error handling done for EBML applies to Matroska files. The same error handling done for EBML applies to Matroska files.
Particular error handling is not covered in this specification as Particular error handling is not covered in this specification, as
this is depends on the goal of the Matroska Readers. It is up to the this is depends on the goal of the Matroska Readers. Matroska
decision of the Matroska Readers on how to handle the errors if they Readers decide how to handle the errors whether or not they are
are recoverable in their code or not. For example, if the checksum recoverable in their code. For example, if the checksum of the
of the \Segment\Tracks is invalid some could decide to try to read \Segment\Tracks is invalid, some could decide to try to read the data
the data anyway, some will just reject the file, most will not even anyway, some will just reject the file, and most will not even check
check it. it.
Matroska Reader implementations need to be robust against malicious Matroska Reader implementations need to be robust against malicious
payloads. Those related to denial of service are outlined in payloads. Those related to denial of service are outlined in
Section 2.1 of [RFC4732]. Section 2.1 of [RFC4732].
Although rarer, the same may apply to a Matroska Writer. Malicious Although rarer, the same may apply to a Matroska Writer. Malicious
stream data must not cause the Writer to misbehave, as this might stream data must not cause the Matroska Writer to misbehave, as this
allow an attacker access to transcoding gateways. might allow an attacker access to transcoding gateways.
As an audio and visual container format, a Matroska file or stream As an audio/video container format, a Matroska file or stream will
will potentially encapsulate numerous byte streams created with a potentially encapsulate numerous byte streams created with a variety
variety of codecs. Implementers will need to consider the security of codecs. Implementers will need to consider the security
considerations of these encapsulated formats. considerations of these encapsulated formats.
27. IANA Considerations 27. IANA Considerations
27.1. Matroska Element IDs Registry 27.1. Matroska Element IDs Registry
This document creates a new IANA registry called the "Matroska IANA has created a new registry called the "Matroska Element IDs"
Element IDs" registry. registry.
To register a new Element ID in this registry, one needs an Element To register a new Element ID in this registry, one needs an Element
ID, a Change Controller (IETF or email of registrant) and an optional ID, an Element Name, a Change Controller (IETF or email of
Reference to a document describing the Element ID. registrant), and an optional Reference to a document describing the
Element ID.
Element IDs are encoded using the VINT mechanism described in Element IDs are encoded using the VINT mechanism described in
Section 4 of [RFC8794] and can be between one and five octets long. Section 4 of [RFC8794] and can be between one and five octets long.
Five-octet-long Element IDs are possible only if declared in the EBML Five-octet Element IDs are possible only if declared in the EBML
header. Header.
Element IDs are described in Section 5 of [RFC8794] with errata 7189 Element IDs are described in Section 5 of [RFC8794], with the changes
and 7191. in [Err7189] and [Err7191].
One-octet Matroska Element IDs are to be allocated according to the One-octet Matroska Element IDs (range 0x80-0xFE) are to be allocated
"RFC Required" policy [RFC8126]. according to the "RFC Required" policy [RFC8126].
Two-octet Matroska Element IDs are to be allocated according to the Two-octet Matroska Element IDs (range 0x407F-0x7FFE) are to be
"Specification Required" policy [RFC8126]. allocated according to the "Specification Required" policy [RFC8126].
Three-octet and four-octet Matroska Element IDs are to be allocated Two-octet Matroska Element IDs between 0x0100 and 0x407E are not
according to the "First Come First Served" policy [RFC8126]. valid for use as an Element ID.
The allowed values in the Elements IDs registry are similar to the Three-octet (range 0x203FFF-0x3FFFFE) and four-octet Matroska Element
ones found in the EBML Element IDs registry defined in Section 17.1 IDs (range 0x101FFFFF-0x1FFFFFFE) are to be allocated according to
of [RFC8794]. the "First Come First Served" policy [RFC8126].
EBML IDs defined for the EBML Header -- as defined in Section 17.1 of Three-octet Matroska Element IDs between 0x010000 and 0x203FFE are
[RFC8794] -- MUST NOT be used as Matroska Element IDs. not valid for use as an Element ID.
Given the scarcity of the One-octet Element IDs, they should only be Four-octet Matroska Element IDs between 0x01000000 and 0x101FFFFE are
created to save space for elements found many times in a file. For not valid for use as an Element ID.
example, within a BlockGroup or Chapters. The Four-octet Element IDs
are mostly for synchronization of large elements. They should only
be used for such high level elements. Elements that are not expected
to be used often should use Three-octet Element IDs.
Elements found in Section 28 have an assigned Matroska Element ID for The allowed values in the "Matroska Element IDs" registry are similar
to the ones found in the "EBML Element IDs" registry defined in
Section 17.1 of [RFC8794].
EBML Element IDs defined for the EBML Header -- as defined in
Section 17.1 of [RFC8794] -- MUST NOT be used as Matroska Element
IDs.
Given the scarcity of one-octet Element IDs, they should only be
created to save space for elements found many times in a file (for
example, BlockGroup or Chapters). The four-octet Element IDs are
mostly for synchronization of large elements. They should only be
used for such high-level elements. Elements that are not expected to
be used often should use three-octet Element IDs.
Elements found in Appendix A have an assigned Matroska Element ID for
historical reasons. These elements are not in use and SHOULD NOT be historical reasons. These elements are not in use and SHOULD NOT be
reused unless there is no other IDs available with the desired size. reused unless there are no other IDs available with the desired size.
Such IDs are considered as reclaimed to the IANA registry as they Such IDs are marked as "Reclaimed" in the "Matroska Element IDs"
could be used for other things in the future. registry, as they could be used for other things in the future.
Matroska Element IDs Values found in this document are assigned as Table 55 shows the initial contents of the "Matroska Element IDs"
initial values as follows: registry. The Change Controller for the initial entries is the IETF.
+============+=============================+======================+ +============+=============================+======================+
| Element ID | Element Name | Reference | | Element ID | Element Name | Reference |
+============+=============================+======================+ +============+=============================+======================+
| 0x80 | ChapterDisplay | Described in | | 0x80 | ChapterDisplay | RFC 9559, |
| | | Section 5.1.7.1.4.9 | | | | Section 5.1.7.1.4.9 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x83 | TrackType | Described in | | 0x83 | TrackType | RFC 9559, |
| | | Section 5.1.4.1.3 | | | | Section 5.1.4.1.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x85 | ChapString | Described in | | 0x85 | ChapString | RFC 9559, |
| | | Section 5.1.7.1.4.10 | | | | Section 5.1.7.1.4.10 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x86 | CodecID | Described in | | 0x86 | CodecID | RFC 9559, |
| | | Section 5.1.4.1.21 | | | | Section 5.1.4.1.21 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x88 | FlagDefault | Described in | | 0x88 | FlagDefault | RFC 9559, |
| | | Section 5.1.4.1.5 | | | | Section 5.1.4.1.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x8E | Slices | Reclaimed | | 0x8E | Slices | Reclaimed (RFC 9559, |
| | | (Section 28.5) | | | | Appendix A.5) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x91 | ChapterTimeStart | Described in | | 0x91 | ChapterTimeStart | RFC 9559, |
| | | Section 5.1.7.1.4.3 | | | | Section 5.1.7.1.4.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x92 | ChapterTimeEnd | Described in | | 0x92 | ChapterTimeEnd | RFC 9559, |
| | | Section 5.1.7.1.4.4 | | | | Section 5.1.7.1.4.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x96 | CueRefTime | Described in | | 0x96 | CueRefTime | RFC 9559, |
| | | Section 5.1.5.1.2.8 | | | | Section 5.1.5.1.2.8 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x97 | CueRefCluster | Reclaimed | | 0x97 | CueRefCluster | Reclaimed (RFC 9559, |
| | | (Section 28.37) | | | | Appendix A.37) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x98 | ChapterFlagHidden | Described in | | 0x98 | ChapterFlagHidden | RFC 9559, |
| | | Section 5.1.7.1.4.5 | | | | Section 5.1.7.1.4.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x9A | FlagInterlaced | Described in | | 0x9A | FlagInterlaced | RFC 9559, |
| | | Section 5.1.4.1.28.1 | | | | Section 5.1.4.1.28.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x9B | BlockDuration | Described in | | 0x9B | BlockDuration | RFC 9559, |
| | | Section 5.1.3.5.3 | | | | Section 5.1.3.5.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x9C | FlagLacing | Described in | | 0x9C | FlagLacing | RFC 9559, |
| | | Section 5.1.4.1.12 | | | | Section 5.1.4.1.12 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x9D | FieldOrder | Described in | | 0x9D | FieldOrder | RFC 9559, |
| | | Section 5.1.4.1.28.2 | | | | Section 5.1.4.1.28.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x9F | Channels | Described in | | 0x9F | Channels | RFC 9559, |
| | | Section 5.1.4.1.29.3 | | | | Section 5.1.4.1.29.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA0 | BlockGroup | Described in | | 0xA0 | BlockGroup | RFC 9559, |
| | | Section 5.1.3.5 | | | | Section 5.1.3.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA1 | Block | Described in | | 0xA1 | Block | RFC 9559, |
| | | Section 5.1.3.5.1 | | | | Section 5.1.3.5.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA2 | BlockVirtual | Reclaimed | | 0xA2 | BlockVirtual | Reclaimed (RFC 9559, |
| | | (Section 28.3) | | | | Appendix A.3) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA3 | SimpleBlock | Described in | | 0xA3 | SimpleBlock | RFC 9559, |
| | | Section 5.1.3.4 | | | | Section 5.1.3.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA4 | CodecState | Described in | | 0xA4 | CodecState | RFC 9559, |
| | | Section 5.1.3.5.6 | | | | Section 5.1.3.5.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA5 | BlockAdditional | Described in | | 0xA5 | BlockAdditional | RFC 9559, |
| | | Section 5.1.3.5.2.2 | | | | Section 5.1.3.5.2.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA6 | BlockMore | Described in | | 0xA6 | BlockMore | RFC 9559, |
| | | Section 5.1.3.5.2.1 | | | | Section 5.1.3.5.2.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xA7 | Position | Described in | | 0xA7 | Position | RFC 9559, |
| | | Section 5.1.3.2 | | | | Section 5.1.3.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xAA | CodecDecodeAll | Reclaimed | | 0xAA | CodecDecodeAll | Reclaimed (RFC 9559, |
| | | (Section 28.22) | | | | Appendix A.22) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xAB | PrevSize | Described in | | 0xAB | PrevSize | RFC 9559, |
| | | Section 5.1.3.3 | | | | Section 5.1.3.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xAE | TrackEntry | Described in | | 0xAE | TrackEntry | RFC 9559, |
| | | Section 5.1.4.1 | | | | Section 5.1.4.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xAF | EncryptedBlock | Reclaimed | | 0xAF | EncryptedBlock | Reclaimed (RFC 9559, |
| | | (Section 28.15) | | | | Appendix A.15) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xB0 | PixelWidth | Described in | | 0xB0 | PixelWidth | RFC 9559, |
| | | Section 5.1.4.1.28.6 | | | | Section 5.1.4.1.28.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xB2 | CueDuration | Described in | | 0xB2 | CueDuration | RFC 9559, |
| | | Section 5.1.5.1.2.4 | | | | Section 5.1.5.1.2.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xB3 | CueTime | Described in | | 0xB3 | CueTime | RFC 9559, |
| | | Section 5.1.5.1.1 | | | | Section 5.1.5.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xB5 | SamplingFrequency | Described in | | 0xB5 | SamplingFrequency | RFC 9559, |
| | | Section 5.1.4.1.29.1 | | | | Section 5.1.4.1.29.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xB6 | ChapterAtom | Described in | | 0xB6 | ChapterAtom | RFC 9559, |
| | | Section 5.1.7.1.4 | | | | Section 5.1.7.1.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xB7 | CueTrackPositions | Described in | | 0xB7 | CueTrackPositions | RFC 9559, |
| | | Section 5.1.5.1.2 | | | | Section 5.1.5.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xB9 | FlagEnabled | Described in | | 0xB9 | FlagEnabled | RFC 9559, |
| | | Section 5.1.4.1.4 | | | | Section 5.1.4.1.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xBA | PixelHeight | Described in | | 0xBA | PixelHeight | RFC 9559, |
| | | Section 5.1.4.1.28.7 | | | | Section 5.1.4.1.28.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xBB | CuePoint | Described in | | 0xBB | CuePoint | RFC 9559, |
| | | Section 5.1.5.1 | | | | Section 5.1.5.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xC0 | TrickTrackUID | Reclaimed | | 0xC0 | TrickTrackUID | Reclaimed (RFC 9559, |
| | | (Section 28.28) | | | | Appendix A.28) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xC1 | TrickTrackSegmentUID | Reclaimed | | 0xC1 | TrickTrackSegmentUID | Reclaimed (RFC 9559, |
| | | (Section 28.29) | | | | Appendix A.29) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xC4 | TrickMasterTrackSegmentUID | Reclaimed | | 0xC4 | TrickMasterTrackSegmentUID | Reclaimed (RFC 9559, |
| | | (Section 28.32) | | | | Appendix A.32) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xC6 | TrickTrackFlag | Reclaimed | | 0xC6 | TrickTrackFlag | Reclaimed (RFC 9559, |
| | | (Section 28.30) | | | | Appendix A.30) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xC7 | TrickMasterTrackUID | Reclaimed | | 0xC7 | TrickMasterTrackUID | Reclaimed (RFC 9559, |
| | | (Section 28.31) | | | | Appendix A.31) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xC8 | ReferenceFrame | Reclaimed | | 0xC8 | ReferenceFrame | Reclaimed (RFC 9559, |
| | | (Section 28.12) | | | | Appendix A.12) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xC9 | ReferenceOffset | Reclaimed | | 0xC9 | ReferenceOffset | Reclaimed (RFC 9559, |
| | | (Section 28.13) | | | | Appendix A.13) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xCA | ReferenceTimestamp | Reclaimed | | 0xCA | ReferenceTimestamp | Reclaimed (RFC 9559, |
| | | (Section 28.14) | | | | Appendix A.14) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xCB | BlockAdditionID | Reclaimed | | 0xCB | BlockAdditionID | Reclaimed (RFC 9559, |
| | | (Section 28.9) | | | | Appendix A.9) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xCC | LaceNumber | Reclaimed | | 0xCC | LaceNumber | Reclaimed (RFC 9559, |
| | | (Section 28.7) | | | | Appendix A.7) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xCD | FrameNumber | Reclaimed | | 0xCD | FrameNumber | Reclaimed (RFC 9559, |
| | | (Section 28.8) | | | | Appendix A.8) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xCE | Delay | Reclaimed | | 0xCE | Delay | Reclaimed (RFC 9559, |
| | | (Section 28.10) | | | | Appendix A.10) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xCF | SliceDuration | Reclaimed | | 0xCF | SliceDuration | Reclaimed (RFC 9559, |
| | | (Section 28.11) | | | | Appendix A.11) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xD7 | TrackNumber | Described in | | 0xD7 | TrackNumber | RFC 9559, |
| | | Section 5.1.4.1.1 | | | | Section 5.1.4.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xDB | CueReference | Described in | | 0xDB | CueReference | RFC 9559, |
| | | Section 5.1.5.1.2.7 | | | | Section 5.1.5.1.2.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE0 | Video | Described in | | 0xE0 | Video | RFC 9559, |
| | | Section 5.1.4.1.28 | | | | Section 5.1.4.1.28 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE1 | Audio | Described in | | 0xE1 | Audio | RFC 9559, |
| | | Section 5.1.4.1.29 | | | | Section 5.1.4.1.29 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE2 | TrackOperation | Described in | | 0xE2 | TrackOperation | RFC 9559, |
| | | Section 5.1.4.1.30 | | | | Section 5.1.4.1.30 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE3 | TrackCombinePlanes | Described in | | 0xE3 | TrackCombinePlanes | RFC 9559, |
| | | Section 5.1.4.1.30.1 | | | | Section 5.1.4.1.30.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE4 | TrackPlane | Described in | | 0xE4 | TrackPlane | RFC 9559, |
| | | Section 5.1.4.1.30.2 | | | | Section 5.1.4.1.30.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE5 | TrackPlaneUID | Described in | | 0xE5 | TrackPlaneUID | RFC 9559, |
| | | Section 5.1.4.1.30.3 | | | | Section 5.1.4.1.30.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE6 | TrackPlaneType | Described in | | 0xE6 | TrackPlaneType | RFC 9559, |
| | | Section 5.1.4.1.30.4 | | | | Section 5.1.4.1.30.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE7 | Timestamp | Described in | | 0xE7 | Timestamp | RFC 9559, |
| | | Section 5.1.3.1 | | | | Section 5.1.3.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE8 | TimeSlice | Reclaimed | | 0xE8 | TimeSlice | Reclaimed (RFC 9559, |
| | | (Section 28.6) | | | | Appendix A.6) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xE9 | TrackJoinBlocks | Described in | | 0xE9 | TrackJoinBlocks | RFC 9559, |
| | | Section 5.1.4.1.30.5 | | | | Section 5.1.4.1.30.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xEA | CueCodecState | Described in | | 0xEA | CueCodecState | RFC 9559, |
| | | Section 5.1.5.1.2.6 | | | | Section 5.1.5.1.2.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xEB | CueRefCodecState | Reclaimed | | 0xEB | CueRefCodecState | Reclaimed (RFC 9559, |
| | | (Section 28.39) | | | | Appendix A.39) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xED | TrackJoinUID | Described in | | 0xED | TrackJoinUID | RFC 9559, |
| | | Section 5.1.4.1.30.6 | | | | Section 5.1.4.1.30.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xEE | BlockAddID | Described in | | 0xEE | BlockAddID | RFC 9559, |
| | | Section 5.1.3.5.2.3 | | | | Section 5.1.3.5.2.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xF0 | CueRelativePosition | Described in | | 0xF0 | CueRelativePosition | RFC 9559, |
| | | Section 5.1.5.1.2.3 | | | | Section 5.1.5.1.2.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xF1 | CueClusterPosition | Described in | | 0xF1 | CueClusterPosition | RFC 9559, |
| | | Section 5.1.5.1.2.2 | | | | Section 5.1.5.1.2.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xF7 | CueTrack | Described in | | 0xF7 | CueTrack | RFC 9559, |
| | | Section 5.1.5.1.2.1 | | | | Section 5.1.5.1.2.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xFA | ReferencePriority | Described in | | 0xFA | ReferencePriority | RFC 9559, |
| | | Section 5.1.3.5.4 | | | | Section 5.1.3.5.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xFB | ReferenceBlock | Described in | | 0xFB | ReferenceBlock | RFC 9559, |
| | | Section 5.1.3.5.5 | | | | Section 5.1.3.5.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0xFD | ReferenceVirtual | Reclaimed | | 0xFD | ReferenceVirtual | Reclaimed (RFC 9559, |
| | | (Section 28.4) | | | | Appendix A.4) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x41A4 | BlockAddIDName | Described in | | 0xFF | Reserved | RFC 9559 |
+------------+-----------------------------+----------------------+
| 0x41A4 | BlockAddIDName | RFC 9559, |
| | | Section 5.1.4.1.17.2 | | | | Section 5.1.4.1.17.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x41E4 | BlockAdditionMapping | Described in | | 0x41E4 | BlockAdditionMapping | RFC 9559, |
| | | Section 5.1.4.1.17 | | | | Section 5.1.4.1.17 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x41E7 | BlockAddIDType | Described in | | 0x41E7 | BlockAddIDType | RFC 9559, |
| | | Section 5.1.4.1.17.3 | | | | Section 5.1.4.1.17.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x41ED | BlockAddIDExtraData | Described in | | 0x41ED | BlockAddIDExtraData | RFC 9559, |
| | | Section 5.1.4.1.17.4 | | | | Section 5.1.4.1.17.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x41F0 | BlockAddIDValue | Described in | | 0x41F0 | BlockAddIDValue | RFC 9559, |
| | | Section 5.1.4.1.17.1 | | | | Section 5.1.4.1.17.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4254 | ContentCompAlgo | Described in | | 0x4254 | ContentCompAlgo | RFC 9559, |
| | | Section 5.1.4.1.31.6 | | | | Section 5.1.4.1.31.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4255 | ContentCompSettings | Described in | | 0x4255 | ContentCompSettings | RFC 9559, |
| | | Section 5.1.4.1.31.7 | | | | Section 5.1.4.1.31.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x437C | ChapLanguage | Described in | | 0x437C | ChapLanguage | RFC 9559, |
| | | Section 5.1.7.1.4.11 | | | | Section 5.1.7.1.4.11 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x437D | ChapLanguageBCP47 | Described in | | 0x437D | ChapLanguageBCP47 | RFC 9559, |
| | | Section 5.1.7.1.4.12 | | | | Section 5.1.7.1.4.12 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x437E | ChapCountry | Described in | | 0x437E | ChapCountry | RFC 9559, |
| | | Section 5.1.7.1.4.13 | | | | Section 5.1.7.1.4.13 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4444 | SegmentFamily | Described in | | 0x4444 | SegmentFamily | RFC 9559, |
| | | Section 5.1.2.7 | | | | Section 5.1.2.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4461 | DateUTC | Described in | | 0x4461 | DateUTC | RFC 9559, |
| | | Section 5.1.2.11 | | | | Section 5.1.2.11 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x447A | TagLanguage | Described in | | 0x447A | TagLanguage | RFC 9559, |
| | | Section 5.1.8.1.2.2 | | | | Section 5.1.8.1.2.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x447B | TagLanguageBCP47 | Described in | | 0x447B | TagLanguageBCP47 | RFC 9559, |
| | | Section 5.1.8.1.2.3 | | | | Section 5.1.8.1.2.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4484 | TagDefault | Described in | | 0x4484 | TagDefault | RFC 9559, |
| | | Section 5.1.8.1.2.4 | | | | Section 5.1.8.1.2.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4485 | TagBinary | Described in | | 0x4485 | TagBinary | RFC 9559, |
| | | Section 5.1.8.1.2.6 | | | | Section 5.1.8.1.2.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4487 | TagString | Described in | | 0x4487 | TagString | RFC 9559, |
| | | Section 5.1.8.1.2.5 | | | | Section 5.1.8.1.2.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4489 | Duration | Described in | | 0x4489 | Duration | RFC 9559, |
| | | Section 5.1.2.10 | | | | Section 5.1.2.10 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x44B4 | TagDefaultBogus | Reclaimed | | 0x44B4 | TagDefaultBogus | Reclaimed (RFC 9559, |
| | | (Section 28.43) | | | | Appendix A.43) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x450D | ChapProcessPrivate | Described in | | 0x450D | ChapProcessPrivate | RFC 9559, |
| | | Section 5.1.7.1.4.16 | | | | Section 5.1.7.1.4.16 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x45A3 | TagName | Described in | | 0x45A3 | TagName | RFC 9559, |
| | | Section 5.1.8.1.2.1 | | | | Section 5.1.8.1.2.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x45B9 | EditionEntry | Described in | | 0x45B9 | EditionEntry | RFC 9559, |
| | | Section 5.1.7.1 | | | | Section 5.1.7.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x45BC | EditionUID | Described in | | 0x45BC | EditionUID | RFC 9559, |
| | | Section 5.1.7.1.1 | | | | Section 5.1.7.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x45DB | EditionFlagDefault | Described in | | 0x45DB | EditionFlagDefault | RFC 9559, |
| | | Section 5.1.7.1.2 | | | | Section 5.1.7.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x45DD | EditionFlagOrdered | Described in | | 0x45DD | EditionFlagOrdered | RFC 9559, |
| | | Section 5.1.7.1.3 | | | | Section 5.1.7.1.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x465C | FileData | Described in | | 0x465C | FileData | RFC 9559, |
| | | Section 5.1.6.1.4 | | | | Section 5.1.6.1.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4660 | FileMediaType | Described in | | 0x4660 | FileMediaType | RFC 9559, |
| | | Section 5.1.6.1.3 | | | | Section 5.1.6.1.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4661 | FileUsedStartTime | Reclaimed | | 0x4661 | FileUsedStartTime | Reclaimed (RFC 9559, |
| | | (Section 28.41) | | | | Appendix A.41) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4662 | FileUsedEndTime | Reclaimed | | 0x4662 | FileUsedEndTime | Reclaimed (RFC 9559, |
| | | (Section 28.42) | | | | Appendix A.42) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x466E | FileName | Described in | | 0x466E | FileName | RFC 9559, |
| | | Section 5.1.6.1.2 | | | | Section 5.1.6.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4675 | FileReferral | Reclaimed | | 0x4675 | FileReferral | Reclaimed (RFC 9559, |
| | | (Section 28.40) | | | | Appendix A.40) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x467E | FileDescription | Described in | | 0x467E | FileDescription | RFC 9559, |
| | | Section 5.1.6.1.1 | | | | Section 5.1.6.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x46AE | FileUID | Described in | | 0x46AE | FileUID | RFC 9559, |
| | | Section 5.1.6.1.5 | | | | Section 5.1.6.1.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E1 | ContentEncAlgo | Described in | | 0x47E1 | ContentEncAlgo | RFC 9559, |
| | | Section 5.1.4.1.31.9 | | | | Section 5.1.4.1.31.9 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E2 | ContentEncKeyID | Described in Section | | 0x47E2 | ContentEncKeyID | RFC 9559, Section |
| | | 5.1.4.1.31.10 | | | | 5.1.4.1.31.10 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E3 | ContentSignature | Reclaimed | | 0x47E3 | ContentSignature | Reclaimed (RFC 9559, |
| | | (Section 28.33) | | | | Appendix A.33) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E4 | ContentSigKeyID | Reclaimed | | 0x47E4 | ContentSigKeyID | Reclaimed (RFC 9559, |
| | | (Section 28.34) | | | | Appendix A.34) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E5 | ContentSigAlgo | Reclaimed | | 0x47E5 | ContentSigAlgo | Reclaimed (RFC 9559, |
| | | (Section 28.35) | | | | Appendix A.35) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E6 | ContentSigHashAlgo | Reclaimed | | 0x47E6 | ContentSigHashAlgo | Reclaimed (RFC 9559, |
| | | (Section 28.36) | | | | Appendix A.36) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E7 | ContentEncAESSettings | Described in Section | | 0x47E7 | ContentEncAESSettings | RFC 9559, Section |
| | | 5.1.4.1.31.11 | | | | 5.1.4.1.31.11 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x47E8 | AESSettingsCipherMode | Described in Section | | 0x47E8 | AESSettingsCipherMode | RFC 9559, Section |
| | | 5.1.4.1.31.12 | | | | 5.1.4.1.31.12 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4D80 | MuxingApp | Described in | | 0x4D80 | MuxingApp | RFC 9559, |
| | | Section 5.1.2.13 | | | | Section 5.1.2.13 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x4DBB | Seek | Described in | | 0x4DBB | Seek | RFC 9559, |
| | | Section 5.1.1.1 | | | | Section 5.1.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5031 | ContentEncodingOrder | Described in | | 0x5031 | ContentEncodingOrder | RFC 9559, |
| | | Section 5.1.4.1.31.2 | | | | Section 5.1.4.1.31.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5032 | ContentEncodingScope | Described in | | 0x5032 | ContentEncodingScope | RFC 9559, |
| | | Section 5.1.4.1.31.3 | | | | Section 5.1.4.1.31.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5033 | ContentEncodingType | Described in | | 0x5033 | ContentEncodingType | RFC 9559, |
| | | Section 5.1.4.1.31.4 | | | | Section 5.1.4.1.31.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5034 | ContentCompression | Described in | | 0x5034 | ContentCompression | RFC 9559, |
| | | Section 5.1.4.1.31.5 | | | | Section 5.1.4.1.31.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5035 | ContentEncryption | Described in | | 0x5035 | ContentEncryption | RFC 9559, |
| | | Section 5.1.4.1.31.8 | | | | Section 5.1.4.1.31.8 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x535F | CueRefNumber | Reclaimed | | 0x535F | CueRefNumber | Reclaimed (RFC 9559, |
| | | (Section 28.38) | | | | Appendix A.38) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x536E | Name | Described in | | 0x536E | Name | RFC 9559, |
| | | Section 5.1.4.1.18 | | | | Section 5.1.4.1.18 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5378 | CueBlockNumber | Described in | | 0x5378 | CueBlockNumber | RFC 9559, |
| | | Section 5.1.5.1.2.5 | | | | Section 5.1.5.1.2.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x537F | TrackOffset | Reclaimed | | 0x537F | TrackOffset | Reclaimed (RFC 9559, |
| | | (Section 28.18) | | | | Appendix A.18) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x53AB | SeekID | Described in | | 0x53AB | SeekID | RFC 9559, |
| | | Section 5.1.1.1.1 | | | | Section 5.1.1.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x53AC | SeekPosition | Described in | | 0x53AC | SeekPosition | RFC 9559, |
| | | Section 5.1.1.1.2 | | | | Section 5.1.1.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x53B8 | StereoMode | Described in | | 0x53B8 | StereoMode | RFC 9559, |
| | | Section 5.1.4.1.28.3 | | | | Section 5.1.4.1.28.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x53B9 | OldStereoMode | Described in | | 0x53B9 | OldStereoMode | RFC 9559, |
| | | Section 5.1.4.1.28.5 | | | | Section 5.1.4.1.28.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x53C0 | AlphaMode | Described in | | 0x53C0 | AlphaMode | RFC 9559, |
| | | Section 5.1.4.1.28.4 | | | | Section 5.1.4.1.28.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54AA | PixelCropBottom | Described in | | 0x54AA | PixelCropBottom | RFC 9559, |
| | | Section 5.1.4.1.28.8 | | | | Section 5.1.4.1.28.8 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54B0 | DisplayWidth | Described in Section | | 0x54B0 | DisplayWidth | RFC 9559, Section |
| | | 5.1.4.1.28.12 | | | | 5.1.4.1.28.12 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54B2 | DisplayUnit | Described in Section | | 0x54B2 | DisplayUnit | RFC 9559, Section |
| | | 5.1.4.1.28.14 | | | | 5.1.4.1.28.14 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54B3 | AspectRatioType | Reclaimed | | 0x54B3 | AspectRatioType | Reclaimed (RFC 9559, |
| | | (Section 28.24) | | | | Appendix A.24) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54BA | DisplayHeight | Described in Section | | 0x54BA | DisplayHeight | RFC 9559, Section |
| | | 5.1.4.1.28.13 | | | | 5.1.4.1.28.13 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54BB | PixelCropTop | Described in | | 0x54BB | PixelCropTop | RFC 9559, |
| | | Section 5.1.4.1.28.9 | | | | Section 5.1.4.1.28.9 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54CC | PixelCropLeft | Described in Section | | 0x54CC | PixelCropLeft | RFC 9559, Section |
| | | 5.1.4.1.28.10 | | | | 5.1.4.1.28.10 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x54DD | PixelCropRight | Described in Section | | 0x54DD | PixelCropRight | RFC 9559, Section |
| | | 5.1.4.1.28.11 | | | | 5.1.4.1.28.11 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55AA | FlagForced | Described in | | 0x55AA | FlagForced | RFC 9559, |
| | | Section 5.1.4.1.6 | | | | Section 5.1.4.1.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55AB | FlagHearingImpaired | Described in | | 0x55AB | FlagHearingImpaired | RFC 9559, |
| | | Section 5.1.4.1.7 | | | | Section 5.1.4.1.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55AC | FlagVisualImpaired | Described in | | 0x55AC | FlagVisualImpaired | RFC 9559, |
| | | Section 5.1.4.1.8 | | | | Section 5.1.4.1.8 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55AD | FlagTextDescriptions | Described in | | 0x55AD | FlagTextDescriptions | RFC 9559, |
| | | Section 5.1.4.1.9 | | | | Section 5.1.4.1.9 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55AE | FlagOriginal | Described in | | 0x55AE | FlagOriginal | RFC 9559, |
| | | Section 5.1.4.1.10 | | | | Section 5.1.4.1.10 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55AF | FlagCommentary | Described in | | 0x55AF | FlagCommentary | RFC 9559, |
| | | Section 5.1.4.1.11 | | | | Section 5.1.4.1.11 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B0 | Colour | Described in Section | | 0x55B0 | Colour | RFC 9559, Section |
| | | 5.1.4.1.28.16 | | | | 5.1.4.1.28.16 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B1 | MatrixCoefficients | Described in Section | | 0x55B1 | MatrixCoefficients | RFC 9559, Section |
| | | 5.1.4.1.28.17 | | | | 5.1.4.1.28.17 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B2 | BitsPerChannel | Described in Section | | 0x55B2 | BitsPerChannel | RFC 9559, Section |
| | | 5.1.4.1.28.18 | | | | 5.1.4.1.28.18 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B3 | ChromaSubsamplingHorz | Described in Section | | 0x55B3 | ChromaSubsamplingHorz | RFC 9559, Section |
| | | 5.1.4.1.28.19 | | | | 5.1.4.1.28.19 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B4 | ChromaSubsamplingVert | Described in Section | | 0x55B4 | ChromaSubsamplingVert | RFC 9559, Section |
| | | 5.1.4.1.28.20 | | | | 5.1.4.1.28.20 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B5 | CbSubsamplingHorz | Described in Section | | 0x55B5 | CbSubsamplingHorz | RFC 9559, Section |
| | | 5.1.4.1.28.21 | | | | 5.1.4.1.28.21 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B6 | CbSubsamplingVert | Described in Section | | 0x55B6 | CbSubsamplingVert | RFC 9559, Section |
| | | 5.1.4.1.28.22 | | | | 5.1.4.1.28.22 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B7 | ChromaSitingHorz | Described in Section | | 0x55B7 | ChromaSitingHorz | RFC 9559, Section |
| | | 5.1.4.1.28.23 | | | | 5.1.4.1.28.23 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B8 | ChromaSitingVert | Described in Section | | 0x55B8 | ChromaSitingVert | RFC 9559, Section |
| | | 5.1.4.1.28.24 | | | | 5.1.4.1.28.24 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55B9 | Range | Described in Section | | 0x55B9 | Range | RFC 9559, Section |
| | | 5.1.4.1.28.25 | | | | 5.1.4.1.28.25 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55BA | TransferCharacteristics | Described in Section | | 0x55BA | TransferCharacteristics | RFC 9559, Section |
| | | 5.1.4.1.28.26 | | | | 5.1.4.1.28.26 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55BB | Primaries | Described in Section | | 0x55BB | Primaries | RFC 9559, Section |
| | | 5.1.4.1.28.27 | | | | 5.1.4.1.28.27 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55BC | MaxCLL | Described in Section | | 0x55BC | MaxCLL | RFC 9559, Section |
| | | 5.1.4.1.28.28 | | | | 5.1.4.1.28.28 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55BD | MaxFALL | Described in Section | | 0x55BD | MaxFALL | RFC 9559, Section |
| | | 5.1.4.1.28.29 | | | | 5.1.4.1.28.29 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D0 | MasteringMetadata | Described in Section | | 0x55D0 | MasteringMetadata | RFC 9559, Section |
| | | 5.1.4.1.28.30 | | | | 5.1.4.1.28.30 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D1 | PrimaryRChromaticityX | Described in Section | | 0x55D1 | PrimaryRChromaticityX | RFC 9559, Section |
| | | 5.1.4.1.28.31 | | | | 5.1.4.1.28.31 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D2 | PrimaryRChromaticityY | Described in Section | | 0x55D2 | PrimaryRChromaticityY | RFC 9559, Section |
| | | 5.1.4.1.28.32 | | | | 5.1.4.1.28.32 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D3 | PrimaryGChromaticityX | Described in Section | | 0x55D3 | PrimaryGChromaticityX | RFC 9559, Section |
| | | 5.1.4.1.28.33 | | | | 5.1.4.1.28.33 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D4 | PrimaryGChromaticityY | Described in Section | | 0x55D4 | PrimaryGChromaticityY | RFC 9559, Section |
| | | 5.1.4.1.28.34 | | | | 5.1.4.1.28.34 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D5 | PrimaryBChromaticityX | Described in Section | | 0x55D5 | PrimaryBChromaticityX | RFC 9559, Section |
| | | 5.1.4.1.28.35 | | | | 5.1.4.1.28.35 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D6 | PrimaryBChromaticityY | Described in Section | | 0x55D6 | PrimaryBChromaticityY | RFC 9559, Section |
| | | 5.1.4.1.28.36 | | | | 5.1.4.1.28.36 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D7 | WhitePointChromaticityX | Described in Section | | 0x55D7 | WhitePointChromaticityX | RFC 9559, Section |
| | | 5.1.4.1.28.37 | | | | 5.1.4.1.28.37 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D8 | WhitePointChromaticityY | Described in Section | | 0x55D8 | WhitePointChromaticityY | RFC 9559, Section |
| | | 5.1.4.1.28.38 | | | | 5.1.4.1.28.38 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55D9 | LuminanceMax | Described in Section | | 0x55D9 | LuminanceMax | RFC 9559, Section |
| | | 5.1.4.1.28.39 | | | | 5.1.4.1.28.39 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55DA | LuminanceMin | Described in Section | | 0x55DA | LuminanceMin | RFC 9559, Section |
| | | 5.1.4.1.28.40 | | | | 5.1.4.1.28.40 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x55EE | MaxBlockAdditionID | Described in | | 0x55EE | MaxBlockAdditionID | RFC 9559, |
| | | Section 5.1.4.1.16 | | | | Section 5.1.4.1.16 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5654 | ChapterStringUID | Described in | | 0x5654 | ChapterStringUID | RFC 9559, |
| | | Section 5.1.7.1.4.2 | | | | Section 5.1.7.1.4.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x56AA | CodecDelay | Described in | | 0x56AA | CodecDelay | RFC 9559, |
| | | Section 5.1.4.1.25 | | | | Section 5.1.4.1.25 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x56BB | SeekPreRoll | Described in | | 0x56BB | SeekPreRoll | RFC 9559, |
| | | Section 5.1.4.1.26 | | | | Section 5.1.4.1.26 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5741 | WritingApp | Described in | | 0x5741 | WritingApp | RFC 9559, |
| | | Section 5.1.2.14 | | | | Section 5.1.2.14 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x5854 | SilentTracks | Reclaimed | | 0x5854 | SilentTracks | Reclaimed (RFC 9559, |
| | | (Section 28.1) | | | | Appendix A.1) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x58D7 | SilentTrackNumber | Reclaimed | | 0x58D7 | SilentTrackNumber | Reclaimed (RFC 9559, |
| | | (Section 28.2) | | | | Appendix A.2) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x61A7 | AttachedFile | Described in | | 0x61A7 | AttachedFile | RFC 9559, |
| | | Section 5.1.6.1 | | | | Section 5.1.6.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6240 | ContentEncoding | Described in | | 0x6240 | ContentEncoding | RFC 9559, |
| | | Section 5.1.4.1.31.1 | | | | Section 5.1.4.1.31.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6264 | BitDepth | Described in | | 0x6264 | BitDepth | RFC 9559, |
| | | Section 5.1.4.1.29.4 | | | | Section 5.1.4.1.29.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63A2 | CodecPrivate | Described in | | 0x63A2 | CodecPrivate | RFC 9559, |
| | | Section 5.1.4.1.22 | | | | Section 5.1.4.1.22 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63C0 | Targets | Described in | | 0x63C0 | Targets | RFC 9559, |
| | | Section 5.1.8.1.1 | | | | Section 5.1.8.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63C3 | ChapterPhysicalEquiv | Described in | | 0x63C3 | ChapterPhysicalEquiv | RFC 9559, |
| | | Section 5.1.7.1.4.8 | | | | Section 5.1.7.1.4.8 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63C4 | TagChapterUID | Described in | | 0x63C4 | TagChapterUID | RFC 9559, |
| | | Section 5.1.8.1.1.5 | | | | Section 5.1.8.1.1.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63C5 | TagTrackUID | Described in | | 0x63C5 | TagTrackUID | RFC 9559, |
| | | Section 5.1.8.1.1.3 | | | | Section 5.1.8.1.1.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63C6 | TagAttachmentUID | Described in | | 0x63C6 | TagAttachmentUID | RFC 9559, |
| | | Section 5.1.8.1.1.6 | | | | Section 5.1.8.1.1.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63C9 | TagEditionUID | Described in | | 0x63C9 | TagEditionUID | RFC 9559, |
| | | Section 5.1.8.1.1.4 | | | | Section 5.1.8.1.1.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x63CA | TargetType | Described in | | 0x63CA | TargetType | RFC 9559, |
| | | Section 5.1.8.1.1.2 | | | | Section 5.1.8.1.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6624 | TrackTranslate | Described in | | 0x6624 | TrackTranslate | RFC 9559, |
| | | Section 5.1.4.1.27 | | | | Section 5.1.4.1.27 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x66A5 | TrackTranslateTrackID | Described in | | 0x66A5 | TrackTranslateTrackID | RFC 9559, |
| | | Section 5.1.4.1.27.1 | | | | Section 5.1.4.1.27.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x66BF | TrackTranslateCodec | Described in | | 0x66BF | TrackTranslateCodec | RFC 9559, |
| | | Section 5.1.4.1.27.2 | | | | Section 5.1.4.1.27.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x66FC | TrackTranslateEditionUID | Described in | | 0x66FC | TrackTranslateEditionUID | RFC 9559, |
| | | Section 5.1.4.1.27.3 | | | | Section 5.1.4.1.27.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x67C8 | SimpleTag | Described in | | 0x67C8 | SimpleTag | RFC 9559, |
| | | Section 5.1.8.1.2 | | | | Section 5.1.8.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x68CA | TargetTypeValue | Described in | | 0x68CA | TargetTypeValue | RFC 9559, |
| | | Section 5.1.8.1.1.1 | | | | Section 5.1.8.1.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6911 | ChapProcessCommand | Described in | | 0x6911 | ChapProcessCommand | RFC 9559, |
| | | Section 5.1.7.1.4.17 | | | | Section 5.1.7.1.4.17 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6922 | ChapProcessTime | Described in | | 0x6922 | ChapProcessTime | RFC 9559, |
| | | Section 5.1.7.1.4.18 | | | | Section 5.1.7.1.4.18 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6924 | ChapterTranslate | Described in | | 0x6924 | ChapterTranslate | RFC 9559, |
| | | Section 5.1.2.8 | | | | Section 5.1.2.8 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6933 | ChapProcessData | Described in | | 0x6933 | ChapProcessData | RFC 9559, |
| | | Section 5.1.7.1.4.19 | | | | Section 5.1.7.1.4.19 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6944 | ChapProcess | Described in | | 0x6944 | ChapProcess | RFC 9559, |
| | | Section 5.1.7.1.4.14 | | | | Section 5.1.7.1.4.14 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6955 | ChapProcessCodecID | Described in | | 0x6955 | ChapProcessCodecID | RFC 9559, |
| | | Section 5.1.7.1.4.15 | | | | Section 5.1.7.1.4.15 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x69A5 | ChapterTranslateID | Described in | | 0x69A5 | ChapterTranslateID | RFC 9559, |
| | | Section 5.1.2.8.1 | | | | Section 5.1.2.8.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x69BF | ChapterTranslateCodec | Described in | | 0x69BF | ChapterTranslateCodec | RFC 9559, |
| | | Section 5.1.2.8.2 | | | | Section 5.1.2.8.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x69FC | ChapterTranslateEditionUID | Described in | | 0x69FC | ChapterTranslateEditionUID | RFC 9559, |
| | | Section 5.1.2.8.3 | | | | Section 5.1.2.8.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6D80 | ContentEncodings | Described in | | 0x6D80 | ContentEncodings | RFC 9559, |
| | | Section 5.1.4.1.31 | | | | Section 5.1.4.1.31 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6DE7 | MinCache | Reclaimed | | 0x6DE7 | MinCache | Reclaimed (RFC 9559, |
| | | (Section 28.16) | | | | Appendix A.16) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6DF8 | MaxCache | Reclaimed | | 0x6DF8 | MaxCache | Reclaimed (RFC 9559, |
| | | (Section 28.17) | | | | Appendix A.17) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6E67 | ChapterSegmentUUID | Described in | | 0x6E67 | ChapterSegmentUUID | RFC 9559, |
| | | Section 5.1.7.1.4.6 | | | | Section 5.1.7.1.4.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6EBC | ChapterSegmentEditionUID | Described in | | 0x6EBC | ChapterSegmentEditionUID | RFC 9559, |
| | | Section 5.1.7.1.4.7 | | | | Section 5.1.7.1.4.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x6FAB | TrackOverlay | Reclaimed | | 0x6FAB | TrackOverlay | Reclaimed (RFC 9559, |
| | | (Section 28.23) | | | | Appendix A.23) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7373 | Tag | Described in | | 0x7373 | Tag | RFC 9559, |
| | | Section 5.1.8.1 | | | | Section 5.1.8.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7384 | SegmentFilename | Described in | | 0x7384 | SegmentFilename | RFC 9559, |
| | | Section 5.1.2.2 | | | | Section 5.1.2.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x73A4 | SegmentUUID | Described in | | 0x73A4 | SegmentUUID | RFC 9559, |
| | | Section 5.1.2.1 | | | | Section 5.1.2.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x73C4 | ChapterUID | Described in | | 0x73C4 | ChapterUID | RFC 9559, |
| | | Section 5.1.7.1.4.1 | | | | Section 5.1.7.1.4.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x73C5 | TrackUID | Described in | | 0x73C5 | TrackUID | RFC 9559, |
| | | Section 5.1.4.1.2 | | | | Section 5.1.4.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7446 | AttachmentLink | Described in | | 0x7446 | AttachmentLink | RFC 9559, |
| | | Section 5.1.4.1.24 | | | | Section 5.1.4.1.24 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x75A1 | BlockAdditions | Described in | | 0x75A1 | BlockAdditions | RFC 9559, |
| | | Section 5.1.3.5.2 | | | | Section 5.1.3.5.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x75A2 | DiscardPadding | Described in | | 0x75A2 | DiscardPadding | RFC 9559, |
| | | Section 5.1.3.5.7 | | | | Section 5.1.3.5.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7670 | Projection | Described in Section | | 0x7670 | Projection | RFC 9559, Section |
| | | 5.1.4.1.28.41 | | | | 5.1.4.1.28.41 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7671 | ProjectionType | Described in Section | | 0x7671 | ProjectionType | RFC 9559, Section |
| | | 5.1.4.1.28.42 | | | | 5.1.4.1.28.42 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7672 | ProjectionPrivate | Described in Section | | 0x7672 | ProjectionPrivate | RFC 9559, Section |
| | | 5.1.4.1.28.43 | | | | 5.1.4.1.28.43 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7673 | ProjectionPoseYaw | Described in Section | | 0x7673 | ProjectionPoseYaw | RFC 9559, Section |
| | | 5.1.4.1.28.44 | | | | 5.1.4.1.28.44 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7674 | ProjectionPosePitch | Described in Section | | 0x7674 | ProjectionPosePitch | RFC 9559, Section |
| | | 5.1.4.1.28.45 | | | | 5.1.4.1.28.45 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7675 | ProjectionPoseRoll | Described in Section | | 0x7675 | ProjectionPoseRoll | RFC 9559, Section |
| | | 5.1.4.1.28.46 | | | | 5.1.4.1.28.46 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x78B5 | OutputSamplingFrequency | Described in | | 0x78B5 | OutputSamplingFrequency | RFC 9559, |
| | | Section 5.1.4.1.29.2 | | | | Section 5.1.4.1.29.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7BA9 | Title | Described in | | 0x7BA9 | Title | RFC 9559, |
| | | Section 5.1.2.12 | | | | Section 5.1.2.12 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x7D7B | ChannelPositions | Reclaimed | | 0x7D7B | ChannelPositions | Reclaimed (RFC 9559, |
| | | (Section 28.27) | | | | Appendix A.27) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x22B59C | Language | Described in | | 0x7FFF | Reserved | RFC 9559 |
+------------+-----------------------------+----------------------+
| 0x22B59C | Language | RFC 9559, |
| | | Section 5.1.4.1.19 | | | | Section 5.1.4.1.19 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x22B59D | LanguageBCP47 | Described in | | 0x22B59D | LanguageBCP47 | RFC 9559, |
| | | Section 5.1.4.1.20 | | | | Section 5.1.4.1.20 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x23314F | TrackTimestampScale | Described in | | 0x23314F | TrackTimestampScale | RFC 9559, |
| | | Section 5.1.4.1.15 | | | | Section 5.1.4.1.15 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x234E7A | DefaultDecodedFieldDuration | Described in | | 0x234E7A | DefaultDecodedFieldDuration | RFC 9559, |
| | | Section 5.1.4.1.14 | | | | Section 5.1.4.1.14 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x2383E3 | FrameRate | Reclaimed | | 0x2383E3 | FrameRate | Reclaimed (RFC 9559, |
| | | (Section 28.26) | | | | Appendix A.26) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x23E383 | DefaultDuration | Described in | | 0x23E383 | DefaultDuration | RFC 9559, |
| | | Section 5.1.4.1.13 | | | | Section 5.1.4.1.13 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x258688 | CodecName | Described in | | 0x258688 | CodecName | RFC 9559, |
| | | Section 5.1.4.1.23 | | | | Section 5.1.4.1.23 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x26B240 | CodecDownloadURL | Reclaimed | | 0x26B240 | CodecDownloadURL | Reclaimed (RFC 9559, |
| | | (Section 28.21) | | | | Appendix A.21) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x2AD7B1 | TimestampScale | Described in | | 0x2AD7B1 | TimestampScale | RFC 9559, |
| | | Section 5.1.2.9 | | | | Section 5.1.2.9 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x2EB524 | UncompressedFourCC | Described in Section | | 0x2EB524 | UncompressedFourCC | RFC 9559, Section |
| | | 5.1.4.1.28.15 | | | | 5.1.4.1.28.15 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x2FB523 | GammaValue | Reclaimed | | 0x2FB523 | GammaValue | Reclaimed (RFC 9559, |
| | | (Section 28.25) | | | | Appendix A.25) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x3A9697 | CodecSettings | Reclaimed | | 0x3A9697 | CodecSettings | Reclaimed (RFC 9559, |
| | | (Section 28.19) | | | | Appendix A.19) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x3B4040 | CodecInfoURL | Reclaimed | | 0x3B4040 | CodecInfoURL | Reclaimed (RFC 9559, |
| | | (Section 28.20) | | | | Appendix A.20) |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x3C83AB | PrevFilename | Described in | | 0x3C83AB | PrevFilename | RFC 9559, |
| | | Section 5.1.2.4 | | | | Section 5.1.2.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x3CB923 | PrevUUID | Described in | | 0x3CB923 | PrevUUID | RFC 9559, |
| | | Section 5.1.2.3 | | | | Section 5.1.2.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x3E83BB | NextFilename | Described in | | 0x3E83BB | NextFilename | RFC 9559, |
| | | Section 5.1.2.6 | | | | Section 5.1.2.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x3EB923 | NextUUID | Described in | | 0x3EB923 | NextUUID | RFC 9559, |
| | | Section 5.1.2.5 | | | | Section 5.1.2.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1043A770 | Chapters | Described in | | 0x3FFFFF | Reserved | RFC 9559 |
+------------+-----------------------------+----------------------+
| 0x1043A770 | Chapters | RFC 9559, |
| | | Section 5.1.7 | | | | Section 5.1.7 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x114D9B74 | SeekHead | Described in | | 0x114D9B74 | SeekHead | RFC 9559, |
| | | Section 5.1.1 | | | | Section 5.1.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1254C367 | Tags | Described in | | 0x1254C367 | Tags | RFC 9559, |
| | | Section 5.1.8 | | | | Section 5.1.8 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1549A966 | Info | Described in | | 0x1549A966 | Info | RFC 9559, |
| | | Section 5.1.2 | | | | Section 5.1.2 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1654AE6B | Tracks | Described in | | 0x1654AE6B | Tracks | RFC 9559, |
| | | Section 5.1.4 | | | | Section 5.1.4 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x18538067 | Segment | Described in | | 0x18538067 | Segment | RFC 9559, |
| | | Section 5.1 | | | | Section 5.1 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1941A469 | Attachments | Described in | | 0x1941A469 | Attachments | RFC 9559, |
| | | Section 5.1.6 | | | | Section 5.1.6 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1C53BB6B | Cues | Described in | | 0x1C53BB6B | Cues | RFC 9559, |
| | | Section 5.1.5 | | | | Section 5.1.5 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1F43B675 | Cluster | Described in | | 0x1F43B675 | Cluster | RFC 9559, |
| | | Section 5.1.3 | | | | Section 5.1.3 |
+------------+-----------------------------+----------------------+ +------------+-----------------------------+----------------------+
| 0x1FFFFFFF | Reserved | RFC 9559 |
+------------+-----------------------------+----------------------+
Table 55: IDs and Names for Matroska Element IDs assigned by Table 55: Initial Contents of "Matroska Element IDs" Registry
this document
27.2. Chapter Codec IDs Registry 27.2. Chapter Codec IDs Registry
This document creates a new IANA registry called the "Matroska IANA has created a new registry called the "Matroska Chapter Codec
Chapter Codec IDs" registry. The values correspond to the unsigned IDs" registry. The values correspond to the unsigned integer
integer ChapProcessCodecID value described in Section 5.1.7.1.4.15. ChapProcessCodecID, ChapterTranslateCodec, and TrackTranslateCodec
values described in Section 5.1.7.1.4.15, Section 5.1.2.8.2, and
Section 5.1.4.1.27.2, respectively.
To register a new Chapter Codec ID in this registry, one needs a To register a new Chapter Codec ID in this registry, one needs a
Chapter Codec ID, a Change Controller (IETF or email of registrant) Chapter Codec ID, a description, a Change Controller (IETF or email
and an optional Reference to a document describing the Chapter Codec of registrant), and an optional Reference to a document describing
ID. the Chapter Codec ID.
The Chapter Codec IDs are to be allocated according to the "First The Chapter Codec IDs are to be allocated according to the
"Specification Required" policy [RFC8126].
Table 56 shows the initial contents of the "Chapter Codec IDs"
registry. The Change Controller for the initial entries is the IETF.
+==================+=================+===================+
| Chapter Codec ID | Description | Reference |
+==================+=================+===================+
| 0 | Matroska Script | RFC 9559, Section |
| | | 5.1.7.1.4.15 |
+------------------+-----------------+-------------------+
| 1 | DVD-Menu | RFC 9559, Section |
| | | 5.1.7.1.4.15 |
+------------------+-----------------+-------------------+
Table 56: Initial Contents of "Chapter Codec IDs" Registry
27.3. Track Types Registry
IANA has created a new registry called the "Track Types" registry.
The values correspond to the unsigned integer TrackType value
described in Section 5.1.4.1.3.
To register a new Track Type in this registry, one needs a Track Type
value, a description, a Change Controller (IETF or email of
registrant), and an optional Reference to a document describing the
Track Type.
The Track Types are to be allocated according to the "Specification
Required" policy [RFC8126].
Table 57 shows the initial contents of the "Track Types" registry.
The Change Controller for the initial entries is the IETF.
+============+=============+=============================+
| Track Type | Description | Reference |
+============+=============+=============================+
| 1 | video | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
| 2 | audio | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
| 3 | complex | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
| 16 | logo | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
| 17 | subtitle | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
| 18 | buttons | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
| 32 | control | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
| 33 | metadata | RFC 9559, Section 5.1.4.1.3 |
+------------+-------------+-----------------------------+
Table 57: Initial Contents of "Track Types" Registry
27.4. Tags Target Types Registry
IANA has created a new registry called the "Tags Target Types"
registry. The values correspond to the unsigned integer
TargetTypeValue value described in Section 5.1.8.1.1.1.
To register a new Tags Target Type in this registry, one needs a Tags
Target Type value, a description, a Change Controller (IETF or email
of registrant), and an optional Reference to a document describing
the Tags Target Type.
The Tags Track Types are to be allocated according to the
"Specification Required" policy [RFC8126].
Table 58 shows the initial contents of the "Tags Target Types"
registry. The Change Controller for the initial entries is the IETF.
+==================+==========================+===================+
| Tags Target Type | Description | Reference |
+==================+==========================+===================+
| 70 | COLLECTION | RFC 9559, Section |
| | | 5.1.8.1.1.1 |
+------------------+--------------------------+-------------------+
| 60 | EDITION / ISSUE / VOLUME | RFC 9559, Section |
| | / OPUS / SEASON / SEQUEL | 5.1.8.1.1.1 |
+------------------+--------------------------+-------------------+
| 50 | ALBUM / OPERA / CONCERT | RFC 9559, Section |
| | / MOVIE / EPISODE | 5.1.8.1.1.1 |
+------------------+--------------------------+-------------------+
| 40 | PART / SESSION | RFC 9559, Section |
| | | 5.1.8.1.1.1 |
+------------------+--------------------------+-------------------+
| 30 | TRACK / SONG / CHAPTER | RFC 9559, Section |
| | | 5.1.8.1.1.1 |
+------------------+--------------------------+-------------------+
| 20 | SUBTRACK / MOVEMENT / | RFC 9559, Section |
| | SCENE | 5.1.8.1.1.1 |
+------------------+--------------------------+-------------------+
| 10 | SHOT | RFC 9559, Section |
| | | 5.1.8.1.1.1 |
+------------------+--------------------------+-------------------+
Table 58: Initial Contents of "Tags Target Types" Registry
27.5. Alpha Modes Registry
IANA has created a new registry called the "Alpha Modes" registry.
The values correspond to the unsigned integer AlphaMode value
described in Section 5.1.4.1.28.4.
To register a new Alpha Mode in this registry, one needs an Alpha
Mode value, a description, a Change Controller (IETF or email of
registrant), and an optional Reference to a document describing the
Alpha Mode.
The Alpha Modes are to be allocated according to the "First Come
First Served" policy [RFC8126].
Table 59 shows the initial contents of the "Alpha Modes" registry.
The Change Controller for the initial entries is the IETF.
+============+=============+================================+
| Alpha Mode | Description | Reference |
+============+=============+================================+
| 0 | none | RFC 9559, Section 5.1.4.1.28.4 |
+------------+-------------+--------------------------------+
| 1 | present | RFC 9559, Section 5.1.4.1.28.4 |
+------------+-------------+--------------------------------+
Table 59: Initial Contents of "Alpha Modes" Registry
27.6. Content Encoding Scopes Registry
IANA has created a new registry called the "Content Encoding Scopes"
registry. The values correspond to the unsigned integer
ContentEncodingScope value described in Section 5.1.4.1.31.3.
To register a new Content Encoding Scope in this registry, one needs
a Content Encoding Scope value, a description, a Change Controller
(IETF or email of registrant), and an optional Reference to a
document describing the Content Encoding Scope.
The Content Encoding Scopes are to be allocated according to the
"Specification Required" policy [RFC8126].
Table 60 shows the initial contents of the "Content Encoding Scopes"
registry. The Change Controller for the initial entries is the IETF.
+========================+=============+===================+
| Content Encoding Scope | Description | Reference |
+========================+=============+===================+
| 1 | Block | RFC 9559, Section |
| | | 5.1.4.1.31.3 |
+------------------------+-------------+-------------------+
| 2 | Private | RFC 9559, Section |
| | | 5.1.4.1.31.3 |
+------------------------+-------------+-------------------+
| 4 | Next | RFC 9559, Section |
| | | 5.1.4.1.31.3 |
+------------------------+-------------+-------------------+
Table 60: Initial Contents of "Content Encoding Scopes"
Registry
27.7. Content Encoding Types Registry
IANA has created a new registry called the "Content Encoding Types"
registry. The values correspond to the unsigned integer
ContentEncodingType value described in Section 5.1.4.1.31.4.
To register a new Content Encoding Type in this registry, one needs a
Content Encoding Type value, a description, a Change Controller (IETF
or email of registrant), and an optional Reference to a document
describing the Content Encoding Type.
The Content Encoding Types are to be allocated according to the
"Specification Required" policy [RFC8126].
Table 61 shows the initial contents of the "Content Encoding Types"
registry. The Change Controller for the initial entries is the IETF.
+=======================+=============+===================+
| Content Encoding Type | Description | Reference |
+=======================+=============+===================+
| 0 | Compression | RFC 9559, Section |
| | | 5.1.4.1.31.4 |
+-----------------------+-------------+-------------------+
| 1 | Encryption | RFC 9559, Section |
| | | 5.1.4.1.31.4 |
+-----------------------+-------------+-------------------+
Table 61: Initial Contents of "Content Encoding Types"
Registry
27.8. Compression Algorithms Registry
IANA has created a new registry called the "Compression Algorithms"
registry. The values correspond to the unsigned integer
ContentCompAlgo value described in Section 5.1.4.1.31.6.
To register a new Compression Algorithm in this registry, one needs a
Compression Algorithm value, a description, a Change Controller (IETF
or email of registrant), and an optional Reference to a document
describing the Compression Algorithm.
The Compression Algorithms are to be allocated according to the
"Specification Required" policy [RFC8126].
Table 62 shows the initial contents of the "Compression Algorithms"
registry. The Change Controller for the initial entries is the IETF.
+=======================+=============+===================+
| Compression Algorithm | Description | Reference |
+=======================+=============+===================+
| 0 | zlib | RFC 9559, Section |
| | | 5.1.4.1.31.6 |
+-----------------------+-------------+-------------------+
| 1 | bzlib | RFC 9559, Section |
| | | 5.1.4.1.31.6 |
+-----------------------+-------------+-------------------+
| 2 | lzo1x | RFC 9559, Section |
| | | 5.1.4.1.31.6 |
+-----------------------+-------------+-------------------+
| 3 | Header | RFC 9559, Section |
| | Stripping | 5.1.4.1.31.6 |
+-----------------------+-------------+-------------------+
Table 62: Initial Contents of "Compression Algorithms"
Registry
27.9. Encryption Algorithms Registry
IANA has created a new registry called the "Encryption Algorithms"
registry. The values correspond to the unsigned integer
ContentEncAlgo value described in Section 5.1.4.1.31.9.
To register a new Encryption Algorithm in this registry, one needs an
Encryption Algorithm value, a description, a Change Controller (IETF
or email of registrant), and an optional Reference to a document
describing the Encryption Algorithm.
The Encryption Algorithms are to be allocated according to the "First
Come First Served" policy [RFC8126]. Come First Served" policy [RFC8126].
ChapProcessCodecID values of "0" and "1" are RESERVED to the IETF for Table 63 shows the initial contents of the "Encryption Algorithms"
future use. registry. The Change Controller for the initial entries is the IETF.
27.3. Media Types +======================+===============+===================+
| Encryption Algorithm | Description | Reference |
+======================+===============+===================+
| 0 | Not encrypted | RFC 9559, Section |
| | | 5.1.4.1.31.9 |
+----------------------+---------------+-------------------+
| 1 | DES | RFC 9559, Section |
| | | 5.1.4.1.31.9 |
+----------------------+---------------+-------------------+
| 2 | 3DES | RFC 9559, Section |
| | | 5.1.4.1.31.9 |
+----------------------+---------------+-------------------+
| 3 | Twofish | RFC 9559, Section |
| | | 5.1.4.1.31.9 |
+----------------------+---------------+-------------------+
| 4 | Blowfish | RFC 9559, Section |
| | | 5.1.4.1.31.9 |
+----------------------+---------------+-------------------+
| 5 | AES | RFC 9559, Section |
| | | 5.1.4.1.31.9 |
+----------------------+---------------+-------------------+
Matroska files and streams are found in three main forms: audio-video Table 63: Initial Contents of "Encryption Algorithms"
files, audio-only and occasionally with stereoscopic video tracks. Registry
Historically Matroska files and streams have used the following media 27.10. AES Cipher Modes Registry
types with a "x-" prefix. For better compatibility a system SHOULD
be able to handle both formats. Newer systems SHOULD NOT use the
historic format and use the format that follows the [RFC6838] format
instead.
Please register three media types, the [RFC6838] templates are below: IANA has created a new registry called the "AES Cipher Modes"
registry. The values correspond to the unsigned integer
AESSettingsCipherMode value described in Section 5.1.4.1.31.12.
27.3.1. For files containing video tracks To register a new AES Cipher Mode in this registry, one needs an AES
Cipher Mode value, a description, a Change Controller (IETF or email
of registrant), and an optional Reference to a document describing
the AES Cipher Mode.
The AES Cipher Modes are to be allocated according to the "First Come
First Served" policy [RFC8126].
Table 64 shows the initial contents of the "AES Cipher Modes"
registry. The Change Controller for the initial entries is the IETF.
+=================+=============+=================================+
| AES Cipher Mode | Description | Reference |
+=================+=============+=================================+
| 1 | AES-CTR | RFC 9559, Section 5.1.4.1.31.12 |
+-----------------+-------------+---------------------------------+
| 2 | AES-CBC | RFC 9559, Section 5.1.4.1.31.12 |
+-----------------+-------------+---------------------------------+
Table 64: Initial Contents of "AES Cipher Modes" Registry
27.11. Stereo Modes Registry
IANA has created a new registry called the "Stereo Modes" registry.
The values correspond to the unsigned integer StereoMode value
described in Section 5.1.4.1.28.3.
To register a new Stereo Mode in this registry, one needs a Stereo
Mode value, a description, a Change Controller (IETF or email of
registrant), and an optional Reference to a document describing the
Stereo Mode.
The Stereo Modes are to be allocated according to the "Specification
Required" policy [RFC8126].
Table 65 shows the initial contents of the "Stereo Modes" registry.
The Change Controller for the initial entries is the IETF.
+=============+====================+================================+
| Stereo Mode | Description | Reference |
+=============+====================+================================+
| 0 | mono | RFC 9559, Section |
| | | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 1 | Side By Side (left | RFC 9559, Section |
| | first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 2 | Top Bottom (right | RFC 9559, Section |
| | first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 3 | Top Bottom (left | RFC 9559, Section |
| | first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 4 | Checkboard (right | RFC 9559, Section |
| | first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 5 | Checkboard (left | RFC 9559, Section |
| | first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 6 | Row Interleaved | RFC 9559, Section |
| | (right first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 7 | Row Interleaved | RFC 9559, Section |
| | (left first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 8 | Column Interleaved | RFC 9559, Section |
| | (right first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 9 | Column Interleaved | RFC 9559, Section |
| | (left first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 10 | Anaglyph (cyan/ | RFC 9559, Section |
| | red) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 11 | Side By Side | RFC 9559, Section |
| | (right first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 12 | Anaglyph (green/ | RFC 9559, Section |
| | magenta) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 13 | Both in Block | RFC 9559, Section |
| | (left first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
| 14 | Both in Block | RFC 9559, Section |
| | (right first) | 5.1.4.1.28.3 |
+-------------+--------------------+--------------------------------+
Table 65: Initial Contents of "Stereo Modes" Registry
27.12. Display Units Registry
IANA has created a new registry called the "Display Units" registry.
The values correspond to the unsigned integer DisplayUnit value
described in Section 5.1.4.1.28.14.
To register a new Display Unit in this registry, one needs a Display
Unit value, a description, a Change Controller (IETF or email of
registrant), and an optional Reference to a document describing the
Display Unit.
The Display Units are to be allocated according to the "Specification
Required" policy [RFC8126].
Table 66 shows the initial contents of the "Display Units" registry.
The Change Controller for the initial entries is the IETF.
+==============+===============+=================================+
| Display Unit | Description | Reference |
+==============+===============+=================================+
| 0 | Pixels | RFC 9559, Section 5.1.4.1.28.14 |
+--------------+---------------+---------------------------------+
| 1 | Centimeters | RFC 9559, Section 5.1.4.1.28.14 |
+--------------+---------------+---------------------------------+
| 2 | Inches | RFC 9559, Section 5.1.4.1.28.14 |
+--------------+---------------+---------------------------------+
| 3 | Display | RFC 9559, Section 5.1.4.1.28.14 |
| | Aspect Ration | |
+--------------+---------------+---------------------------------+
| 4 | Unknown | RFC 9559, Section 5.1.4.1.28.14 |
+--------------+---------------+---------------------------------+
Table 66: Initial Contents of "Display Units" Registry
27.13. Projection Types Registry
IANA has created a new registry called the "Projection Types"
registry. The values correspond to the unsigned integer
ProjectionType value described in Section 5.1.4.1.28.42.
To register a new Projection Type in this registry, one needs a
Projection Type value, a description, a Change Controller (IETF or
email of registrant), and an optional Reference to a document
describing the Projection Type.
The Projection Types are to be allocated according to the "First Come
First Served" policy [RFC8126].
Table 67 shows the initial contents of the "Projection Types"
registry. The Change Controller for the initial entries is the IETF.
+=================+=================+===================+
| Projection Type | Description | Reference |
+=================+=================+===================+
| 0 | Rectangular | RFC 9559, Section |
| | | 5.1.4.1.28.42 |
+-----------------+-----------------+-------------------+
| 1 | Equirectangular | RFC 9559, Section |
| | | 5.1.4.1.28.42 |
+-----------------+-----------------+-------------------+
| 2 | Cubemap | RFC 9559, Section |
| | | 5.1.4.1.28.42 |
+-----------------+-----------------+-------------------+
| 3 | Mesh | RFC 9559, Section |
| | | 5.1.4.1.28.42 |
+-----------------+-----------------+-------------------+
Table 67: Initial Contents of "Projection Types" Registry
27.14. Track Plane Types Registry
IANA has created a new registry called the "Track Plane Types"
registry. The values correspond to the unsigned integer
TrackPlaneType value described in Section 5.1.4.1.30.4.
To register a new Track Plane Type in this registry, one needs a
Track Plane Type value, a description, a Change Controller (IETF or
email of registrant), and an optional Reference to a document
describing the Track Plane Type.
The Track Plane Types are to be allocated according to the "First
Come First Served" policy [RFC8126].
Table 68 shows the initial contents of the "Track Plane Types"
registry. The Change Controller for the initial entries is the IETF.
+==================+=============+================================+
| Track Plane Type | Description | Reference |
+==================+=============+================================+
| 0 | Left Eye | RFC 9559, Section 5.1.4.1.30.4 |
+------------------+-------------+--------------------------------+
| 1 | Right Eye | RFC 9559, Section 5.1.4.1.30.4 |
+------------------+-------------+--------------------------------+
| 2 | Background | RFC 9559, Section 5.1.4.1.30.4 |
+------------------+-------------+--------------------------------+
Table 68: Initial Contents of "Track Plane Types" Registry
27.15. Horizontal Chroma Sitings Registry
IANA has created a new registry called the "Horizontal Chroma
Sitings" registry. The values correspond to the unsigned integer
ChromaSitingHorz value described in Section 5.1.4.1.28.23.
To register a new Horizontal Chroma Siting in this registry, one
needs a Horizontal Chroma Siting value, a description, a Change
Controller (IETF or email of registrant), and an optional Reference
to a document describing the Horizontal Chroma Siting.
The Horizontal Chroma Sitings are to be allocated according to the
"First Come First Served" policy [RFC8126].
Table 69 shows the initial contents of the "Horizontal Chroma
Sitings" registry. The Change Controller for the initial entries is
the IETF.
+==========================+=============+===================+
| Horizontal Chroma Siting | Description | Reference |
+==========================+=============+===================+
| 0 | unspecified | RFC 9559, Section |
| | | 5.1.4.1.28.23 |
+--------------------------+-------------+-------------------+
| 1 | left | RFC 9559, Section |
| | collocated | 5.1.4.1.28.23 |
+--------------------------+-------------+-------------------+
| 2 | half | RFC 9559, Section |
| | | 5.1.4.1.28.23 |
+--------------------------+-------------+-------------------+
Table 69: Initial Contents of "Horizontal Chroma Sitings"
Registry
27.16. Vertical Chroma Sitings Registry
IANA has created a new registry called the "Vertical Chroma Sitings"
registry. The values correspond to the unsigned integer
ChromaSitingVert value described in Section 5.1.4.1.28.24.
To register a new Vertical Chroma Siting in this registry, one needs
a Vertical Chroma Siting value, a description, a Change Controller
(IETF or email of registrant), and an optional Reference to a
document describing the Vertical Chroma Siting.
The Vertical Chroma Sitings are to be allocated according to the
"First Come First Served" policy [RFC8126].
Table 70 shows the initial contents of the "Vertical Chroma Sitings"
registry. The Change Controller for the initial entries is the IETF.
+========================+=============+===================+
| Vertical Chroma Siting | Description | Reference |
+========================+=============+===================+
| 0 | unspecified | RFC 9559, Section |
| | | 5.1.4.1.28.24 |
+------------------------+-------------+-------------------+
| 1 | top | RFC 9559, Section |
| | collocated | 5.1.4.1.28.24 |
+------------------------+-------------+-------------------+
| 2 | half | RFC 9559, Section |
| | | 5.1.4.1.28.24 |
+------------------------+-------------+-------------------+
Table 70: Initial Contents of "Vertical Chroma Sitings"
Registry
27.17. Color Ranges Registry
IANA has created a new registry called the "Color Ranges" registry.
The values correspond to the unsigned integer Range value described
in Section 5.1.4.1.28.25.
To register a new Color Range in this registry, one needs a Color
Range value, a description, a Change Controller (IETF or email of
registrant), and an optional Reference to a document describing the
Color Range.
The Color Ranges are to be allocated according to the "Specification
Required" policy [RFC8126].
Table 71 shows the initial contents of the "Color Ranges" registry.
The Change Controller for the initial entries is the IETF.
+=============+===============================+===================+
| Color Range | Description | Reference |
+=============+===============================+===================+
| 0 | unspecified | RFC 9559, Section |
| | | 5.1.4.1.28.25 |
+-------------+-------------------------------+-------------------+
| 1 | broadcast range | RFC 9559, Section |
| | | 5.1.4.1.28.25 |
+-------------+-------------------------------+-------------------+
| 2 | full range | RFC 9559, Section |
| | | 5.1.4.1.28.25 |
+-------------+-------------------------------+-------------------+
| 3 | defined by MatrixCoefficients | RFC 9559, Section |
| | / TransferCharacteristics | 5.1.4.1.28.25 |
+-------------+-------------------------------+-------------------+
Table 71: Initial Contents of "Color Ranges" Registry
27.18. Media Types
Matroska files and streams are found in three main forms: audio-
video, audio-only, and (occasionally) stereoscopic video.
Historically, Matroska files and streams have used the following
media types with an "x-" prefix. For better compatibility, a system
SHOULD be able to handle both formats. Newer systems SHOULD NOT use
the historic format and use the format that follows the format in
[RFC6838] instead.
IANA has registered three media types per the templates (see
[RFC6838]) in the following subsections.
27.18.1. For Files Containing Video Tracks
Type name: video Type name: video
Subtype name: matroska Subtype name: matroska
Required parameters: N/A Required parameters: N/A
Optional parameters: N/A Optional parameters: N/A
Encoding considerations: as per this document and RFC8794
Security considerations: See Section 26. Encoding considerations: As per RFCs 9559 and 8794
Security considerations: See Section 26 of RFC 9559.
Interoperability considerations: Due to the extensibility of Interoperability considerations: Due to the extensibility of
Matroska, it is possible to encounter files with unknown but valid Matroska, it is possible to encounter files with unknown but valid
EBML Elements. Readers should be ready to handle this case. The EBML Elements. Readers should be ready to handle this case. The
fixed byte order, octet boundaries and UTF-8 usage allow for broad fixed byte order, octet boundaries, and UTF-8 usage allow for
interoparability. broad interoperability.
Published specification: THISRFC
Applications that use this media type: FFmpeg, VLC, ...
Fragment identifier considerations: N/A
Additional information: Published specification: RFC 9559
* Deprecated alias names for this type: video/x-matroska Applications that use this media type: FFmpeg, VLC, etc.
* Magic number(s): N/A Fragment identifier considerations: N/A
* File extension(s): mkv Additional information:
* Macintosh file type code(s): N/A Deprecated alias names for this type: video/x-matroska
Magic number(s): N/A
File extension(s): mkv
Macintosh file type code(s): N/A
Person & email address to contact for further information: IETF Person & email address to contact for further information: IETF
CELLAR WG cellar@ietf.org CELLAR WG (cellar@ietf.org)
Intended usage: COMMON Intended usage: COMMON
Restrictions on usage: None Restrictions on usage: None
Author: IETF CELLAR WG Author: IETF CELLAR WG
Change controller: IETF Change controller: IETF
Provisional registration? (standards tree only): No
27.3.2. For files containing audio tracks with no video tracks 27.18.2. For Files Containing Audio Tracks with No Video Tracks
Type name: audio Type name: audio
Subtype name: matroska Subtype name: matroska
Required parameters: N/A Required parameters: N/A
Optional parameters: N/A Optional parameters: N/A
Encoding considerations: as per this document and RFC8794
Security considerations: See Section 26. Encoding considerations: As per RFCs 9559 and 8794
Security considerations: See Section 26 of RFC 9559.
Interoperability considerations: Due to the extensibility of Interoperability considerations: Due to the extensibility of
Matroska, it is possible to encounter files with unknown but valid Matroska, it is possible to encounter files with unknown but valid
EBML Elements. Readers should be ready to handle this case. The EBML Elements. Readers should be ready to handle this case. The
fixed byte order, octet boundaries and UTF-8 usage allow for broad fixed byte order, octet boundaries, and UTF-8 usage allow for
interoparability. broad interoperability.
Published specification: THISRFC
Applications that use this media type: FFmpeg, VLC, ...
Fragment identifier considerations: N/A
Additional information: Published specification: RFC 9559
* Deprecated alias names for this type: audio/x-matroska Applications that use this media type: FFmpeg, VLC, etc.
* Magic number(s): N/A Fragment identifier considerations: N/A
* File extension(s): mka Additional information:
* Macintosh file type code(s): N/A Deprecated alias names for this type: audio/x-matroska
Magic number(s): N/A
File extension(s): mka
Macintosh file type code(s): N/A
Person & email address to contact for further information: IETF Person & email address to contact for further information: IETF
CELLAR WG cellar@ietf.org CELLAR WG (cellar@ietf.org)
Intended usage: COMMON Intended usage: COMMON
Restrictions on usage: None Restrictions on usage: None
Author: IETF CELLAR WG Author: IETF CELLAR WG
Change controller: IETF Change controller: IETF
Provisional registration? (standards tree only): No
27.3.3. For files containing a stereoscopic video track 27.18.3. For Files Containing a Stereoscopic Video Track
Type name: video Type name: video
Subtype name: matroska-3d Subtype name: matroska-3d
Required parameters: N/A Required parameters: N/A
Optional parameters: N/A Optional parameters: N/A
Encoding considerations: as per this document and RFC8794
Security considerations: See Section 26. Encoding considerations: As per RFCs 9559 and 8794
Security considerations: See Section 26 of RFC 9559.
Interoperability considerations: Due to the extensibility of Interoperability considerations: Due to the extensibility of
Matroska, it is possible to encounter files with unknown but valid Matroska, it is possible to encounter files with unknown but valid
EBML Elements. Readers should be ready to handle this case. The EBML Elements. Readers should be ready to handle this case. The
fixed byte order, octet boundaries and UTF-8 usage allow for broad fixed byte order, octet boundaries, and UTF-8 usage allow for
interoparability. broad interoperability.
Published specification: THISRFC
Applications that use this media type: FFmpeg, VLC, ...
Fragment identifier considerations: N/A
Additional information: Published specification: RFC 9559
* Deprecated alias names for this type: video/x-matroska-3d Applications that use this media type: FFmpeg, VLC, etc.
* Magic number(s): N/A Fragment identifier considerations: N/A
* File extension(s): mk3d Additional information:
* Macintosh file type code(s): N/A Deprecated alias names for this type: video/x-matroska-3d
Magic number(s): N/A
File extension(s): mk3d
Macintosh file type code(s): N/A
Person & email address to contact for further information: IETF Person & email address to contact for further information: IETF
CELLAR WG cellar@ietf.org CELLAR WG (cellar@ietf.org)
Intended usage: COMMON Intended usage: COMMON
Restrictions on usage: None Restrictions on usage: None
Author: IETF CELLAR WG Author: IETF CELLAR WG
Change controller: IETF Change controller: IETF
Provisional registration? (standards tree only): No
28. Annex A: Historic Deprecated Elements 28. References
As Matroska evolved since 2002 many parts that were considered for 28.1. Normative References
use in the format were never used and often incorrectly designed.
Many of the elements that were then defined are not found in any [CIE-1931] Wikipedia, "CIE 1931 color space",
<https://en.wikipedia.org/wiki/CIE_1931_color_space>.
[ISO639-2] International Organization for Standardization, "Codes for
the Representation of Names of Languages", ISO 639-2,
December 2017, <https://www.loc.gov/standards/iso639-
2/php/code_list.php>.
[ISO9899] International Organization for Standardization,
"Information technology -- Programming languages -- C",
ISO/IEC 9899:2018, June 2018,
<https://www.iso.org/standard/74528.html>.
[ITU-H.273]
ITU-T, "Coding-independent code points for video signal
type identification", ITU-T Recommendation H.273,
September 2023,
<https://www.itu.int/rec/T-REC-H.273-202309-P/en>.
[RFC1950] Deutsch, P. and J. Gailly, "ZLIB Compressed Data Format
Specification version 3.3", RFC 1950,
DOI 10.17487/RFC1950, May 1996,
<https://www.rfc-editor.org/info/rfc1950>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
Unique IDentifier (UUID) URN Namespace", RFC 4122,
DOI 10.17487/RFC4122, July 2005,
<https://www.rfc-editor.org/info/rfc4122>.
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
September 2009, <https://www.rfc-editor.org/info/rfc5646>.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
Specifications and Registration Procedures", BCP 13,
RFC 6838, DOI 10.17487/RFC6838, January 2013,
<https://www.rfc-editor.org/info/rfc6838>.
[RFC8081] Lilley, C., "The "font" Top-Level Media Type", RFC 8081,
DOI 10.17487/RFC8081, February 2017,
<https://www.rfc-editor.org/info/rfc8081>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8794] Lhomme, S., Rice, D., and M. Bunkus, "Extensible Binary
Meta Language", RFC 8794, DOI 10.17487/RFC8794, July 2020,
<https://www.rfc-editor.org/info/rfc8794>.
28.2. Informative References
[AVIFormat]
Microsoft Corporation, "AVI RIFF File Reference", June
2023, <https://docs.microsoft.com/en-
us/windows/win32/directshow/avi-riff-file-reference>.
[Blowfish] Schneier, B., "The Blowfish Encryption Algorithm", 1993,
<https://www.schneier.com/academic/blowfish/>.
[BZIP2] Seward, J., "bzip2", July 2019,
<https://sourceware.org/bzip2/>.
[DivXTrickTrack]
"Smooth FF/RW", December 2010,
<https://web.archive.org/web/20101222001148/
http://labs.divx.com/node/16601>.
[DivXWorldFonts]
"World Fonts", December 2010,
<https://web.archive.org/web/20110214132246/
http://labs.divx.com/node/16602>.
[DVD-Video]
DVD Forum, "DVD-Books: Part 3 DVD-Video Book", November
1995, <http://www.dvdforum.org/>.
[Err7189] RFC Errata, "Erratum ID 7189", RFC 8794,
<https://www.rfc-editor.org/errata/eid7189>.
[Err7191] RFC Errata, "Erratum ID 7191", RFC 8794,
<https://www.rfc-editor.org/errata/eid7191>.
[FIPS197] National Institute of Standards and Technology (NIST),
"Advanced Encryption Standard (AES)", FIPS PUB 197,
DOI 10.6028/NIST.FIPS.197, November 2001,
<https://csrc.nist.gov/publications/detail/fips/197/
final>.
[FIPS46-3] National Institute of Standards and Technology (NIST),
"Data Encryption Standard (DES)", FIPS PUB 46, October
1999,
<https://csrc.nist.gov/publications/detail/fips/46/3/
archive/1999-10-25>.
[FourCC-RGB]
FOURCC, "RGB pixel formats",
<https://web.archive.org/web/20160609214806/
https://www.fourcc.org/rgb.php>.
[FourCC-YUV]
FOURCC, "YUV pixel formats",
<https://web.archive.org/web/20160609214806/
https://www.fourcc.org/yuv.php>.
[JPEG] ITU-T, "INFORMATION TECHNOLOGY - DIGITAL COMPRESSION AND
CODING OF CONTINUOUS-TONE STILL IMAGES - REQUIREMENTS AND
GUIDELINES", ITU-T Recommendation T.81, September 1992,
<https://www.w3.org/Graphics/JPEG/itu-t81.pdf>.
[libmatroska]
"libmatroska", March 2024,
<https://github.com/Matroska-Org/libmatroska>.
[LZO] Tarreau, W. and R. Rodgman, "LZO stream format as
understood by Linux's LZO decompressor", October 2018,
<https://www.kernel.org/doc/Documentation/lzo.txt>.
[MatroskaCodec]
Lhomme, S., Bunkus, M., and D. Rice, "Matroska Media
Container Codec Specifications", Work in Progress,
Internet-Draft, draft-ietf-cellar-codec-13, 5 May 2024,
<https://datatracker.ietf.org/doc/html/draft-ietf-cellar-
codec-13>.
[MatroskaTags]
Lhomme, S., Bunkus, M., and D. Rice, "Matroska Media
Container Tag Specifications", Work in Progress, Internet-
Draft, draft-ietf-cellar-tags-13, 5 May 2024,
<https://datatracker.ietf.org/doc/html/draft-ietf-cellar-
tags-13>.
[MCF] "MCF specification, introduction",
<http://mukoli.free.fr/mcf/>.
[MSRGB] Microsoft Corporation, "Compression Enumeration", June
2021, <https://learn.microsoft.com/en-
us/openspecs/windows_protocols/ms-wmf/4e588f70-bd92-4a6f-
b77f-35d0feaf7a57>.
[MSYUV16] Microsoft Corporation, "10-bit and 16-bit YUV Video
Formats", November 2022, <https://learn.microsoft.com/en-
us/windows/win32/medfound/10-bit-and-16-bit-yuv-video-
formats>.
[MSYUV8] Microsoft Corporation, "Recommended 8-Bit YUV Formats for
Video Rendering", January 2021,
<https://learn.microsoft.com/en-us/windows/win32/medfound/
recommended-8-bit-yuv-formats-for-video-rendering>.
[RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol",
STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985,
<https://www.rfc-editor.org/info/rfc959>.
[RFC2083] Boutell, T., "PNG (Portable Network Graphics)
Specification Version 1.0", RFC 2083,
DOI 10.17487/RFC2083, March 1997,
<https://www.rfc-editor.org/info/rfc2083>.
[RFC3533] Pfeiffer, S., "The Ogg Encapsulation Format Version 0",
RFC 3533, DOI 10.17487/RFC3533, May 2003,
<https://www.rfc-editor.org/info/rfc3533>.
[RFC4732] Handley, M., Ed., Rescorla, E., Ed., and IAB, "Internet
Denial-of-Service Considerations", RFC 4732,
DOI 10.17487/RFC4732, December 2006,
<https://www.rfc-editor.org/info/rfc4732>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
[SMB-CIFS] Microsoft Corporation, "[MS-CIFS]: Common Internet File
System (CIFS) Protocol", October 2020,
<https://winprotocoldoc.blob.core.windows.net/
productionwindowsarchives/MS-CIFS/%5bMS-CIFS%5d.pdf>.
[SP800-38A]
National Institute of Standards and Technology (NIST),
"Recommendation for Block Cipher Modes of Operation:
Methods and Techniques", DOI 10.6028/NIST.SP.800-38A, NIST
Special Publication 800-38A, December 2001,
<https://nvlpubs.nist.gov/nistpubs/Legacy/SP/
nistspecialpublication800-38a.pdf>.
[SP800-67] National Institute of Standards and Technology (NIST),
"Recommendation for the Triple Data Encryption Algorithm
(TDEA) Block Cipher", DOI 10.6028/NIST.SP.800-67r2, NIST
Special Publication 800-67, November 2017,
<https://nvlpubs.nist.gov/nistpubs/SpecialPublications/
NIST.SP.800-67r2.pdf>.
[Twofish] Schneier, B., Kelsey, J., Whiting, D., Wagner, D., Hall,
C., and N. Ferguson, "Twofish: A 128-Bit Block Cipher",
June 1998,
<https://www.schneier.com/academic/archives/1998/06/
twofish_a_128-bit_bl.html>.
[WebM-Enc] Galligan, F., "WebM Encryption", September 2016,
<https://www.webmproject.org/docs/webm-encryption/>.
[WebVTT] Pieters, S., Pfeiffer, S., Ed., Jaegenstedt, P., and I.
Hickson, "WebVTT: The Web Video Text Tracks Format", W3C
Candidate Recommendation, April 2019,
<https://www.w3.org/TR/2019/CR-webvtt1-20190404/>.
Appendix A. Historic Deprecated Elements
As Matroska has evolved since 2002, many parts that were considered
for use in the format were never used and often incorrectly designed.
Many of the elements that were defined then are not found in any
known files but were part of public specs. DivX also had a few known files but were part of public specs. DivX also had a few
custom elements that were designed for custom features. custom elements that were designed for custom features.
We list these elements that have a known ID that SHOULD NOT be reused In this appendix, we list elements that have a known ID that SHOULD
to avoid colliding with existing files. They might be reassigned by NOT be reused to avoid colliding with existing files. These might be
IANA in the future if there are no more IDs for a given size. A reassigned by IANA in the future if there are no more IDs for a given
short description of what each ID was used for is included, but the size. A short description of what each ID was used for is included,
text is not normative. but the text is not normative.
28.1. SilentTracks Element A.1. SilentTracks Element
type / id: master / 0x5854 type / id: master / 0x5854
path: \Segment\Cluster\SilentTracks path: \Segment\Cluster\SilentTracks
documentation: The list of tracks that are not used in that part of documentation: The list of tracks that are not used in that part of
the stream. It is useful when using overlay tracks on seeking or the stream. It is useful when using overlay tracks for seeking or
to decide what track to use. deciding what track to use.
28.2. SilentTrackNumber Element A.2. SilentTrackNumber Element
type / id: uinteger / 0x58D7 type / id: uinteger / 0x58D7
path: \Segment\Cluster\SilentTracks\SilentTrackNumber path: \Segment\Cluster\SilentTracks\SilentTrackNumber
documentation: One of the track number that are not used from now on documentation: One of the track numbers that is not used from now on
in the stream. It could change later if not specified as silent in the stream. It could change later if not specified as silent
in a further Cluster. in a further Cluster.
28.3. BlockVirtual Element A.3. BlockVirtual Element
type / id: binary / 0xA2 type / id: binary / 0xA2
path: \Segment\Cluster\BlockGroup\BlockVirtual path: \Segment\Cluster\BlockGroup\BlockVirtual
documentation: A Block with no data. It must be stored in the documentation: A Block with no data. It must be stored in the
stream at the place the real Block would be in display order. stream at the place the real Block would be in display order.
28.4. ReferenceVirtual Element A.4. ReferenceVirtual Element
type / id: integer / 0xFD type / id: integer / 0xFD
path: \Segment\Cluster\BlockGroup\ReferenceVirtual path: \Segment\Cluster\BlockGroup\ReferenceVirtual
documentation: The Segment Position of the data that would otherwise documentation: The Segment Position of the data that would otherwise
be in position of the virtual block. be in position of the virtual block.
28.5. Slices Element A.5. Slices Element
type / id: master / 0x8E type / id: master / 0x8E
path: \Segment\Cluster\BlockGroup\Slices path: \Segment\Cluster\BlockGroup\Slices
documentation: Contains slices description. documentation: Contains slices description.
28.6. TimeSlice Element A.6. TimeSlice Element
type / id: master / 0xE8 type / id: master / 0xE8
path: \Segment\Cluster\BlockGroup\Slices\TimeSlice path: \Segment\Cluster\BlockGroup\Slices\TimeSlice
documentation: Contains extra time information about the data documentation: Contains extra time information about the data
contained in the Block. Being able to interpret this Element is contained in the Block. Being able to interpret this element is
not required for playback. not required for playback.
28.7. LaceNumber Element A.7. LaceNumber Element
type / id: uinteger / 0xCC type / id: uinteger / 0xCC
path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\LaceNumber path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\LaceNumber
documentation: The reverse number of the frame in the lace (0 is the documentation: The reverse number of the frame in the lace (0 is the
last frame, 1 is the next to last, etc.). Being able to interpret last frame, 1 is the next to last, etc.). Being able to interpret
this Element is not required for playback. this element is not required for playback.
28.8. FrameNumber Element A.8. FrameNumber Element
type / id: uinteger / 0xCD type / id: uinteger / 0xCD
path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\FrameNumber path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\FrameNumber
documentation: The number of the frame to generate from this lace documentation: The number of the frame to generate from this lace
with this delay (allow you to generate many frames from the same with this delay (allows for the generation of many frames from the
Block/Frame). same Block/Frame).
28.9. BlockAdditionID Element A.9. BlockAdditionID Element
type / id: uinteger / 0xCB type / id: uinteger / 0xCB
path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\BlockAdditionID path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\BlockAdditionID
documentation: The ID of the BlockAdditional Element (0 is the main documentation: The ID of the BlockAdditional element (0 is the main
Block). Block).
28.10. Delay Element A.10. Delay Element
type / id: uinteger / 0xCE type / id: uinteger / 0xCE
path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\Delay path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\Delay
documentation: The delay to apply to the Element, expressed in Track documentation: The delay to apply to the element, expressed in Track
Ticks; see Section 11.1. Ticks; see Section 11.1.
28.11. SliceDuration Element A.11. SliceDuration Element
type / id: uinteger / 0xCF type / id: uinteger / 0xCF
path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\SliceDuration path: \Segment\Cluster\BlockGroup\Slices\TimeSlice\SliceDuration
documentation: The duration to apply to the Element, expressed in documentation: The duration to apply to the element, expressed in
Track Ticks; see Section 11.1. Track Ticks; see Section 11.1.
28.12. ReferenceFrame Element A.12. ReferenceFrame Element
type / id: master / 0xC8 type / id: master / 0xC8
path: \Segment\Cluster\BlockGroup\ReferenceFrame path: \Segment\Cluster\BlockGroup\ReferenceFrame
documentation: Contains information about the last reference frame. documentation: Contains information about the last reference frame.
See [DivXTrickTrack]. See [DivXTrickTrack].
28.13. ReferenceOffset Element A.13. ReferenceOffset Element
type / id: uinteger / 0xC9 type / id: uinteger / 0xC9
path: \Segment\Cluster\BlockGroup\ReferenceFrame\ReferenceOffset path: \Segment\Cluster\BlockGroup\ReferenceFrame\ReferenceOffset
documentation: The relative offset, in bytes, from the previous documentation: The relative offset, in bytes, from the previous
BlockGroup element for this Smooth FF/RW video track to the BlockGroup element for this Smooth FF/RW video track to the
containing BlockGroup element. See [DivXTrickTrack]. containing BlockGroup element. See [DivXTrickTrack].
28.14. ReferenceTimestamp Element A.14. ReferenceTimestamp Element
type / id: uinteger / 0xCA type / id: uinteger / 0xCA
path: \Segment\Cluster\BlockGroup\ReferenceFrame\ReferenceTimestamp path: \Segment\Cluster\BlockGroup\ReferenceFrame\ReferenceTimestamp
documentation: The timestamp of the BlockGroup pointed to by documentation: The timestamp of the BlockGroup pointed to by
ReferenceOffset, expressed in Track Ticks; see Section 11.1. See ReferenceOffset, expressed in Track Ticks; see Section 11.1. See
[DivXTrickTrack]. [DivXTrickTrack].
28.15. EncryptedBlock Element A.15. EncryptedBlock Element
type / id: binary / 0xAF type / id: binary / 0xAF
path: \Segment\Cluster\EncryptedBlock path: \Segment\Cluster\EncryptedBlock
documentation: Similar to SimpleBlock, see Section 10.2, but the documentation: Similar to SimpleBlock (see Section 10.2), but the
data inside the Block are Transformed (encrypt and/or signed). data inside the Block are Transformed (encrypted and/or signed).
28.16. MinCache Element A.16. MinCache Element
type / id: uinteger / 0x6DE7 type / id: uinteger / 0x6DE7
path: \Segment\Tracks\TrackEntry\MinCache path: \Segment\Tracks\TrackEntry\MinCache
documentation: The minimum number of frames a player should be able documentation: The minimum number of frames a player should be able
to cache during playback. If set to 0, the reference pseudo-cache to cache during playback. If set to 0, the reference pseudo-cache
system is not used. system is not used.
28.17. MaxCache Element A.17. MaxCache Element
type / id: uinteger / 0x6DF8 type / id: uinteger / 0x6DF8
path: \Segment\Tracks\TrackEntry\MaxCache path: \Segment\Tracks\TrackEntry\MaxCache
documentation: The maximum cache size necessary to store referenced documentation: The maximum cache size necessary to store referenced
frames in and the current frame. 0 means no cache is needed. frames in and the current frame. 0 means no cache is needed.
28.18. TrackOffset Element A.18. TrackOffset Element
type / id: integer / 0x537F type / id: integer / 0x537F
path: \Segment\Tracks\TrackEntry\TrackOffset path: \Segment\Tracks\TrackEntry\TrackOffset
documentation: A value to add to the Block's Timestamp, expressed in documentation: A value to add to the Block's Timestamp, expressed in
Matroska Ticks -- i.e., in nanoseconds; see Section 11.1. This Matroska Ticks -- i.e., in nanoseconds; see Section 11.1. This
can be used to adjust the playback offset of a track. can be used to adjust the playback offset of a track.
28.19. CodecSettings Element A.19. CodecSettings Element
type / id: utf-8 / 0x3A9697 type / id: utf-8 / 0x3A9697
path: \Segment\Tracks\TrackEntry\CodecSettings path: \Segment\Tracks\TrackEntry\CodecSettings
documentation: A string describing the encoding setting used. documentation: A string describing the encoding setting used.
28.20. CodecInfoURL Element A.20. CodecInfoURL Element
type / id: string / 0x3B4040 type / id: string / 0x3B4040
path: \Segment\Tracks\TrackEntry\CodecInfoURL path: \Segment\Tracks\TrackEntry\CodecInfoURL
documentation: A URL to find information about the codec used. documentation: A URL to find information about the codec used.
28.21. CodecDownloadURL Element A.21. CodecDownloadURL Element
type / id: string / 0x26B240 type / id: string / 0x26B240
path: \Segment\Tracks\TrackEntry\CodecDownloadURL path: \Segment\Tracks\TrackEntry\CodecDownloadURL
documentation: A URL to download about the codec used. documentation: A URL to download information about the codec used.
28.22. CodecDecodeAll Element A.22. CodecDecodeAll Element
type / id: uinteger / 0xAA type / id: uinteger / 0xAA
path: \Segment\Tracks\TrackEntry\CodecDecodeAll path: \Segment\Tracks\TrackEntry\CodecDecodeAll
documentation: Set to 1 if the codec can decode potentially damaged documentation: Set to 1 if the codec can decode potentially damaged
data. data.
28.23. TrackOverlay Element A.23. TrackOverlay Element
type / id: uinteger / 0x6FAB type / id: uinteger / 0x6FAB
path: \Segment\Tracks\TrackEntry\TrackOverlay path: \Segment\Tracks\TrackEntry\TrackOverlay
documentation: Specify that this track is an overlay track for the documentation: Specify that this track is an overlay track for the
Track specified (in the u-integer). That means when this track Track specified (in the u-integer). This means that when this
has a gap on SilentTracks, the overlay track should be used track has a gap on SilentTracks, the overlay track should be used
instead. The order of multiple TrackOverlay matters, the first instead. The order of multiple TrackOverlay matters; the first
one is the one that should be used. If not found it should be the one is the one that should be used. If the first one is not
second, etc. found, it should be the second, etc.
28.24. AspectRatioType Element A.24. AspectRatioType Element
type / id: uinteger / 0x54B3 type / id: uinteger / 0x54B3
path: \Segment\Tracks\TrackEntry\Video\AspectRatioType path: \Segment\Tracks\TrackEntry\Video\AspectRatioType
documentation: Specify the possible modifications to the aspect documentation: Specifies the possible modifications to the aspect
ratio. ratio.
28.25. GammaValue Element A.25. GammaValue Element
type / id: float / 0x2FB523 type / id: float / 0x2FB523
path: \Segment\Tracks\TrackEntry\Video\GammaValue path: \Segment\Tracks\TrackEntry\Video\GammaValue
documentation: Gamma Value. documentation: Gamma value.
28.26. FrameRate Element A.26. FrameRate Element
type / id: float / 0x2383E3 type / id: float / 0x2383E3
path: \Segment\Tracks\TrackEntry\Video\FrameRate path: \Segment\Tracks\TrackEntry\Video\FrameRate
documentation: Number of frames per second. This value is documentation: Number of frames per second. This value is
Informational only. It is intended for constant frame rate informational only. It is intended for constant frame rate
streams, and should not be used for a variable frame rate streams and should not be used for a variable frame rate
TrackEntry. TrackEntry.
28.27. ChannelPositions Element A.27. ChannelPositions Element
type / id: binary / 0x7D7B type / id: binary / 0x7D7B
path: \Segment\Tracks\TrackEntry\Audio\ChannelPositions path: \Segment\Tracks\TrackEntry\Audio\ChannelPositions
documentation: Table of horizontal angles for each successive documentation: Table of horizontal angles for each successive
channel. channel.
28.28. TrickTrackUID Element A.28. TrickTrackUID Element
type / id: uinteger / 0xC0 type / id: uinteger / 0xC0
path: \Segment\Tracks\TrackEntry\TrickTrackUID path: \Segment\Tracks\TrackEntry\TrickTrackUID
documentation: The TrackUID of the Smooth FF/RW video in the paired documentation: The TrackUID of the Smooth FF/RW video in the paired
EBML structure corresponding to this video track. See EBML structure corresponding to this video track. See
[DivXTrickTrack]. [DivXTrickTrack].
28.29. TrickTrackSegmentUID Element A.29. TrickTrackSegmentUID Element
type / id: binary / 0xC1 type / id: binary / 0xC1
path: \Segment\Tracks\TrackEntry\TrickTrackSegmentUID path: \Segment\Tracks\TrackEntry\TrickTrackSegmentUID
documentation: The SegmentUID of the Segment containing the track documentation: The SegmentUUID of the Segment containing the track
identified by TrickTrackUID. See [DivXTrickTrack]. identified by TrickTrackUID. See [DivXTrickTrack].
28.30. TrickTrackFlag Element A.30. TrickTrackFlag Element
type / id: uinteger / 0xC6 type / id: uinteger / 0xC6
path: \Segment\Tracks\TrackEntry\TrickTrackFlag path: \Segment\Tracks\TrackEntry\TrickTrackFlag
documentation: Set to 1 if this video track is a Smooth FF/RW track. documentation: Set to 1 if this video track is a Smooth FF/RW track.
If set to 1, MasterTrackUID and MasterTrackSegUID should be If set to 1, MasterTrackUID and MasterTrackSegUID should be
present and BlockGroups for this track must contain ReferenceFrame present, and BlockGroups for this track must contain
structures. Otherwise, TrickTrackUID and TrickTrackSegUID must be ReferenceFrame structures. Otherwise, TrickTrackUID and
present if this track has a corresponding Smooth FF/RW track. See TrickTrackSegUID must be present if this track has a corresponding
[DivXTrickTrack]. Smooth FF/RW track. See [DivXTrickTrack].
28.31. TrickMasterTrackUID Element A.31. TrickMasterTrackUID Element
type / id: uinteger / 0xC7 type / id: uinteger / 0xC7
path: \Segment\Tracks\TrackEntry\TrickMasterTrackUID path: \Segment\Tracks\TrackEntry\TrickMasterTrackUID
documentation: The TrackUID of the video track in the paired EBML documentation: The TrackUID of the video track in the paired EBML
structure that corresponds to this Smooth FF/RW track. See structure that corresponds to this Smooth FF/RW track. See
[DivXTrickTrack]. [DivXTrickTrack].
28.32. TrickMasterTrackSegmentUID Element A.32. TrickMasterTrackSegmentUID Element
type / id: binary / 0xC4 type / id: binary / 0xC4
path: \Segment\Tracks\TrackEntry\TrickMasterTrackSegmentUID path: \Segment\Tracks\TrackEntry\TrickMasterTrackSegmentUID
documentation: The SegmentUID of the Segment containing the track documentation: The SegmentUUID of the Segment containing the track
identified by MasterTrackUID. See [DivXTrickTrack]. identified by MasterTrackUID. See [DivXTrickTrack].
28.33. ContentSignature Element A.33. ContentSignature Element
type / id: binary / 0x47E3 type / id: binary / 0x47E3
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentSignature ntentEncryption\ContentSignature
documentation: A cryptographic signature of the contents. documentation: A cryptographic signature of the contents.
28.34. ContentSigKeyID Element A.34. ContentSigKeyID Element
type / id: binary / 0x47E4 type / id: binary / 0x47E4
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentSigKeyID ntentEncryption\ContentSigKeyID
documentation: This is the ID of the private key the data was signed documentation: This is the ID of the private key that the data was
with. signed with.
28.35. ContentSigAlgo Element A.35. ContentSigAlgo Element
type / id: uinteger / 0x47E5 type / id: uinteger / 0x47E5
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentSigAlgo ntentEncryption\ContentSigAlgo
documentation: The algorithm used for the signature. documentation: The algorithm used for the signature.
28.36. ContentSigHashAlgo Element A.36. ContentSigHashAlgo Element
type / id: uinteger / 0x47E6 type / id: uinteger / 0x47E6
path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co path: \Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding\Co
ntentEncryption\ContentSigHashAlgo ntentEncryption\ContentSigHashAlgo
documentation: The hash algorithm used for the signature. documentation: The hash algorithm used for the signature.
28.37. CueRefCluster Element A.37. CueRefCluster Element
type / id: uinteger / 0x97 type / id: uinteger / 0x97
path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefCl path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefCl
uster uster
documentation: The Segment Position of the Cluster containing the documentation: The Segment Position of the Cluster containing the
referenced Block. referenced Block.
28.38. CueRefNumber Element A.38. CueRefNumber Element
type / id: uinteger / 0x535F type / id: uinteger / 0x535F
path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefNu path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefNu
mber mber
documentation: Number of the referenced Block of Track X in the documentation: Number of the referenced Block of Track X in the
specified Cluster. specified Cluster.
28.39. CueRefCodecState Element A.39. CueRefCodecState Element
type / id: uinteger / 0xEB type / id: uinteger / 0xEB
path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefCo path: \Segment\Cues\CuePoint\CueTrackPositions\CueReference\CueRefCo
decState decState
documentation: The Segment Position of the Codec State corresponding documentation: The Segment Position of the Codec State corresponding
to this referenced Element. 0 means that the data is taken from to this referenced element. 0 means that the data is taken from
the initial Track Entry. the initial TrackEntry.
28.40. FileReferral Element A.40. FileReferral Element
type / id: binary / 0x4675 type / id: binary / 0x4675
path: \Segment\Attachments\AttachedFile\FileReferral path: \Segment\Attachments\AttachedFile\FileReferral
documentation: A binary value that a track/codec can refer to when documentation: A binary value that a track/codec can refer to when
the attachment is needed. the attachment is needed.
28.41. FileUsedStartTime Element A.41. FileUsedStartTime Element
type / id: uinteger / 0x4661 type / id: uinteger / 0x4661
path: \Segment\Attachments\AttachedFile\FileUsedStartTime path: \Segment\Attachments\AttachedFile\FileUsedStartTime
documentation: The timestamp at which this optimized font attachment documentation: The timestamp at which this optimized font attachment
comes into context, expressed in Segment Ticks which is based on comes into context, expressed in Segment Ticks, which are based on
TimestampScale. See [DivXWorldFonts]. TimestampScale. See [DivXWorldFonts].
28.42. FileUsedEndTime Element A.42. FileUsedEndTime Element
type / id: uinteger / 0x4662 type / id: uinteger / 0x4662
path: \Segment\Attachments\AttachedFile\FileUsedEndTime path: \Segment\Attachments\AttachedFile\FileUsedEndTime
documentation: The timestamp at which this optimized font attachment documentation: The timestamp at which this optimized font attachment
goes out of context, expressed in Segment Ticks which is based on goes out of context, expressed in Segment Ticks, which are based
TimestampScale. See [DivXWorldFonts]. on TimestampScale. See [DivXWorldFonts].
28.43. TagDefaultBogus Element A.43. TagDefaultBogus Element
type / id: uinteger / 0x44B4 type / id: uinteger / 0x44B4
path: \Segment\Tags\Tag\+SimpleTag\TagDefaultBogus path: \Segment\Tags\Tag\+SimpleTag\TagDefaultBogus
documentation: A variant of the TagDefault element with a bogus documentation: A variant of the TagDefault element with a bogus
Element ID; see Section 5.1.8.1.2.4. element ID; see Section 5.1.8.1.2.4.
29. Normative References
[BCP47] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
September 2009, <https://www.rfc-editor.org/info/rfc5646>.
[CIE-1931] Commission Internationale de l'Eclairage, "CIE 1931
Standard Colorimetric System", 1931,
<https://en.wikipedia.org/wiki/CIE_1931_color_space>.
[ISO639-2] United States Library Of Congress, "Codes for the
Representation of Names of Languages", ISO 639-2:1998, 21
December 2017, <https://www.loc.gov/standards/iso639-
2/php/code_list.php>.
[ISO9899] International Organization for Standardization,
"Information technology -- Programming languages -- C",
ISO/IEC 9899:2011, 2011,
<https://www.iso.org/standard/57853.html>.
[ITU-H.273]
International Telecommunication Union, "Coding-independent
code points for video signal type identification",
ITU H.273, 24 September 2021,
<https://www.itu.int/rec/T-REC-H.273/en>.
[RFC1950] Deutsch, P. and J. Gailly, "ZLIB Compressed Data Format
Specification version 3.3", RFC 1950,
DOI 10.17487/RFC1950, May 1996,
<https://www.rfc-editor.org/info/rfc1950>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
Unique IDentifier (UUID) URN Namespace", RFC 4122,
DOI 10.17487/RFC4122, July 2005,
<https://www.rfc-editor.org/info/rfc4122>.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
Specifications and Registration Procedures", BCP 13,
RFC 6838, DOI 10.17487/RFC6838, January 2013,
<https://www.rfc-editor.org/info/rfc6838>.
[RFC8081] Lilley, C., "The "font" Top-Level Media Type", RFC 8081,
DOI 10.17487/RFC8081, February 2017,
<https://www.rfc-editor.org/info/rfc8081>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8794] Lhomme, S., Rice, D., and M. Bunkus, "Extensible Binary
Meta Language", RFC 8794, DOI 10.17487/RFC8794, July 2020,
<https://www.rfc-editor.org/info/rfc8794>.
30. Informative References
[AVIFormat]
Microsoft, "AVI RIFF File Reference", 31 May 2018,
<https://docs.microsoft.com/en-
us/windows/win32/directshow/avi-riff-file-reference>.
[Blowfish] Schneier, B., "The Blowfish Encryption Algorithm", 1993,
<https://www.schneier.com/academic/blowfish/>.
[BZIP2] Seward, J., "bzip2", 18 July 1996,
<https://sourceware.org/bzip2/>.
[DivXTrickTrack]
"DivX Trick Track Extensions", 14 December 2010,
<https://web.archive.org/web/20101222001148/
http://labs.divx.com/node/16601>.
[DivXWorldFonts]
"DivX World Fonts Extensions", 14 December 2010,
<https://web.archive.org/web/20110214132246/
http://labs.divx.com/node/16602>.
[DVD-Video]
DVD Forum, "DVD-Books: Part 3 DVD-Video Book", 1 November
1995, <http://www.dvdforum.org/>.
[FIPS.197] US National Institute of Standards and Technology,
"Advanced Encryption Standard (AES)", FIPS PUB 197,
DOI 10.6028/NIST.FIPS.197, 26 November 2001,
<https://csrc.nist.gov/publications/detail/fips/197/
final>.
[FIPS.46-3]
US National Institute of Standards and Technology, "Data
Encryption Standard (DES)", FIPS PUB 46, 25 October 1999,
<https://csrc.nist.gov/publications/detail/fips/46/3/
archive/1999-10-25>.
[FourCC-RGB]
Silicon.dk ApS, "RGB Pixel Format FourCCs",
<https://web.archive.org/web/20160609214806/
https://www.fourcc.org/rgb.php>.
[FourCC-YUV]
Silicon.dk ApS, "YUV Pixel Format FourCCs",
<https://web.archive.org/web/20160609214806/
https://www.fourcc.org/yuv.php>.
[JPEG] International Telegraph and Telephone Consultative
Committee, "Digital Compression and Coding of Continuous-
Tone Still Images", ITU T.81, September 1992,
<https://www.w3.org/Graphics/JPEG/itu-t81.pdf>.
[LZO] Tarreau, W., Rodgman, R., and M. Oberhumer, "Lempel-Ziv-
Oberhumer compression", 30 October 2018,
<https://www.kernel.org/doc/Documentation/lzo.txt>.
[MatroskaCodec]
Lhomme, S., Bunkus, M., and D. Rice, "Media Container
Codec Specifications", Work in Progress, Internet-Draft,
draft-ietf-cellar-codec-10, 12 April 2021,
<https://datatracker.ietf.org/doc/html/draft-ietf-cellar-
codec-10>.
[MatroskaTags]
Lhomme, S., Bunkus, M., and D. Rice, "Matroska Media
Container Tag Specifications", Work in Progress, Internet-
Draft, draft-ietf-cellar-tags-10, 12 April 2021,
<https://datatracker.ietf.org/doc/html/draft-ietf-cellar-
tags-10>.
[MCF] "Media Container Format", 17 July 2002,
<http://mukoli.free.fr/mcf/>.
[MSRGB] Microsoft, "WMF Compression Enumeration",
<https://learn.microsoft.com/en-
us/openspecs/windows_protocols/ms-wmf/4e588f70-bd92-4a6f-
b77f-35d0feaf7a57>.
[MSYUV16] Microsoft, "10-bit and 16-bit YUV Video Formats",
<https://learn.microsoft.com/en-us/windows/win32/
medfound/10-bit-and-16-bit-yuv-video-formats>.
[MSYUV8] Microsoft, "Recommended 8-Bit YUV Formats for Video
Rendering", <https://learn.microsoft.com/en-
us/windows/win32/medfound/recommended-8-bit-yuv-formats-
for-video-rendering>.
[RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol",
STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985,
<https://www.rfc-editor.org/info/rfc959>.
[RFC2083] Boutell, T., "PNG (Portable Network Graphics)
Specification Version 1.0", RFC 2083,
DOI 10.17487/RFC2083, March 1997,
<https://www.rfc-editor.org/info/rfc2083>.
[RFC3533] Pfeiffer, S., "The Ogg Encapsulation Format Version 0",
RFC 3533, DOI 10.17487/RFC3533, May 2003,
<https://www.rfc-editor.org/info/rfc3533>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
[SMB-CIFS] Microsoft Corporation, "Common Internet File System (CIFS)
Protocol", 1 October 2020,
<https://winprotocoldoc.blob.core.windows.net/
productionwindowsarchives/MS-CIFS/%5bMS-CIFS%5d.pdf>.
[SP.800-38A]
US National Institute of Standards and Technology,
"Recommendation for Block Cipher Modes of Operation:
Methods and Techniques", DOI 10.6028/NIST.SP.800-38A, 1
December 2001,
<https://csrc.nist.gov/publications/detail/fips/197/
final>.
[SP.800-67]
US National Institute of Standards and Technology,
"Recommendation for the Triple Data Encryption Algorithm
(TDEA) Block Cipher",
DOI 10.6028/10.6028/NIST.SP.800-67r2, 1 November 2017,
<https://csrc.nist.gov/publications/detail/sp/800-67/rev-
2/final>.
[Twofish] Schneier, B., Kelsey, J., Whiting, D., Wagner, D., Hall,
C., and N. Ferguson, "Twofish: A 128-Bit Block Cipher", 15
June 1998, <https://www.schneier.com/academic/twofish/>.
[WebM-Enc] Galligan, F., "WebM Encryption", 19 September 2016,
<https://www.webmproject.org/docs/webm-encryption/>.
[WebVTT] Pieters, S., Pfeiffer, S., Ed., Jaegenstedt, P., and I.
Hickson, "WebVTT Cue Identifier", 4 April 2019,
<https://www.w3.org/TR/webvtt1/#webvtt-cue-identifier>.
Authors' Addresses Authors' Addresses
Steve Lhomme Steve Lhomme
Email: slhomme@matroska.org Email: slhomme@matroska.org
Moritz Bunkus Moritz Bunkus
Email: moritz@bunkus.org Email: moritz@bunkus.org
Dave Rice Dave Rice
Email: dave@dericed.com Email: dave@dericed.com
 End of changes. 1117 change blocks. 
2642 lines changed or deleted 3232 lines changed or added

This html diff was produced by rfcdiff 1.48.