<
 draft-ietf-cellar-matroska-03.txt   draft-ietf-cellar-matroska-04.txt 
cellar S. Lhomme cellar S. Lhomme
Internet-Draft Internet-Draft
Intended status: Standards Track M. Bunkus Intended status: Informational M. Bunkus
Expires: January 23, 2020 Expires: 29 April 2020
D. Rice D. Rice
July 22, 2019 27 October 2019
Matroska Specifications Matroska Specifications
draft-ietf-cellar-matroska-03 draft-ietf-cellar-matroska-04
Abstract Abstract
This document defines the Matroska audiovisual container, including This document defines the Matroska audiovisual container, including
definitions of its structural elements, as well as its terminology, definitions of its structural elements, as well as its terminology,
vocabulary, and application. vocabulary, and application.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 34 skipping to change at page 1, line 34
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 23, 2020. This Internet-Draft will expire on 29 April 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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 Provisions Relating to IETF Documents (https://trustee.ietf.org/
(https://trustee.ietf.org/license-info) in effect on the date of license-info) in effect on the date of publication of this document.
publication of this document. Please review these documents Please review these documents carefully, as they describe your rights
carefully, as they describe your rights and restrictions with respect and restrictions with respect to this document. Code Components
to this document. Code Components extracted from this document must extracted from this document must include Simplified BSD License text
include Simplified BSD License text as described in Section 4.e of as described in Section 4.e of the Trust Legal Provisions and are
the Trust Legal Provisions and are provided without warranty as provided without warranty as described in the Simplified BSD License.
described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 9 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Status of this document . . . . . . . . . . . . . . . . . . . 10 2. Status of this document . . . . . . . . . . . . . . . . . . . 5
3. Security Considerations . . . . . . . . . . . . . . . . . . . 10 3. Security Considerations . . . . . . . . . . . . . . . . . . . 5
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
5. Notation and Conventions . . . . . . . . . . . . . . . . . . 10 5. Notation and Conventions . . . . . . . . . . . . . . . . . . 6
6. Basis in EBML . . . . . . . . . . . . . . . . . . . . . . . . 11 6. Basis in EBML . . . . . . . . . . . . . . . . . . . . . . . . 6
6.1. Added Constraints on EBML . . . . . . . . . . . . . . . . 11 6.1. Added Constraints on EBML . . . . . . . . . . . . . . . . 6
6.2. Matroska Design . . . . . . . . . . . . . . . . . . . . . 11 6.2. Matroska Design . . . . . . . . . . . . . . . . . . . . . 7
6.2.1. Language Codes . . . . . . . . . . . . . . . . . . . 11 6.2.1. Language Codes . . . . . . . . . . . . . . . . . . . 7
6.2.2. Physical Types . . . . . . . . . . . . . . . . . . . 12 6.2.2. Physical Types . . . . . . . . . . . . . . . . . . . 7
6.2.3. Block Structure . . . . . . . . . . . . . . . . . . . 13 6.2.3. Block Structure . . . . . . . . . . . . . . . . . . . 8
6.2.3.1. Block Header . . . . . . . . . . . . . . . . . . 13 6.2.4. Lacing . . . . . . . . . . . . . . . . . . . . . . . 10
6.2.3.2. Block Header Flags . . . . . . . . . . . . . . . 13 7. Matroska Structure . . . . . . . . . . . . . . . . . . . . . 14
6.2.4. Lacing . . . . . . . . . . . . . . . . . . . . . . . 13 8. Matroska Additions to Schema Element Attributes . . . . . . . 23
6.2.4.1. Xiph lacing . . . . . . . . . . . . . . . . . . . 14 9. Matroska Schema . . . . . . . . . . . . . . . . . . . . . . . 24
6.2.4.2. EBML lacing . . . . . . . . . . . . . . . . . . . 14 9.1. EBMLMaxIDLength Element . . . . . . . . . . . . . . . . . 24
6.2.4.3. Fixed-size lacing . . . . . . . . . . . . . . . . 15 9.2. EBMLMaxSizeLength Element . . . . . . . . . . . . . . . . 24
6.2.4.4. SimpleBlock Structure . . . . . . . . . . . . . . 16 9.3. Segment Element . . . . . . . . . . . . . . . . . . . . . 25
6.2.4.4.1. SimpleBlock Header . . . . . . . . . . . . . 16 9.3.1. SeekHead Element . . . . . . . . . . . . . . . . . . 25
6.2.4.4.2. SimpleBlock Header Flags . . . . . . . . . . 16 9.3.2. Info Element . . . . . . . . . . . . . . . . . . . . 26
6.2.4.5. Laced Data . . . . . . . . . . . . . . . . . . . 17 9.3.3. Cluster Element . . . . . . . . . . . . . . . . . . . 33
7. Matroska Structure . . . . . . . . . . . . . . . . . . . . . 17 9.3.4. Tracks Element . . . . . . . . . . . . . . . . . . . 45
8. Matroska Additions to Schema Element Attributes . . . . . . . 26 9.3.5. Cues Element . . . . . . . . . . . . . . . . . . . . 106
9. Matroska Schema . . . . . . . . . . . . . . . . . . . . . . . 27 9.3.6. Attachments Element . . . . . . . . . . . . . . . . . 112
9.1. EBMLMaxIDLength Element . . . . . . . . . . . . . . . . . 27 9.3.7. Chapters Element . . . . . . . . . . . . . . . . . . 115
9.2. EBMLMaxSizeLength Element . . . . . . . . . . . . . . . . 27 9.3.8. Tags Element . . . . . . . . . . . . . . . . . . . . 127
9.3. Segment Element . . . . . . . . . . . . . . . . . . . . . 28 10. Matroska Element Ordering . . . . . . . . . . . . . . . . . . 134
9.3.1. SeekHead Element . . . . . . . . . . . . . . . . . . 28 10.1. Top-Level Elements . . . . . . . . . . . . . . . . . . . 134
9.3.1.1. Seek Element . . . . . . . . . . . . . . . . . . 28 10.2. CRC-32 . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.3.1.1.1. SeekID Element . . . . . . . . . . . . . . . 29 10.3. SeekHead . . . . . . . . . . . . . . . . . . . . . . . . 135
9.3.1.1.2. SeekPosition Element . . . . . . . . . . . . 29 10.4. Cues (index) . . . . . . . . . . . . . . . . . . . . . . 135
9.3.2. Info Element . . . . . . . . . . . . . . . . . . . . 29 10.5. Info . . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.3.2.1. SegmentUID Element . . . . . . . . . . . . . . . 30 10.6. Chapters Element . . . . . . . . . . . . . . . . . . . . 136
9.3.2.2. SegmentFilename Element . . . . . . . . . . . . . 30 10.7. Attachments . . . . . . . . . . . . . . . . . . . . . . 136
9.3.2.3. PrevUID Element . . . . . . . . . . . . . . . . . 30 10.8. Tags . . . . . . . . . . . . . . . . . . . . . . . . . . 136
9.3.2.4. PrevFilename Element . . . . . . . . . . . . . . 31 10.9. Optimum layout from a muxer . . . . . . . . . . . . . . 136
9.3.2.5. NextUID Element . . . . . . . . . . . . . . . . . 31 10.10. Optimum layout after editing tags . . . . . . . . . . . 137
9.3.2.6. NextFilename Element . . . . . . . . . . . . . . 32 10.11. Optimum layout with Cues at the front . . . . . . . . . 137
9.3.2.7. SegmentFamily Element . . . . . . . . . . . . . . 32 10.12. Cluster Timestamp . . . . . . . . . . . . . . . . . . . 137
9.3.2.8. ChapterTranslate Element . . . . . . . . . . . . 32 11. Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . 138
9.3.2.8.1. ChapterTranslateEditionUID Element . . . . . 33 11.1. Edition and Chapter Flags . . . . . . . . . . . . . . . 138
9.3.2.8.2. ChapterTranslateCodec Element . . . . . . . . 33 11.1.1. Chapter Flags . . . . . . . . . . . . . . . . . . . 138
9.3.2.8.3. ChapterTranslateID Element . . . . . . . . . 33 11.1.2. Edition Flags . . . . . . . . . . . . . . . . . . . 138
9.3.2.9. TimestampScale Element . . . . . . . . . . . . . 34 11.2. Menu features . . . . . . . . . . . . . . . . . . . . . 140
9.3.2.10. Duration Element . . . . . . . . . . . . . . . . 34 11.2.1. Matroska Script (0) . . . . . . . . . . . . . . . . 140
9.3.2.11. DateUTC Element . . . . . . . . . . . . . . . . . 35 11.2.2. DVD menu (1) . . . . . . . . . . . . . . . . . . . . 141
9.3.2.12. Title Element . . . . . . . . . . . . . . . . . . 35
9.3.2.13. MuxingApp Element . . . . . . . . . . . . . . . . 35 11.3. Example 1 : basic chaptering . . . . . . . . . . . . . . 142
9.3.2.14. WritingApp Element . . . . . . . . . . . . . . . 36 11.4. Example 2 : nested chapters . . . . . . . . . . . . . . 142
9.3.3. Cluster Element . . . . . . . . . . . . . . . . . . . 36 11.4.1. The Micronauts "Bleep To Bleep" . . . . . . . . . . 143
9.3.3.1. Timestamp Element . . . . . . . . . . . . . . . . 36 12. Attachments . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.3.3.2. SilentTracks Element . . . . . . . . . . . . . . 37 12.1. Cover Art . . . . . . . . . . . . . . . . . . . . . . . 143
9.3.3.2.1. SilentTrackNumber Element . . . . . . . . . . 37 13. Cues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
9.3.3.3. Position Element . . . . . . . . . . . . . . . . 37 13.1. Recommendations . . . . . . . . . . . . . . . . . . . . 144
9.3.3.4. PrevSize Element . . . . . . . . . . . . . . . . 38 14. Matroska Streaming . . . . . . . . . . . . . . . . . . . . . 145
9.3.3.5. SimpleBlock Element . . . . . . . . . . . . . . . 38 14.1. File Access . . . . . . . . . . . . . . . . . . . . . . 145
9.3.3.6. BlockGroup Element . . . . . . . . . . . . . . . 38 14.2. Livestreaming . . . . . . . . . . . . . . . . . . . . . 146
9.3.3.6.1. Block Element . . . . . . . . . . . . . . . . 39 15. Menu Specifications . . . . . . . . . . . . . . . . . . . . . 146
9.3.3.6.2. BlockVirtual Element . . . . . . . . . . . . 39 15.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 147
9.3.3.6.3. BlockAdditions Element . . . . . . . . . . . 39 15.1.1. Highlights/Hotspots . . . . . . . . . . . . . . . . 147
9.3.3.6.3.1. BlockMore Element . . . . . . . . . . . . 40 15.1.2. Playback features . . . . . . . . . . . . . . . . . 148
9.3.3.6.3.2. BlockAddID Element . . . . . . . . . . . 40 15.1.3. Player requirements . . . . . . . . . . . . . . . . 148
9.3.3.6.3.3. BlockAdditional Element . . . . . . . . . 40 15.2. Working Graph . . . . . . . . . . . . . . . . . . . . . 148
9.3.3.6.4. BlockDuration Element . . . . . . . . . . . . 41 16. Unknown elements . . . . . . . . . . . . . . . . . . . . . . 149
9.3.3.6.5. ReferencePriority Element . . . . . . . . . . 41 17. Default Values . . . . . . . . . . . . . . . . . . . . . . . 149
9.3.3.6.6. ReferenceBlock Element . . . . . . . . . . . 42 18. DefaultDecodedFieldDuration . . . . . . . . . . . . . . . . . 149
9.3.3.6.7. ReferenceVirtual Element . . . . . . . . . . 42 19. Encryption . . . . . . . . . . . . . . . . . . . . . . . . . 150
9.3.3.6.8. CodecState Element . . . . . . . . . . . . . 42 20. Image Presentation . . . . . . . . . . . . . . . . . . . . . 150
9.3.3.6.9. DiscardPadding Element . . . . . . . . . . . 43 20.1. Cropping . . . . . . . . . . . . . . . . . . . . . . . . 150
9.3.3.6.10. Slices Element . . . . . . . . . . . . . . . 43 20.2. Rotation . . . . . . . . . . . . . . . . . . . . . . . . 151
9.3.3.6.10.1. TimeSlice Element . . . . . . . . . . . 43 21. Matroska versioning . . . . . . . . . . . . . . . . . . . . . 151
9.3.3.6.10.2. LaceNumber Element . . . . . . . . . . . 44 22. MIME Types . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.3.3.6.10.3. FrameNumber Element . . . . . . . . . . 44 23. Segment Position . . . . . . . . . . . . . . . . . . . . . . 152
9.3.3.6.10.4. BlockAdditionID Element . . . . . . . . 45 23.1. Segment Position Exception . . . . . . . . . . . . . . . 152
9.3.3.6.10.5. Delay Element . . . . . . . . . . . . . 45 23.2. Example of Segment Position . . . . . . . . . . . . . . 152
9.3.3.6.10.6. SliceDuration Element . . . . . . . . . 46 24. Linked Segments . . . . . . . . . . . . . . . . . . . . . . . 153
9.3.3.6.11. ReferenceFrame Element . . . . . . . . . . . 46 24.1. Hard Linking . . . . . . . . . . . . . . . . . . . . . . 153
9.3.3.6.11.1. ReferenceOffset Element . . . . . . . . 46 24.2. Medium Linking . . . . . . . . . . . . . . . . . . . . . 155
9.3.3.6.11.2. ReferenceTimestamp Element . . . . . . . 47 24.3. Soft Linking . . . . . . . . . . . . . . . . . . . . . . 155
9.3.3.7. EncryptedBlock Element . . . . . . . . . . . . . 47 25. Track Flags . . . . . . . . . . . . . . . . . . . . . . . . . 156
9.3.4. Tracks Element . . . . . . . . . . . . . . . . . . . 48 25.1. Default flag . . . . . . . . . . . . . . . . . . . . . . 156
9.3.4.1. TrackEntry Element . . . . . . . . . . . . . . . 48 25.2. Forced flag . . . . . . . . . . . . . . . . . . . . . . 156
9.3.4.1.1. TrackNumber Element . . . . . . . . . . . . . 48 25.3. Track Operation . . . . . . . . . . . . . . . . . . . . 156
9.3.4.1.2. TrackUID Element . . . . . . . . . . . . . . 49 25.4. Overlay Track . . . . . . . . . . . . . . . . . . . . . 157
9.3.4.1.3. TrackType Element . . . . . . . . . . . . . . 49 25.5. Multi-planar and 3D videos . . . . . . . . . . . . . . . 157
9.3.4.1.4. FlagEnabled Element . . . . . . . . . . . . . 50 26. Timestamps . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.3.4.1.5. FlagDefault Element . . . . . . . . . . . . . 50 26.1. Timestamp Types . . . . . . . . . . . . . . . . . . . . 158
9.3.4.1.6. FlagForced Element . . . . . . . . . . . . . 51 26.2. Block Timestamps . . . . . . . . . . . . . . . . . . . . 158
9.3.4.1.7. FlagLacing Element . . . . . . . . . . . . . 51 26.3. Raw Timestamp . . . . . . . . . . . . . . . . . . . . . 158
9.3.4.1.8. MinCache Element . . . . . . . . . . . . . . 52 26.4. TimestampScale . . . . . . . . . . . . . . . . . . . . . 159
9.3.4.1.9. MaxCache Element . . . . . . . . . . . . . . 52 26.5. TimestampScale Rounding . . . . . . . . . . . . . . . . 159
9.3.4.1.10. DefaultDuration Element . . . . . . . . . . . 52 26.6. TrackTimestampScale . . . . . . . . . . . . . . . . . . 161
9.3.4.1.11. DefaultDecodedFieldDuration Element . . . . . 53 27. Normative References . . . . . . . . . . . . . . . . . . . . 163
9.3.4.1.12. TrackTimestampScale Element . . . . . . . . . 53 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 163
9.3.4.1.13. TrackOffset Element . . . . . . . . . . . . . 54
9.3.4.1.14. MaxBlockAdditionID Element . . . . . . . . . 54
9.3.4.1.15. Name Element . . . . . . . . . . . . . . . . 55
9.3.4.1.16. Language Element . . . . . . . . . . . . . . 55
9.3.4.1.17. LanguageIETF Element . . . . . . . . . . . . 55
9.3.4.1.18. CodecID Element . . . . . . . . . . . . . . . 56
9.3.4.1.19. CodecPrivate Element . . . . . . . . . . . . 56
9.3.4.1.20. CodecName Element . . . . . . . . . . . . . . 56
9.3.4.1.21. AttachmentLink Element . . . . . . . . . . . 57
9.3.4.1.22. CodecSettings Element . . . . . . . . . . . . 57
9.3.4.1.23. CodecInfoURL Element . . . . . . . . . . . . 57
9.3.4.1.24. CodecDownloadURL Element . . . . . . . . . . 58
9.3.4.1.25. CodecDecodeAll Element . . . . . . . . . . . 58
9.3.4.1.26. TrackOverlay Element . . . . . . . . . . . . 58
9.3.4.1.27. CodecDelay Element . . . . . . . . . . . . . 59
9.3.4.1.28. SeekPreRoll Element . . . . . . . . . . . . . 59
9.3.4.1.29. TrackTranslate Element . . . . . . . . . . . 60
9.3.4.1.29.1. TrackTranslateEditionUID Element . . . . 60
9.3.4.1.29.2. TrackTranslateCodec Element . . . . . . 60
9.3.4.1.29.3. TrackTranslateTrackID Element . . . . . 61
9.3.4.1.30. Video Element . . . . . . . . . . . . . . . . 61
9.3.4.1.30.1. FlagInterlaced Element . . . . . . . . . 61
9.3.4.1.30.2. FieldOrder Element . . . . . . . . . . . 62
9.3.4.1.30.3. StereoMode Element . . . . . . . . . . . 63
9.3.4.1.30.4. AlphaMode Element . . . . . . . . . . . 64
9.3.4.1.30.5. OldStereoMode Element . . . . . . . . . 64
9.3.4.1.30.6. PixelWidth Element . . . . . . . . . . . 65
9.3.4.1.30.7. PixelHeight Element . . . . . . . . . . 65
9.3.4.1.30.8. PixelCropBottom Element . . . . . . . . 66
9.3.4.1.30.9. PixelCropTop Element . . . . . . . . . . 66
9.3.4.1.30.10. PixelCropLeft Element . . . . . . . . . 66
9.3.4.1.30.11. PixelCropRight Element . . . . . . . . . 67
9.3.4.1.30.12. DisplayWidth Element . . . . . . . . . . 67
9.3.4.1.30.13. DisplayHeight Element . . . . . . . . . 68
9.3.4.1.30.14. DisplayUnit Element . . . . . . . . . . 68
9.3.4.1.30.15. AspectRatioType Element . . . . . . . . 69
9.3.4.1.30.16. ColourSpace Element . . . . . . . . . . 69
9.3.4.1.30.17. GammaValue Element . . . . . . . . . . . 69
9.3.4.1.30.18. FrameRate Element . . . . . . . . . . . 70
9.3.4.1.30.19. Colour Element . . . . . . . . . . . . . 70
9.3.4.1.30.20. MatrixCoefficients Element . . . . . . . 71
9.3.4.1.30.21. BitsPerChannel Element . . . . . . . . . 72
9.3.4.1.30.22. ChromaSubsamplingHorz Element . . . . . 72
9.3.4.1.30.23. ChromaSubsamplingVert Element . . . . . 72
9.3.4.1.30.24. CbSubsamplingHorz Element . . . . . . . 73
9.3.4.1.30.25. CbSubsamplingVert Element . . . . . . . 73
9.3.4.1.30.26. ChromaSitingHorz Element . . . . . . . . 74
9.3.4.1.30.27. ChromaSitingVert Element . . . . . . . . 74
9.3.4.1.30.28. Range Element . . . . . . . . . . . . . 75
9.3.4.1.30.29. TransferCharacteristics Element . . . . 75
9.3.4.1.30.30. Primaries Element . . . . . . . . . . . 76
9.3.4.1.30.31. MaxCLL Element . . . . . . . . . . . . . 77
9.3.4.1.30.32. MaxFALL Element . . . . . . . . . . . . 78
9.3.4.1.30.33. MasteringMetadata Element . . . . . . . 78
9.3.4.1.30.34. PrimaryRChromaticityX Element . . . . . 78
9.3.4.1.30.35. PrimaryRChromaticityY Element . . . . . 79
9.3.4.1.30.36. PrimaryGChromaticityX Element . . . . . 79
9.3.4.1.30.37. PrimaryGChromaticityY Element . . . . . 80
9.3.4.1.30.38. PrimaryBChromaticityX Element . . . . . 80
9.3.4.1.30.39. PrimaryBChromaticityY Element . . . . . 80
9.3.4.1.30.40. WhitePointChromaticityX Element . . . . 81
9.3.4.1.30.41. WhitePointChromaticityY Element . . . . 81
9.3.4.1.30.42. LuminanceMax Element . . . . . . . . . . 82
9.3.4.1.30.43. LuminanceMin Element . . . . . . . . . . 82
9.3.4.1.30.44. Projection Element . . . . . . . . . . . 82
9.3.4.1.30.45. ProjectionType Element . . . . . . . . . 83
9.3.4.1.30.46. ProjectionPrivate Element . . . . . . . 83
9.3.4.1.30.47. ProjectionPoseYaw Element . . . . . . . 84
9.3.4.1.30.48. ProjectionPosePitch Element . . . . . . 85
9.3.4.1.30.49. ProjectionPoseRoll Element . . . . . . . 85
9.3.4.1.31. Audio Element . . . . . . . . . . . . . . . . 86
9.3.4.1.31.1. SamplingFrequency Element . . . . . . . 86
9.3.4.1.31.2. OutputSamplingFrequency Element . . . . 86
9.3.4.1.31.3. Channels Element . . . . . . . . . . . . 87
9.3.4.1.31.4. ChannelPositions Element . . . . . . . . 87
9.3.4.1.31.5. BitDepth Element . . . . . . . . . . . . 88
9.3.4.1.32. TrackOperation Element . . . . . . . . . . . 88
9.3.4.1.32.1. TrackCombinePlanes Element . . . . . . . 88
9.3.4.1.32.2. TrackPlane Element . . . . . . . . . . . 89
9.3.4.1.32.3. TrackPlaneUID Element . . . . . . . . . 89
9.3.4.1.32.4. TrackPlaneType Element . . . . . . . . . 90
9.3.4.1.32.5. TrackJoinBlocks Element . . . . . . . . 90
9.3.4.1.32.6. TrackJoinUID Element . . . . . . . . . . 91
9.3.4.1.33. TrickTrackUID Element . . . . . . . . . . . . 91
9.3.4.1.34. TrickTrackSegmentUID Element . . . . . . . . 91
9.3.4.1.35. TrickTrackFlag Element . . . . . . . . . . . 92
9.3.4.1.36. TrickMasterTrackUID Element . . . . . . . . . 92
9.3.4.1.37. TrickMasterTrackSegmentUID Element . . . . . 93
9.3.4.1.38. ContentEncodings Element . . . . . . . . . . 93
9.3.4.1.38.1. ContentEncoding Element . . . . . . . . 93
9.3.4.1.38.2. ContentEncodingOrder Element . . . . . . 94
9.3.4.1.38.3. ContentEncodingScope Element . . . . . . 94
9.3.4.1.38.4. ContentEncodingType Element . . . . . . 95
9.3.4.1.38.5. ContentCompression Element . . . . . . . 95
9.3.4.1.38.6. ContentCompAlgo Element . . . . . . . . 96
9.3.4.1.38.7. ContentCompSettings Element . . . . . . 96
9.3.4.1.38.8. ContentEncryption Element . . . . . . . 97
9.3.4.1.38.9. ContentEncAlgo Element . . . . . . . . . 97
9.3.4.1.38.10. ContentEncKeyID Element . . . . . . . . 98
9.3.4.1.38.11. ContentEncAESSettings Element . . . . . 98
9.3.4.1.38.12. AESSettingsCipherMode Element . . . . . 99
9.3.4.1.38.13. ContentSignature Element . . . . . . . . 99
9.3.4.1.38.14. ContentSigKeyID Element . . . . . . . . 99
9.3.4.1.38.15. ContentSigAlgo Element . . . . . . . . . 100
9.3.4.1.38.16. ContentSigHashAlgo Element . . . . . . . 100
9.3.5. Cues Element . . . . . . . . . . . . . . . . . . . . 101
9.3.5.1. CuePoint Element . . . . . . . . . . . . . . . . 101
9.3.5.1.1. CueTime Element . . . . . . . . . . . . . . . 102
9.3.5.1.2. CueTrackPositions Element . . . . . . . . . . 102
9.3.5.1.2.1. CueTrack Element . . . . . . . . . . . . 102
9.3.5.1.2.2. CueClusterPosition Element . . . . . . . 103
9.3.5.1.2.3. CueRelativePosition Element . . . . . . . 103
9.3.5.1.2.4. CueDuration Element . . . . . . . . . . . 103
9.3.5.1.2.5. CueBlockNumber Element . . . . . . . . . 104
9.3.5.1.2.6. CueCodecState Element . . . . . . . . . . 104
9.3.5.1.2.7. CueReference Element . . . . . . . . . . 105
9.3.5.1.2.8. CueRefTime Element . . . . . . . . . . . 105
9.3.5.1.2.9. CueRefCluster Element . . . . . . . . . . 105
9.3.5.1.2.10. CueRefNumber Element . . . . . . . . . . 106
9.3.5.1.2.11. CueRefCodecState Element . . . . . . . . 106
9.3.6. Attachments Element . . . . . . . . . . . . . . . . . 107
9.3.6.1. AttachedFile Element . . . . . . . . . . . . . . 107
9.3.6.1.1. FileDescription Element . . . . . . . . . . . 107
9.3.6.1.2. FileName Element . . . . . . . . . . . . . . 108
9.3.6.1.3. FileMimeType Element . . . . . . . . . . . . 108
9.3.6.1.4. FileData Element . . . . . . . . . . . . . . 108
9.3.6.1.5. FileUID Element . . . . . . . . . . . . . . . 109
9.3.6.1.6. FileReferral Element . . . . . . . . . . . . 109
9.3.6.1.7. FileUsedStartTime Element . . . . . . . . . . 109
9.3.6.1.8. FileUsedEndTime Element . . . . . . . . . . . 110
9.3.7. Chapters Element . . . . . . . . . . . . . . . . . . 110
9.3.7.1. EditionEntry Element . . . . . . . . . . . . . . 110
9.3.7.1.1. EditionUID Element . . . . . . . . . . . . . 111
9.3.7.1.2. EditionFlagHidden Element . . . . . . . . . . 111
9.3.7.1.3. EditionFlagDefault Element . . . . . . . . . 112
9.3.7.1.4. EditionFlagOrdered Element . . . . . . . . . 112
9.3.7.1.5. ChapterAtom Element . . . . . . . . . . . . . 112
9.3.7.1.5.1. ChapterUID Element . . . . . . . . . . . 113
9.3.7.1.5.2. ChapterStringUID Element . . . . . . . . 113
9.3.7.1.5.3. ChapterTimeStart Element . . . . . . . . 113
9.3.7.1.5.4. ChapterTimeEnd Element . . . . . . . . . 114
9.3.7.1.5.5. ChapterFlagHidden Element . . . . . . . . 114
9.3.7.1.5.6. ChapterFlagEnabled Element . . . . . . . 115
9.3.7.1.5.7. ChapterSegmentUID Element . . . . . . . . 115
9.3.7.1.5.8. ChapterSegmentEditionUID Element . . . . 116
9.3.7.1.5.9. ChapterPhysicalEquiv Element . . . . . . 116
9.3.7.1.5.10. ChapterTrack Element . . . . . . . . . . 116
9.3.7.1.5.11. ChapterTrackNumber Element . . . . . . . 117
9.3.7.1.5.12. ChapterDisplay Element . . . . . . . . . 117
9.3.7.1.5.13. ChapString Element . . . . . . . . . . . 117
9.3.7.1.5.14. ChapLanguage Element . . . . . . . . . . 118
9.3.7.1.5.15. ChapLanguageIETF Element . . . . . . . . 118
9.3.7.1.5.16. ChapCountry Element . . . . . . . . . . . 119
9.3.7.1.5.17. ChapProcess Element . . . . . . . . . . . 119
9.3.7.1.5.18. ChapProcessCodecID Element . . . . . . . 119
9.3.7.1.5.19. ChapProcessPrivate Element . . . . . . . 120
9.3.7.1.5.20. ChapProcessCommand Element . . . . . . . 120
9.3.7.1.5.21. ChapProcessTime Element . . . . . . . . . 120
9.3.7.1.5.22. ChapProcessData Element . . . . . . . . . 121
9.3.8. Tags Element . . . . . . . . . . . . . . . . . . . . 121
9.3.8.1. Tag Element . . . . . . . . . . . . . . . . . . . 122
9.3.8.1.1. Targets Element . . . . . . . . . . . . . . . 122
9.3.8.1.1.1. TargetTypeValue Element . . . . . . . . . 122
9.3.8.1.1.2. TargetType Element . . . . . . . . . . . 123
9.3.8.1.1.3. TagTrackUID Element . . . . . . . . . . . 124
9.3.8.1.1.4. TagEditionUID Element . . . . . . . . . . 124
9.3.8.1.1.5. TagChapterUID Element . . . . . . . . . . 125
9.3.8.1.1.6. TagAttachmentUID Element . . . . . . . . 125
9.3.8.1.2. SimpleTag Element . . . . . . . . . . . . . . 125
9.3.8.1.2.1. TagName Element . . . . . . . . . . . . . 126
9.3.8.1.2.2. TagLanguage Element . . . . . . . . . . . 126
9.3.8.1.2.3. TagLanguageIETF Element . . . . . . . . . 127
9.3.8.1.2.4. TagDefault Element . . . . . . . . . . . 127
9.3.8.1.2.5. TagString Element . . . . . . . . . . . . 127
9.3.8.1.2.6. TagBinary Element . . . . . . . . . . . . 128
10. Matroska Element Ordering . . . . . . . . . . . . . . . . . . 128
10.1. Top-Level Elements . . . . . . . . . . . . . . . . . . . 128
10.2. CRC-32 . . . . . . . . . . . . . . . . . . . . . . . . . 129
10.3. SeekHead . . . . . . . . . . . . . . . . . . . . . . . . 129
10.4. Cues (index) . . . . . . . . . . . . . . . . . . . . . . 129
10.5. Info . . . . . . . . . . . . . . . . . . . . . . . . . . 129
10.6. Chapters Element . . . . . . . . . . . . . . . . . . . . 130
10.7. Attachments . . . . . . . . . . . . . . . . . . . . . . 130
10.8. Tags . . . . . . . . . . . . . . . . . . . . . . . . . . 130
10.9. Optimum layout from a muxer . . . . . . . . . . . . . . 130
10.10. Optimum layout after editing tags . . . . . . . . . . . 131
10.11. Optimum layout with Cues at the front . . . . . . . . . 131
10.12. Cluster Timestamp . . . . . . . . . . . . . . . . . . . 131
11. Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.1. Edition and Chapter Flags . . . . . . . . . . . . . . . 132
11.1.1. Chapter Flags . . . . . . . . . . . . . . . . . . . 132
11.1.2. Edition Flags . . . . . . . . . . . . . . . . . . . 132
11.1.2.1. EditionFlagHidden . . . . . . . . . . . . . . . 132
11.1.2.2. EditionFlagDefault . . . . . . . . . . . . . . . 133
11.1.2.3. EditionFlagOrdered . . . . . . . . . . . . . . . 133
11.1.2.3.1. Ordered-Edition and Matroska Segment-Linking 134
11.2. Menu features . . . . . . . . . . . . . . . . . . . . . 134
11.2.1. Matroska Script (0) . . . . . . . . . . . . . . . . 134
11.2.2. DVD menu (1) . . . . . . . . . . . . . . . . . . . . 135
11.3. Example 1 : basic chaptering . . . . . . . . . . . . . . 136
11.4. Example 2 : nested chapters . . . . . . . . . . . . . . 138
11.4.1. The Micronauts "Bleep To Bleep" . . . . . . . . . . 138
12. Attachments . . . . . . . . . . . . . . . . . . . . . . . . . 141
12.1. Cover Art . . . . . . . . . . . . . . . . . . . . . . . 141
13. Cues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
13.1. Recommendations . . . . . . . . . . . . . . . . . . . . 142
14. Matroska Streaming . . . . . . . . . . . . . . . . . . . . . 143
14.1. File Access . . . . . . . . . . . . . . . . . . . . . . 143
14.2. Livestreaming . . . . . . . . . . . . . . . . . . . . . 144
15. Menu Specifications . . . . . . . . . . . . . . . . . . . . . 144
15.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 145
15.1.1. Highlights/Hotspots . . . . . . . . . . . . . . . . 145
15.1.2. Playback features . . . . . . . . . . . . . . . . . 146
15.1.3. Player requirements . . . . . . . . . . . . . . . . 146
15.2. Working Graph . . . . . . . . . . . . . . . . . . . . . 146
16. Unknown elements . . . . . . . . . . . . . . . . . . . . . . 147
17. Default Values . . . . . . . . . . . . . . . . . . . . . . . 147
18. DefaultDecodedFieldDuration . . . . . . . . . . . . . . . . . 147
19. Encryption . . . . . . . . . . . . . . . . . . . . . . . . . 148
20. Image Presentation . . . . . . . . . . . . . . . . . . . . . 148
20.1. Cropping . . . . . . . . . . . . . . . . . . . . . . . . 148
20.2. Rotation . . . . . . . . . . . . . . . . . . . . . . . . 149
21. Matroska versioning . . . . . . . . . . . . . . . . . . . . . 149
22. MIME Types . . . . . . . . . . . . . . . . . . . . . . . . . 150
23. Segment Position . . . . . . . . . . . . . . . . . . . . . . 150
23.1. Segment Position Exception . . . . . . . . . . . . . . . 150
23.2. Example of Segment Position . . . . . . . . . . . . . . 150
24. Linked Segments . . . . . . . . . . . . . . . . . . . . . . . 151
24.1. Hard Linking . . . . . . . . . . . . . . . . . . . . . . 151
24.2. Medium Linking . . . . . . . . . . . . . . . . . . . . . 152
24.3. Soft Linking . . . . . . . . . . . . . . . . . . . . . . 152
25. Track Flags . . . . . . . . . . . . . . . . . . . . . . . . . 153
25.1. Default flag . . . . . . . . . . . . . . . . . . . . . . 153
25.2. Forced flag . . . . . . . . . . . . . . . . . . . . . . 153
25.3. Track Operation . . . . . . . . . . . . . . . . . . . . 153
25.4. Overlay Track . . . . . . . . . . . . . . . . . . . . . 154
25.5. Multi-planar and 3D videos . . . . . . . . . . . . . . . 154
26. Timestamps . . . . . . . . . . . . . . . . . . . . . . . . . 155
26.1. Timestamp Types . . . . . . . . . . . . . . . . . . . . 155
26.2. Block Timestamps . . . . . . . . . . . . . . . . . . . . 155
26.3. Raw Timestamp . . . . . . . . . . . . . . . . . . . . . 155
26.4. TimestampScale . . . . . . . . . . . . . . . . . . . . . 155
26.5. TimestampScale Rounding . . . . . . . . . . . . . . . . 156
26.6. TrackTimestampScale . . . . . . . . . . . . . . . . . . 158
27.1. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 160
1. Introduction 1. Introduction
Matroska aims to become THE standard of multimedia container formats. Matroska aims to become THE standard of multimedia container formats.
It was derived from a project called MCF [1], but differentiates from It was derived from a project called MCF (http://mukoli.free.fr/mcf/
it significantly because it is based on EBML [2] (Extensible Binary mcf.html), but differentiates from it significantly because it is
based on EBML (https://github.com/Matroska-Org/ebml-
specification/blob/master/specification.markdown) (Extensible Binary
Meta Language), a binary derivative of XML. EBML enables significant Meta Language), a binary derivative of XML. EBML enables significant
advantages in terms of future format extensibility, without breaking advantages in terms of future format extensibility, without breaking
file support in old parsers. file support in old parsers.
First, it is essential to clarify exactly "What an Audio/Video First, it is essential to clarify exactly "What an Audio/Video
container is", to avoid any misunderstandings: container is", to avoid any misunderstandings:
o It is NOT a video or audio compression format (codec) * It is NOT a video or audio compression format (codec)
o It is an envelope for which there can be many audio, video and * It is an envelope for 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 like: features like:
o Fast seeking in the file * Fast seeking in the file
o Chapter entries * Chapter entries
o Full metadata (tags) support * Full metadata (tags) support
o Selectable subtitle/audio/video streams * Selectable subtitle/audio/video streams
o Modularly expandable * Modularly expandable
o Error resilience (can recover playback even when the stream is * Error resilience (can recover playback even when the stream is
damaged) damaged)
o Streamable over the internet and local networks (HTTP, CIFS, FTP, * Streamable over the internet and local networks (HTTP, CIFS, FTP,
etc) etc)
o Menus (like DVDs have) * Menus (like DVDs have)
Matroska is an open standards project. This means for personal use Matroska is an open standards project. This means for personal use
it is absolutely free to use and that the technical specifications it is absolutely free to use and that the technical specifications
describing the bitstream are open to everybody, even to companies describing the bitstream are open to everybody, even to companies
that would like to support it in their products. that would like to support it in their products.
2. Status of this document 2. Status of this document
This document is a work-in-progress specification defining the This document is a work-in-progress specification defining the
Matroska file format as part of the IETF Cellar working group [3]. Matroska file format as part of the IETF Cellar working group
But since it's quite complete it is used as a reference for the (https://datatracker.ietf.org/wg/cellar/charter/). But since it's
development of libmatroska. Legacy versions of the specification can quite complete it is used as a reference for the development of
be found here [4] (PDF doc by Alexander Noe -- outdated). libmatroska. Legacy versions of the specification can be found here
(https://matroska.org/files/matroska.pdf) (PDF doc by Alexander Noe
-- outdated).
For a simplified diagram of the layout of a Matroska file, see the For a simplified diagram of the layout of a Matroska file, see the
Diagram page [5]. Diagram page (diagram.md).
A more refined and detailed version of the EBML specifications is A more refined and detailed version of the EBML specifications is
being worked on here [6]. being worked on here (https://github.com/Matroska-Org/ebml-
specification/blob/master/specification.markdown).
The table found below is now generated from the "source" of the The table found below is now generated from the "source" of the
Matroska specification. This XML file [7] is also used to generate Matroska specification. This XML file (https://github.com/Matroska-
the semantic data used in libmatroska and libmatroska2. We encourage Org/foundation-source/blob/master/spectool/specdata.xml) is also used
anyone to use and monitor its changes so your code is spec-proof and to generate the semantic data used in libmatroska and libmatroska2.
always up to date. We encourage anyone to use and monitor its changes so your code is
spec-proof and always up to date.
Note that versions 1, 2 and 3 have been finalized. Version 4 is Note that versions 1, 2 and 3 have been finalized. Version 4 is
currently work in progress. There MAY be further additions to v4. currently work in progress. There MAY be further additions to v4.
3. Security Considerations 3. Security Considerations
Matroska inherits security considerations from EBML. Matroska inherits security considerations from EBML.
Attacks on a "Matroska Reader" could include: Attacks on a "Matroska Reader" could include:
o Storage of a arbitrary and potentially executable data within an * Storage of a arbitrary and potentially executable data within an
"Attachment Element". "Matroska Readers" that extract or use data "Attachment 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. expectations.
o A "Matroska Attachment" with an inaccurate mime-type. * A "Matroska Attachment" with an inaccurate mime-type.
4. IANA Considerations 4. IANA Considerations
To be determined. To be determined.
5. Notation and Conventions 5. Notation and Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
document are to be interpreted as described in RFC 2119 [8]. "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
This document defines specific terms in order to define the format This document defines specific terms in order to define the format
and application of "Matroska". Specific terms are defined below: and application of "Matroska". Specific terms are defined below:
"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 "Matroska Reader" is a data parser that "Matroska Reader": A "Matroska Reader" is a data parser that
interprets the semantics of a Matroska document and creates a way for interprets the semantics of a Matroska document and creates a way for
programs to use "Matroska". programs to use "Matroska".
"Matroska Player": A "Matroska Player" is a "Matroska Reader" with a "Matroska Player": A "Matroska Player" is a "Matroska Reader" with a
primary purpose of playing audiovisual files, including "Matroska" primary purpose of playing audiovisual files, including "Matroska"
documents. documents.
6. Basis in EBML 6. Basis in EBML
Matroska is a Document Type of EBML (Extensible Binary Meta Matroska is a Document Type of EBML (Extensible Binary Meta
Language). This specification is dependent on the EBML Specification Language). This specification is dependent on the EBML Specification
[9]. For an understanding of Matroska's EBML Schema, see in (https://github.com/Matroska-Org/ebml-specification/blob/master/
particular the sections of the EBML Specification covering EBML specification.markdown). For an understanding of Matroska's EBML
Element Types [10], EBML Schema [11], and EBML Structure [12]. Schema, see in particular the sections of the EBML Specification
covering EBML Element Types (https://github.com/Matroska-Org/ebml-
specification/blob/master/specification.markdown#ebml-element-types),
EBML Schema (https://github.com/Matroska-Org/ebml-
specification/blob/master/specification.markdown#ebml-schema), and
EBML Structure (https://github.com/Matroska-Org/ebml-
specification/blob/master/specification.markdown#structure).
6.1. Added Constraints on EBML 6.1. Added Constraints on EBML
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.
o The "docType" of the "EBML Header" MUST be 'matroska'. * The "docType" of the "EBML Header" MUST be 'matroska'.
o The "EBMLMaxIDLength" of the "EBML Header" MUST be "4". * The "EBMLMaxIDLength" of the "EBML Header" MUST be "4".
o The "EBMLMaxSizeLength" of the "EBML Header" MUST be between "1" * The "EBMLMaxSizeLength" of the "EBML Header" MUST be between "1"
and "8" inclusive. and "8" inclusive.
6.2. Matroska Design 6.2. Matroska Design
All top-levels elements (Segment and direct sub-elements) are coded All top-levels elements (Segment and direct sub-elements) are coded
on 4 octets, i.e. class D elements. on 4 octets, i.e. class D elements.
6.2.1. Language Codes 6.2.1. Language Codes
Matroska from version 1 through 3 uses language codes that can be Matroska from version 1 through 3 uses language codes that can be
either the 3 letters bibliographic ISO-639-2 [13] form (like "fre" either the 3 letters bibliographic ISO-639-2
for french), or such a language code followed by a dash and a country (https://www.loc.gov/standards/iso639-2/php/English_list.php) form
code for specialities in languages (like "fre-ca" for Canadian (like "fre" for french), or such a language code followed by a dash
French). The "ISO 639-2 Language Elements" are "Language Element", and a country code for specialities in languages (like "fre-ca" for
"TagLanguage Element", and "ChapLanguage Element". Canadian French). The "ISO 639-2 Language Elements" are "Language
Element", "TagLanguage Element", and "ChapLanguage Element".
Starting in Matroska version 4, either "ISO 639-2" or BCP 47 [14] MAY Starting in Matroska version 4, either "ISO 639-2" or BCP 47
be used, although "BCP 47" is RECOMMENDED. The "BCP 47 Language (https://tools.ietf.org/html/bcp47) MAY be used, although "BCP 47" is
Elements" are "LanguageIETF Element", "TagLanguageIETF Element", and RECOMMENDED. The "BCP 47 Language Elements" are "LanguageIETF
"ChapLanguageIETF Element". If a "BCP 47 Language Element" and an Element", "TagLanguageIETF Element", and "ChapLanguageIETF Element".
"ISO 639-2 Language Element" are used within the same "Parent If a "BCP 47 Language Element" and an "ISO 639-2 Language Element"
Element", then the "ISO 639-2 Language Element" MUST be ignored and are used within the same "Parent Element", then the "ISO 639-2
precedence given to the "BCP 47 Language Element". Language Element" MUST be ignored and precedence given to the "BCP 47
Language Element".
Country codes are the same as used for internet domains [15]. Country codes are the same as used for internet domains
(https://www.iana.org/domains/root/db).
6.2.2. Physical Types 6.2.2. 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_MEDIUM tag can be used to specify a string for ORIGINAL_MEDIUM tag can be used to specify a string for
ChapterPhysicalEquiv = 60. Here is the list of possible levels for ChapterPhysicalEquiv = 60. Here is the list of possible levels for
both audio and video : both audio and video :
+----------------------+--------------+-----------+-----------------+ +----------------------+------------+-----------+-----------------+
| ChapterPhysicalEquiv | Audio | Video | Comment | | ChapterPhysicalEquiv | Audio | Video | Comment |
+----------------------+--------------+-----------+-----------------+ +======================+============+===========+=================+
| 70 | SET / | SET / | the collection | | 70 | SET / | SET / | the collection |
| | PACKAGE | PACKAGE | of different | | | PACKAGE | PACKAGE | of different |
| | | | media | | | | | media |
| 60 | CD / 12" / | DVD / VHS | the physical | +----------------------+------------+-----------+-----------------+
| | 10" / 7" / | / | medium like a | | 60 | CD / 12" / | DVD / VHS | the physical |
| | TAPE / | LASERDISC | CD or a DVD | | | 10" / 7" / | / | medium like a |
| | MINIDISC / | | | | | TAPE / | LASERDISC | CD or a DVD |
| | DAT | | | | | MINIDISC / | | |
| 50 | SIDE | SIDE | when the | | | DAT | | |
| | | | original medium | +----------------------+------------+-----------+-----------------+
| | | | (LP/DVD) has | | 50 | SIDE | SIDE | when the |
| | | | different sides | | | | | original medium |
| 40 | - | LAYER | another | | | | | (LP/DVD) has |
| | | | physical level | | | | | different sides |
| | | | on DVDs | +----------------------+------------+-----------+-----------------+
| 30 | SESSION | SESSION | as found on CDs | | 40 | - | LAYER | another |
| | | | and DVDs | | | | | physical level |
| 20 | TRACK | - | as found on | | | | | on DVDs |
| | | | audio CDs | +----------------------+------------+-----------+-----------------+
| 10 | INDEX | - | the first | | 30 | SESSION | SESSION | as found on CDs |
| | | | logical level | | | | | and DVDs |
| | | | of the | +----------------------+------------+-----------+-----------------+
| | | | side/medium | | 20 | TRACK | - | as found on |
+----------------------+--------------+-----------+-----------------+ | | | | audio CDs |
+----------------------+------------+-----------+-----------------+
| 10 | INDEX | - | the first |
| | | | logical level |
| | | | of the side/ |
| | | | medium |
+----------------------+------------+-----------+-----------------+
Table 1
6.2.3. Block Structure 6.2.3. Block Structure
Bit 0 is the most significant bit. Bit 0 is the most significant bit.
Frames using references SHOULD be stored in "coding order". That Frames using references SHOULD be stored in "coding order". That
means the references first and then the frames referencing them. A means the references first and then the frames referencing them. A
consequence is that timestamps MAY NOT be consecutive. But a frame consequence is that timestamps might not be consecutive. But a frame
with a past timestamp MUST reference a frame already known, otherwise with a past timestamp MUST reference a frame already known, otherwise
it's considered bad/void. it's considered bad/void.
There can be many Blocks in a BlockGroup provided they all have the There can be many Blocks in a BlockGroup provided they all have the
same timestamp. It is used with different parts of a frame with same timestamp. It is used with different parts of a frame with
different priorities. different priorities.
6.2.3.1. Block Header 6.2.3.1. Block Header
+--------+--------+-------------------------------------------------+ +--------+--------+---------------------------------------------+
| Offset | Player | Description | | Offset | Player | Description |
+--------+--------+-------------------------------------------------+ +========+========+=============================================+
| 0x00+ | MUST | Track Number (Track Entry). It is coded in EBML | | 0x00+ | MUST | Track Number (Track Entry). It is coded in |
| | | like form (1 octet if the value is < 0x80, 2 if | | | | EBML like form (1 octet if the value is < |
| | | < 0x4000, etc) (most significant bits set to | | | | 0x80, 2 if < 0x4000, etc) (most significant |
| | | increase the range). | | | | bits set to increase the range). |
| 0x01+ | MUST | Timestamp (relative to Cluster timestamp, | +--------+--------+---------------------------------------------+
| | | signed int16) | | 0x01+ | MUST | Timestamp (relative to Cluster timestamp, |
+--------+--------+-------------------------------------------------+ | | | signed int16) |
+--------+--------+---------------------------------------------+
Table 2
6.2.3.2. Block Header Flags 6.2.3.2. Block Header Flags
+--------+-----+--------+-------------------------------------------+ +--------+-----+--------+------------------------------------+
| Offset | Bit | Player | Description | | Offset | Bit | Player | Description |
+--------+-----+--------+-------------------------------------------+ +========+=====+========+====================================+
| 0x03+ | 0-3 | - | Reserved, set to 0 | | 0x03+ | 0-3 | - | Reserved, set to 0 |
| 0x03+ | 4 | - | Invisible, the codec SHOULD decode this | +--------+-----+--------+------------------------------------+
| | | | frame but not display it | | 0x03+ | 4 | - | Invisible, the codec SHOULD decode |
| 0x03+ | 5-6 | MUST | Lacing | | | | | this frame but not display it |
| | | | * 00 : no lacing | +--------+-----+--------+------------------------------------+
| | | | * 01 : Xiph lacing | | 0x03+ | 5-6 | MUST | Lacing |
| | | | * 11 : EBML lacing | +--------+-----+--------+------------------------------------+
| | | | * 10 : fixed-size lacing | | | | | * 00 : no lacing |
| 0x03+ | 7 | - | not used | +--------+-----+--------+------------------------------------+
+--------+-----+--------+-------------------------------------------+ | | | | * 01 : Xiph lacing |
+--------+-----+--------+------------------------------------+
| | | | * 11 : EBML lacing |
+--------+-----+--------+------------------------------------+
| | | | * 10 : fixed-size lacing |
+--------+-----+--------+------------------------------------+
| 0x03+ | 7 | - | not used |
+--------+-----+--------+------------------------------------+
Table 3
6.2.4. Lacing 6.2.4. 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). There are 3 types of lacing: Matroska). There are 3 types of lacing:
1. Xiph, inspired by what is found in the Ogg container 1. Xiph, inspired by what is found in the Ogg container
2. EBML, which is the same with sizes coded differently 2. EBML, which is the same with sizes coded differently
skipping to change at page 14, line 19 skipping to change at page 10, line 25
3. fixed-size, where the size is not coded 3. fixed-size, where the size is not coded
For example, a user wants to store 3 frames of the same track. The For example, a user wants to store 3 frames of the same track. The
first frame is 800 octets long, the second is 500 octets long and the 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 third is 1000 octets long. As these data are small, they can be
stored in a lace to save space. They will then be stored in the same stored in a lace to save space. They will then be stored in the same
block as follows: block as follows:
6.2.4.1. Xiph lacing 6.2.4.1. Xiph lacing
o Block head (with lacing bits set to 01) * Block head (with lacing bits set to 01)
o Lacing head: Number of frames in the lace -1, i.e. 2 (the 800 and * Lacing head: Number of frames in the lace -1, i.e. 2 (the 800 and
500 octets one) 500 octets one)
o Lacing sizes: only the 2 first ones will be coded, 800 gives * Lacing sizes: only the 2 first ones will be coded, 800 gives
255;255;255;35, 500 gives 255;245. The size of the last frame is 255;255;255;35, 500 gives 255;245. The size of the last frame is
deduced from the total size of the Block. deduced from the total size of the Block.
o Data in frame 1 * Data in frame 1
o Data in frame 2 * Data in frame 2
o Data in frame 3 * Data in frame 3
A frame with a size multiple of 255 is coded with a 0 at the end of A frame with a size multiple of 255 is coded with a 0 at the end of
the size, for example 765 is coded 255;255;255;0. the size, for example 765 is coded 255;255;255;0.
6.2.4.2. EBML lacing 6.2.4.2. EBML lacing
In this case, the size is not coded as blocks of 255 bytes, but as a In this case, the size is not coded as blocks of 255 bytes, but as a
difference with the previous size and this size is coded as in EBML. difference with the previous size and this size is coded as in EBML.
The first size in the lace is unsigned as in EBML. The others use a The first size in the lace is unsigned as in EBML. The others use a
range shifting to get a sign on each value: range shifting to get a sign on each value:
+----------------------------------+--------------------------------+ +--------------------------+---------------------------------------+
| Bit Representation | Value | | Bit Representation | Value |
+----------------------------------+--------------------------------+ +==========================+=======================================+
| 1xxx xxxx | value -(2^6-1) to 2^6-1 (ie 0 | | 1xxx xxxx | value -(2^6-1) to 2^6-1 (ie 0 to |
| | to 2^7-2 minus 2^6-1, half of | | | 2^7-2 minus 2^6-1, half of the range) |
| | the range) | +--------------------------+---------------------------------------+
| 01xx xxxx xxxx xxxx | value -(2^13-1) to 2^13-1 | | 01xx xxxx xxxx xxxx | value -(2^13-1) to 2^(13-1) |
| 001x xxxx xxxx xxxx xxxx xxxx | value -(2^20-1) to 2^20-1 | +--------------------------+---------------------------------------+
| 0001 xxxx xxxx xxxx xxxx xxxx | value -(2^27-1) to 2^27-1 | | 001x xxxx xxxx xxxx xxxx | value -(2^20-1) to 2^(20-1) |
| xxxx xxxx | | | xxxx | |
| 0000 1xxx xxxx xxxx xxxx xxxx | value -(2^34-1) to 2^34-1 | +--------------------------+---------------------------------------+
| xxxx xxxx xxxx xxxx | | | 0001 xxxx xxxx xxxx xxxx | value -(2^27-1) to 2^(27-1) |
| 0000 01xx xxxx xxxx xxxx xxxx | value -(2^41-1) to 2^41-1 | | xxxx xxxx xxxx | |
| xxxx xxxx xxxx xxxx xxxx xxxx | | +--------------------------+---------------------------------------+
| 0000 001x xxxx xxxx xxxx xxxx | value -(2^48-1) to 2^48-1 | | 0000 1xxx xxxx xxxx xxxx | value -(2^34-1) to 2^(34-1) |
| xxxx xxxx xxxx xxxx xxxx xxxx | | | xxxx xxxx xxxx xxxx xxxx | |
| xxxx xxxx | | +--------------------------+---------------------------------------+
+----------------------------------+--------------------------------+ | 0000 01xx xxxx xxxx xxxx | value -(2^41-1) to 2^(41-1) |
| xxxx xxxx xxxx xxxx xxxx | |
| xxxx xxxx | |
+--------------------------+---------------------------------------+
| 0000 001x xxxx xxxx xxxx | value -(2^48-1) to 2^(48-1) |
| xxxx xxxx xxxx xxxx xxxx | |
| xxxx xxxx xxxx xxxx | |
+--------------------------+---------------------------------------+
o Block head (with lacing bits set to 11) Table 4
o Lacing head: Number of frames in the lace -1, i.e. 2 (the 800 and * Block head (with lacing bits set to 11)
* Lacing head: Number of frames in the lace -1, i.e. 2 (the 800 and
500 octets one) 500 octets one)
o Lacing sizes: only the 2 first ones will be coded, 800 gives 0x320 * Lacing sizes: only the 2 first ones will be coded, 800 gives 0x320
0x4000 = 0x4320, 500 is coded as -300 : - 0x12C + 0x1FFF + 0x4000 0x4000 = 0x4320, 500 is coded as -300 : - 0x12C + 0x1FFF + 0x4000
= 0x5ED3. The size of the last frame is deduced from the total = 0x5ED3. The size of the last frame is deduced from the total
size of the Block. size of the Block.
o Data in frame 1 * Data in frame 1
o Data in frame 2 * Data in frame 2
o Data in frame 3 * Data in frame 3
6.2.4.3. Fixed-size lacing 6.2.4.3. Fixed-size lacing
In this case, only the number of frames in the lace is saved, the In this case, only the number of frames in the lace is saved, the
size of each frame is deduced from the total size of the Block. For size of each frame is deduced from the total size of the Block. For
example, for 3 frames of 800 octets each: example, for 3 frames of 800 octets each:
o Block head (with lacing bits set to 10) * Block head (with lacing bits set to 10)
o Lacing head: Number of frames in the lace -1, i.e. 2 * Lacing head: Number of frames in the lace -1, i.e. 2
o Data in frame 1 * Data in frame 1
o Data in frame 2 * Data in frame 2
o Data in frame 3
* Data in frame 3
6.2.4.4. SimpleBlock Structure 6.2.4.4. SimpleBlock Structure
The "SimpleBlock" is inspired by the Section 6.2.3. The main The "SimpleBlock" is inspired by the Block structure (#block-
differences are the added Keyframe flag and Discardable flag. structure). The main differences are the added Keyframe flag and
Otherwise everything is the same. Discardable flag. Otherwise everything is the same.
Bit 0 is the most significant bit. Bit 0 is the most significant bit.
Frames using references SHOULD be stored in "coding order". That Frames using references SHOULD be stored in "coding order". That
means the references first and then the frames referencing them. A means the references first and then the frames referencing them. A
consequence is that timestamps MAY NOT be consecutive. But a frame consequence is that timestamps might not be consecutive. But a frame
with a past timestamp MUST reference a frame already known, otherwise with a past timestamp MUST reference a frame already known, otherwise
it's considered bad/void. it's considered bad/void.
There can be many "Block Elements" in a "BlockGroup" provided they There can be many "Block Elements" in a "BlockGroup" provided they
all have the same timestamp. It is used with different parts of a all have the same timestamp. It is used with different parts of a
frame with different priorities. frame with different priorities.
6.2.4.4.1. SimpleBlock Header 6.2.4.4.1. SimpleBlock Header
+--------+--------+-------------------------------------------------+ +--------+--------+---------------------------------------------+
| Offset | Player | Description | | Offset | Player | Description |
+--------+--------+-------------------------------------------------+ +========+========+=============================================+
| 0x00+ | MUST | Track Number (Track Entry). It is coded in EBML | | 0x00+ | MUST | Track Number (Track Entry). It is coded in |
| | | like form (1 octet if the value is < 0x80, 2 if | | | | EBML like form (1 octet if the value is < |
| | | < 0x4000, etc) (most significant bits set to | | | | 0x80, 2 if < 0x4000, etc) (most significant |
| | | increase the range). | | | | bits set to increase the range). |
| 0x01+ | MUST | Timestamp (relative to Cluster timestamp, | +--------+--------+---------------------------------------------+
| | | signed int16) | | 0x01+ | MUST | Timestamp (relative to Cluster timestamp, |
+--------+--------+-------------------------------------------------+ | | | signed int16) |
+--------+--------+---------------------------------------------+
Table 5
6.2.4.4.2. SimpleBlock Header Flags 6.2.4.4.2. SimpleBlock Header Flags
+--------+-----+--------+-------------------------------------------+
| Offset | Bit | Player | Description | +--------+-----+--------+------------------------------------------+
+--------+-----+--------+-------------------------------------------+ | Offset | Bit | Player | Description |
| 0x03+ | 0 | - | Keyframe, set when the Block contains | +========+=====+========+==========================================+
| | | | only keyframes | | 0x03+ | 0 | - | Keyframe, set when the Block contains |
| 0x03+ | 1-3 | - | Reserved, set to 0 | | | | | only keyframes |
| 0x03+ | 4 | - | Invisible, the codec SHOULD decode this | +--------+-----+--------+------------------------------------------+
| | | | frame but not display it | | 0x03+ | 1-3 | - | Reserved, set to 0 |
| 0x03+ | 5-6 | MUST | Lacing | +--------+-----+--------+------------------------------------------+
| | | | * 00 : no lacing | | 0x03+ | 4 | - | Invisible, the codec SHOULD decode this |
| | | | * 01 : Xiph lacing | | | | | frame but not display it |
| | | | * 11 : EBML lacing | +--------+-----+--------+------------------------------------------+
| | | | * 10 : fixed-size lacing | | 0x03+ | 5-6 | MUST | Lacing |
| 0x03+ | 7 | - | Discardable, the frames of the Block can | +--------+-----+--------+------------------------------------------+
| | | | be discarded during playing if needed | | | | | * 00 : no lacing |
+--------+-----+--------+-------------------------------------------+ +--------+-----+--------+------------------------------------------+
| | | | * 01 : Xiph lacing |
+--------+-----+--------+------------------------------------------+
| | | | * 11 : EBML lacing |
+--------+-----+--------+------------------------------------------+
| | | | * 10 : fixed-size lacing |
+--------+-----+--------+------------------------------------------+
| 0x03+ | 7 | - | Discardable, the frames of the Block can |
| | | | be discarded during playing if needed |
+--------+-----+--------+------------------------------------------+
Table 6
6.2.4.5. Laced Data 6.2.4.5. Laced Data
When lacing bit is set. When lacing bit is set.
+--------+--------+-------------------------------------------------+ +--------+--------+---------------------------------------------+
| Offset | Player | Description | | Offset | Player | Description |
+--------+--------+-------------------------------------------------+ +========+========+=============================================+
| 0x00 | MUST | Number of frames in the lace-1 (uint8) | | 0x00 | MUST | Number of frames in the lace-1 (uint8) |
| 0x01 / | MUST* | Lace-coded size of each frame of the lace, | +--------+--------+---------------------------------------------+
| 0xXX | | except for the last one (multiple uint8). *This | | 0x01 / | MUST* | Lace-coded size of each frame of the lace, |
| | | is not used with Fixed-size lacing as it is | | 0xXX | | except for the last one (multiple uint8). |
| | | calculated automatically from (total size of | | | | *This is not used with Fixed-size lacing as |
| | | lace) / (number of frames in lace). | | | | it is calculated automatically from (total |
+--------+--------+-------------------------------------------------+ | | | size of lace) / (number of frames in lace). |
+--------+--------+---------------------------------------------+
Table 7
For (possibly) Laced Data For (possibly) Laced Data
+--------+--------+--------------------------+ +--------+--------+--------------------------+
| Offset | Player | Description | | Offset | Player | Description |
+--------+--------+--------------------------+ +========+========+==========================+
| 0x00 | MUST | Consecutive laced frames | | 0x00 | MUST | Consecutive laced frames |
+--------+--------+--------------------------+ +--------+--------+--------------------------+
Table 8
7. Matroska Structure 7. Matroska Structure
A Matroska file MUST be composed of at least one "EBML Document" A Matroska file MUST be composed of at least one "EBML Document"
using the "Matroska Document Type". Each "EBML Document" MUST start using the "Matroska Document Type". Each "EBML Document" MUST start
with an "EBML Header" and MUST be followed by the "EBML Root with an "EBML Header" and MUST be followed by the "EBML Root
Element", defined as "Segment" in Matroska. Matroska defines several Element", defined as "Segment" in Matroska. Matroska defines several
"Top Level Elements" which MAY occur within the "Segment". "Top Level Elements" which 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:
o "EBML Header" * "EBML Header"
o "Segment" * "Segment"
A more complex Matroska file consisting of an "EBML Stream" A more complex Matroska file consisting of an "EBML Stream"
(consisting of two "EBML Documents") could be represented like this: (consisting of two "EBML Documents") could be represented like this:
o "EBML Header" * "EBML Header"
* "Segment"
o "Segment"
o "EBML Header" * "EBML Header"
o "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 an "EBML Document" with an "EBML Header", a "Segment Element" (the
"Root Element"), and all eight Matroska "Top Level Elements". In the "Root Element"), and all eight Matroska "Top Level Elements". In the
following diagrams of this section, horizontal spacing expresses a following diagrams of this section, horizontal spacing expresses a
parent-child relationship between Matroska Elements (e.g. the "Info parent-child relationship between Matroska Elements (e.g. the "Info
Element" is contained within the "Segment Element") whereas vertical Element" is contained within the "Segment Element") whereas vertical
alignment represents the storage order within the file. alignment represents the storage order within the file.
+-------------+ +-------------+
| EBML Header | | EBML Header |
+---------------------------+ +---------------------------+
| Segment | SeekHead | | Segment | SeekHead |
| |-------------| | |-------------|
| | Info | | | Info |
| |-------------| | |-------------|
| | Tracks | | | Tracks |
| |-------------| | |-------------|
| | Chapters | | | Chapters |
| |-------------| | |-------------|
| | Cluster | | | Cluster |
| |-------------| | |-------------|
| | Cues | | | Cues |
| |-------------| | |-------------|
| | Attachments | | | Attachments |
| |-------------| | |-------------|
| | Tags | | | Tags |
+---------------------------+ +---------------------------+
The Matroska "EBML Schema" defines eight "Top Level Elements": The Matroska "EBML Schema" defines eight "Top Level Elements":
"SeekHead", "Info", "Tracks", "Chapters", "Cluster", "Cues", "SeekHead", "Info", "Tracks", "Chapters", "Cluster", "Cues",
"Attachments", and "Tags". "Attachments", and "Tags".
The "SeekHead Element" (also known as "MetaSeek") contains an index The "SeekHead Element" (also known as "MetaSeek") contains an index
of "Top Level Elements" locations within the "Segment". Use of the of "Top Level Elements" locations within the "Segment". Use of the
"SeekHead Element" is RECOMMENDED. Without a "SeekHead Element", a "SeekHead Element" is RECOMMENDED. Without a "SeekHead Element", a
Matroska parser would have to search the entire file to find all of Matroska parser would have to search the entire file to find all of
the other "Top Level Elements". This is due to Matroska's flexible the other "Top Level Elements". This is due to Matroska's flexible
ordering requirements; for instance, it is acceptable for the ordering requirements; for instance, it is acceptable for the
"Chapters Element" to be stored after the "Cluster Elements". "Chapters Element" to be stored after the "Cluster Elements".
+--------------------------------+ +--------------------------------+
| SeekHead | Seek | SeekID | | SeekHead | Seek | SeekID |
| | |--------------| | | |--------------|
| | | SeekPosition | | | | SeekPosition |
+--------------------------------+ +--------------------------------+
Representation of a SeekHead Element. Figure 1: Representation of a "SeekHead Element".
The "Info Element" contains vital information for identifying the The "Info Element" contains vital information for identifying the
whole "Segment". This includes the title for the "Segment", a whole "Segment". This includes the title for the "Segment", a
randomly generated unique identifier, and the unique identifier(s) of randomly generated unique identifier, and the unique identifier(s) of
any linked "Segment Elements". any linked "Segment Elements".
+-------------------------+ +-------------------------+
| Info | SegmentUID | | Info | SegmentUID |
| |------------------| | |------------------|
| | SegmentFilename | | | SegmentFilename |
| |------------------| | |------------------|
| | PrevUID | | | PrevUID |
| |------------------| | |------------------|
| | PrevFilename | | | PrevFilename |
| |------------------| | |------------------|
| | NextUID | | | NextUID |
| |------------------| | |------------------|
| | NextFilename | | | NextFilename |
| |------------------| | |------------------|
| | SegmentFamily | | | SegmentFamily |
| |------------------| | |------------------|
| | ChapterTranslate | | | ChapterTranslate |
| |------------------| | |------------------|
| | TimestampScale | | | TimestampScale |
| |------------------| | |------------------|
| | Duration | | | Duration |
| |------------------| | |------------------|
| | DateUTC | | | DateUTC |
| |------------------| | |------------------|
| | Title | | | Title |
| |------------------| | |------------------|
| | MuxingApp | | | MuxingApp |
| |------------------| | |------------------|
| | WritingApp | | | WritingApp |
|-------------------------| |-------------------------|
Representation of an Info Element and its Child Elements. Figure 2: 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, unique identifier, language and type
(audio, video, subtitles, etc.) of each track. For example, the (audio, video, subtitles, etc.) of each track. For example, the
"Tracks Element" MAY store information about the resolution of a "Tracks Element" MAY store information about the resolution of a
video track or sample rate of an audio track. video track or sample rate of an audio track.
The "Tracks Element" MUST identify all the data needed by the codec The "Tracks Element" MUST identify all the data needed by the codec
to decode the data of the specified track. However, the data to decode the data of the specified track. However, the data
required is contingent on the codec used for the track. For example, required is contingent on the codec used for the track. For example,
a "Track Element" for uncompressed audio only requires the audio bit a "Track Element" for uncompressed audio only requires the audio bit
rate to be present. A codec such as AC-3 would require that the rate to be present. A codec such as AC-3 would require that the
"CodecID Element" be present for all tracks, as it is the primary way "CodecID Element" be present for all tracks, as it is the primary way
to identify which codec to use to decode the track. to identify which codec to use to decode the track.
+------------------------------------+ +------------------------------------+
| Tracks | TrackEntry | TrackNumber | | Tracks | TrackEntry | TrackNumber |
| | |--------------| | | |--------------|
| | | TrackUID | | | | TrackUID |
| | |--------------| | | |--------------|
| | | TrackType | | | | TrackType |
| | |--------------| | | |--------------|
| | | Name | | | | Name |
| | |--------------| | | |--------------|
| | | Language | | | | Language |
| | |--------------| | | |--------------|
| | | CodecID | | | | CodecID |
| | |--------------| | | |--------------|
| | | CodecPrivate | | | | CodecPrivate |
| | |--------------| | | |--------------|
| | | CodecName | | | | CodecName |
| | |----------------------------------+ | | |----------------------------------+
| | | Video | FlagInterlaced | | | | Video | FlagInterlaced |
| | | |-------------------| | | | |-------------------|
| | | | FieldOrder | | | | | FieldOrder |
| | | |-------------------| | | | |-------------------|
| | | | StereoMode | | | | | StereoMode |
| | | |-------------------| | | | |-------------------|
| | | | AlphaMode | | | | | AlphaMode |
| | | |-------------------| | | | |-------------------|
| | | | PixelWidth | | | | | PixelWidth |
| | | |-------------------| | | | |-------------------|
| | | | PixelHeight | | | | | PixelHeight |
| | | |-------------------| | | | |-------------------|
| | | | DisplayWidth | | | | | DisplayWidth |
| | | |-------------------| | | | |-------------------|
| | | | DisplayHeight | | | | | DisplayHeight |
| | | |-------------------| | | | |-------------------|
| | | | AspectRatioType | | | | | AspectRatioType |
| | | |-------------------| | | | |-------------------|
| | | | Color | | | | | Color |
| | |----------------------------------| | | |----------------------------------|
| | | Audio | SamplingFrequency | | | | Audio | SamplingFrequency |
| | | |-------------------| | | | |-------------------|
| | | | Channels | | | | | Channels |
| | | |-------------------| | | | |-------------------|
| | | | BitDepth | | | | | BitDepth |
|--------------------------------------------------------| |--------------------------------------------------------|
Representation of the Tracks Element and a selection of its Figure 3: Representation of the "Tracks Element" and a selection
Descendant Elements. of its "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 |--------------------|
| | | EditionFlagHidden | | | | EditionFlagHidden |
| | |--------------------| | | |--------------------|
| | | EditionFlagDefault | | | | EditionFlagDefault |
| | |--------------------| | | |--------------------|
| | | EditionFlagOrdered | | | | EditionFlagOrdered |
| | |--------------------------------+ | | |---------------------------------+
| | | ChapterAtom | ChapterUID | | | | ChapterAtom | ChapterUID |
| | | |------------------| | | | |-------------------|
| | | | ChapterStringUID | | | | | ChapterStringUID |
| | | |------------------| | | | |-------------------|
| | | | ChapterTimeStart | | | | | ChapterTimeStart |
| | | |------------------| | | | |-------------------|
| | | | ChapterTimeEnd | | | | | ChapterTimeEnd |
| | | |------------------| | | | |-------------------|
| | | | ChapterFlagHidden | | | | | ChapterFlagHidden |
| | | |---------------------------------+ | | | |-------------------------------+
| | | | ChapterDisplay | ChapString | | | | | ChapterDisplay | ChapString |
| | | | |--------------| | | | | |--------------|
| | | | | ChapLanguage | | | | | | ChapLanguage |
+--------------------------------------------------------------------+ +------------------------------------------------------------------+
Representation of the Chapters Element and a selection of its Figure 4: Representation of the "Chapters Element" and a
Descendant Elements. selection 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 frames. A Matroska file SHOULD contain at least one "Cluster
Element". The "Cluster Element" helps to break up "SimpleBlock" or Element". The "Cluster Element" helps to break up "SimpleBlock" or
"BlockGroup Elements" and helps with seeking and error protection. "BlockGroup Elements" and helps with seeking and error protection.
It is RECOMMENDED that the size of each individual "Cluster Element" It is RECOMMENDED that the size of each individual "Cluster Element"
be limited to store no more than 5 seconds or 5 megabytes. Every be limited to store no more than 5 seconds or 5 megabytes. Every
"Cluster Element" MUST contain a "Timestamp Element". This SHOULD be "Cluster Element" MUST contain a "Timestamp Element". This SHOULD be
the "Timestamp Element" used to play the first "Block" in the the "Timestamp Element" used to play the first "Block" in the
"Cluster Element". There SHOULD be one or more "BlockGroup" or "Cluster Element". There SHOULD be one or more "BlockGroup" or
"SimpleBlock Element" in each "Cluster Element". A "BlockGroup "SimpleBlock Element" in each "Cluster Element". A "BlockGroup
Element" MAY contain a "Block" of data and any information relating Element" MAY contain a "Block" of data and any information relating
directly to that "Block". directly to that "Block".
+--------------------------+ +--------------------------+
| Cluster | Timestamp | | Cluster | Timestamp |
| |----------------| | |----------------|
| | SilentTracks | | | SilentTracks |
| |----------------| | |----------------|
| | Position | | | Position |
| |----------------| | |----------------|
| | PrevSize | | | PrevSize |
| |----------------| | |----------------|
| | SimpleBlock | | | SimpleBlock |
| |----------------| | |----------------|
| | BlockGroup | | | BlockGroup |
| |----------------| | |----------------|
| | EncryptedBlock | | | EncryptedBlock |
+--------------------------+ +--------------------------+
Representation of a Cluster Element and its immediate Child Elements. Figure 5: Representation of a "Cluster Element" and its immediate
"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 |
+----------------------------------+ +----------------------------------+
Representation of the Block Element structure. Figure 6: Representation of the "Block Element" structure.
Each "Cluster" MUST contain exactly one "Timestamp Element". The Each "Cluster" MUST contain exactly one "Timestamp Element". The
"Timestamp Element" value MUST be stored once per "Cluster". The "Timestamp Element" value MUST be stored once per "Cluster". The
"Timestamp Element" in the "Cluster" is relative to the entire "Timestamp Element" in the "Cluster" is relative to the entire
"Segment". The "Timestamp Element" SHOULD be the first "Element" in "Segment". The "Timestamp Element" SHOULD be the first "Element" in
the "Cluster". the "Cluster".
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, timestamp in the "Block" itself is relative to
skipping to change at page 24, line 34 skipping to change at page 21, line 35
Each "CuePoint Element" stores the position of the "Cluster" that Each "CuePoint Element" stores the position of the "Cluster" that
contains the "BlockGroup" or "SimpleBlock Element". The timestamp is contains the "BlockGroup" or "SimpleBlock Element". The timestamp is
stored in the "CueTime Element" and location is stored in the stored in the "CueTime Element" and location is stored in the
"CueTrackPositions Element". "CueTrackPositions Element".
The "Cues Element" is flexible. For instance, "Cues Element" can be The "Cues Element" is flexible. For instance, "Cues Element" can be
used to index every single timestamp of every "Block" or they can be used to index every single timestamp of every "Block" or they can be
indexed selectively. For video files, it is RECOMMENDED to index at indexed selectively. For video files, it is RECOMMENDED to index at
least the keyframes of the video track. least the keyframes of the video track.
+-------------------------------------+ +-------------------------------------+
| Cues | CuePoint | CueTime | | Cues | CuePoint | CueTime |
| | |-------------------| | | |-------------------|
| | | CueTrackPositions | | | | CueTrackPositions |
| |------------------------------| | |------------------------------|
| | CuePoint | CueTime | | | CuePoint | CueTime |
| | |-------------------| | | |-------------------|
| | | CueTrackPositions | | | | CueTrackPositions |
+-------------------------------------+ +-------------------------------------+
Representation of a Cues Element and two levels of its Descendant Figure 7: Representation of a "Cues Element" and two levels of
Elements. its "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, webpages, programs, or even the codec needed to such as pictures, webpages, programs, or even the codec needed to
play back the file. play back the file.
+------------------------------------------------+ +------------------------------------------------+
| Attachments | AttachedFile | FileDescription | | Attachments | AttachedFile | FileDescription |
| | |-------------------| | | |-------------------|
| | | FileName | | | | FileName |
| | |-------------------| | | |-------------------|
| | | FileMimeType | | | | FileMimeType |
| | |-------------------| | | |-------------------|
| | | FileData | | | | FileData |
| | |-------------------| | | |-------------------|
| | | FileUID | | | | FileUID |
| | |-------------------| | | |-------------------|
| | | FileName | | | | FileName |
| | |-------------------| | | |-------------------|
| | | FileReferral | | | | FileReferral |
| | |-------------------| | | |-------------------|
| | | FileUsedStartTime | | | | FileUsedStartTime |
| | |-------------------| | | |-------------------|
| | | FileUsedEndTime | | | | FileUsedEndTime |
+------------------------------------------------+ +------------------------------------------------+
Representation of a Attachments Element. Figure 8: Representation of a "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 potentially its "Tracks", "Chapters", and "Attachments". Each
"Track" or "Chapter" that those tags applies to has its UID listed in "Track" or "Chapter" that those tags applies to has its UID listed in
the "Tags". The "Tags" contain all extra information about the file: the "Tags". The "Tags" contain all extra information about the file:
scriptwriter, singer, actors, directors, titles, edition, price, scriptwriter, singer, actors, directors, titles, edition, price,
dates, genre, comments, etc. Tags can contain their values in dates, genre, comments, etc. Tags can contain their values in
multiple languages. For example, a movie's "title" "Tag" might multiple languages. For example, a movie's "title" "Tag" might
contain both the original English title as well as the title it was contain both the original English title as well as the title it was
released as in Germany. released as in Germany.
+-------------------------------------------+ +-------------------------------------------+
| Tags | Tag | Targets | TargetTypeValue | | Tags | Tag | Targets | TargetTypeValue |
| | | |------------------| | | | |------------------|
| | | | TargetType | | | | | TargetType |
| | | |------------------| | | | |------------------|
| | | | TagTrackUID | | | | | TagTrackUID |
| | | |------------------| | | | |------------------|
| | | | TagEditionUID | | | | | TagEditionUID |
| | | |------------------| | | | |------------------|
| | | | TagChapterUID | | | | | TagChapterUID |
| | | |------------------| | | | |------------------|
| | | | TagAttachmentUID | | | | | TagAttachmentUID |
| | |------------------------------| | | |------------------------------|
| | | SimpleTag | TagName | | | | SimpleTag | TagName |
| | | |------------------| | | | |------------------|
| | | | TagLanguage | | | | | TagLanguage |
| | | |------------------| | | | |------------------|
| | | | TagDefault | | | | | TagDefault |
| | | |------------------| | | | |------------------|
| | | | TagString | | | | | TagString |
| | | |------------------| | | | |------------------|
| | | | TagBinary | | | | | TagBinary |
| | | |------------------| | | | |------------------|
| | | | SimpleTag | | | | | SimpleTag |
+-------------------------------------------+ +-------------------------------------------+
Representation of a Tags Element and three levels of its Children Figure 9: Representation of a "Tags Element" and three levels of
Elements. its "Children Elements".
8. Matroska Additions to Schema Element Attributes 8. Matroska Additions to Schema Element Attributes
In addition to the EBML Schema definition provided by the EBML In addition to the EBML Schema definition provided by the EBML
Specification, Matroska adds the following additional attributes: Specification, Matroska adds the following additional attributes:
+-----------+----------+--------------------------------------------+ +-----------+----------+----------------------------------------+
| attribute | required | definition | | attribute | required | definition |
| name | | | | name | | |
+-----------+----------+--------------------------------------------+ +===========+==========+========================================+
| webm | No | A boolean to express if the Matroska | | webm | No | A boolean to express if the Matroska |
| | | Element is also supported within version 2 | | | | Element is also supported within |
| | | of the "webm" specification. Please | | | | version 2 of the "webm" specification. |
| | | consider the webm specification [16] as | | | | Please consider the webm specification |
| | | the authoritative on "webm". | | | | (http://www.webmproject.org/docs/ |
+-----------+----------+--------------------------------------------+ | | | container/) as the authoritative on |
| | | "webm". |
+-----------+----------+----------------------------------------+
Table 9
9. Matroska Schema 9. Matroska Schema
This specification includes an "EBML Schema" which defines the This specification includes an "EBML Schema" which defines the
Elements and structure of Matroska as an EBML Document Type. The Elements and structure of Matroska as an EBML Document Type. The
EBML Schema defines every valid Matroska element in a manner defined EBML Schema defines every valid Matroska element in a manner defined
by the EBML specification. by the EBML specification.
Here the definition of each Matroska Element is provided. Here the definition of each Matroska Element is provided.
skipping to change at page 33, line 39 skipping to change at page 30, line 39
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
definition: The chapter codec definition: The chapter codec
restrictions: restrictions:
+-------+-----------------+ +-------+-----------------+
| value | label | | value | label |
+-------+-----------------+ +=======+=================+
| "0" | Matroska Script | | "0" | Matroska Script |
+-------+-----------------+
| "1" | DVD-menu | | "1" | DVD-menu |
+-------+-----------------+ +-------+-----------------+
Table 10
9.3.2.8.3. ChapterTranslateID Element 9.3.2.8.3. ChapterTranslateID Element
name: "ChapterTranslateID" name: "ChapterTranslateID"
path: "1*1(\Segment\Info\ChapterTranslate\ChapterTranslateID)" path: "1*1(\Segment\Info\ChapterTranslate\ChapterTranslateID)"
id: "0x69A5" id: "0x69A5"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
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. used.
9.3.2.9. TimestampScale Element 9.3.2.9. TimestampScale Element
skipping to change at page 40, line 41 skipping to change at page 37, line 41
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
default: "1" default: "1"
type: "uinteger" type: "uinteger"
definition: An ID to identify the BlockAdditional level. definition: An ID to identify the BlockAdditional level. A value of
1 means the BlockAdditional data is interpreted as additional data
passed to the codec with the Block data.
9.3.3.6.3.3. BlockAdditional Element 9.3.3.6.3.3. BlockAdditional Element
name: "BlockAdditional" name: "BlockAdditional"
path: "1*1(\Segment\Cluster\BlockGroup\BlockAdditions\BlockMore\Block path: "1*1(\Segment\Cluster\BlockGroup\BlockAdditions\BlockMore\Block
Additional)" Additional)"
id: "0xA5" id: "0xA5"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: Interpreted by the codec as it wishes (using the definition: Interpreted by the codec as it wishes (using the
BlockAddID). BlockAddID).
9.3.3.6.4. BlockDuration Element 9.3.3.6.4. BlockDuration Element
skipping to change at page 41, line 21 skipping to change at page 38, line 23
BlockAddID). BlockAddID).
9.3.3.6.4. BlockDuration Element 9.3.3.6.4. BlockDuration Element
name: "BlockDuration" name: "BlockDuration"
path: "0*1(\Segment\Cluster\BlockGroup\BlockDuration)" path: "0*1(\Segment\Cluster\BlockGroup\BlockDuration)"
id: "0x9B" id: "0x9B"
minOccurs: see implementation notes
maxOccurs: "1" maxOccurs: "1"
default: "DefaultDuration" default: see implementation notes
type: "uinteger" type: "uinteger"
definition: The duration of the Block (based on TimestampScale). definition: The duration of the Block (based on TimestampScale). The
This Element is mandatory when DefaultDuration is set for the track BlockDuration Element can be useful at the end of a Track to define
(but can be omitted as other default values). When not written and the duration of the last frame (as there is no subsequent Block
with no DefaultDuration, the value is assumed to be the difference available), or when there is a break in a track like for subtitle
between the timestamp of this Block and the timestamp of the next tracks.
Block in "display" order (not coding order). This Element can be
useful at the end of a Track (as there is no other Block available), implementation notes:
or when there is a break in a track like for subtitle tracks.
+-----------+---------------------------------------------------+
| attribute | note |
+===========+===================================================+
| minOccurs | BlockDuration MUST be set (minOccurs=1) if the |
| | associated TrackEntry stores a DefaultDuration |
| | value. |
+-----------+---------------------------------------------------+
| default | When not written and with no DefaultDuration, the |
| | value is assumed to be the difference between the |
| | timestamp of this Block and the timestamp of the |
| | next Block in "display" order (not coding order). |
+-----------+---------------------------------------------------+
Table 11
9.3.3.6.5. ReferencePriority Element 9.3.3.6.5. ReferencePriority Element
name: "ReferencePriority" name: "ReferencePriority"
path: "1*1(\Segment\Cluster\BlockGroup\ReferencePriority)" path: "1*1(\Segment\Cluster\BlockGroup\ReferencePriority)"
id: "0xFA" id: "0xFA"
minOccurs: "1" minOccurs: "1"
skipping to change at page 50, line 7 skipping to change at page 47, line 29
range: "1-254" range: "1-254"
type: "uinteger" type: "uinteger"
definition: A set of track types coded on 8 bits. definition: A set of track types coded on 8 bits.
restrictions: restrictions:
+-------+----------+ +-------+----------+
| value | label | | value | label |
+-------+----------+ +=======+==========+
| "1" | video | | "1" | video |
+-------+----------+
| "2" | audio | | "2" | audio |
+-------+----------+
| "3" | complex | | "3" | complex |
+-------+----------+
| "16" | logo | | "16" | logo |
+-------+----------+
| "17" | subtitle | | "17" | subtitle |
+-------+----------+
| "18" | buttons | | "18" | buttons |
+-------+----------+
| "32" | control | | "32" | control |
+-------+----------+
| "33" | metadata | | "33" | metadata |
+-------+----------+ +-------+----------+
Table 12
9.3.4.1.4. FlagEnabled Element 9.3.4.1.4. FlagEnabled Element
name: "FlagEnabled" name: "FlagEnabled"
path: "1*1(\Segment\Tracks\TrackEntry\FlagEnabled)" path: "1*1(\Segment\Tracks\TrackEntry\FlagEnabled)"
id: "0xB9" id: "0xB9"
minOccurs: "1" minOccurs: "1"
skipping to change at page 55, line 5 skipping to change at page 52, line 34
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: The maximum value of BlockAddID. A value 0 means there definition: The maximum value of BlockAddID. A value 0 means there
is no BlockAdditions for this track. is no BlockAdditions for this track.
9.3.4.1.15. Name Element 9.3.4.1.15. BlockAdditionMapping Element
name: "BlockAdditionMapping"
path: "0*(\Segment\Tracks\TrackEntry\BlockAdditionMapping)"
id: "0x41E4"
type: "master"
minver: "4"
definition: Contains elements that describe each value of BlockAddID
found in the Track.
9.3.4.1.15.1. BlockAddIDValue Element
name: "BlockAddIDValue"
path: "1*1(\Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddID
Value)"
id: "0x41F0"
minOccurs: "1"
maxOccurs: "1"
range: ">=2"
type: "uinteger"
minver: "4"
definition: The BlockAddID value being described. To keep
MaxBlockAdditionID as low as possible, small values SHOULD be used.
9.3.4.1.15.2. BlockAddIDName Element
name: "BlockAddIDName"
path:
"0*1(\Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddIDName)"
id: "0x41A4"
maxOccurs: "1"
type: "string"
minver: "4"
definition: A human-friendly name describing the type of
BlockAdditional data as defined by the associated Block Additional
Mapping.
9.3.4.1.15.3. BlockAddIDType Element
name: "BlockAddIDType"
path:
"1*1(\Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddIDType)"
id: "0x41E7"
minOccurs: "1"
maxOccurs: "1"
default: "0"
type: "uinteger"
minver: "4"
definition: Stores the registered identifer of the Block Additional
Mapping to define how the BlockAdditional data should be handled.
9.3.4.1.15.4. BlockAddIDExtraData Element
name: "BlockAddIDExtraData"
path: "0*1(\Segment\Tracks\TrackEntry\BlockAdditionMapping\BlockAddID
ExtraData)"
id: "0x41E7"
maxOccurs: "1"
type: "binary"
minver: "4"
definition: Extra binary data that the BlockAddIDType can use to
interpret the BlockAdditional data. The intepretation of the binary
data depends on the BlockAddIDType value and the corresponding Block
Additional Mapping.
9.3.4.1.16. Name Element
name: "Name" name: "Name"
path: "0*1(\Segment\Tracks\TrackEntry\Name)" path: "0*1(\Segment\Tracks\TrackEntry\Name)"
id: "0x536E" id: "0x536E"
maxOccurs: "1" maxOccurs: "1"
type: "utf-8" type: "utf-8"
definition: A human-readable track name. definition: A human-readable track name.
9.3.4.1.16. Language Element 9.3.4.1.17. Language Element
name: "Language" name: "Language"
path: "0*1(\Segment\Tracks\TrackEntry\Language)" path: "0*1(\Segment\Tracks\TrackEntry\Language)"
id: "0x22B59C" id: "0x22B59C"
maxOccurs: "1" maxOccurs: "1"
default: "eng" default: "eng"
type: "string" type: "string"
definition: Specifies the language of the track in the Matroska definition: Specifies the language of the track in the Matroska
languages form. This Element MUST be ignored if the LanguageIETF languages form. This Element MUST be ignored if the LanguageIETF
Element is used in the same TrackEntry. Element is used in the same TrackEntry.
9.3.4.1.17. LanguageIETF Element 9.3.4.1.18. LanguageIETF Element
name: "LanguageIETF" name: "LanguageIETF"
path: "0*1(\Segment\Tracks\TrackEntry\LanguageIETF)" path: "0*1(\Segment\Tracks\TrackEntry\LanguageIETF)"
id: "0x22B59D" id: "0x22B59D"
maxOccurs: "1" maxOccurs: "1"
type: "string" type: "string"
minver: "4" minver: "4"
definition: Specifies the language of the track according to BCP 47 definition: Specifies the language of the track according to BCP 47
and using the IANA Language Subtag Registry. If this Element is and using the IANA Language Subtag Registry. If this Element is
used, then any Language Elements used in the same TrackEntry MUST be used, then any Language Elements used in the same TrackEntry MUST be
ignored. ignored.
9.3.4.1.18. CodecID Element 9.3.4.1.19. CodecID Element
name: "CodecID" name: "CodecID"
path: "1*1(\Segment\Tracks\TrackEntry\CodecID)" path: "1*1(\Segment\Tracks\TrackEntry\CodecID)"
id: "0x86" id: "0x86"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
skipping to change at page 56, line 18 skipping to change at page 56, line 4
name: "CodecID" name: "CodecID"
path: "1*1(\Segment\Tracks\TrackEntry\CodecID)" path: "1*1(\Segment\Tracks\TrackEntry\CodecID)"
id: "0x86" id: "0x86"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
type: "string" type: "string"
definition: An ID corresponding to the codec, see the codec page for definition: An ID corresponding to the codec, see the codec page for
more info. more info.
9.3.4.1.19. CodecPrivate Element 9.3.4.1.20. CodecPrivate Element
name: "CodecPrivate" name: "CodecPrivate"
path: "0*1(\Segment\Tracks\TrackEntry\CodecPrivate)" path: "0*1(\Segment\Tracks\TrackEntry\CodecPrivate)"
id: "0x63A2" id: "0x63A2"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: Private data only known to the codec. definition: Private data only known to the codec.
9.3.4.1.20. CodecName Element 9.3.4.1.21. CodecName Element
name: "CodecName" name: "CodecName"
path: "0*1(\Segment\Tracks\TrackEntry\CodecName)" path: "0*1(\Segment\Tracks\TrackEntry\CodecName)"
id: "0x258688" id: "0x258688"
maxOccurs: "1" maxOccurs: "1"
type: "utf-8" type: "utf-8"
definition: A human-readable string specifying the codec. definition: A human-readable string specifying the codec.
9.3.4.1.21. AttachmentLink Element 9.3.4.1.22. AttachmentLink Element
name: "AttachmentLink" name: "AttachmentLink"
path: "0*1(\Segment\Tracks\TrackEntry\AttachmentLink)" path: "0*1(\Segment\Tracks\TrackEntry\AttachmentLink)"
id: "0x7446" id: "0x7446"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
skipping to change at page 57, line 20 skipping to change at page 57, line 4
id: "0x7446" id: "0x7446"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
maxver: "3" maxver: "3"
definition: The UID of an attachment that is used by this codec. definition: The UID of an attachment that is used by this codec.
9.3.4.1.22. CodecSettings Element 9.3.4.1.23. CodecSettings Element
name: "CodecSettings" name: "CodecSettings"
path: "0*1(\Segment\Tracks\TrackEntry\CodecSettings)" path: "0*1(\Segment\Tracks\TrackEntry\CodecSettings)"
id: "0x3A9697" id: "0x3A9697"
maxOccurs: "1" maxOccurs: "1"
type: "utf-8" type: "utf-8"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: A string describing the encoding setting used. definition: A string describing the encoding setting used.
9.3.4.1.23. CodecInfoURL Element 9.3.4.1.24. CodecInfoURL Element
name: "CodecInfoURL" name: "CodecInfoURL"
path: "0*(\Segment\Tracks\TrackEntry\CodecInfoURL)" path: "0*(\Segment\Tracks\TrackEntry\CodecInfoURL)"
id: "0x3B4040" id: "0x3B4040"
type: "string" type: "string"
minver: "0" minver: "0"
skipping to change at page 58, line 4 skipping to change at page 57, line 35
name: "CodecInfoURL" name: "CodecInfoURL"
path: "0*(\Segment\Tracks\TrackEntry\CodecInfoURL)" path: "0*(\Segment\Tracks\TrackEntry\CodecInfoURL)"
id: "0x3B4040" id: "0x3B4040"
type: "string" type: "string"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: A URL to find information about the codec used. definition: A URL to find information about the codec used.
9.3.4.1.24. CodecDownloadURL Element 9.3.4.1.25. CodecDownloadURL Element
name: "CodecDownloadURL" name: "CodecDownloadURL"
path: "0*(\Segment\Tracks\TrackEntry\CodecDownloadURL)" path: "0*(\Segment\Tracks\TrackEntry\CodecDownloadURL)"
id: "0x26B240" id: "0x26B240"
type: "string" type: "string"
minver: "0" minver: "0"
skipping to change at page 58, line 19 skipping to change at page 58, line 4
name: "CodecDownloadURL" name: "CodecDownloadURL"
path: "0*(\Segment\Tracks\TrackEntry\CodecDownloadURL)" path: "0*(\Segment\Tracks\TrackEntry\CodecDownloadURL)"
id: "0x26B240" id: "0x26B240"
type: "string" type: "string"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: A URL to download about the codec used. definition: A URL to download about the codec used.
9.3.4.1.25. CodecDecodeAll Element 9.3.4.1.26. CodecDecodeAll Element
name: "CodecDecodeAll" name: "CodecDecodeAll"
path: "1*1(\Segment\Tracks\TrackEntry\CodecDecodeAll)" path: "1*1(\Segment\Tracks\TrackEntry\CodecDecodeAll)"
id: "0xAA" id: "0xAA"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
skipping to change at page 58, line 46 skipping to change at page 58, line 30
range: "0-1" range: "0-1"
default: "1" default: "1"
type: "uinteger" type: "uinteger"
minver: "2" minver: "2"
definition: The codec can decode potentially damaged data (1 bit). definition: The codec can decode potentially damaged data (1 bit).
9.3.4.1.26. TrackOverlay Element 9.3.4.1.27. TrackOverlay Element
name: "TrackOverlay" name: "TrackOverlay"
path: "0*(\Segment\Tracks\TrackEntry\TrackOverlay)" path: "0*(\Segment\Tracks\TrackEntry\TrackOverlay)"
id: "0x6FAB" id: "0x6FAB"
type: "uinteger" type: "uinteger"
definition: Specify that this track is an overlay track for the Track definition: Specify that this track is an overlay track for the Track
specified (in the u-integer). That means when this track has a gap specified (in the u-integer). That means when this track has a gap
(see SilentTracks) the overlay track SHOULD be used instead. The (see SilentTracks) the overlay track SHOULD be used instead. The
order of multiple TrackOverlay matters, the first one is the one that order of multiple TrackOverlay matters, the first one is the one that
SHOULD be used. If not found it SHOULD be the second, etc. SHOULD be used. If not found it SHOULD be the second, etc.
skipping to change at page 59, line 14 skipping to change at page 58, line 46
id: "0x6FAB" id: "0x6FAB"
type: "uinteger" type: "uinteger"
definition: Specify that this track is an overlay track for the Track definition: Specify that this track is an overlay track for the Track
specified (in the u-integer). That means when this track has a gap specified (in the u-integer). That means when this track has a gap
(see SilentTracks) the overlay track SHOULD be used instead. The (see SilentTracks) the overlay track SHOULD be used instead. The
order of multiple TrackOverlay matters, the first one is the one that order of multiple TrackOverlay matters, the first one is the one that
SHOULD be used. If not found it SHOULD be the second, etc. SHOULD be used. If not found it SHOULD be the second, etc.
9.3.4.1.27. CodecDelay Element 9.3.4.1.28. CodecDelay Element
name: "CodecDelay" name: "CodecDelay"
path: "0*1(\Segment\Tracks\TrackEntry\CodecDelay)" path: "0*1(\Segment\Tracks\TrackEntry\CodecDelay)"
id: "0x56AA" id: "0x56AA"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
skipping to change at page 59, line 35 skipping to change at page 59, line 19
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: CodecDelay is The codec-built-in delay in nanoseconds. definition: CodecDelay is The codec-built-in delay in nanoseconds.
This value MUST be subtracted from each block timestamp in order to This value MUST be subtracted from each block timestamp in order to
get the actual timestamp. The value SHOULD be small so the muxing of get the actual timestamp. The value SHOULD be small so the muxing of
tracks with the same actual timestamp are in the same Cluster. tracks with the same actual timestamp are in the same Cluster.
9.3.4.1.28. SeekPreRoll Element 9.3.4.1.29. SeekPreRoll Element
name: "SeekPreRoll" name: "SeekPreRoll"
path: "1*1(\Segment\Tracks\TrackEntry\SeekPreRoll)" path: "1*1(\Segment\Tracks\TrackEntry\SeekPreRoll)"
id: "0x56BB" id: "0x56BB"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
skipping to change at page 60, line 4 skipping to change at page 59, line 36
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: After a discontinuity, SeekPreRoll is the duration in definition: After a discontinuity, SeekPreRoll is the duration in
nanoseconds of the data the decoder MUST decode before the decoded nanoseconds of the data the decoder MUST decode before the decoded
data is valid. data is valid.
9.3.4.1.29. TrackTranslate Element 9.3.4.1.30. TrackTranslate Element
name: "TrackTranslate" name: "TrackTranslate"
path: "0*(\Segment\Tracks\TrackEntry\TrackTranslate)" path: "0*(\Segment\Tracks\TrackEntry\TrackTranslate)"
id: "0x6624" id: "0x6624"
type: "master" type: "master"
definition: The track identification for the given Chapter Codec. definition: The track identification for the given Chapter Codec.
9.3.4.1.29.1. TrackTranslateEditionUID Element 9.3.4.1.30.1. TrackTranslateEditionUID Element
name: "TrackTranslateEditionUID" name: "TrackTranslateEditionUID"
path: "0*(\Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateEdi path: "0*(\Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateEdi
tionUID)" tionUID)"
id: "0x66FC" id: "0x66FC"
type: "uinteger" type: "uinteger"
definition: Specify an edition UID on which this translation applies. definition: Specify an edition UID on which this translation applies.
When not specified, it means for all editions found in the Segment. When not specified, it means for all editions found in the Segment.
9.3.4.1.29.2. TrackTranslateCodec Element 9.3.4.1.30.2. TrackTranslateCodec Element
name: "TrackTranslateCodec" name: "TrackTranslateCodec"
path: path:
"1*1(\Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateCodec)" "1*1(\Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateCodec)"
id: "0x66BF" id: "0x66BF"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
definition: The chapter codec. definition: The chapter codec.
restrictions: restrictions:
+-------+-----------------+ +-------+-----------------+
| value | label | | value | label |
+-------+-----------------+ +=======+=================+
| "0" | Matroska Script | | "0" | Matroska Script |
+-------+-----------------+
| "1" | DVD-menu | | "1" | DVD-menu |
+-------+-----------------+ +-------+-----------------+
9.3.4.1.29.3. TrackTranslateTrackID Element Table 13
name: "TrackTranslateTrackID" 9.3.4.1.30.3. TrackTranslateTrackID Element
name: "TrackTranslateTrackID"
path: "1*1(\Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateTr path: "1*1(\Segment\Tracks\TrackEntry\TrackTranslate\TrackTranslateTr
ackID)" ackID)"
id: "0x66A5" id: "0x66A5"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: The binary value used to represent this track in the definition: The binary value used to represent this track in the
chapter codec data. The format depends on the ChapProcessCodecID chapter codec data. The format depends on the ChapProcessCodecID
used. used.
9.3.4.1.30. Video Element 9.3.4.1.31. Video Element
name: "Video" name: "Video"
path: "0*1(\Segment\Tracks\TrackEntry\Video)" path: "0*1(\Segment\Tracks\TrackEntry\Video)"
id: "0xE0" id: "0xE0"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
definition: Video settings. definition: Video settings.
9.3.4.1.30.1. FlagInterlaced Element 9.3.4.1.31.1. FlagInterlaced Element
name: "FlagInterlaced" name: "FlagInterlaced"
path: "1*1(\Segment\Tracks\TrackEntry\Video\FlagInterlaced)" path: "1*1(\Segment\Tracks\TrackEntry\Video\FlagInterlaced)"
id: "0x9A" id: "0x9A"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "0-2" range: "0-2"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
skipping to change at page 62, line 15 skipping to change at page 62, line 4
maxOccurs: "1" maxOccurs: "1"
range: "0-2" range: "0-2"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
minver: "2" minver: "2"
definition: A flag to declare if the video is known to be progressive definition: A flag to declare if the video is known to be progressive
or interlaced and if applicable to declare details about the or interlaced and if applicable to declare details about the
interlacement. interlacement.
restrictions: restrictions:
+-------+--------------+ +-------+--------------+
| value | label | | value | label |
+-------+--------------+ +=======+==============+
| "0" | undetermined | | "0" | undetermined |
+-------+--------------+
| "1" | interlaced | | "1" | interlaced |
+-------+--------------+
| "2" | progressive | | "2" | progressive |
+-------+--------------+ +-------+--------------+
9.3.4.1.30.2. FieldOrder Element Table 14
9.3.4.1.31.2. FieldOrder Element
name: "FieldOrder" name: "FieldOrder"
path: "1*1(\Segment\Tracks\TrackEntry\Video\FieldOrder)" path: "1*1(\Segment\Tracks\TrackEntry\Video\FieldOrder)"
id: "0x9D" id: "0x9D"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
skipping to change at page 63, line 7 skipping to change at page 63, line 5
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: Declare the field ordering of the video. If definition: Declare the field ordering of the video. If
FlagInterlaced is not set to 1, this Element MUST be ignored. FlagInterlaced is not set to 1, this Element MUST be ignored.
restrictions: restrictions:
+-------+--------------+--------------------------------------------+ +-------+--------------+-----------------------------------------+
| value | label | documentation | | value | label | documentation |
+-------+--------------+--------------------------------------------+ +=======+==============+=========================================+
| "0" | progressive | | | "0" | progressive | |
| "1" | tff | Top field displayed first. Top field | +-------+--------------+-----------------------------------------+
| | | stored first. | | "1" | tff | Top field displayed first. Top field |
| "2" | undetermined | | | | | stored first. |
| "6" | bff | Bottom field displayed first. Bottom field | +-------+--------------+-----------------------------------------+
| | | stored first. | | "2" | undetermined | |
| "9" | bff(swapped) | Top field displayed first. Fields are | +-------+--------------+-----------------------------------------+
| | | interleaved in storage with the top line | | "6" | bff | Bottom field displayed first. Bottom |
| | | of the top field stored first. | | | | field stored first. |
| "14" | tff(swapped) | Bottom field displayed first. Fields are | +-------+--------------+-----------------------------------------+
| | | interleaved in storage with the top line | | "9" | bff(swapped) | Top field displayed first. Fields are |
| | | of the top field stored first. | | | | 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. |
+-------+--------------+-----------------------------------------+
9.3.4.1.30.3. StereoMode Element Table 15
9.3.4.1.31.3. StereoMode Element
name: "StereoMode" name: "StereoMode"
path: "0*1(\Segment\Tracks\TrackEntry\Video\StereoMode)" path: "0*1(\Segment\Tracks\TrackEntry\Video\StereoMode)"
id: "0x53B8" id: "0x53B8"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
skipping to change at page 64, line 7 skipping to change at page 64, line 7
minver: "3" minver: "3"
definition: Stereo-3D video mode. There are some more details on 3D definition: Stereo-3D video mode. There are some more details on 3D
support in the Specification Notes. support in the Specification Notes.
restrictions: restrictions:
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
| 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) |
+-------+---------------------------------------------------+
| "3" | top - bottom (left eye is first) | | "3" | top - bottom (left eye is first) |
+-------+---------------------------------------------------+
| "4" | checkboard (right eye is first) | | "4" | checkboard (right eye is first) |
+-------+---------------------------------------------------+
| "5" | checkboard (left eye is first) | | "5" | checkboard (left eye is first) |
+-------+---------------------------------------------------+
| "6" | row interleaved (right eye is first) | | "6" | row interleaved (right eye is first) |
+-------+---------------------------------------------------+
| "7" | row interleaved (left eye is first) | | "7" | row interleaved (left eye is first) |
+-------+---------------------------------------------------+
| "8" | column interleaved (right eye is first) | | "8" | column interleaved (right eye is first) |
+-------+---------------------------------------------------+
| "9" | column interleaved (left eye is first) | | "9" | column interleaved (left eye is first) |
+-------+---------------------------------------------------+
| "10" | anaglyph (cyan/red) | | "10" | anaglyph (cyan/red) |
+-------+---------------------------------------------------+
| "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) |
+-------+---------------------------------------------------+ +-------+---------------------------------------------------+
9.3.4.1.30.4. AlphaMode Element Table 16
9.3.4.1.31.4. AlphaMode Element
name: "AlphaMode" name: "AlphaMode"
path: "0*1(\Segment\Tracks\TrackEntry\Video\AlphaMode)" path: "0*1(\Segment\Tracks\TrackEntry\Video\AlphaMode)"
id: "0x53C0" id: "0x53C0"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
skipping to change at page 64, line 36 skipping to change at page 65, line 4
name: "AlphaMode" name: "AlphaMode"
path: "0*1(\Segment\Tracks\TrackEntry\Video\AlphaMode)" path: "0*1(\Segment\Tracks\TrackEntry\Video\AlphaMode)"
id: "0x53C0" id: "0x53C0"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
minver: "3" minver: "3"
definition: Alpha Video Mode. Presence of this Element indicates definition: Alpha Video Mode. Presence of this Element indicates
that the BlockAdditional Element could contain Alpha data. that the BlockAdditional Element could contain Alpha data.
9.3.4.1.30.5. OldStereoMode Element 9.3.4.1.31.5. OldStereoMode Element
name: "OldStereoMode" name: "OldStereoMode"
path: "0*1(\Segment\Tracks\TrackEntry\Video\OldStereoMode)" path: "0*1(\Segment\Tracks\TrackEntry\Video\OldStereoMode)"
id: "0x53B9" id: "0x53B9"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
maxver: "0" maxver: "0"
definition: DEPRECATED, DO NOT USE. Bogus StereoMode value used in definition: DEPRECATED, DO NOT USE. Bogus StereoMode value used in
old versions of libmatroska. old versions of libmatroska.
restrictions: restrictions:
+-------+-----------+ +-------+-----------+
skipping to change at page 65, line 15 skipping to change at page 65, line 32
maxver: "0" maxver: "0"
definition: DEPRECATED, DO NOT USE. Bogus StereoMode value used in definition: DEPRECATED, DO NOT USE. Bogus StereoMode value used in
old versions of libmatroska. old versions of libmatroska.
restrictions: restrictions:
+-------+-----------+ +-------+-----------+
| 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 |
+-------+-----------+ +-------+-----------+
9.3.4.1.30.6. PixelWidth Element Table 17
9.3.4.1.31.6. PixelWidth Element
name: "PixelWidth" name: "PixelWidth"
path: "1*1(\Segment\Tracks\TrackEntry\Video\PixelWidth)" path: "1*1(\Segment\Tracks\TrackEntry\Video\PixelWidth)"
id: "0xB0" id: "0xB0"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
definition: Width of the encoded video frames in pixels. definition: Width of the encoded video frames in pixels.
skipping to change at page 65, line 40 skipping to change at page 66, line 14
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
definition: Width of the encoded video frames in pixels. definition: Width of the encoded video frames in pixels.
9.3.4.1.30.7. PixelHeight Element 9.3.4.1.31.7. PixelHeight Element
name: "PixelHeight" name: "PixelHeight"
path: "1*1(\Segment\Tracks\TrackEntry\Video\PixelHeight)" path: "1*1(\Segment\Tracks\TrackEntry\Video\PixelHeight)"
id: "0xBA" id: "0xBA"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
skipping to change at page 66, line 4 skipping to change at page 66, line 25
name: "PixelHeight" name: "PixelHeight"
path: "1*1(\Segment\Tracks\TrackEntry\Video\PixelHeight)" path: "1*1(\Segment\Tracks\TrackEntry\Video\PixelHeight)"
id: "0xBA" id: "0xBA"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
definition: Height of the encoded video frames in pixels. definition: Height of the encoded video frames in pixels.
9.3.4.1.30.8. PixelCropBottom Element 9.3.4.1.31.8. PixelCropBottom Element
name: "PixelCropBottom" name: "PixelCropBottom"
path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropBottom)" path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropBottom)"
id: "0x54AA" id: "0x54AA"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: The number of video pixels to remove at the bottom of the definition: The number of video pixels to remove at the bottom of the
image. image.
9.3.4.1.30.9. PixelCropTop Element 9.3.4.1.31.9. PixelCropTop Element
name: "PixelCropTop" name: "PixelCropTop"
path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropTop)" path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropTop)"
id: "0x54BB" id: "0x54BB"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
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.
9.3.4.1.30.10. PixelCropLeft Element 9.3.4.1.31.10. PixelCropLeft Element
name: "PixelCropLeft" name: "PixelCropLeft"
path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropLeft)" path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropLeft)"
id: "0x54CC" id: "0x54CC"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
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.
9.3.4.1.30.11. PixelCropRight Element 9.3.4.1.31.11. PixelCropRight Element
name: "PixelCropRight" name: "PixelCropRight"
path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropRight)" path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropRight)"
id: "0x54DD" id: "0x54DD"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
skipping to change at page 67, line 26 skipping to change at page 68, line 4
path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropRight)" path: "0*1(\Segment\Tracks\TrackEntry\Video\PixelCropRight)"
id: "0x54DD" id: "0x54DD"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
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.
9.3.4.1.30.12. DisplayWidth Element 9.3.4.1.31.12. DisplayWidth Element
name: "DisplayWidth" name: "DisplayWidth"
path: "0*1(\Segment\Tracks\TrackEntry\Video\DisplayWidth)" path: "0*1(\Segment\Tracks\TrackEntry\Video\DisplayWidth)"
id: "0x54B0" id: "0x54B0"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
default: "PixelWidth - PixelCropLeft - PixelCropRight" default: see implementation notes
type: "uinteger" type: "uinteger"
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). The default value video frame after cropping (PixelCrop* Elements).
is only valid when DisplayUnit is 0.
9.3.4.1.30.13. DisplayHeight Element implementation notes:
+-----------+-------------------------------------------------+
| attribute | note |
+===========+=================================================+
| default | If the DisplayUnit of the same TrackEntry is 0, |
| | then the default value for DisplayWidth is |
| | equal to PixelWidth - PixelCropLeft - |
| | PixelCropRight, else there is no default value. |
+-----------+-------------------------------------------------+
Table 18
9.3.4.1.31.13. DisplayHeight Element
name: "DisplayHeight" name: "DisplayHeight"
path: "0*1(\Segment\Tracks\TrackEntry\Video\DisplayHeight)" path: "0*1(\Segment\Tracks\TrackEntry\Video\DisplayHeight)"
id: "0x54BA" id: "0x54BA"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
default: "PixelHeight - PixelCropTop - PixelCropBottom" default: see implementation notes
type: "uinteger" type: "uinteger"
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). The default value video frame after cropping (PixelCrop* Elements).
is only valid when DisplayUnit is 0.
9.3.4.1.30.14. DisplayUnit Element implementation notes:
+-----------+--------------------------------------------------+
| attribute | note |
+===========+==================================================+
| default | If the DisplayUnit of the same TrackEntry is 0, |
| | then the default value for DisplayHeight is |
| | equal to PixelHeight - PixelCropTop - |
| | PixelCropBottom, else there is no default value. |
+-----------+--------------------------------------------------+
Table 19
9.3.4.1.31.14. DisplayUnit Element
name: "DisplayUnit" name: "DisplayUnit"
path: "0*1(\Segment\Tracks\TrackEntry\Video\DisplayUnit)" path: "0*1(\Segment\Tracks\TrackEntry\Video\DisplayUnit)"
id: "0x54B2" id: "0x54B2"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: How DisplayWidth & DisplayHeight are interpreted. definition: How DisplayWidth & DisplayHeight are interpreted.
restrictions: restrictions:
+-------+----------------------+ +-------+----------------------+
| 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 |
+-------+----------------------+ +-------+----------------------+
9.3.4.1.30.15. AspectRatioType Element Table 20
9.3.4.1.31.15. AspectRatioType Element
name: "AspectRatioType" name: "AspectRatioType"
path: "0*1(\Segment\Tracks\TrackEntry\Video\AspectRatioType)" path: "0*1(\Segment\Tracks\TrackEntry\Video\AspectRatioType)"
id: "0x54B3" id: "0x54B3"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: Specify the possible modifications to the aspect ratio. definition: Specify the possible modifications to the aspect ratio.
restrictions: restrictions:
+-------+-------------------+ +-------+-------------------+
| value | label | | value | label |
+-------+-------------------+ +=======+===================+
| "0" | free resizing | | "0" | free resizing |
+-------+-------------------+
| "1" | keep aspect ratio | | "1" | keep aspect ratio |
+-------+-------------------+
| "2" | fixed | | "2" | fixed |
+-------+-------------------+ +-------+-------------------+
9.3.4.1.30.16. ColourSpace Element Table 21
9.3.4.1.31.16. ColourSpace Element
name: "ColourSpace" name: "ColourSpace"
path: "0*1(\Segment\Tracks\TrackEntry\Video\ColourSpace)" path: "0*1(\Segment\Tracks\TrackEntry\Video\ColourSpace)"
id: "0x2EB524" id: "0x2EB524"
minOccurs: see implementation notes
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: Specify the pixel format used for the Track's data as a definition: Specify the pixel format used for the Track's data as a
FourCC. This value is similar in scope to the biCompression value of FourCC. This value is similar in scope to the biCompression value of
AVI's BITMAPINFOHEADER. This Element is MANDATORY in TrackEntry when AVI's BITMAPINFOHEADER.
the CodecID Element of the TrackEntry is set to "V_UNCOMPRESSED".
9.3.4.1.30.17. GammaValue Element implementation notes:
+-----------+--------------------------------------------+
| attribute | note |
+===========+============================================+
| minOccurs | ColourSpace MUST be set (minOccurs=1) in |
| | TrackEntry when the CodecID Element of the |
| | TrackEntry is set to "V_UNCOMPRESSED". |
+-----------+--------------------------------------------+
Table 22
9.3.4.1.31.17. GammaValue Element
name: "GammaValue" name: "GammaValue"
path: "0*1(\Segment\Tracks\TrackEntry\Video\GammaValue)" path: "0*1(\Segment\Tracks\TrackEntry\Video\GammaValue)"
id: "0x2FB523" id: "0x2FB523"
maxOccurs: "1" maxOccurs: "1"
range: "> 0x0p+0" range: "> 0x0p+0"
type: "float" type: "float"
minver: "0" minver: "0"
skipping to change at page 70, line 15 skipping to change at page 72, line 4
maxOccurs: "1" maxOccurs: "1"
range: "> 0x0p+0" range: "> 0x0p+0"
type: "float" type: "float"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: Gamma Value. definition: Gamma Value.
9.3.4.1.30.18. FrameRate Element 9.3.4.1.31.18. FrameRate Element
name: "FrameRate" name: "FrameRate"
path: "0*1(\Segment\Tracks\TrackEntry\Video\FrameRate)" path: "0*1(\Segment\Tracks\TrackEntry\Video\FrameRate)"
id: "0x2383E3" id: "0x2383E3"
maxOccurs: "1" maxOccurs: "1"
range: "> 0x0p+0" range: "> 0x0p+0"
type: "float" type: "float"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: Number of frames per second. Informational only. definition: Number of frames per second. Informational only.
9.3.4.1.30.19. Colour Element 9.3.4.1.31.19. Colour Element
name: "Colour" name: "Colour"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour)"
id: "0x55B0" id: "0x55B0"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
skipping to change at page 71, line 4 skipping to change at page 72, line 39
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour)"
id: "0x55B0" id: "0x55B0"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
minver: "4" minver: "4"
definition: Settings describing the colour format. definition: Settings describing the colour format.
9.3.4.1.30.20. MatrixCoefficients Element 9.3.4.1.31.20. MatrixCoefficients Element
name: "MatrixCoefficients" name: "MatrixCoefficients"
path: path:
"0*1(\Segment\Tracks\TrackEntry\Video\Colour\MatrixCoefficients)" "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MatrixCoefficients)"
id: "0x55B1" id: "0x55B1"
maxOccurs: "1" maxOccurs: "1"
default: "2" default: "2"
type: "uinteger" type: "uinteger"
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 ISO/IEC 23001-8:2016 or ITU-T H.273. from Table 4 of ISO/IEC 23001-8:2016 or ITU-T H.273.
skipping to change at page 71, line 32 skipping to change at page 73, line 19
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 ISO/IEC 23001-8:2016 or ITU-T H.273. from Table 4 of ISO/IEC 23001-8:2016 or ITU-T H.273.
restrictions: restrictions:
+-------+---------------------------------------+ +-------+---------------------------------------+
| value | label | | value | label |
+-------+---------------------------------------+ +=======+=======================================+
| "0" | Identity | | "0" | Identity |
+-------+---------------------------------------+
| "1" | ITU-R BT.709 | | "1" | ITU-R BT.709 |
+-------+---------------------------------------+
| "2" | unspecified | | "2" | unspecified |
+-------+---------------------------------------+
| "3" | reserved | | "3" | reserved |
+-------+---------------------------------------+
| "4" | US FCC 73.682 | | "4" | US FCC 73.682 |
+-------+---------------------------------------+
| "5" | ITU-R BT.470BG | | "5" | ITU-R BT.470BG |
+-------+---------------------------------------+
| "6" | SMPTE 170M | | "6" | SMPTE 170M |
+-------+---------------------------------------+
| "7" | SMPTE 240M | | "7" | SMPTE 240M |
+-------+---------------------------------------+
| "8" | YCoCg | | "8" | YCoCg |
+-------+---------------------------------------+
| "9" | BT2020 Non-constant Luminance | | "9" | BT2020 Non-constant Luminance |
+-------+---------------------------------------+
| "10" | BT2020 Constant Luminance | | "10" | BT2020 Constant Luminance |
+-------+---------------------------------------+
| "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 |
+-------+---------------------------------------+ +-------+---------------------------------------+
9.3.4.1.30.21. BitsPerChannel Element Table 23
9.3.4.1.31.21. BitsPerChannel Element
name: "BitsPerChannel" name: "BitsPerChannel"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\BitsPerChannel)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\BitsPerChannel)"
id: "0x55B2" id: "0x55B2"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
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.
9.3.4.1.30.22. ChromaSubsamplingHorz Element 9.3.4.1.31.22. ChromaSubsamplingHorz Element
name: "ChromaSubsamplingHorz" name: "ChromaSubsamplingHorz"
path: path:
"0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingHorz)" "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingHorz)"
id: "0x55B3" id: "0x55B3"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: The amount of pixels to remove in the Cr and Cb channels definition: The amount 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 to 4:2:0 chroma subsampling, the ChromaSubsamplingHorz SHOULD be set to
1. 1.
9.3.4.1.30.23. ChromaSubsamplingVert Element 9.3.4.1.31.23. ChromaSubsamplingVert Element
name: "ChromaSubsamplingVert" name: "ChromaSubsamplingVert"
path: path:
"0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingVert)" "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSubsamplingVert)"
id: "0x55B4" id: "0x55B4"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: The amount of pixels to remove in the Cr and Cb channels definition: The amount 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 to 4:2:0 chroma subsampling, the ChromaSubsamplingVert SHOULD be set to
1. 1.
9.3.4.1.30.24. CbSubsamplingHorz Element 9.3.4.1.31.24. CbSubsamplingHorz Element
name: "CbSubsamplingHorz" name: "CbSubsamplingHorz"
path: path:
"0*1(\Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingHorz)" "0*1(\Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingHorz)"
id: "0x55B5" id: "0x55B5"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: The amount of pixels to remove in the Cb channel for definition: The amount 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.
9.3.4.1.30.25. CbSubsamplingVert Element 9.3.4.1.31.25. CbSubsamplingVert Element
name: "CbSubsamplingVert" name: "CbSubsamplingVert"
path: path:
"0*1(\Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingVert)" "0*1(\Segment\Tracks\TrackEntry\Video\Colour\CbSubsamplingVert)"
id: "0x55B6" id: "0x55B6"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: The amount of pixels to remove in the Cb channel for definition: The amount 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.
9.3.4.1.30.26. ChromaSitingHorz Element 9.3.4.1.31.26. ChromaSitingHorz Element
name: "ChromaSitingHorz" name: "ChromaSitingHorz"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingHorz)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingHorz)"
id: "0x55B7" id: "0x55B7"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
skipping to change at page 74, line 30 skipping to change at page 76, line 30
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: How chroma is subsampled horizontally. definition: How chroma is subsampled horizontally.
restrictions: restrictions:
+-------+-----------------+ +-------+-----------------+
| value | label | | value | label |
+-------+-----------------+ +=======+=================+
| "0" | unspecified | | "0" | unspecified |
+-------+-----------------+
| "1" | left collocated | | "1" | left collocated |
+-------+-----------------+
| "2" | half | | "2" | half |
+-------+-----------------+ +-------+-----------------+
9.3.4.1.30.27. ChromaSitingVert Element Table 24
9.3.4.1.31.27. ChromaSitingVert Element
name: "ChromaSitingVert" name: "ChromaSitingVert"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingVert)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingVert)"
id: "0x55B8" id: "0x55B8"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
skipping to change at page 74, line 47 skipping to change at page 77, line 4
name: "ChromaSitingVert" name: "ChromaSitingVert"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingVert)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\ChromaSitingVert)"
id: "0x55B8" id: "0x55B8"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: How chroma is subsampled vertically. definition: How chroma is subsampled vertically.
restrictions: restrictions:
+-------+----------------+ +-------+----------------+
| value | label | | value | label |
+-------+----------------+ +=======+================+
| "0" | unspecified | | "0" | unspecified |
+-------+----------------+
| "1" | top collocated | | "1" | top collocated |
+-------+----------------+
| "2" | half | | "2" | half |
+-------+----------------+ +-------+----------------+
9.3.4.1.30.28. Range Element Table 25
9.3.4.1.31.28. Range Element
name: "Range" name: "Range"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\Range)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\Range)"
id: "0x55B9" id: "0x55B9"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
skipping to change at page 75, line 38 skipping to change at page 78, line 7
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: Clipping of the color ranges. definition: Clipping of the color ranges.
restrictions: restrictions:
+-------+-------------------------------------------------------+ +-------+-------------------------------------------------------+
| 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 |
+-------+-------------------------------------------------------+ +-------+-------------------------------------------------------+
9.3.4.1.30.29. TransferCharacteristics Element Table 26
9.3.4.1.31.29. TransferCharacteristics Element
name: "TransferCharacteristics" name: "TransferCharacteristics"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\TransferCharacteri path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\TransferCharacteri
stics)" stics)"
id: "0x55BA" id: "0x55BA"
maxOccurs: "1" maxOccurs: "1"
default: "2" default: "2"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
skipping to change at page 76, line 22 skipping to change at page 79, line 7
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 from the value and meanings for TransferCharacteristics are adopted from
Table 3 of ISO/IEC 23091-4 or ITU-T H.273. Table 3 of ISO/IEC 23091-4 or ITU-T H.273.
restrictions: restrictions:
+-------+---------------------------------------+ +-------+---------------------------------------+
| value | label | | value | label |
+-------+---------------------------------------+ +=======+=======================================+
| "0" | reserved | | "0" | reserved |
+-------+---------------------------------------+
| "1" | ITU-R BT.709 | | "1" | ITU-R BT.709 |
+-------+---------------------------------------+
| "2" | unspecified | | "2" | unspecified |
+-------+---------------------------------------+
| "3" | reserved | | "3" | reserved |
+-------+---------------------------------------+
| "4" | Gamma 2.2 curve - BT.470M | | "4" | Gamma 2.2 curve - BT.470M |
+-------+---------------------------------------+
| "5" | Gamma 2.8 curve - BT.470BG | | "5" | Gamma 2.8 curve - BT.470BG |
+-------+---------------------------------------+
| "6" | SMPTE 170M | | "6" | SMPTE 170M |
+-------+---------------------------------------+
| "7" | SMPTE 240M | | "7" | SMPTE 240M |
+-------+---------------------------------------+
| "8" | Linear | | "8" | Linear |
+-------+---------------------------------------+
| "9" | Log | | "9" | Log |
+-------+---------------------------------------+
| "10" | Log Sqrt | | "10" | Log Sqrt |
+-------+---------------------------------------+
| "11" | IEC 61966-2-4 | | "11" | IEC 61966-2-4 |
+-------+---------------------------------------+
| "12" | ITU-R BT.1361 Extended Colour Gamut | | "12" | ITU-R BT.1361 Extended Colour Gamut |
+-------+---------------------------------------+
| "13" | IEC 61966-2-1 | | "13" | IEC 61966-2-1 |
+-------+---------------------------------------+
| "14" | ITU-R BT.2020 10 bit | | "14" | ITU-R BT.2020 10 bit |
+-------+---------------------------------------+
| "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) |
+-------+---------------------------------------+ +-------+---------------------------------------+
9.3.4.1.30.30. Primaries Element Table 27
name: "Primaries" 9.3.4.1.31.30. Primaries Element
name: "Primaries"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\Primaries)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\Primaries)"
id: "0x55BB" id: "0x55BB"
maxOccurs: "1" maxOccurs: "1"
default: "2" default: "2"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: The colour primaries of the video. For clarity, the definition: The colour primaries of the video. For clarity, the
value and meanings for Primaries are adopted from Table 2 of ISO/IEC value and meanings for Primaries are adopted from Table 2 of ISO/IEC
skipping to change at page 77, line 20 skipping to change at page 81, line 7
minver: "4" minver: "4"
definition: The colour primaries of the video. For clarity, the definition: The colour primaries of the video. For clarity, the
value and meanings for Primaries are adopted from Table 2 of ISO/IEC value and meanings for Primaries are adopted from Table 2 of ISO/IEC
23091-4 or ITU-T H.273. 23091-4 or ITU-T H.273.
restrictions: restrictions:
+-------+----------------------------------------+ +-------+----------------------------------------+
| value | label | | value | label |
+-------+----------------------------------------+ +=======+========================================+
| "0" | reserved | | "0" | reserved |
+-------+----------------------------------------+
| "1" | ITU-R BT.709 | | "1" | ITU-R BT.709 |
+-------+----------------------------------------+
| "2" | unspecified | | "2" | unspecified |
+-------+----------------------------------------+
| "3" | reserved | | "3" | reserved |
+-------+----------------------------------------+
| "4" | ITU-R BT.470M | | "4" | ITU-R BT.470M |
+-------+----------------------------------------+
| "5" | ITU-R BT.470BG - BT.601 625 | | "5" | ITU-R BT.470BG - BT.601 625 |
+-------+----------------------------------------+
| "6" | ITU-R BT.601 525 - SMPTE 170M | | "6" | ITU-R BT.601 525 - SMPTE 170M |
+-------+----------------------------------------+
| "7" | SMPTE 240M | | "7" | SMPTE 240M |
+-------+----------------------------------------+
| "8" | FILM | | "8" | FILM |
+-------+----------------------------------------+
| "9" | ITU-R BT.2020 | | "9" | ITU-R BT.2020 |
+-------+----------------------------------------+
| "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 |
+-------+----------------------------------------+ +-------+----------------------------------------+
9.3.4.1.30.31. MaxCLL Element Table 28
9.3.4.1.31.31. MaxCLL Element
name: "MaxCLL" name: "MaxCLL"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MaxCLL)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MaxCLL)"
id: "0x55BC" id: "0x55BC"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
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).
9.3.4.1.30.32. MaxFALL Element 9.3.4.1.31.32. MaxFALL Element
name: "MaxFALL" name: "MaxFALL"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MaxFALL)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MaxFALL)"
id: "0x55BD" id: "0x55BD"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: Maximum brightness of a single full frame (Maximum Frame- definition: Maximum brightness of a single full frame (Maximum Frame-
Average Light Level) in candelas per square meter (cd/m^2). Average Light Level) in candelas per square meter (cd/m^2).
9.3.4.1.30.33. MasteringMetadata Element 9.3.4.1.31.33. MasteringMetadata Element
name: "MasteringMetadata" name: "MasteringMetadata"
path: path:
"0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata)" "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata)"
id: "0x55D0" id: "0x55D0"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
minver: "4" minver: "4"
definition: SMPTE 2086 mastering data. definition: SMPTE 2086 mastering data.
9.3.4.1.30.34. PrimaryRChromaticityX Element 9.3.4.1.31.34. PrimaryRChromaticityX Element
name: "PrimaryRChromaticityX" name: "PrimaryRChromaticityX"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
PrimaryRChromaticityX)" PrimaryRChromaticityX)"
id: "0x55D1" id: "0x55D1"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Red X chromaticity coordinate as defined by CIE 1931. definition: Red X chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.35. PrimaryRChromaticityY Element 9.3.4.1.31.35. PrimaryRChromaticityY Element
name: "PrimaryRChromaticityY" name: "PrimaryRChromaticityY"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
PrimaryRChromaticityY)" PrimaryRChromaticityY)"
id: "0x55D2" id: "0x55D2"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Red Y chromaticity coordinate as defined by CIE 1931. definition: Red Y chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.36. PrimaryGChromaticityX Element 9.3.4.1.31.36. PrimaryGChromaticityX Element
name: "PrimaryGChromaticityX" name: "PrimaryGChromaticityX"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
PrimaryGChromaticityX)" PrimaryGChromaticityX)"
id: "0x55D3" id: "0x55D3"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Green X chromaticity coordinate as defined by CIE 1931. definition: Green X chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.37. PrimaryGChromaticityY Element 9.3.4.1.31.37. PrimaryGChromaticityY Element
name: "PrimaryGChromaticityY" name: "PrimaryGChromaticityY"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
PrimaryGChromaticityY)" PrimaryGChromaticityY)"
id: "0x55D4" id: "0x55D4"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Green Y chromaticity coordinate as defined by CIE 1931. definition: Green Y chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.38. PrimaryBChromaticityX Element 9.3.4.1.31.38. PrimaryBChromaticityX Element
name: "PrimaryBChromaticityX" name: "PrimaryBChromaticityX"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
PrimaryBChromaticityX)" PrimaryBChromaticityX)"
id: "0x55D5" id: "0x55D5"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Blue X chromaticity coordinate as defined by CIE 1931. definition: Blue X chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.39. PrimaryBChromaticityY Element 9.3.4.1.31.39. PrimaryBChromaticityY Element
name: "PrimaryBChromaticityY" name: "PrimaryBChromaticityY"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
PrimaryBChromaticityY)" PrimaryBChromaticityY)"
id: "0x55D6" id: "0x55D6"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Blue Y chromaticity coordinate as defined by CIE 1931. definition: Blue Y chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.40. WhitePointChromaticityX Element 9.3.4.1.31.40. WhitePointChromaticityX Element
name: "WhitePointChromaticityX" name: "WhitePointChromaticityX"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
WhitePointChromaticityX)" WhitePointChromaticityX)"
id: "0x55D7" id: "0x55D7"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: White X chromaticity coordinate as defined by CIE 1931. definition: White X chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.41. WhitePointChromaticityY Element 9.3.4.1.31.41. WhitePointChromaticityY Element
name: "WhitePointChromaticityY" name: "WhitePointChromaticityY"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
WhitePointChromaticityY)" WhitePointChromaticityY)"
id: "0x55D8" id: "0x55D8"
maxOccurs: "1" maxOccurs: "1"
range: "0-1" range: "0-1"
type: "float" type: "float"
minver: "4" minver: "4"
definition: White Y chromaticity coordinate as defined by CIE 1931. definition: White Y chromaticity coordinate as defined by CIE 1931.
9.3.4.1.30.42. LuminanceMax Element 9.3.4.1.31.42. LuminanceMax Element
name: "LuminanceMax" name: "LuminanceMax"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
LuminanceMax)" LuminanceMax)"
id: "0x55D9" id: "0x55D9"
maxOccurs: "1" maxOccurs: "1"
range: ">= 0x0p+0" range: ">= 0x0p+0"
type: "float" type: "float"
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).
9.3.4.1.30.43. LuminanceMin Element 9.3.4.1.31.43. LuminanceMin Element
name: "LuminanceMin" name: "LuminanceMin"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\ path: "0*1(\Segment\Tracks\TrackEntry\Video\Colour\MasteringMetadata\
LuminanceMin)" LuminanceMin)"
id: "0x55DA" id: "0x55DA"
maxOccurs: "1" maxOccurs: "1"
range: ">= 0x0p+0" range: ">= 0x0p+0"
type: "float" type: "float"
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).
9.3.4.1.30.44. Projection Element 9.3.4.1.31.44. Projection Element
name: "Projection" name: "Projection"
path: "0*1(\Segment\Tracks\TrackEntry\Video\Projection)" path: "0*1(\Segment\Tracks\TrackEntry\Video\Projection)"
id: "0x7670" id: "0x7670"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
minver: "4" minver: "4"
definition: Describes the video projection details. Used to render definition: Describes the video projection details. Used to render
spherical and VR videos. spherical and VR videos.
9.3.4.1.30.45. ProjectionType Element 9.3.4.1.31.45. ProjectionType Element
name: "ProjectionType" name: "ProjectionType"
path: path:
"1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionType)" "1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionType)"
id: "0x7671" id: "0x7671"
minOccurs: "1" minOccurs: "1"
skipping to change at page 83, line 40 skipping to change at page 87, line 40
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: Describes the projection used for this video track. definition: Describes the projection used for this video track.
restrictions: restrictions:
+-------+-----------------+ +-------+-----------------+
| value | label | | value | label |
+-------+-----------------+ +=======+=================+
| "0" | rectangular | | "0" | rectangular |
+-------+-----------------+
| "1" | equirectangular | | "1" | equirectangular |
+-------+-----------------+
| "2" | cubemap | | "2" | cubemap |
+-------+-----------------+
| "3" | mesh | | "3" | mesh |
+-------+-----------------+ +-------+-----------------+
9.3.4.1.30.46. ProjectionPrivate Element Table 29
9.3.4.1.31.46. ProjectionPrivate Element
name: "ProjectionPrivate" name: "ProjectionPrivate"
path: path:
"0*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPrivate)" "0*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPrivate)"
id: "0x7672" id: "0x7672"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
minver: "4" minver: "4"
skipping to change at page 84, line 31 skipping to change at page 88, line 36
(Cubemap), then this element must be present and contain the same (Cubemap), then this element must be present and contain the same
binary data that would be stored inside an ISOBMFF Cubemap Projection binary data that would be stored inside an ISOBMFF Cubemap Projection
Box ('cbmp').If ProjectionType equals 3 (Mesh), then this element Box ('cbmp').If ProjectionType equals 3 (Mesh), then this element
must be present and contain the same binary data that would be stored must be present and contain the same binary data that would be stored
inside an ISOBMFF Mesh Projection Box ('mshp').Note: ISOBMFF box size inside an ISOBMFF Mesh Projection Box ('mshp').Note: ISOBMFF box size
and fourcc fields are not included in the binary data, but the and fourcc fields are not included in the binary data, but the
FullBox version and flag fields are. This is to avoid redundant FullBox version and flag fields are. This is to avoid redundant
framing information while preserving versioning and semantics between framing information while preserving versioning and semantics between
the two container formats. the two container formats.
9.3.4.1.30.47. ProjectionPoseYaw Element 9.3.4.1.31.47. ProjectionPoseYaw Element
name: "ProjectionPoseYaw" name: "ProjectionPoseYaw"
path: path:
"1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseYaw)" "1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseYaw)"
id: "0x7673" id: "0x7673"
minOccurs: "1" minOccurs: "1"
skipping to change at page 84, line 47 skipping to change at page 89, line 4
id: "0x7673" id: "0x7673"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
default: "0x0p+0" default: "0x0p+0"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Specifies a yaw rotation to the projection.SemanticsValue definition: Specifies a yaw rotation to the projection.SemanticsValue
represents a clockwise rotation, in degrees, around the up vector. represents a clockwise rotation, in degrees, around the up vector.
This rotation must be applied before any ProjectionPosePitch or This rotation must be applied before any ProjectionPosePitch or
ProjectionPoseRoll rotations. The value of this field should be in ProjectionPoseRoll rotations. The value of this field should be in
the -180 to 180 degree range. the -180 to 180 degree range.
9.3.4.1.30.48. ProjectionPosePitch Element 9.3.4.1.31.48. ProjectionPosePitch Element
name: "ProjectionPosePitch" name: "ProjectionPosePitch"
path: "1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPose path: "1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPose
Pitch)" Pitch)"
id: "0x7674" id: "0x7674"
minOccurs: "1" minOccurs: "1"
skipping to change at page 85, line 35 skipping to change at page 89, line 38
minver: "4" minver: "4"
definition: Specifies a pitch rotation to the definition: Specifies a pitch rotation to the
projection.SemanticsValue represents a counter-clockwise rotation, in projection.SemanticsValue represents a counter-clockwise rotation, in
degrees, around the right vector. This rotation must be applied degrees, around the right vector. This rotation must be applied
after the ProjectionPoseYaw rotation and before the after the ProjectionPoseYaw rotation and before the
ProjectionPoseRoll rotation. The value of this field should be in ProjectionPoseRoll rotation. The value of this field should be in
the -90 to 90 degree range. the -90 to 90 degree range.
9.3.4.1.30.49. ProjectionPoseRoll Element 9.3.4.1.31.49. ProjectionPoseRoll Element
name: "ProjectionPoseRoll" name: "ProjectionPoseRoll"
path: path:
"1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseRoll)" "1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseRoll)"
id: "0x7675" id: "0x7675"
minOccurs: "1" minOccurs: "1"
skipping to change at page 85, line 49 skipping to change at page 90, line 4
path: path:
"1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseRoll)" "1*1(\Segment\Tracks\TrackEntry\Video\Projection\ProjectionPoseRoll)"
id: "0x7675" id: "0x7675"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
default: "0x0p+0" default: "0x0p+0"
type: "float" type: "float"
minver: "4" minver: "4"
definition: Specifies a roll rotation to the definition: Specifies a roll rotation to the
projection.SemanticsValue represents a counter-clockwise rotation, in projection.SemanticsValue represents a counter-clockwise rotation, in
degrees, around the forward vector. This rotation must be applied degrees, around the forward vector. This rotation must be applied
after the ProjectionPoseYaw and ProjectionPosePitch rotations. The after the ProjectionPoseYaw and ProjectionPosePitch rotations. The
value of this field should be in the -180 to 180 degree range. value of this field should be in the -180 to 180 degree range.
9.3.4.1.31. Audio Element 9.3.4.1.32. Audio Element
name: "Audio" name: "Audio"
path: "0*1(\Segment\Tracks\TrackEntry\Audio)" path: "0*1(\Segment\Tracks\TrackEntry\Audio)"
id: "0xE1" id: "0xE1"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
definition: Audio settings. definition: Audio settings.
9.3.4.1.31.1. SamplingFrequency Element 9.3.4.1.32.1. SamplingFrequency Element
name: "SamplingFrequency" name: "SamplingFrequency"
path: "1*1(\Segment\Tracks\TrackEntry\Audio\SamplingFrequency)" path: "1*1(\Segment\Tracks\TrackEntry\Audio\SamplingFrequency)"
id: "0xB5" id: "0xB5"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "> 0x0p+0" range: "> 0x0p+0"
default: "0x1.f4p+12" default: "0x1.f4p+12"
type: "float" type: "float"
definition: Sampling frequency in Hz. definition: Sampling frequency in Hz.
9.3.4.1.31.2. OutputSamplingFrequency Element 9.3.4.1.32.2. OutputSamplingFrequency Element
name: "OutputSamplingFrequency" name: "OutputSamplingFrequency"
path: "0*1(\Segment\Tracks\TrackEntry\Audio\OutputSamplingFrequency)" path: "0*1(\Segment\Tracks\TrackEntry\Audio\OutputSamplingFrequency)"
id: "0x78B5" id: "0x78B5"
maxOccurs: "1" maxOccurs: "1"
range: "> 0x0p+0" range: "> 0x0p+0"
default: "SamplingFrequency" default: see implementation notes
type: "float" type: "float"
definition: Real output sampling frequency in Hz (used for SBR definition: Real output sampling frequency in Hz (used for SBR
techniques). techniques).
9.3.4.1.31.3. Channels Element implementation notes:
+-----------+------------------------------------------------------+
| attribute | note |
+===========+======================================================+
| default | The default value for OutputSamplingFrequency of the |
| | same TrackEntry is equal to the SamplingFrequency. |
+-----------+------------------------------------------------------+
Table 30
9.3.4.1.32.3. Channels Element
name: "Channels" name: "Channels"
path: "1*1(\Segment\Tracks\TrackEntry\Audio\Channels)" path: "1*1(\Segment\Tracks\TrackEntry\Audio\Channels)"
id: "0x9F" id: "0x9F"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
default: "1" default: "1"
type: "uinteger" type: "uinteger"
definition: Numbers of channels in the track. definition: Numbers of channels in the track.
9.3.4.1.31.4. ChannelPositions Element 9.3.4.1.32.4. ChannelPositions Element
name: "ChannelPositions" name: "ChannelPositions"
path: "0*1(\Segment\Tracks\TrackEntry\Audio\ChannelPositions)" path: "0*1(\Segment\Tracks\TrackEntry\Audio\ChannelPositions)"
id: "0x7D7B" id: "0x7D7B"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
skipping to change at page 88, line 4 skipping to change at page 92, line 20
id: "0x7D7B" id: "0x7D7B"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: Table of horizontal angles for each successive channel, definition: Table of horizontal angles for each successive channel,
see appendix. see appendix.
9.3.4.1.31.5. BitDepth Element 9.3.4.1.32.5. BitDepth Element
name: "BitDepth" name: "BitDepth"
path: "0*1(\Segment\Tracks\TrackEntry\Audio\BitDepth)" path: "0*1(\Segment\Tracks\TrackEntry\Audio\BitDepth)"
id: "0x6264" id: "0x6264"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
definition: Bits per sample, mostly used for PCM. definition: Bits per sample, mostly used for PCM.
9.3.4.1.32. TrackOperation Element 9.3.4.1.33. TrackOperation Element
name: "TrackOperation" name: "TrackOperation"
path: "0*1(\Segment\Tracks\TrackEntry\TrackOperation)" path: "0*1(\Segment\Tracks\TrackEntry\TrackOperation)"
id: "0xE2" id: "0xE2"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
skipping to change at page 88, line 36 skipping to change at page 93, line 4
path: "0*1(\Segment\Tracks\TrackEntry\TrackOperation)" path: "0*1(\Segment\Tracks\TrackEntry\TrackOperation)"
id: "0xE2" id: "0xE2"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
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 the Specification Notes this virtual track. For more details look at the Specification Notes
on the subject. on the subject.
9.3.4.1.32.1. TrackCombinePlanes Element 9.3.4.1.33.1. TrackCombinePlanes Element
name: "TrackCombinePlanes" name: "TrackCombinePlanes"
path: path:
"0*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes)" "0*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlanes)"
id: "0xE3" id: "0xE3"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
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
9.3.4.1.32.2. TrackPlane Element 9.3.4.1.33.2. TrackPlane Element
name: "TrackPlane" name: "TrackPlane"
path: "1*(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlane path: "1*(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlane
s\TrackPlane)" s\TrackPlane)"
id: "0xE4" id: "0xE4"
minOccurs: "1" minOccurs: "1"
type: "master" type: "master"
minver: "3" minver: "3"
definition: Contains a video plane track that need to be combined to definition: Contains a video plane track that need to be combined to
create this 3D track create this 3D track
9.3.4.1.32.3. TrackPlaneUID Element 9.3.4.1.33.3. TrackPlaneUID Element
name: "TrackPlaneUID" name: "TrackPlaneUID"
path: "1*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlan path: "1*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlan
es\TrackPlane\TrackPlaneUID)" es\TrackPlane\TrackPlaneUID)"
id: "0xE5" id: "0xE5"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
minver: "3" minver: "3"
skipping to change at page 90, line 5 skipping to change at page 94, line 16
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
minver: "3" minver: "3"
definition: The trackUID number of the track representing the plane. definition: The trackUID number of the track representing the plane.
9.3.4.1.32.4. TrackPlaneType Element 9.3.4.1.33.4. TrackPlaneType Element
name: "TrackPlaneType" name: "TrackPlaneType"
path: "1*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlan path: "1*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackCombinePlan
es\TrackPlane\TrackPlaneType)" es\TrackPlane\TrackPlaneType)"
id: "0xE6" id: "0xE6"
minOccurs: "1" minOccurs: "1"
skipping to change at page 90, line 28 skipping to change at page 94, line 39
type: "uinteger" type: "uinteger"
minver: "3" minver: "3"
definition: The kind of plane this track corresponds to. definition: The kind of plane this track corresponds to.
restrictions: restrictions:
+-------+------------+ +-------+------------+
| value | label | | value | label |
+-------+------------+ +=======+============+
| "0" | left eye | | "0" | left eye |
+-------+------------+
| "1" | right eye | | "1" | right eye |
+-------+------------+
| "2" | background | | "2" | background |
+-------+------------+ +-------+------------+
9.3.4.1.32.5. TrackJoinBlocks Element Table 31
9.3.4.1.33.5. TrackJoinBlocks Element
name: "TrackJoinBlocks" name: "TrackJoinBlocks"
path: path:
"0*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks)" "0*1(\Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks)"
id: "0xE9" id: "0xE9"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
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
9.3.4.1.32.6. TrackJoinUID Element 9.3.4.1.33.6. TrackJoinUID Element
name: "TrackJoinUID" name: "TrackJoinUID"
path: "1*(\Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks\T path: "1*(\Segment\Tracks\TrackEntry\TrackOperation\TrackJoinBlocks\T
rackJoinUID)" rackJoinUID)"
id: "0xED" id: "0xED"
minOccurs: "1" minOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
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.
9.3.4.1.33. TrickTrackUID Element 9.3.4.1.34. TrickTrackUID Element
name: "TrickTrackUID" name: "TrickTrackUID"
path: "0*1(\Segment\Tracks\TrackEntry\TrickTrackUID)" path: "0*1(\Segment\Tracks\TrackEntry\TrickTrackUID)"
id: "0xC0" id: "0xC0"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: DivX trick track extensions definition: DivX trick track extensions
9.3.4.1.34. TrickTrackSegmentUID Element 9.3.4.1.35. TrickTrackSegmentUID Element
name: "TrickTrackSegmentUID" name: "TrickTrackSegmentUID"
path: "0*1(\Segment\Tracks\TrackEntry\TrickTrackSegmentUID)" path: "0*1(\Segment\Tracks\TrackEntry\TrickTrackSegmentUID)"
id: "0xC1" id: "0xC1"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: DivX trick track extensions definition: DivX trick track extensions
9.3.4.1.35. TrickTrackFlag Element 9.3.4.1.36. TrickTrackFlag Element
name: "TrickTrackFlag" name: "TrickTrackFlag"
path: "0*1(\Segment\Tracks\TrackEntry\TrickTrackFlag)" path: "0*1(\Segment\Tracks\TrackEntry\TrickTrackFlag)"
id: "0xC6" id: "0xC6"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: DivX trick track extensions definition: DivX trick track extensions
9.3.4.1.36. TrickMasterTrackUID Element 9.3.4.1.37. TrickMasterTrackUID Element
name: "TrickMasterTrackUID" name: "TrickMasterTrackUID"
path: "0*1(\Segment\Tracks\TrackEntry\TrickMasterTrackUID)" path: "0*1(\Segment\Tracks\TrackEntry\TrickMasterTrackUID)"
id: "0xC7" id: "0xC7"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: DivX trick track extensions definition: DivX trick track extensions
9.3.4.1.37. TrickMasterTrackSegmentUID Element 9.3.4.1.38. TrickMasterTrackSegmentUID Element
name: "TrickMasterTrackSegmentUID" name: "TrickMasterTrackSegmentUID"
path: "0*1(\Segment\Tracks\TrackEntry\TrickMasterTrackSegmentUID)" path: "0*1(\Segment\Tracks\TrackEntry\TrickMasterTrackSegmentUID)"
id: "0xC4" id: "0xC4"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
minver: "0" minver: "0"
maxver: "0" maxver: "0"
definition: DivX trick track extensions definition: DivX trick track extensions
9.3.4.1.38. ContentEncodings Element 9.3.4.1.39. ContentEncodings Element
name: "ContentEncodings" name: "ContentEncodings"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings)" path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings)"
id: "0x6D80" id: "0x6D80"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
skipping to change at page 93, line 34 skipping to change at page 98, line 4
name: "ContentEncodings" name: "ContentEncodings"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings)" path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings)"
id: "0x6D80" id: "0x6D80"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
definition: Settings for several content encoding mechanisms like definition: Settings for several content encoding mechanisms like
compression or encryption. compression or encryption.
9.3.4.1.38.1. ContentEncoding Element 9.3.4.1.39.1. ContentEncoding Element
name: "ContentEncoding" name: "ContentEncoding"
path: path:
"1*(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding)" "1*(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncoding)"
id: "0x6240" id: "0x6240"
minOccurs: "1" minOccurs: "1"
type: "master" type: "master"
definition: Settings for one content encoding like compression or definition: Settings for one content encoding like compression or
encryption. encryption.
9.3.4.1.38.2. ContentEncodingOrder Element 9.3.4.1.39.2. ContentEncodingOrder Element
name: "ContentEncodingOrder" name: "ContentEncodingOrder"
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncodingOrder)" g\ContentEncodingOrder)"
id: "0x5031" id: "0x5031"
minOccurs: "1" minOccurs: "1"
skipping to change at page 94, line 29 skipping to change at page 98, line 47
type: "uinteger" type: "uinteger"
definition: Tells when this modification was used during encoding/ definition: Tells when this modification was used during encoding/
muxing starting with 0 and counting upwards. The decoder/demuxer has muxing starting with 0 and counting upwards. The decoder/demuxer has
to start with the highest order number it finds and work its way to start with the highest order number it finds and work its way
down. This value has to be unique over all ContentEncodingOrder down. This value has to be unique over all ContentEncodingOrder
Elements in the TrackEntry that contains this ContentEncodingOrder Elements in the TrackEntry that contains this ContentEncodingOrder
element. element.
9.3.4.1.38.3. ContentEncodingScope Element 9.3.4.1.39.3. ContentEncodingScope Element
name: "ContentEncodingScope" name: "ContentEncodingScope"
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncodingScope)" g\ContentEncodingScope)"
id: "0x5032" id: "0x5032"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
range: "not 0" range: "not 0"
skipping to change at page 95, line 5 skipping to change at page 99, line 24
default: "1" default: "1"
type: "uinteger" type: "uinteger"
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.
restrictions: restrictions:
+-------+-----------------------------------------------------------+ +-------+--------------------------------------------------+
| value | label | | value | label |
+-------+-----------------------------------------------------------+ +=======+==================================================+
| "1" | All frame contents, excluding lacing data | | "1" | All frame contents, excluding lacing data |
| "2" | The track's private data | +-------+--------------------------------------------------+
| "4" | The next ContentEncoding (next "ContentEncodingOrder". | | "2" | The track's private data |
| | Either the data inside "ContentCompression" and/or | +-------+--------------------------------------------------+
| | "ContentEncryption") | | "4" | The next ContentEncoding (next |
+-------+-----------------------------------------------------------+ | | "ContentEncodingOrder". Either the data inside |
| | "ContentCompression" and/or "ContentEncryption") |
+-------+--------------------------------------------------+
9.3.4.1.38.4. ContentEncodingType Element Table 32
9.3.4.1.39.4. ContentEncodingType Element
name: "ContentEncodingType" name: "ContentEncodingType"
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncodingType)" g\ContentEncodingType)"
id: "0x5033" id: "0x5033"
minOccurs: "1" minOccurs: "1"
skipping to change at page 95, line 29 skipping to change at page 100, line 4
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncodingType)" g\ContentEncodingType)"
id: "0x5033" id: "0x5033"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: A value describing what kind of transformation is definition: A value describing what kind of transformation is
applied. applied.
restrictions: restrictions:
+-------+-------------+ +-------+-------------+
| value | label | | value | label |
+-------+-------------+ +=======+=============+
| "0" | Compression | | "0" | Compression |
+-------+-------------+
| "1" | Encryption | | "1" | Encryption |
+-------+-------------+ +-------+-------------+
9.3.4.1.38.5. ContentCompression Element Table 33
9.3.4.1.39.5. ContentCompression Element
name: "ContentCompression" name: "ContentCompression"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentCompression)" g\ContentCompression)"
id: "0x5034" id: "0x5034"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
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 absent MUST be present if the value of ContentEncodingType is 0 and absent
otherwise. Each block MUST be decompressable even if no previous otherwise. Each block MUST be decompressable even if no previous
block is available in order not to prevent seeking. block is available in order not to prevent seeking.
9.3.4.1.38.6. ContentCompAlgo Element 9.3.4.1.39.6. ContentCompAlgo Element
name: "ContentCompAlgo" name: "ContentCompAlgo"
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentCompression\ContentCompAlgo)" g\ContentCompression\ContentCompAlgo)"
id: "0x4254" id: "0x4254"
minOccurs: "1" minOccurs: "1"
skipping to change at page 96, line 36 skipping to change at page 101, line 14
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: The compression algorithm used. definition: The compression algorithm used.
restrictions: restrictions:
+-------+------------------+ +-------+------------------+
| value | label | | value | label |
+-------+------------------+ +=======+==================+
| "0" | zlib | | "0" | zlib |
+-------+------------------+
| "1" | bzlib | | "1" | bzlib |
+-------+------------------+
| "2" | lzo1x | | "2" | lzo1x |
+-------+------------------+
| "3" | Header Stripping | | "3" | Header Stripping |
+-------+------------------+ +-------+------------------+
9.3.4.1.38.7. ContentCompSettings Element Table 34
9.3.4.1.39.7. ContentCompSettings Element
name: "ContentCompSettings" name: "ContentCompSettings"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentCompression\ContentCompSettings)" g\ContentCompression\ContentCompSettings)"
id: "0x4255" id: "0x4255"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
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 frames of the track.
9.3.4.1.38.8. ContentEncryption Element 9.3.4.1.39.8. ContentEncryption Element
name: "ContentEncryption" name: "ContentEncryption"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption)" g\ContentEncryption)"
id: "0x5035" id: "0x5035"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
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. (encryption) and MUST be ignored otherwise.
9.3.4.1.38.9. ContentEncAlgo Element 9.3.4.1.39.9. ContentEncAlgo Element
name: "ContentEncAlgo" name: "ContentEncAlgo"
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentEncAlgo)" g\ContentEncryption\ContentEncAlgo)"
id: "0x47E1" id: "0x47E1"
minOccurs: "1" minOccurs: "1"
skipping to change at page 98, line 7 skipping to change at page 102, line 36
type: "uinteger" type: "uinteger"
definition: The encryption algorithm used. The value '0' means that definition: The encryption algorithm used. The value '0' means that
the contents have not been encrypted but only signed. the contents have not been encrypted but only signed.
restrictions: restrictions:
+-------+-----------------------+ +-------+-----------------------+
| value | label | | value | label |
+-------+-----------------------+ +=======+=======================+
| "0" | Not encrypted | | "0" | Not encrypted |
+-------+-----------------------+
| "1" | DES - FIPS 46-3 | | "1" | DES - FIPS 46-3 |
+-------+-----------------------+
| "2" | Triple DES - RFC 1851 | | "2" | Triple DES - RFC 1851 |
+-------+-----------------------+
| "3" | Twofish | | "3" | Twofish |
+-------+-----------------------+
| "4" | Blowfish | | "4" | Blowfish |
+-------+-----------------------+
| "5" | AES - FIPS 187 | | "5" | AES - FIPS 187 |
+-------+-----------------------+ +-------+-----------------------+
9.3.4.1.38.10. ContentEncKeyID Element Table 35
9.3.4.1.39.10. ContentEncKeyID Element
name: "ContentEncKeyID" name: "ContentEncKeyID"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentEncKeyID)" g\ContentEncryption\ContentEncKeyID)"
id: "0x47E2" id: "0x47E2"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: For public key algorithms this is the ID of the public definition: For public key algorithms this is the ID of the public
key the the data was encrypted with. key the the data was encrypted with.
9.3.4.1.38.11. ContentEncAESSettings Element 9.3.4.1.39.11. ContentEncAESSettings Element
name: "ContentEncAESSettings" name: "ContentEncAESSettings"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentEncAESSettings)" g\ContentEncryption\ContentEncAESSettings)"
id: "0x47E7" id: "0x47E7"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
minver: "4" minver: "4"
definition: Settings describing the encryption algorithm used. If definition: Settings describing the encryption algorithm used. If
"ContentEncAlgo" != 5 this MUST be ignored. "ContentEncAlgo" != 5 this MUST be ignored.
9.3.4.1.38.12. AESSettingsCipherMode Element 9.3.4.1.39.12. AESSettingsCipherMode Element
name: "AESSettingsCipherMode" name: "AESSettingsCipherMode"
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentEncAESSettings\AESSettingsCipherMode)" g\ContentEncryption\ContentEncAESSettings\AESSettingsCipherMode)"
id: "0x47E8" id: "0x47E8"
minOccurs: "1" minOccurs: "1"
skipping to change at page 99, line 19 skipping to change at page 104, line 4
path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "1*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentEncAESSettings\AESSettingsCipherMode)" g\ContentEncryption\ContentEncAESSettings\AESSettingsCipherMode)"
id: "0x47E8" id: "0x47E8"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
minver: "4" minver: "4"
definition: The AES cipher mode used in the encryption. definition: The AES cipher mode used in the encryption.
restrictions: restrictions:
+-------+--------------------------------------------------+ +-------+--------------------------------------------------+
| value | label | | value | label |
+-------+--------------------------------------------------+ +=======+==================================================+
| "1" | AES-CTR / Counter, NIST SP 800-38A | | "1" | AES-CTR / Counter, NIST SP 800-38A |
+-------+--------------------------------------------------+
| "2" | AES-CBC / Cipher Block Chaining, NIST SP 800-38A | | "2" | AES-CBC / Cipher Block Chaining, NIST SP 800-38A |
+-------+--------------------------------------------------+ +-------+--------------------------------------------------+
9.3.4.1.38.13. ContentSignature Element Table 36
9.3.4.1.39.13. ContentSignature Element
name: "ContentSignature" name: "ContentSignature"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentSignature)" g\ContentEncryption\ContentSignature)"
id: "0x47E3" id: "0x47E3"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: A cryptographic signature of the contents. definition: A cryptographic signature of the contents.
9.3.4.1.38.14. ContentSigKeyID Element 9.3.4.1.39.14. ContentSigKeyID Element
name: "ContentSigKeyID" name: "ContentSigKeyID"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentSigKeyID)" g\ContentEncryption\ContentSigKeyID)"
id: "0x47E4" id: "0x47E4"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: This is the ID of the private key the data was signed definition: This is the ID of the private key the data was signed
skipping to change at page 100, line 16 skipping to change at page 105, line 5
id: "0x47E4" id: "0x47E4"
maxOccurs: "1" maxOccurs: "1"
type: "binary" type: "binary"
definition: This is the ID of the private key the data was signed definition: This is the ID of the private key the data was signed
with. with.
9.3.4.1.38.15. ContentSigAlgo Element 9.3.4.1.39.15. ContentSigAlgo Element
name: "ContentSigAlgo" name: "ContentSigAlgo"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentSigAlgo)" g\ContentEncryption\ContentSigAlgo)"
id: "0x47E5" id: "0x47E5"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: The algorithm used for the signature. definition: The algorithm used for the signature.
restrictions: restrictions:
+-------+------------+ +-------+------------+
| value | label | | value | label |
+-------+------------+ +=======+============+
| "0" | Not signed | | "0" | Not signed |
+-------+------------+
| "1" | RSA | | "1" | RSA |
+-------+------------+ +-------+------------+
9.3.4.1.38.16. ContentSigHashAlgo Element Table 37
9.3.4.1.39.16. ContentSigHashAlgo Element
name: "ContentSigHashAlgo" name: "ContentSigHashAlgo"
path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin path: "0*1(\Segment\Tracks\TrackEntry\ContentEncodings\ContentEncodin
g\ContentEncryption\ContentSigHashAlgo)" g\ContentEncryption\ContentSigHashAlgo)"
id: "0x47E6" id: "0x47E6"
maxOccurs: "1" maxOccurs: "1"
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: The hash algorithm used for the signature. definition: The hash algorithm used for the signature.
restrictions: restrictions:
+-------+------------+ +-------+------------+
| value | label | | value | label |
skipping to change at page 101, line 14 skipping to change at page 106, line 7
default: "0" default: "0"
type: "uinteger" type: "uinteger"
definition: The hash algorithm used for the signature. definition: The hash algorithm used for the signature.
restrictions: restrictions:
+-------+------------+ +-------+------------+
| value | label | | value | label |
+-------+------------+ +=======+============+
| "0" | Not signed | | "0" | Not signed |
+-------+------------+
| "1" | SHA1-160 | | "1" | SHA1-160 |
+-------+------------+
| "2" | MD5 | | "2" | MD5 |
+-------+------------+ +-------+------------+
Table 38
9.3.5. Cues Element 9.3.5. Cues Element
name: "Cues" name: "Cues"
path: "0*1(\Segment\Cues)" path: "0*1(\Segment\Cues)"
id: "0x1C53BB6B" id: "0x1C53BB6B"
minOccurs: see implementation notes
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
definition: A Top-Level Element to speed seeking access. All entries definition: A Top-Level Element to speed seeking access. All entries
are local to the Segment. This Element SHOULD be mandatory for non are local to the Segment.
"live" streams.
implementation notes:
+-----------+----------------------------------------------------+
| attribute | note |
+===========+====================================================+
| minOccurs | This Element SHOULD be set when the Segment is not |
| | transmitted as a live stream (see #livestreaming). |
+-----------+----------------------------------------------------+
Table 39
9.3.5.1. CuePoint Element 9.3.5.1. CuePoint Element
name: "CuePoint" name: "CuePoint"
path: "1*(\Segment\Cues\CuePoint)" path: "1*(\Segment\Cues\CuePoint)"
id: "0xBB" id: "0xBB"
minOccurs: "1" minOccurs: "1"
type: "master" type: "master"
definition: Contains all information relative to a seek point in the definition: Contains all information relative to a seek point in the
Segment. Segment.
9.3.5.1.1. CueTime Element 9.3.5.1.1. CueTime Element
name: "CueTime" name: "CueTime"
skipping to change at page 115, line 41 skipping to change at page 120, line 49
9.3.7.1.5.7. ChapterSegmentUID Element 9.3.7.1.5.7. ChapterSegmentUID Element
name: "ChapterSegmentUID" name: "ChapterSegmentUID"
path: path:
"0*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterSegmentUID)" "0*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterSegmentUID)"
id: "0x6E67" id: "0x6E67"
maxOccurs: "1" minOccurs: see implementation notes
maxOccurs: "1"
range: ">0" range: ">0"
type: "binary" type: "binary"
definition: The SegmentUID of another Segment to play during this definition: The SegmentUID of another Segment to play during this
chapter. chapter.
usage notes: ChapterSegmentUID is mandatory if implementation notes:
ChapterSegmentEditionUID is used.
+-----------+---------------------------------------------+
| attribute | note |
+===========+=============================================+
| minOccurs | ChapterSegmentUID MUST be set (minOccurs=1) |
| | if ChapterSegmentEditionUID is used. |
+-----------+---------------------------------------------+
Table 40
9.3.7.1.5.8. ChapterSegmentEditionUID Element 9.3.7.1.5.8. ChapterSegmentEditionUID Element
name: "ChapterSegmentEditionUID" name: "ChapterSegmentEditionUID"
path: "0*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterSegmentE path: "0*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterSegmentE
ditionUID)" ditionUID)"
id: "0x6EBC" id: "0x6EBC"
skipping to change at page 117, line 4 skipping to change at page 122, line 20
name: "ChapterTrack" name: "ChapterTrack"
path: "0*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterTrack)" path: "0*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterTrack)"
id: "0x8F" id: "0x8F"
maxOccurs: "1" maxOccurs: "1"
type: "master" type: "master"
definition: List of tracks on which the chapter applies. If this definition: List of tracks on which the chapter applies. If this
Element is not present, all tracks apply Element is not present, all tracks apply
9.3.7.1.5.11. ChapterTrackNumber Element 9.3.7.1.5.11. ChapterTrackUID Element
name: "ChapterTrackNumber" name: "ChapterTrackUID"
path: "1*(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterTrack\Cha path: "1*(\Segment\Chapters\EditionEntry\ChapterAtom\ChapterTrack\Cha
pterTrackNumber)" pterTrackUID)"
id: "0x89" id: "0x89"
minOccurs: "1" minOccurs: "1"
range: "not 0" range: "not 0"
type: "uinteger" type: "uinteger"
definition: UID of the Track to apply this chapter too. In the definition: UID of the Track to apply this chapter too. In the
skipping to change at page 121, line 4 skipping to change at page 126, line 14
path: "1*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapProcess\Cha path: "1*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapProcess\Cha
pProcessCommand\ChapProcessTime)" pProcessCommand\ChapProcessTime)"
id: "0x6922" id: "0x6922"
minOccurs: "1" minOccurs: "1"
maxOccurs: "1" maxOccurs: "1"
type: "uinteger" type: "uinteger"
definition: Defines when the process command SHOULD be handled definition: Defines when the process command SHOULD be handled
restrictions: 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 41
9.3.7.1.5.22. ChapProcessData Element 9.3.7.1.5.22. ChapProcessData Element
name: "ChapProcessData" name: "ChapProcessData"
path: "1*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapProcess\Cha path: "1*1(\Segment\Chapters\EditionEntry\ChapterAtom\ChapProcess\Cha
pProcessCommand\ChapProcessData)" pProcessCommand\ChapProcessData)"
id: "0x6933" id: "0x6933"
minOccurs: "1" minOccurs: "1"
skipping to change at page 123, line 7 skipping to change at page 128, line 23
maxOccurs: "1" maxOccurs: "1"
default: "50" default: "50"
type: "uinteger" type: "uinteger"
definition: A number to indicate the logical level of the target. definition: A number to indicate the logical level of the target.
restrictions: restrictions:
+-------+----------------------+------------------------------------+ +-------+--------------------------+--------------------------------+
| value | label | documentation | | value | label | documentation |
+-------+----------------------+------------------------------------+ +=======+==========================+================================+
| "70" | COLLECTION | The highest hierarchical level | | "70" | COLLECTION | The highest hierarchical level |
| | | that tags can describe. | | | | 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. |
| "50" | ALBUM / OPERA / | The most common grouping level of | | | SEASON / SEQUEL | |
| | CONCERT / MOVIE / | music and video (equals to an | +-------+--------------------------+--------------------------------+
| | EPISODE / CONCERT | episode for TV series). | | "50" | ALBUM / OPERA / | The most common grouping level |
| "40" | PART / SESSION | When an album or episode has | | | CONCERT / MOVIE / | of music and video (equals to |
| | | different logical parts. | | | EPISODE / CONCERT | an episode for TV series). |
| "30" | TRACK / SONG / | The common parts of an album or | +-------+--------------------------+--------------------------------+
| | CHAPTER | movie. | | "40" | PART / SESSION | When an album or episode has |
| "20" | SUBTRACK / PART / | Corresponds to parts of a track | | | | different logical parts. |
| | MOVEMENT / SCENE | for audio (like a movement). | +-------+--------------------------+--------------------------------+
| "10" | SHOT | The lowest hierarchy found in | | "30" | TRACK / SONG / | The common parts of an album |
| | | music or movies. | | | CHAPTER | or movie. |
+-------+----------------------+------------------------------------+ +-------+--------------------------+--------------------------------+
| "20" | SUBTRACK / PART / | Corresponds to parts of a |
| | MOVEMENT / SCENE | track for audio (like a |
| | | movement). |
+-------+--------------------------+--------------------------------+
| "10" | SHOT | The lowest hierarchy found in |
| | | music or movies. |
+-------+--------------------------+--------------------------------+
Table 42
9.3.8.1.1.2. TargetType Element 9.3.8.1.1.2. TargetType Element
name: "TargetType" name: "TargetType"
path: "0*1(\Segment\Tags\Tag\Targets\TargetType)" path: "0*1(\Segment\Tags\Tag\Targets\TargetType)"
id: "0x63CA" id: "0x63CA"
maxOccurs: "1" maxOccurs: "1"
skipping to change at page 124, line 7 skipping to change at page 129, line 25
type: "string" type: "string"
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 like "ALBUM", "TRACK", "MOVIE",
"CHAPTER", etc (see TargetType). "CHAPTER", etc (see TargetType).
restrictions: restrictions:
+--------------+------------+ +--------------+------------+
| value | label | | value | label |
+--------------+------------+ +==============+============+
| "COLLECTION" | COLLECTION | | "COLLECTION" | COLLECTION |
+--------------+------------+
| "EDITION" | EDITION | | "EDITION" | EDITION |
+--------------+------------+
| "ISSUE" | ISSUE | | "ISSUE" | ISSUE |
+--------------+------------+
| "VOLUME" | VOLUME | | "VOLUME" | VOLUME |
+--------------+------------+
| "OPUS" | OPUS | | "OPUS" | OPUS |
+--------------+------------+
| "SEASON" | SEASON | | "SEASON" | SEASON |
+--------------+------------+
| "SEQUEL" | SEQUEL | | "SEQUEL" | SEQUEL |
+--------------+------------+
| "ALBUM" | ALBUM | | "ALBUM" | ALBUM |
+--------------+------------+
| "OPERA" | OPERA | | "OPERA" | OPERA |
+--------------+------------+
| "CONCERT" | CONCERT | | "CONCERT" | CONCERT |
+--------------+------------+
| "MOVIE" | MOVIE | | "MOVIE" | MOVIE |
+--------------+------------+
| "EPISODE" | EPISODE | | "EPISODE" | EPISODE |
+--------------+------------+
| "PART" | PART | | "PART" | PART |
+--------------+------------+
| "SESSION" | SESSION | | "SESSION" | SESSION |
+--------------+------------+
| "TRACK" | TRACK | | "TRACK" | TRACK |
+--------------+------------+
| "SONG" | SONG | | "SONG" | SONG |
+--------------+------------+
| "CHAPTER" | CHAPTER | | "CHAPTER" | CHAPTER |
+--------------+------------+
| "SUBTRACK" | SUBTRACK | | "SUBTRACK" | SUBTRACK |
+--------------+------------+
| "PART" | PART | | "PART" | PART |
+--------------+------------+
| "MOVEMENT" | MOVEMENT | | "MOVEMENT" | MOVEMENT |
+--------------+------------+
| "SCENE" | SCENE | | "SCENE" | SCENE |
+--------------+------------+
| "SHOT" | SHOT | | "SHOT" | SHOT |
+--------------+------------+ +--------------+------------+
Table 43
9.3.8.1.1.3. TagTrackUID Element 9.3.8.1.1.3. TagTrackUID Element
name: "TagTrackUID" name: "TagTrackUID"
path: "0*(\Segment\Tags\Tag\Targets\TagTrackUID)" path: "0*(\Segment\Tags\Tag\Targets\TagTrackUID)"
id: "0x63C5" id: "0x63C5"
default: "0" default: "0"
skipping to change at page 130, line 42 skipping to change at page 136, line 42
"Attachments Element". On the other hand, it is inconvenient to have "Attachments Element". On the other hand, it is inconvenient to have
to seek in the "Segment" for tags, especially for network streams. to seek in the "Segment" for tags, especially for network streams.
So it's better if the "Tags Element" is found early in the stream. So it's better if the "Tags Element" is found early in the stream.
When editing the "Tags Element", the original "Tags Element" at the When editing the "Tags Element", the original "Tags Element" at the
beginning can be overwritten with a "Void Element" and a new "Tags beginning can be overwritten with a "Void Element" and a new "Tags
Element" written at the end of the "Segment Element". The file size Element" written at the end of the "Segment Element". The file size
will only marginally change. will only marginally change.
10.9. Optimum layout from a muxer 10.9. Optimum layout from a muxer
o SeekHead * SeekHead
o Info * Info
o Tracks * Tracks
o Chapters * Chapters
o Attachments * Attachments
o Tags * Tags
o Clusters * Clusters
o Cues * Cues
10.10. Optimum layout after editing tags 10.10. Optimum layout after editing tags
o SeekHead * SeekHead
o Info * Info
o Tracks * Tracks
o Chapters * Chapters
o Attachments * Attachments
o Void * Void
o Clusters * Clusters
o Cues * Cues
o Tags * Tags
10.11. Optimum layout with Cues at the front 10.11. Optimum layout with Cues at the front
o SeekHead * SeekHead
o Info * Info
o Tracks * Tracks
o Chapters * Chapters
o Attachments * Attachments
o Tags * Tags
o Cues * Cues
o Clusters * Clusters
10.12. Cluster Timestamp 10.12. Cluster Timestamp
The "Timestamp Element" MUST occur as in storage order before any The "Timestamp Element" MUST occur as in storage order before any
"SimpleBlock", "BlockGroup", or "EncryptedBlock" within the "Cluster "SimpleBlock", "BlockGroup", or "EncryptedBlock" within the "Cluster
Element". Element".
11. Chapters 11. Chapters
11.1. Edition and Chapter Flags 11.1. Edition and Chapter Flags
skipping to change at page 134, line 13 skipping to change at page 140, line 13
the "EditionFlagOrdered Flag" is set to "true". the "EditionFlagOrdered Flag" is set to "true".
Other elements / ordered Edition | False | True Info/SegmentFamily | Other elements / ordered Edition | False | True Info/SegmentFamily |
- | X Info/ChapterTranslate | - | X Track/TrackTranslate | - | X - | X Info/ChapterTranslate | - | X Track/TrackTranslate | - | X
These other "Elements" belong to the Matroska DVD menu system and are These other "Elements" belong to the Matroska DVD menu system and are
only used when the "ChapProcessCodecID Element" is set to 1. only used when the "ChapProcessCodecID Element" is set to 1.
11.1.2.3.1. Ordered-Edition and Matroska Segment-Linking 11.1.2.3.1. Ordered-Edition and Matroska Segment-Linking
o Hard Linking: "Ordered-Chapters" supersedes the "Hard Linking". * Hard Linking: "Ordered-Chapters" supersedes the "Hard Linking".
o Soft Linking: In this complex system "Ordered Chapters" are * Soft Linking: In this complex system "Ordered Chapters" are
REQUIRED and a "Chapter CODEC" MUST interpret the "ChapProcess" of REQUIRED and a "Chapter CODEC" MUST interpret the "ChapProcess" of
all chapters. all chapters.
o Medium Linking: "Ordered Chapters" are used in a normal way and * Medium Linking: "Ordered Chapters" are used in a normal way and
can be combined with the "ChapterSegmentUID" element which can be combined with the "ChapterSegmentUID" element which
establishes a link to another Matroska file/Segment. establishes a link to another Matroska file/Segment.
See Section 24) for more information about "Hard Linking", "Soft See the section on the Linked Segments (#linked-segments)) for more
Linking" and "Medium Linking". information about "Hard Linking", "Soft Linking" and "Medium
Linking".
11.2. Menu features 11.2. 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 2 values are supported : 0 matroska script,
1 menu borrowed from the DVD. The private data depend on the type of 1 menu borrowed from the DVD. The private data depend on the type of
menu system (stored in ChapProcessPrivate), idem for the data in the menu system (stored in ChapProcessPrivate), idem for the data in the
skipping to change at page 135, line 49 skipping to change at page 141, line 49
0x28 | TT | global Title number (2) + corresponding TTN of the VTS 0x28 | TT | global Title number (2) + corresponding TTN of the VTS
(1) 0x20 | PGC | PGC number (2) + Playback Type (1) + Disabled User (1) 0x20 | PGC | PGC number (2) + Playback Type (1) + Disabled User
Operations (4) 0x18 | PG | Program number (2) 0x10 | PTT | PTT- Operations (4) 0x18 | PG | Program number (2) 0x10 | PTT | PTT-
chapter number (1) 0x08 | CN | Cell number [VOB ID(2)][Cell chapter number (1) 0x08 | CN | Cell number [VOB ID(2)][Cell
ID(1)][Angle Num(1)] ID(1)][Angle Num(1)]
If the level specified in ChapProcessPrivate is a PGC (0x20), there If the level specified in ChapProcessPrivate is a PGC (0x20), there
is an octet called the Playback Type, specifying the kind of PGC is an octet called the Playback Type, specifying the kind of PGC
defined: defined:
o 0x00: entry only/basic PGC * 0x00: entry only/basic PGC
o 0x82: Title+Entry Menu (only found in the Video Manager domain) * 0x82: Title+Entry Menu (only found in the Video Manager domain)
o 0x83: Root Menu (only found in the VTSM domain) * 0x83: Root Menu (only found in the VTSM domain)
o 0x84: Subpicture Menu (only found in the VTSM domain) * 0x84: Subpicture Menu (only found in the VTSM domain)
o 0x85: Audio Menu (only found in the VTSM domain) * 0x85: Audio Menu (only found in the VTSM domain)
o 0x86: Angle Menu (only found in the VTSM domain) * 0x86: Angle Menu (only found in the VTSM domain)
o 0x87: Chapter Menu (only found in the VTSM domain) * 0x87: Chapter Menu (only found in the VTSM domain)
The next 4 following octets correspond to the User Operation flags The next 4 following octets correspond to the User Operation flags
[17] in the standard PGC. When a bit is set, the command SHOULD be (http://dvd.sourceforge.net/dvdinfo/uops.html) in the standard PGC.
disabled. When a bit is set, the command SHOULD be disabled.
ChapProcessData contains the pre/post/cell commands in binary format ChapProcessData contains the pre/post/cell commands in binary format
as there are stored on a DVD. There is just an octet preceding these as there are stored on a DVD. There is just an octet preceding these
data to specify the number of commands in the element. As follows: data to specify the number of commands in the element. As follows:
[# of commands(1)][command 1 (8)][command 2 (8)][command 3 (8)]. [# of commands(1)][command 1 (8)][command 2 (8)][command 3 (8)].
More information on the DVD commands and format on DVD-replica [18], More information on the DVD commands and format on DVD-replica
where we got most of the info about it. You can also get information (http://www.dvd-replica.com/DVD/), where we got most of the info
on DVD from the DVDinfo project [19]. about it. You can also get information on DVD from the DVDinfo
project (http://dvd.sourceforge.net/dvdinfo/).
11.3. Example 1 : basic chaptering 11.3. 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) on which each track corresponds to
a chapter. a chapter.
o 00000ms - 05000ms : Intro * 00000ms - 05000ms : Intro
o 05000ms - 25000ms : Before the crime * 05000ms - 25000ms : Before the crime
o 25000ms - 27500ms : The crime * 25000ms - 27500ms : The crime
o 27500ms - 38000ms : The killer arrested * 27500ms - 38000ms : The killer arrested
o 38000ms - 43000ms : Credits * 38000ms - 43000ms : Credits
This would translate in the following matroska form : This would translate in the following matroska form :
<Chapters> <Chapters> <EditionEntry> <EditionUID>16603393396715046047</EditionUID> <ChapterAtom> <ChapterUID>1193046</ChapterUID> <ChapterTimeStart>0</ChapterTimeStart> <ChapterTimeEnd>5000000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Intro</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>2311527</ChapterUID> <ChapterTimeStart>5000000000</ChapterTimeStart> <ChapterTimeEnd>25000000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Before the crime</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterDisplay> <ChapString>Avant le crime</ChapString> <ChapLanguage>fra</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>3430008</ChapterUID> <ChapterTimeStart>25000000000</ChapterTimeStart> <ChapterTimeEnd>27500000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>The crime</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterDisplay> <ChapString>Le crime</ChapString> <ChapLanguage>fra</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>4548489</ChapterUID> <ChapterTimeStart>27500000000</ChapterTimeStart> <ChapterTimeEnd>38000000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>After the crime</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterDisplay> <ChapString>Apres le crime</ChapString> <ChapLanguage>fra</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>5666960</ChapterUID> <ChapterTimeStart>38000000000</ChapterTimeStart> <ChapterTimeEnd>43000000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Credits</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterDisplay> <ChapString>Generique</ChapString> <ChapLanguage>fra</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <EditionFlagDefault>0</EditionFlagDefault> <EditionFlagHidden>0</EditionFlagHidden> </EditionEntry> </Chapters>
<EditionEntry>
<EditionUID>16603393396715046047</EditionUID>
<ChapterAtom>
<ChapterUID>1193046</ChapterUID>
<ChapterTimeStart>0</ChapterTimeStart>
<ChapterTimeEnd>5000000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Intro</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>2311527</ChapterUID>
<ChapterTimeStart>5000000000</ChapterTimeStart>
<ChapterTimeEnd>25000000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Before the crime</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterDisplay>
<ChapString>Avant le crime</ChapString>
<ChapLanguage>fra</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>3430008</ChapterUID>
<ChapterTimeStart>25000000000</ChapterTimeStart>
<ChapterTimeEnd>27500000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>The crime</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterDisplay>
<ChapString>Le crime</ChapString>
<ChapLanguage>fra</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>4548489</ChapterUID>
<ChapterTimeStart>27500000000</ChapterTimeStart>
<ChapterTimeEnd>38000000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>After the crime</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterDisplay>
<ChapString>Apres le crime</ChapString>
<ChapLanguage>fra</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>5666960</ChapterUID>
<ChapterTimeStart>38000000000</ChapterTimeStart>
<ChapterTimeEnd>43000000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Credits</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterDisplay>
<ChapString>Generique</ChapString>
<ChapLanguage>fra</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<EditionFlagDefault>0</EditionFlagDefault>
<EditionFlagHidden>0</EditionFlagHidden>
</EditionEntry>
</Chapters>
11.4. Example 2 : nested chapters 11.4. 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 chapters,
and one of them contain another splitting. and one of them contain another splitting.
11.4.1. The Micronauts "Bleep To Bleep" 11.4.1. The Micronauts "Bleep To Bleep"
o 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)
o 12:30 - 19:38 : Bleeper_O+2 * 12:30 - 19:38 : Bleeper_O+2
o 19:40 - 22:20 : Baby wants to bleep (pt.4) * 19:40 - 22:20 : Baby wants to bleep (pt.4)
o 22:22 - 25:18 : Bleep to bleep * 22:22 - 25:18 : Bleep to bleep
o 25:20 - 33:35 : Baby wants to bleep (k) * 25:20 - 33:35 : Baby wants to bleep (k)
o 33:37 - 44:28 : Bleeper
<Chapters> * 33:37 - 44:28 : Bleeper
<EditionEntry>
<EditionUID>1281690858003401414</EditionUID> <Chapters> <EditionEntry> <EditionUID>1281690858003401414</EditionUID> <ChapterAtom> <ChapterUID>1</ChapterUID> <ChapterTimeStart>0</ChapterTimeStart> <ChapterTimeEnd>748000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Baby wants to Bleep/Rock</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterAtom> <ChapterUID>2</ChapterUID> <ChapterTimeStart>0</ChapterTimeStart> <ChapterTimeEnd>278000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Baby wants to bleep (pt.1)</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>3</ChapterUID> <ChapterTimeStart>278000000</ChapterTimeStart> <ChapterTimeEnd>432000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Baby wants to rock</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>4</ChapterUID> <ChapterTimeStart>432000000</ChapterTimeStart> <ChapterTimeEnd>633000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Baby wants to bleep (pt.2)</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>5</ChapterUID> <ChapterTimeStart>633000000</ChapterTimeStart> <ChapterTimeEnd>748000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Baby wants to bleep (pt.3)</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>6</ChapterUID> <ChapterTimeStart>750000000</ChapterTimeStart> <ChapterTimeEnd>1178500000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Bleeper_O+2</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>7</ChapterUID> <ChapterTimeStart>1180500000</ChapterTimeStart> <ChapterTimeEnd>1340000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Baby wants to bleep (pt.4)</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>8</ChapterUID> <ChapterTimeStart>1342000000</ChapterTimeStart> <ChapterTimeEnd>1518000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Bleep to bleep</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>9</ChapterUID> <ChapterTimeStart>1520000000</ChapterTimeStart> <ChapterTimeEnd>2015000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Baby wants to bleep (k)</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>10</ChapterUID> <ChapterTimeStart>2017000000</ChapterTimeStart> <ChapterTimeEnd>2668000000</ChapterTimeEnd> <ChapterDisplay> <ChapString>Bleeper</ChapString> <ChapLanguage>eng</ChapLanguage> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <EditionFlagDefault>0</EditionFlagDefault> <EditionFlagHidden>0</EditionFlagHidden> </EditionEntry> </Chapters>
<ChapterAtom>
<ChapterUID>1</ChapterUID>
<ChapterTimeStart>0</ChapterTimeStart>
<ChapterTimeEnd>748000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Baby wants to Bleep/Rock</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterAtom>
<ChapterUID>2</ChapterUID>
<ChapterTimeStart>0</ChapterTimeStart>
<ChapterTimeEnd>278000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Baby wants to bleep (pt.1)</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>3</ChapterUID>
<ChapterTimeStart>278000000</ChapterTimeStart>
<ChapterTimeEnd>432000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Baby wants to rock</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>4</ChapterUID>
<ChapterTimeStart>432000000</ChapterTimeStart>
<ChapterTimeEnd>633000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Baby wants to bleep (pt.2)</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>5</ChapterUID>
<ChapterTimeStart>633000000</ChapterTimeStart>
<ChapterTimeEnd>748000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Baby wants to bleep (pt.3)</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>6</ChapterUID>
<ChapterTimeStart>750000000</ChapterTimeStart>
<ChapterTimeEnd>1178500000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Bleeper_O+2</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>7</ChapterUID>
<ChapterTimeStart>1180500000</ChapterTimeStart>
<ChapterTimeEnd>1340000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Baby wants to bleep (pt.4)</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>8</ChapterUID>
<ChapterTimeStart>1342000000</ChapterTimeStart>
<ChapterTimeEnd>1518000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Bleep to bleep</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>9</ChapterUID>
<ChapterTimeStart>1520000000</ChapterTimeStart>
<ChapterTimeEnd>2015000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Baby wants to bleep (k)</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>10</ChapterUID>
<ChapterTimeStart>2017000000</ChapterTimeStart>
<ChapterTimeEnd>2668000000</ChapterTimeEnd>
<ChapterDisplay>
<ChapString>Bleeper</ChapString>
<ChapLanguage>eng</ChapLanguage>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>
<EditionFlagDefault>0</EditionFlagDefault>
<EditionFlagHidden>0</EditionFlagHidden>
</EditionEntry>
</Chapters>
12. Attachments 12. 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" "Attachments Element" (a "Top-Level Element"). "Attachment Elements"
can be used to store related cover art, font files, transcripts, can be used to store related cover art, font files, transcripts,
reports, error recovery files, picture or text-based annotations, reports, error recovery files, picture or text-based annotations,
copies of specifications, or other ancillary files related to the copies of specifications, or other ancillary files related to the
"Segment". "Segment".
skipping to change at page 142, line 47 skipping to change at page 144, line 47
Additional non-mandated Elements are part of the "CuePoint Element" Additional non-mandated Elements are part of the "CuePoint Element"
such as "CueDuration", "CueRelativePosition", "CueCodecState" and such as "CueDuration", "CueRelativePosition", "CueCodecState" and
others which provide any "Matroska Reader" with additional others which provide any "Matroska Reader" with additional
information to use in the optimization of seeking performance. information to use in the optimization of seeking performance.
13.1. Recommendations 13.1. Recommendations
The following recommendations are provided to optimize Matroska The following recommendations are provided to optimize Matroska
performance. performance.
o Unless Matroska is used as a live stream, it SHOULD contain a * Unless Matroska is used as a live stream, it SHOULD contain a
"Cues Element". "Cues Element".
o 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".
o 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 in "Cues" unless it references a "Cluster Element" which contains
a "CodecState Element" but no keyframes. a "CodecState Element" but no keyframes.
o 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".
o References to audio tracks MAY be skipped in "CuePoint Elements" * References to audio tracks MAY be skipped in "CuePoint Elements"
if a video track is present. When included the "CuePoint if a video track is present. When included the "CuePoint
Elements" SHOULD reference audio keyframes at most once every 500 Elements" SHOULD reference audio keyframes at most once every 500
milliseconds. milliseconds.
o If the referenced frame is not stored within the first * If the referenced frame is not stored within the first
"SimpleBlock" or first "BlockGroup" within its "Cluster Element", "SimpleBlock" or first "BlockGroup" within its "Cluster Element",
then the "CueRelativePosition Element" SHOULD be written to then the "CueRelativePosition Element" SHOULD be written to
reference where in the "Cluster" the reference frame is stored. reference where in the "Cluster" the reference frame is stored.
o If a "CuePoint Element" references "Cluster Element" that includes * If a "CuePoint Element" references "Cluster Element" that includes
a "CodecState Element", then that "CuePoint Element" MUST use a a "CodecState Element", then that "CuePoint Element" MUST use a
"CueCodecState Element". "CueCodecState Element".
o "CuePoint Elements" SHOULD be numerically sorted in storage order * "CuePoint Elements" SHOULD be numerically sorted in storage order
by the value of the "CueTime Element". by the value of the "CueTime Element".
14. Matroska Streaming 14. 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.
14.1. File Access 14.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,
skipping to change at page 145, line 29 skipping to change at page 147, line 29
A highlight is basically a rectangle/key associated with an action A highlight is basically a rectangle/key associated with an action
UID. When that rectangle/key is activated, the "Matroska Player" UID. When that rectangle/key is activated, the "Matroska Player"
send the UID of the action to the Control Track handler (codec). The send the UID of the action to the Control Track handler (codec). The
fact that it can also be a key means that even for audio only files, fact that it can also be a key means that even for audio only files,
a keyboard shortcut or button panel could be used for menus. But in a keyboard shortcut or button panel could be used for menus. But in
that case, the hotspot will have to be associated with a name to that case, the hotspot will have to be associated with a name to
display. display.
This highlight is sent from the Control Track to the "Matroska This highlight is sent from the Control Track to the "Matroska
Player". Then the "Matroska Player" has to handle that highlight Player". Then the "Matroska Player" has to handle that highlight
until it's deactivated (see Section 15.1.2). until it's deactivated (see Playback Features (#playback-features)).
The highlight contains a UID of the action, a displayable name (UTF- The highlight contains a UID of the action, a displayable name (UTF-
8), an associated key (list of keys to be defined, probably 8), an associated key (list of keys to be defined, probably
up/down/left/right/select), a screen position/range and an image to up/down/left/right/select), a screen position/range and an image to
display. The image will be displayed either when the user place the display. The image will be displayed either when the user place the
mouse over the rectangle (or any other shape), or when an option of mouse over the rectangle (or any other shape), or when an option of
the screen is selected (not activated). There could be a second the screen is selected (not activated). There could be a second
image used when the option is activated. And there could be a third image used when the option is activated. And there could be a third
image that can serve as background. This way you could have a still image that can serve as background. This way you could have a still
image (like in some DVDs) for the menu and behind that image blank image (like in some DVDs) for the menu and behind that image blank
skipping to change at page 146, line 10 skipping to change at page 148, line 10
the "Matroska Player". the "Matroska Player".
The format used for storing images SHOULD be extensible. For the The format used for storing images SHOULD be extensible. For the
moment we'll use PNG and BMP, both with alpha channel. moment we'll use PNG and BMP, both with alpha channel.
15.1.2. Playback features 15.1.2. Playback features
All the following features will be sent from the Control Track to the All the following features will be sent from the Control Track to the
"Matroska Player" : "Matroska Player" :
o Jump to chapter (UID, prev, next, number) * Jump to chapter (UID, prev, next, number)
o Disable all tracks of a kind (audio, video, subtitle) * Disable all tracks of a kind (audio, video, subtitle)
o Enable track UID (the kind doesn't matter) * Enable track UID (the kind doesn't matter)
o Define/Disable a highlight * Define/Disable a highlight
o Enable/Disable jumping * Enable/Disable jumping
o Enable/Disable track selection of a kind * Enable/Disable track selection of a kind
o Select Edition ID (see chapters) * Select Edition ID (see chapters)
o Pause playback * Pause playback
o Stop playback * Stop playback
o Enable/Disable a Chapter UID * Enable/Disable a Chapter UID
o Hide/Unhide a Chapter UID * Hide/Unhide a Chapter UID
All the actions will be written in a normal Matroska track, with a All the actions will be written in a normal Matroska track, with a
timestamp. A "Menu Frame" SHOULD be able to contain more that one timestamp. A "Menu Frame" SHOULD be able to contain more that one
action/highlight for a given timestamp. (to be determined, EBML action/highlight for a given timestamp. (to be determined, EBML
format structure) format structure)
15.1.3. Player requirements 15.1.3. Player requirements
Some "Matroska Players" might not support the control track. That Some "Matroska Players" might not support the control track. That
mean they will play the active/looped parts as part of the data. So mean they will play the active/looped parts as part of the data. So
I suggest putting the active/looped parts of a movie at the end of a I suggest putting the active/looped parts of a movie at the end of a
movie. When a Menu-aware "Matroska Player" encounter the default movie. When a Menu-aware "Matroska Player" encounter the default
Control Track of a "Matroska" file, the first order SHOULD be to jump Control Track of a "Matroska" file, the first order SHOULD be to jump
at the start of the active/looped part of the movie. at the start of the active/looped part of the movie.
15.2. Working Graph 15.2. Working Graph
Matroska Source file -> Control Track <-> Player. Matroska Source file -> Control Track <-> Player.
-> other tracks -> rendered -> other tracks -> rendered
16. Unknown elements 16. Unknown elements
Matroska is based upon the principle that a reading application does Matroska is based upon 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. A Matroska file therefore contains version indicators
that tell a reading application what to expect. 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
skipping to change at page 147, line 49 skipping to change at page 149, line 49
For video sequences signaled as progressive, it is twice the value of For video sequences signaled as progressive, it is twice the value of
"DefaultDecodedFieldDuration". "DefaultDecodedFieldDuration".
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:
o Blu-ray movie: 1000000000ns/(48/1.001) = 20854167ns * Blu-ray movie: 1000000000ns/(48/1.001) = 20854167ns
o PAL broadcast/DVD: 1000000000ns/(50/1.000) = 20000000ns * PAL broadcast/DVD: 1000000000ns/(50/1.000) = 20000000ns
o N/ATSC broadcast: 1000000000ns/(60/1.001) = 16683333ns * N/ATSC broadcast: 1000000000ns/(60/1.001) = 16683333ns
o hard-telecined DVD: 1000000000ns/(60/1.001) = 16683333ns (60 * hard-telecined DVD: 1000000000ns/(60/1.001) = 16683333ns (60
encoded interlaced fields per second) encoded interlaced fields per second)
o soft-telecined DVD: 1000000000ns/(60/1.001) = 16683333ns (48 * soft-telecined DVD: 1000000000ns/(60/1.001) = 16683333ns (48
encoded interlaced fields per second, with "repeat_first_field = encoded interlaced fields per second, with "repeat_first_field =
1") 1")
19. Encryption 19. Encryption
Encryption in Matroska is designed in a very generic style to allow Encryption in Matroska is designed in a very generic style to allow
people to implement whatever form of encryption is best for them. It people to implement whatever form of encryption is best for them. It
is possible to use the encryption framework in Matroska as a type of is possible to use the encryption framework in Matroska as a type of
DRM (Digital Rights Management). DRM (Digital Rights Management).
skipping to change at page 149, line 9 skipping to change at page 151, line 9
integer of how many columns of pixels SHOULD be cropped from the left integer of how many columns of pixels SHOULD be cropped from the left
and right of the image (respectively). For example, a pillar-boxed and right of the image (respectively). For example, a pillar-boxed
video that stores a 1440x1080 visual image within the center of a video that stores a 1440x1080 visual image within the center of a
padded 1920x1080 encoded image MAY set both "PixelCropLeft" and padded 1920x1080 encoded image MAY set both "PixelCropLeft" and
"PixelCropRight" to "240", so that a "Matroska Player" SHOULD crop "PixelCropRight" to "240", so that a "Matroska Player" SHOULD crop
off 240 columns of pixels from the left and right of the encoded off 240 columns of pixels from the left and right of the encoded
image to present the image with the pillar-boxes hidden. image to present the image with the pillar-boxes hidden.
20.2. Rotation 20.2. Rotation
The ProjectionPoseRoll Element (see Section 9.3.4.1.30.49) can be The ProjectionPoseRoll Element (see Section 9.3.4.1.31.49) can be
used to indicate that the image from the associated video track used to indicate that the image from the associated video track
SHOULD be rotated for presentation. For instance, the following SHOULD be rotated for presentation. For instance, the following
representation of the Projection Element Section 9.3.4.1.30.44) and representation of the Projection Element Section 9.3.4.1.31.44) and
the ProjectionPoseRoll Element represents a video track where the the ProjectionPoseRoll Element represents a video track where the
image SHOULD be presentation with a 90 degree counter-clockwise image SHOULD be presentation with a 90 degree counter-clockwise
rotation. rotation.
<Projection> <Projection> <ProjectionPoseRoll>90</ProjectionPoseRoll> </ProjectionPoseRoll>
<ProjectionPoseRoll>90</ProjectionPoseRoll>
</ProjectionPoseRoll>
21. Matroska versioning 21. Matroska versioning
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 "EBML Header" with jurisdiction over this information are
"DocTypeVersion" and "DocTypeReadVersion". "DocTypeVersion" and "DocTypeReadVersion".
"DocTypeVersion" MUST be equal to or greater than the highest "DocTypeVersion" MUST be equal to or greater than the highest
Matroska version number of any "Element" present in the Matroska Matroska version number of any "Element" present in the Matroska
skipping to change at page 149, line 50 skipping to change at page 151, line 48
"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 evaluating "CueRelativePosition" is not necessary for standard
playback -- it makes seeking more precise if used. playback -- it makes seeking more precise if used.
"DocTypeVersion" MUST always be equal to or greater than "DocTypeVersion" MUST always be equal to or greater than
"DocTypeReadVersion". "DocTypeReadVersion".
A reading application supporting Matroska version "V" MUST NOT refuse A reading application supporting Matroska version "V" MUST NOT refuse
to read an application with "DocReadTypeVersion" equal to or lower to read an application with "DocReadTypeVersion" equal to or lower
than "V" even if "DocTypeVersion" is greater than "V". See also the than "V" even if "DocTypeVersion" is greater than "V". See also the
note about Section 16. note about Unknown Elements (#unknown-elements).
22. MIME Types 22. MIME Types
There is no IETF endorsed MIME type for Matroska files. These There is no IETF endorsed MIME type for Matroska files. These
definitions can be used: definitions can be used:
o .mka : Matroska audio "audio/x-matroska" * .mka : Matroska audio "audio/x-matroska"
o .mkv : Matroska video "video/x-matroska" * .mkv : Matroska video "video/x-matroska"
o .mk3d : Matroska 3D video "video/x-matroska-3d" * .mk3d : Matroska 3D video "video/x-matroska-3d"
23. Segment Position 23. 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 first octet of the "Element ID" of that "Element", measured in
octets, from the beginning of the "Element Data" section of the octets, from the beginning of the "Element Data" section of the
containing "Segment Element". In other words, the "Segment Position" containing "Segment Element". In other words, the "Segment Position"
of an "Element" is the distance in octets from the beginning of its of an "Element" is the distance in octets from the beginning of its
containing "Segment Element" minus the size of the "Element ID" and containing "Segment Element" minus the size of the "Element ID" and
"Element Data Size" of that "Segment Element". The "Segment "Element Data Size" of that "Segment Element". The "Segment
skipping to change at page 150, line 43 skipping to change at page 152, line 43
reserved values to indicate a special meaning. reserved values to indicate a special meaning.
23.2. Example of Segment Position 23.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 with an "Element ID" of "0x18538067" and a "MuxingApp Element" with
an "Element ID" of "0x4D80". an "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|18|53|80|67| 0 |1A|45|DF|A3|8B|42|82|88|6D|61|74|72|6F|73|6B|61|18|53|80|67|
20 |93|15|49|A9|66|8E|4D|80|84|69|65|74|66|57|41|84|69|65|74|66| 20 |93|15|49|A9|66|8E|4D|80|84|69|65|74|66|57|41|84|69|65|74|66|
In the above example, the "Element ID" of the "Segment Element" is In the above example, the "Element ID" of the "Segment Element" is
stored at offset 16, the "Element Data Size" of the "Segment Element" stored at offset 16, the "Element Data Size" of the "Segment Element"
is stored at offset 20, and the "Element Data" of the "Segment is stored at offset 20, and the "Element Data" of the "Segment
Element" is stored at offset 21. Element" is stored 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 Position" of an "Element" is calculated by subtracting the position
of the "Element Data" of the containing "Segment Element" from the of the "Element Data" of the containing "Segment Element" from the
position of that "Element", the "Segment Position" of "MuxingApp position of that "Element", the "Segment Position" of "MuxingApp
skipping to change at page 151, line 26 skipping to change at page 153, line 26
presentation by using Hard Linking, Medium Linking, or Soft Linking. presentation by using Hard Linking, Medium Linking, or Soft Linking.
All "Segments" within a "Linked Segment" MUST utilize the same track All "Segments" within a "Linked Segment" MUST utilize the same track
numbers and timescale. All "Segments" within a "Linked Segment" MUST numbers and timescale. All "Segments" within a "Linked Segment" MUST
be stored within the same directory. All "Segments" within a "Linked be stored within the same directory. All "Segments" within a "Linked
Segment" MUST store a "SegmentUID". Segment" MUST store a "SegmentUID".
24.1. Hard Linking 24.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 relating multiple "Segment Elements" using the "Linked Segment" by relating multiple "Segment Elements" using the
"PrevUID" and "NextUID Elements". Within a "Linked Segment", the "NextUID" and "PrevUID" Elements. Within a "Linked Segment", the
timestamps of each "Segment" MUST follow consecutively in linking timestamps of each "Segment" MUST follow consecutively in linking
order. With Hard Linking, the chapters of any "Segment" within the order. With Hard Linking, the chapters of any "Segment" within the
"Linked Segment" MUST only reference the current "Segment". With "Linked Segment" MUST only reference the current "Segment". With
Hard Linking, the "NextUID" and "PrevUID" MUST reference the Hard Linking, the "NextUID" and "PrevUID" MUST reference the
respective "SegmentUID" values of the next and previous "Segments". respective "SegmentUID" values of the next and previous "Segments".
The first "Segment" of a "Linked Segment" MUST have a "NextUID The first "Segment" of a "Linked Segment" SHOULD have a "NextUID
Element" and MUST NOT have a "PrevUID Element". The last "Segment" Element" and MUST NOT have a "PrevUID Element". The last "Segment"
of a "Linked Segment" MUST have a "PrevUID Element" and MUST NOT have of a "Linked Segment" SHOULD have a "PrevUID Element" and MUST NOT
a "NextUID Element". The middle "Segments" of a "Linked Segment" have a "NextUID Element". The middle "Segments" of a "Linked
MUST have both a "NextUID Element" and a "PrevUID Element". Segment" SHOULD have both a "NextUID Element" and a "PrevUID
Element".
As an example, four "Segments" can be Hard Linked as a "Linked In a chain of "Linked Segments" the "NextUID" always takes precedence
over the "PrevUID". So if SegmentA has a NextUID to SegmentB and
SegmentB has a PrevUID to SegmentC, the link to use is SegmentA to
SegmentB. If SegmentB has a PrevUID to SegmentA but SegmentA has no
NextUID, then the Matroska Player MAY consider these two Segments
linked as SegmentA followed by SegmentB.
As an example, three "Segments" can be Hard Linked as a "Linked
Segment" through cross-referencing each other with "SegmentUID", Segment" through cross-referencing each other with "SegmentUID",
"PrevUID", and "NextUID", as in this table. "PrevUID", and "NextUID", as in this table.
+--------+------------------+-------------------+-------------------+ +------------+----------------+------------------+------------------+
| file | SegmentUID | PrevUID | NextUID | | file name | "SegmentUID" | "PrevUID" | "NextUID" |
| name | | | | +============+================+==================+==================+
+--------+------------------+-------------------+-------------------+ |"start.mkv" |71000c23cd310998| n/a | a77b3598941cb803 |
| "start | "71000c23cd31099 | n/a | "a77b3598941cb803 | | |53fbc94dd984a5dd| | eac0fcdafe44fac9 |
| .mkv" | 853fbc94dd984a5d | | eac0fcdafe44fac9" | +------------+----------------+------------------+------------------+
| | d" | | | |"middle.mkv"|a77b3598941cb803| 71000c23cd310998 | 6c92285fa6d3e827 |
| "middl | "a77b3598941cb80 | "71000c23cd310998 | "6c92285fa6d3e827 | | |eac0fcdafe44fac9| 53fbc94dd984a5dd | b198d120ea3ac674 |
| e.mkv" | 3eac0fcdafe44fac | 53fbc94dd984a5dd" | b198d120ea3ac674" | +------------+----------------+------------------+------------------+
| | 9" | | | | "end.mkv" |6c92285fa6d3e827| a77b3598941cb803 | n/a |
| "end.m | "6c92285fa6d3e82 | "a77b3598941cb803 | n/a | | |b198d120ea3ac674| eac0fcdafe44fac9 | |
| kv" | 7b198d120ea3ac67 | eac0fcdafe44fac9" | | +------------+----------------+------------------+------------------+
| | 4" | | |
+--------+------------------+-------------------+-------------------+ Table 44
An other example where only the "NextUID" Element is used.
+--------------+------------------+-----------+------------------+
| file name | "SegmentUID" | "PrevUID" | "NextUID" |
+==============+==================+===========+==================+
| "start.mkv" | 71000c23cd310998 | n/a | a77b3598941cb803 |
| | 53fbc94dd984a5dd | | eac0fcdafe44fac9 |
+--------------+------------------+-----------+------------------+
| "middle.mkv" | a77b3598941cb803 | n/a | 6c92285fa6d3e827 |
| | eac0fcdafe44fac9 | | b198d120ea3ac674 |
+--------------+------------------+-----------+------------------+
| "end.mkv" | 6c92285fa6d3e827 | n/a | n/a |
| | b198d120ea3ac674 | | |
+--------------+------------------+-----------+------------------+
Table 45
A next example where only the "PrevUID" Element is used.
+--------------+------------------+------------------+-----------+
| file name | "SegmentUID" | "PrevUID" | "NextUID" |
+==============+==================+==================+===========+
| "start.mkv" | 71000c23cd310998 | n/a | n/a |
| | 53fbc94dd984a5dd | | |
+--------------+------------------+------------------+-----------+
| "middle.mkv" | a77b3598941cb803 | 71000c23cd310998 | n/a |
| | eac0fcdafe44fac9 | 53fbc94dd984a5dd | |
+--------------+------------------+------------------+-----------+
| "end.mkv" | 6c92285fa6d3e827 | a77b3598941cb803 | n/a |
| | b198d120ea3ac674 | eac0fcdafe44fac9 | |
+--------------+------------------+------------------+-----------+
Table 46
In this example only the "middle.mkv" is using the "PrevUID" and
"NextUID" Elements.
+------------+----------------+------------------+------------------+
| file name | "SegmentUID" | "PrevUID" | "NextUID" |
+============+================+==================+==================+
|"start.mkv" |71000c23cd310998| n/a | n/a |
| |53fbc94dd984a5dd| | |
+------------+----------------+------------------+------------------+
|"middle.mkv"|a77b3598941cb803| 71000c23cd310998 | 6c92285fa6d3e827 |
| |eac0fcdafe44fac9| 53fbc94dd984a5dd | b198d120ea3ac674 |
+------------+----------------+------------------+------------------+
| "end.mkv" |6c92285fa6d3e827| n/a | n/a |
| |b198d120ea3ac674| | |
+------------+----------------+------------------+------------------+
Table 47
24.2. Medium Linking 24.2. Medium Linking
Medium Linking creates relationships between "Segments" using Ordered Medium Linking creates relationships between "Segments" using Ordered
Chapters and the "ChapterSegmentUID Element". A "Segment Edition" Chapters and the "ChapterSegmentUID Element". A "Segment Edition"
with Ordered Chapters MAY contain "Chapter Elements" that reference with Ordered Chapters MAY contain "Chapter Elements" that reference
timestamp ranges from other "Segments". The "Segment" referenced by timestamp ranges from other "Segments". The "Segment" referenced by
the Ordered Chapter via the "ChapterSegmentUID Element" SHOULD be the Ordered Chapter via the "ChapterSegmentUID Element" SHOULD be
played as part of a Linked Segment. The timestamps of Segment played as part of a Linked Segment. The timestamps of Segment
content referenced by Ordered Chapters MUST be adjusted according to content referenced by Ordered Chapters MUST be adjusted according to
skipping to change at page 154, line 41 skipping to change at page 157, line 44
that corresponds 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) which consists of
packing two frames together in a "Block" using lacing. The first packing two frames together in a "Block" using lacing. The first
frame is the left eye and the other frame is the right eye (or vice frame is the left eye and the other frame is the right eye (or vice
versa). The frames SHOULD be decoded in that order and are possibly versa). The frames SHOULD be decoded in that order and are possibly
dependent 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 does what. "TrackOperation" with "TrackCombinePlanes" do that. For
more details look at Section 25.3. more details look at how TrackOperation works (#track-operation).
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 libmatroska
prior to 0.9.0 that would save/read it as 0x53B9 instead of 0x53B8. prior to 0.9.0 that would save/read it as 0x53B9 instead of 0x53B8.
"Matroska Readers" may support these legacy files by checking "Matroska Readers" may support these legacy files by checking
Matroska v2 or 0x53B9. The older values [20] were 0: mono, 1: right Matroska v2 or 0x53B9. The older values
eye, 2: left eye, 3: both eyes. (http://www.matroska.org/node/1/revisions/74/view#StereoMode) were 0:
mono, 1: right eye, 2: left eye, 3: both eyes.
26. Timestamps 26. Timestamps
Historically timestamps in Matroska were mistakenly called timecodes. Historically timestamps in Matroska were mistakenly called timecodes.
The "Timestamp Element" was called Timecode, the "TimestampScale The "Timestamp Element" was called Timecode, the "TimestampScale
Element" was called TimecodeScale, the "TrackTimestampScale Element" Element" was called TimecodeScale, the "TrackTimestampScale Element"
was called TrackTimecodeScale and the "ReferenceTimestamp Element" was called TrackTimecodeScale and the "ReferenceTimestamp Element"
was called ReferenceTimeCode. was called ReferenceTimeCode.
26.1. Timestamp Types 26.1. Timestamp Types
o Absolute Timestamp = Block+Cluster * Absolute Timestamp = Block+Cluster
o Relative Timestamp = Block * Relative Timestamp = Block
o Scaled Timestamp = Block+Cluster * Scaled Timestamp = Block+Cluster
o Raw Timestamp = (Block+Cluster)*TimestampScale*TrackTimestampScale * Raw Timestamp = (Block+Cluster)*TimestampScale*TrackTimestampScale
26.2. Block Timestamps 26.2. Block Timestamps
The "Block Element"'s timestamp MUST be a signed integer that The "Block Element"'s timestamp MUST be a signed integer that
represents the "Raw Timestamp" relative to the "Cluster"'s "Timestamp represents the "Raw Timestamp" relative to the "Cluster"'s "Timestamp
Element", multiplied by the "TimestampScale Element". See Element", multiplied by the "TimestampScale Element". See
Section 26.4 for more information. TimestampScale (#timestampscale) for more information.
The "Block Element"'s timestamp MUST be represented by a 16bit signed The "Block Element"'s timestamp MUST be represented by a 16bit signed
integer (sint16). The "Block"'s timestamp has a range of -32768 to integer (sint16). The "Block"'s timestamp has a range of -32768 to
+32767 units. When using the default value of the "TimestampScale +32767 units. When using the default value of the "TimestampScale
Element", each integer represents 1ms. The maximum time span of Element", each integer represents 1ms. The maximum time span of
"Block Elements" in a "Cluster" using the default "TimestampScale "Block Elements" in a "Cluster" using the default "TimestampScale
Element" of 1ms is 65536ms. Element" of 1ms is 65536ms.
If a "Cluster"'s "Timestamp Element" is set to zero, it is possible If a "Cluster"'s "Timestamp Element" is set to zero, it is possible
to have "Block Elements" with a negative "Raw Timestamp". "Block to have "Block Elements" with a negative "Raw Timestamp". "Block
skipping to change at page 156, line 8 skipping to change at page 159, line 14
26.4. TimestampScale 26.4. TimestampScale
The "TimestampScale Element" is used to calculate the "Raw Timestamp" The "TimestampScale Element" is used to calculate the "Raw Timestamp"
of a "Block". The timestamp is obtained by adding the "Block"'s of a "Block". The timestamp is obtained by adding the "Block"'s
timestamp to the "Cluster"'s "Timestamp Element", and then timestamp to the "Cluster"'s "Timestamp Element", and then
multiplying that result by the "TimestampScale". The result will be multiplying that result by the "TimestampScale". The result will be
the "Block"'s "Raw Timestamp" in nanoseconds. The formula for this the "Block"'s "Raw Timestamp" in nanoseconds. The formula for this
would look like: would look like:
(a + b) * c (a + b) * c
a = `Block`'s Timestamp a = `Block`'s Timestamp
b = `Cluster`'s Timestamp b = `Cluster`'s Timestamp
c = `TimestampScale` c = `TimestampScale`
For example, assume a "Cluster"'s "Timestamp" has a value of 564264, For example, assume a "Cluster"'s "Timestamp" has a value of 564264,
the "Block" has a "Timestamp" of 1233, and the "TimestampScale the "Block" has a "Timestamp" of 1233, and the "TimestampScale
Element" is the default of 1000000. Element" is the default of 1000000.
(1233 + 564264) * 1000000 = 565497000000 (1233 + 564264) * 1000000 = 565497000000
So, the "Block" in this example has a specific time of 565497000000 So, the "Block" in this example has a specific time of 565497000000
in nanoseconds. In milliseconds this would be 565497ms. in nanoseconds. In milliseconds this would be 565497ms.
26.5. TimestampScale Rounding 26.5. TimestampScale Rounding
Because the default value of "TimestampScale" is 1000000, which makes Because the default value of "TimestampScale" is 1000000, which makes
each integer in the "Cluster" and "Block" "Timestamp Elements" equal each integer in the "Cluster" and "Block" "Timestamp Elements" equal
1ms, this is the most commonly used. When dealing with audio, this 1ms, this is the most commonly used. When dealing with audio, this
causes inaccuracy when seeking. When the audio is combined with causes inaccuracy when seeking. When the audio is combined with
skipping to change at page 158, line 42 skipping to change at page 161, line 48
stream, quickly leading to problems. It is possible to stretch out stream, quickly leading to problems. It is possible to stretch out
the PAL audio track and re-encode it at a slower speed, however when the PAL audio track and re-encode it at a slower speed, however when
dealing with lossy audio codecs, this often results in a loss of dealing with lossy audio codecs, this often results in a loss of
audio quality and/or larger file sizes. audio quality and/or larger file sizes.
This is the type of problem that "TrackTimestampScale" was designed This is the type of problem that "TrackTimestampScale" was designed
to fix. Using it, the video can be played back at a speed that will to fix. Using it, the video can be played back at a speed that will
synch with either the NTSC or the PAL audio stream, depending on synch with either the NTSC or the PAL audio stream, depending on
which is being used for playback. To continue the above example: which is being used for playback. To continue the above example:
Track 1: Video Track 1: Video
Track 2: NTSC Audio Track 2: NTSC Audio
Track 3: PAL Audio Track 3: PAL Audio
Because the NTSC track is at the original speed, it will used as the Because the NTSC track is at the original speed, it will used as the
default value of 1.0 for its "TrackTimestampScale". The video will default value of 1.0 for its "TrackTimestampScale". The video will
also be aligned to the NTSC track with the default value of 1.0. also be aligned to the NTSC track with the default value of 1.0.
The "TrackTimestampScale" value to use for the PAL track would be The "TrackTimestampScale" value to use for the PAL track would be
calculated by determining how much faster the PAL track is than the calculated by determining how much faster the PAL track is than the
NTSC track. In this case, because we know the video for the NTSC NTSC track. In this case, because we know the video for the NTSC
audio is being played back at 24fps and the video for the PAL audio audio is being played back at 24fps and the video for the PAL audio
is being played back at 25fps, the calculation would be: