draft-ietf-cellar-codec-03.txt   draft-ietf-cellar-codec-04.txt 
cellar S. Lhomme cellar S. Lhomme
Internet-Draft Internet-Draft
Intended status: Informational M. Bunkus Intended status: Informational M. Bunkus
Expires: 29 April 2020 Expires: 19 October 2020
D. Rice D. Rice
27 October 2019 17 April 2020
Matroska Codec Matroska Media Container Codec Specifications
draft-ietf-cellar-codec-03 draft-ietf-cellar-codec-04
Abstract Abstract
This document defines the Matroska codec mappings, including the This document defines the Matroska codec mappings, including the
codec ID, layout of data in a "Block Element" and in an optional codec ID, layout of data in a "Block Element" and in an optional
"CodecPrivate Element". "CodecPrivate Element".
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
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 29 April 2020. This Internet-Draft will expire on 19 October 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License. provided without warranty as described in the Simplified BSD License.
skipping to change at page 2, line 22 skipping to change at page 2, line 22
6. Codec Mappings . . . . . . . . . . . . . . . . . . . . . . . 5 6. Codec Mappings . . . . . . . . . . . . . . . . . . . . . . . 5
6.1. Defining Matroska Codec Support . . . . . . . . . . . . . 5 6.1. Defining Matroska Codec Support . . . . . . . . . . . . . 5
6.1.1. Codec ID . . . . . . . . . . . . . . . . . . . . . . 5 6.1.1. Codec ID . . . . . . . . . . . . . . . . . . . . . . 5
6.1.2. Codec Name . . . . . . . . . . . . . . . . . . . . . 6 6.1.2. Codec Name . . . . . . . . . . . . . . . . . . . . . 6
6.1.3. Description . . . . . . . . . . . . . . . . . . . . . 7 6.1.3. Description . . . . . . . . . . . . . . . . . . . . . 7
6.1.4. Initialization . . . . . . . . . . . . . . . . . . . 7 6.1.4. Initialization . . . . . . . . . . . . . . . . . . . 7
6.1.5. Codec BlockAdditions . . . . . . . . . . . . . . . . 7 6.1.5. Codec BlockAdditions . . . . . . . . . . . . . . . . 7
6.1.6. Citation . . . . . . . . . . . . . . . . . . . . . . 8 6.1.6. Citation . . . . . . . . . . . . . . . . . . . . . . 8
6.1.7. Deprecation Date . . . . . . . . . . . . . . . . . . 8 6.1.7. Deprecation Date . . . . . . . . . . . . . . . . . . 8
6.1.8. Superseded By . . . . . . . . . . . . . . . . . . . . 8 6.1.8. Superseded By . . . . . . . . . . . . . . . . . . . . 8
6.2. Recommendations for the Creation of New Codec 6.2. Recommendations for the Creation of New Codec Mappings . 8
Mappings . . . . . . . . . . . . . . . . . . . . . . . . 8 6.3. Video Codec Mappings . . . . . . . . . . . . . . . . . . 9
6.3. Video Codec Mappings . . . . . . . . . . . . . . . . . . 8
6.3.1. V_MS/VFW/FOURCC . . . . . . . . . . . . . . . . . . . 9 6.3.1. V_MS/VFW/FOURCC . . . . . . . . . . . . . . . . . . . 9
6.3.2. V_UNCOMPRESSED . . . . . . . . . . . . . . . . . . . 9 6.3.2. V_UNCOMPRESSED . . . . . . . . . . . . . . . . . . . 9
6.3.3. V_MPEG4/ISO/SP . . . . . . . . . . . . . . . . . . . 9 6.3.3. V_MPEG4/ISO/SP . . . . . . . . . . . . . . . . . . . 10
6.3.4. V_MPEG4/ISO/ASP . . . . . . . . . . . . . . . . . . . 10 6.3.4. V_MPEG4/ISO/ASP . . . . . . . . . . . . . . . . . . . 10
6.3.5. V_MPEG4/ISO/AP . . . . . . . . . . . . . . . . . . . 10 6.3.5. V_MPEG4/ISO/AP . . . . . . . . . . . . . . . . . . . 10
6.3.6. V_MPEG4/MS/V3 . . . . . . . . . . . . . . . . . . . . 10 6.3.6. V_MPEG4/MS/V3 . . . . . . . . . . . . . . . . . . . . 10
6.3.7. V_MPEG1 . . . . . . . . . . . . . . . . . . . . . . . 10 6.3.7. V_MPEG1 . . . . . . . . . . . . . . . . . . . . . . . 11
6.3.8. V_MPEG2 . . . . . . . . . . . . . . . . . . . . . . . 11 6.3.8. V_MPEG2 . . . . . . . . . . . . . . . . . . . . . . . 11
6.3.9. V_REAL/RV10 . . . . . . . . . . . . . . . . . . . . . 11 6.3.9. V_REAL/RV10 . . . . . . . . . . . . . . . . . . . . . 11
6.3.10. V_REAL/RV20 . . . . . . . . . . . . . . . . . . . . . 11 6.3.10. V_REAL/RV20 . . . . . . . . . . . . . . . . . . . . . 12
6.3.11. V_REAL/RV30 . . . . . . . . . . . . . . . . . . . . . 12 6.3.11. V_REAL/RV30 . . . . . . . . . . . . . . . . . . . . . 12
6.3.12. V_REAL/RV40 . . . . . . . . . . . . . . . . . . . . . 12 6.3.12. V_REAL/RV40 . . . . . . . . . . . . . . . . . . . . . 12
6.3.13. V_QUICKTIME . . . . . . . . . . . . . . . . . . . . . 12 6.3.13. V_QUICKTIME . . . . . . . . . . . . . . . . . . . . . 12
6.3.14. V_THEORA . . . . . . . . . . . . . . . . . . . . . . 13 6.3.14. V_THEORA . . . . . . . . . . . . . . . . . . . . . . 13
6.3.15. V_PRORES . . . . . . . . . . . . . . . . . . . . . . 13 6.3.15. V_PRORES . . . . . . . . . . . . . . . . . . . . . . 13
6.3.16. V_VP8 . . . . . . . . . . . . . . . . . . . . . . . . 14 6.3.16. V_VP8 . . . . . . . . . . . . . . . . . . . . . . . . 14
6.3.17. V_VP9 . . . . . . . . . . . . . . . . . . . . . . . . 14 6.3.17. V_VP9 . . . . . . . . . . . . . . . . . . . . . . . . 14
6.3.18. V_FFV1 . . . . . . . . . . . . . . . . . . . . . . . 14 6.3.18. V_FFV1 . . . . . . . . . . . . . . . . . . . . . . . 15
6.4. Audio Codec Mappings . . . . . . . . . . . . . . . . . . 15 6.4. Audio Codec Mappings . . . . . . . . . . . . . . . . . . 15
6.4.1. A_MPEG/L3 . . . . . . . . . . . . . . . . . . . . . . 15 6.4.1. A_MPEG/L3 . . . . . . . . . . . . . . . . . . . . . . 15
6.4.2. A_MPEG/L2 . . . . . . . . . . . . . . . . . . . . . . 15 6.4.2. A_MPEG/L2 . . . . . . . . . . . . . . . . . . . . . . 15
6.4.3. A_MPEG/L1 . . . . . . . . . . . . . . . . . . . . . . 15 6.4.3. A_MPEG/L1 . . . . . . . . . . . . . . . . . . . . . . 16
6.4.4. A_PCM/INT/BIG . . . . . . . . . . . . . . . . . . . . 16 6.4.4. A_PCM/INT/BIG . . . . . . . . . . . . . . . . . . . . 16
6.4.5. A_PCM/INT/LIT . . . . . . . . . . . . . . . . . . . . 16 6.4.5. A_PCM/INT/LIT . . . . . . . . . . . . . . . . . . . . 16
6.4.6. A_PCM/FLOAT/IEEE . . . . . . . . . . . . . . . . . . 16 6.4.6. A_PCM/FLOAT/IEEE . . . . . . . . . . . . . . . . . . 16
6.4.7. A_MPC . . . . . . . . . . . . . . . . . . . . . . . . 16 6.4.7. A_MPC . . . . . . . . . . . . . . . . . . . . . . . . 17
6.4.8. A_AC3 . . . . . . . . . . . . . . . . . . . . . . . . 17 6.4.8. A_AC3 . . . . . . . . . . . . . . . . . . . . . . . . 17
6.4.9. A_AC3/BSID9 . . . . . . . . . . . . . . . . . . . . . 17 6.4.9. A_AC3/BSID9 . . . . . . . . . . . . . . . . . . . . . 17
6.4.10. A_AC3/BSID10 . . . . . . . . . . . . . . . . . . . . 17 6.4.10. A_AC3/BSID10 . . . . . . . . . . . . . . . . . . . . 17
6.4.11. A_ALAC . . . . . . . . . . . . . . . . . . . . . . . 18 6.4.11. A_ALAC . . . . . . . . . . . . . . . . . . . . . . . 18
6.4.12. A_DTS . . . . . . . . . . . . . . . . . . . . . . . . 18 6.4.12. A_DTS . . . . . . . . . . . . . . . . . . . . . . . . 18
6.4.13. A_DTS/EXPRESS . . . . . . . . . . . . . . . . . . . . 18 6.4.13. A_DTS/EXPRESS . . . . . . . . . . . . . . . . . . . . 18
6.4.14. A_DTS/LOSSLESS . . . . . . . . . . . . . . . . . . . 18 6.4.14. A_DTS/LOSSLESS . . . . . . . . . . . . . . . . . . . 19
6.4.15. A_VORBIS . . . . . . . . . . . . . . . . . . . . . . 19 6.4.15. A_VORBIS . . . . . . . . . . . . . . . . . . . . . . 19
6.4.16. A_FLAC . . . . . . . . . . . . . . . . . . . . . . . 19 6.4.16. A_FLAC . . . . . . . . . . . . . . . . . . . . . . . 19
6.4.17. AREAL/144 . . . . . . . . . . . . . . . . . . . . . . 19 6.4.17. A_REAL/14_4 . . . . . . . . . . . . . . . . . . . . . 19
6.4.18. AREAL/288 . . . . . . . . . . . . . . . . . . . . . . 19 6.4.18. A_REAL/28_8 . . . . . . . . . . . . . . . . . . . . . 20
6.4.19. A_REAL/COOK . . . . . . . . . . . . . . . . . . . . . 20 6.4.19. A_REAL/COOK . . . . . . . . . . . . . . . . . . . . . 20
6.4.20. A_REAL/SIPR . . . . . . . . . . . . . . . . . . . . . 20 6.4.20. A_REAL/SIPR . . . . . . . . . . . . . . . . . . . . . 20
6.4.21. A_REAL/RALF . . . . . . . . . . . . . . . . . . . . . 20 6.4.21. A_REAL/RALF . . . . . . . . . . . . . . . . . . . . . 21
6.4.22. A_REAL/ATRC . . . . . . . . . . . . . . . . . . . . . 21 6.4.22. A_REAL/ATRC . . . . . . . . . . . . . . . . . . . . . 21
6.4.23. A_MS/ACM . . . . . . . . . . . . . . . . . . . . . . 21 6.4.23. A_MS/ACM . . . . . . . . . . . . . . . . . . . . . . 21
6.4.24. A_AAC/MPEG2/MAIN . . . . . . . . . . . . . . . . . . 21 6.4.24. A_AAC/MPEG2/MAIN . . . . . . . . . . . . . . . . . . 21
6.4.25. A_AAC/MPEG2/LC . . . . . . . . . . . . . . . . . . . 21 6.4.25. A_AAC/MPEG2/LC . . . . . . . . . . . . . . . . . . . 22
6.4.26. A_AAC/MPEG2/LC/SBR . . . . . . . . . . . . . . . . . 22 6.4.26. A_AAC/MPEG2/LC/SBR . . . . . . . . . . . . . . . . . 22
6.4.27. A_AAC/MPEG2/SSR . . . . . . . . . . . . . . . . . . . 22 6.4.27. A_AAC/MPEG2/SSR . . . . . . . . . . . . . . . . . . . 22
6.4.28. A_AAC/MPEG4/MAIN . . . . . . . . . . . . . . . . . . 22 6.4.28. A_AAC/MPEG4/MAIN . . . . . . . . . . . . . . . . . . 23
6.4.29. A_AAC/MPEG4/LC . . . . . . . . . . . . . . . . . . . 23 6.4.29. A_AAC/MPEG4/LC . . . . . . . . . . . . . . . . . . . 23
6.4.30. A_AAC/MPEG4/LC/SBR . . . . . . . . . . . . . . . . . 23 6.4.30. A_AAC/MPEG4/LC/SBR . . . . . . . . . . . . . . . . . 23
6.4.31. A_AAC/MPEG4/SSR . . . . . . . . . . . . . . . . . . . 23 6.4.31. A_AAC/MPEG4/SSR . . . . . . . . . . . . . . . . . . . 23
6.4.32. A_AAC/MPEG4/LTP . . . . . . . . . . . . . . . . . . . 23 6.4.32. A_AAC/MPEG4/LTP . . . . . . . . . . . . . . . . . . . 24
6.4.33. A_QUICKTIME . . . . . . . . . . . . . . . . . . . . . 24 6.4.33. A_QUICKTIME . . . . . . . . . . . . . . . . . . . . . 24
6.4.34. A_QUICKTIME/QDMC . . . . . . . . . . . . . . . . . . 24 6.4.34. A_QUICKTIME/QDMC . . . . . . . . . . . . . . . . . . 24
6.4.35. A_QUICKTIME/QDM2 . . . . . . . . . . . . . . . . . . 24 6.4.35. A_QUICKTIME/QDM2 . . . . . . . . . . . . . . . . . . 25
6.4.36. A_TTA1 . . . . . . . . . . . . . . . . . . . . . . . 25 6.4.36. A_TTA1 . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.37. A_WAVPACK4 . . . . . . . . . . . . . . . . . . . . . 25 6.4.37. A_WAVPACK4 . . . . . . . . . . . . . . . . . . . . . 25
6.5. Subtitle Codec Mappings . . . . . . . . . . . . . . . . . 26 6.5. Subtitle Codec Mappings . . . . . . . . . . . . . . . . . 26
6.5.1. S_TEXT/UTF8 . . . . . . . . . . . . . . . . . . . . . 26 6.5.1. S_TEXT/UTF8 . . . . . . . . . . . . . . . . . . . . . 26
6.5.2. S_TEXT/SSA . . . . . . . . . . . . . . . . . . . . . 26 6.5.2. S_TEXT/SSA . . . . . . . . . . . . . . . . . . . . . 26
6.5.3. S_TEXT/ASS . . . . . . . . . . . . . . . . . . . . . 26 6.5.3. S_TEXT/ASS . . . . . . . . . . . . . . . . . . . . . 26
6.5.4. S_TEXT/USF . . . . . . . . . . . . . . . . . . . . . 26 6.5.4. S_TEXT/USF . . . . . . . . . . . . . . . . . . . . . 26
6.5.5. S_TEXT/WEBVTT . . . . . . . . . . . . . . . . . . . . 26 6.5.5. S_TEXT/WEBVTT . . . . . . . . . . . . . . . . . . . . 27
6.5.6. S_IMAGE/BMP . . . . . . . . . . . . . . . . . . . . . 27 6.5.6. S_IMAGE/BMP . . . . . . . . . . . . . . . . . . . . . 27
6.5.7. S_DVBSUB . . . . . . . . . . . . . . . . . . . . . . 27 6.5.7. S_DVBSUB . . . . . . . . . . . . . . . . . . . . . . 27
6.5.8. S_VOBSUB . . . . . . . . . . . . . . . . . . . . . . 27 6.5.8. S_VOBSUB . . . . . . . . . . . . . . . . . . . . . . 27
6.5.9. S_HDMV/PGS . . . . . . . . . . . . . . . . . . . . . 28 6.5.9. S_HDMV/PGS . . . . . . . . . . . . . . . . . . . . . 28
6.5.10. S_HDMV/TEXTST . . . . . . . . . . . . . . . . . . . . 28 6.5.10. S_HDMV/TEXTST . . . . . . . . . . . . . . . . . . . . 28
6.5.11. S_KATE . . . . . . . . . . . . . . . . . . . . . . . 28 6.5.11. S_KATE . . . . . . . . . . . . . . . . . . . . . . . 28
6.6. Button Codec Mappings . . . . . . . . . . . . . . . . . . 28 6.6. Button Codec Mappings . . . . . . . . . . . . . . . . . . 29
6.6.1. B_VOBBTN . . . . . . . . . . . . . . . . . . . . . . 28 6.6.1. B_VOBBTN . . . . . . . . . . . . . . . . . . . . . . 29
7. Subtitles . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7. Subtitles . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1. Images Subtitles . . . . . . . . . . . . . . . . . . . . 29 7.1. Images Subtitles . . . . . . . . . . . . . . . . . . . . 30
7.2. SRT Subtitles . . . . . . . . . . . . . . . . . . . . . . 32 7.2. SRT Subtitles . . . . . . . . . . . . . . . . . . . . . . 33
7.3. SSA/ASS Subtitles . . . . . . . . . . . . . . . . . . . . 33 7.3. SSA/ASS Subtitles . . . . . . . . . . . . . . . . . . . . 33
7.4. USF Subtitles . . . . . . . . . . . . . . . . . . . . . . 37 7.4. USF Subtitles . . . . . . . . . . . . . . . . . . . . . . 38
7.5. WebVTT . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.5. WebVTT . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.5.1. Storage of WebVTT in Matroska . . . . . . . . . . . . 37 7.5.1. Storage of WebVTT in Matroska . . . . . . . . . . . . 38
7.5.2. Examples of transformation . . . . . . . . . . . . . 38 7.5.2. Examples of transformation . . . . . . . . . . . . . 39
7.5.3. Storage of WebVTT in Matroska vs. WebM . . . . . . . 41 7.5.3. Storage of WebVTT in Matroska vs. WebM . . . . . . . 42
7.6. HDMV presentation graphics subtitles . . . . . . . . . . 42 7.6. HDMV presentation graphics subtitles . . . . . . . . . . 43
7.6.1. Storage of HDMV presentation graphics 7.6.1. Storage of HDMV presentation graphics subtitles . . . 43
subtitles . . . . . . . . . . . . . . . . . . . . . . 42 7.7. HDMV text subtitles . . . . . . . . . . . . . . . . . . . 43
7.7. HDMV text subtitles . . . . . . . . . . . . . . . . . . . 42 7.7.1. Storage of HDMV text subtitles . . . . . . . . . . . 43
7.7.1. Storage of HDMV text subtitles . . . . . . . . . . . 42 7.8. Digital Video Broadcasting (DVB) subtitles . . . . . . . 44
7.8. Digital Video Broadcasting (DVB) subtitles . . . . . . . 43 7.8.1. Storage of DVB subtitles . . . . . . . . . . . . . . 45
7.8.1. Storage of DVB subtitles . . . . . . . . . . . . . . 44 8. Block Additional Mapping . . . . . . . . . . . . . . . . . . 45
8. Block Additional Mapping . . . . . . . . . . . . . . . . . . 44 8.1. Summary of Assigned BlockAddIDType Values . . . . . . . . 47
9. Normative References . . . . . . . . . . . . . . . . . . . . 45 8.2. SMPTE ST 12-1 Timecode . . . . . . . . . . . . . . . . . 47
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 8.2.1. Timecode Description . . . . . . . . . . . . . . . . 47
8.2.2. BlockAddIDType . . . . . . . . . . . . . . . . . . . 48
8.2.3. BlockAddIDName . . . . . . . . . . . . . . . . . . . 48
8.2.4. BlockAddIDExtraData . . . . . . . . . . . . . . . . . 49
9. Normative References . . . . . . . . . . . . . . . . . . . . 49
10. Informative References . . . . . . . . . . . . . . . . . . . 49
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50
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 stores interleaved and timestamped audio/video/subtitle data using It stores interleaved and timestamped audio/video/subtitle data using
various codecs. To interpret the codec data, a mapping between the various codecs. To interpret the codec data, a mapping between the
way the data is stored in Matroska and how it is understood by such a way the data is stored in Matroska and how it is understood by such a
codec is necessary. codec is necessary.
This document intends to define this mapping for many commonly used This document intends to define this mapping for many commonly used
skipping to change at page 8, line 11 skipping to change at page 8, line 14
The values of "BlockAddID" that are 2 of greater have no semantic The values of "BlockAddID" that are 2 of greater have no semantic
meaning, but simply associate the "BlockMore Element" with a meaning, but simply associate the "BlockMore Element" with a
"BlockAdditionMapping" of the associated Track. See the section on "BlockAdditionMapping" of the associated Track. See the section on
Block Additional Mappings (#block-additional-mapping) for more Block Additional Mappings (#block-additional-mapping) for more
information. information.
The following XML depicts the nested Elements of a "BlockGroup The following XML depicts the nested Elements of a "BlockGroup
Element" with an example of BlockAdditions: Element" with an example of BlockAdditions:
<BlockGroup> <Block>{Binary data of a VP9 video frame in YUV}</Block> <BlockAdditions> <BlockMore> <BlockAddID>1</BlockAddID> <BlockAdditional> {alpha channel encoding to supplement the VP9 frame} </BlockAdditional> </BlockMore> </BlockAdditions> </BlockGroup> <BlockGroup>
<Block>{Binary data of a VP9 video frame in YUV}</Block>
<BlockAdditions>
<BlockMore>
<BlockAddID>1</BlockAddID>
<BlockAdditional>
{alpha channel encoding to supplement the VP9 frame}
</BlockAdditional>
</BlockMore>
</BlockAdditions>
</BlockGroup>
6.1.6. Citation 6.1.6. Citation
Documentation of the associated normative and informative references Documentation of the associated normative and informative references
for the codec is RECOMMENDED. for the codec is RECOMMENDED.
6.1.7. Deprecation Date 6.1.7. Deprecation Date
A timestamp, expressed in [RFC3339] that notes when support for the A timestamp, expressed in [RFC3339] that notes when support for the
"Codec Mapping" within Matroska was deprecated. If a "Codec Mapping" "Codec Mapping" within Matroska was deprecated. If a "Codec Mapping"
skipping to change at page 17, line 11 skipping to change at page 17, line 25
Codec Name: MPC (musepack) SV8 Codec Name: MPC (musepack) SV8
Description: The main developer for musepack has requested that we Description: The main developer for musepack has requested that we
wait until the SV8 framing has been fully defined for musepack before wait until the SV8 framing has been fully defined for musepack before
defining how to store it in Matroska. defining how to store it in Matroska.
6.4.8. A_AC3 6.4.8. A_AC3
Codec ID: A_AC3 Codec ID: A_AC3
Codec Name: (Dolby[TM]) AC3 Codec Name: (Dolby&#8482;) AC3
Description: BSID <= 8 !! The private data is void ??? Corresponding Description: BSID <= 8 !! The private data is void ??? Corresponding
ACM wFormatTag : 0x2000 ; channel number have to be read from the ACM wFormatTag : 0x2000 ; channel number have to be read from the
corresponding audio element corresponding audio element
6.4.9. A_AC3/BSID9 6.4.9. A_AC3/BSID9
Codec ID: A_AC3/BSID9 Codec ID: A_AC3/BSID9
Codec Name: (Dolby[TM]) AC3 Codec Name: (Dolby&#8482;) AC3
Description: The ac3 frame header has, similar to the mpeg-audio Description: The ac3 frame header has, similar to the mpeg-audio
header a version field. Normal ac3 is defined as bitstream id 8 (5 header a version field. Normal ac3 is defined as bitstream id 8 (5
Bits, numbers are 0-15). Everything below 8 is still compatible with Bits, numbers are 0-15). Everything below 8 is still compatible with
all decoders that handle 8 correctly. Everything higher are all decoders that handle 8 correctly. Everything higher are
additions that break decoder compatibility. For the samplerates additions that break decoder compatibility. For the samplerates
24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the 24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the
samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10 samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10
Initialization: none Initialization: none
6.4.10. A_AC3/BSID10 6.4.10. A_AC3/BSID10
Codec ID: A_AC3/BSID10 Codec ID: A_AC3/BSID10
Codec Name: (Dolby[TM]) AC3 Codec Name: (Dolby&#8482;) AC3
Description: The ac3 frame header has, similar to the mpeg-audio Description: The ac3 frame header has, similar to the mpeg-audio
header a version field. Normal ac3 is defined as bitstream id 8 (5 header a version field. Normal ac3 is defined as bitstream id 8 (5
Bits, numbers are 0-15). Everything below 8 is still compatible with Bits, numbers are 0-15). Everything below 8 is still compatible with
all decoders that handle 8 correctly. Everything higher are all decoders that handle 8 correctly. Everything higher are
additions that break decoder compatibility. For the samplerates additions that break decoder compatibility. For the samplerates
24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the 24kHz (00); 22,05kHz (01) and 16kHz (10) the BSID is 9 For the
samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10 samplerates 12kHz (00); 11,025kHz (01) and 8kHz (10) the BSID is 10
Initialization: none Initialization: none
skipping to change at page 19, line 15 skipping to change at page 19, line 26
6.4.15. A_VORBIS 6.4.15. A_VORBIS
Codec ID: A_VORBIS Codec ID: A_VORBIS
Codec Name: Vorbis Codec Name: Vorbis
Initialization: The "Private Data" contains the first three Vorbis Initialization: The "Private Data" contains the first three Vorbis
packet in order. The lengths of the packets precedes them. The packet in order. The lengths of the packets precedes them. The
actual layout is: - Byte 1: number of distinct packets '"#p"' minus actual layout is: - Byte 1: number of distinct packets '"#p"' minus
one inside the CodecPrivate block. This MUST be '2' for current (as one inside the CodecPrivate block. This MUST be '2' for current (as
of 2016-07-08) Vorbis headers. - Bytes 2..n: lengths of the first of 2016-07-08) Vorbis headers. - Bytes 2..n: lengths of the first
'"#p"' packets, coded in Xiph-style lacing. The length of the last '"#p"' packets, coded in Xiph-style lacing. The length of the last
packet is the length of the CodecPrivate block minus the lengths packet is the length of the CodecPrivate block minus the lengths
coded in these bytes minus one. - Bytes n+1..: The Vorbis coded in these bytes minus one. - Bytes n+1..: The Vorbis
identification header (https://xiph.org/vorbis/doc/ identification header (https://xiph.org/vorbis/doc/
Vorbis_I_spec.html), followed by the Vorbis comment header Vorbis_I_spec.html), followed by the Vorbis comment header
(https://xiph.org/vorbis/doc/v-comment.html) followed by the codec (https://xiph.org/vorbis/doc/v-comment.html) followed by the codec
setup header (https://xiph.org/vorbis/doc/Vorbis_I_spec.html). setup header (https://xiph.org/vorbis/doc/Vorbis_I_spec.html).
6.4.16. A_FLAC 6.4.16. A_FLAC
Codec ID: A_FLAC Codec ID: A_FLAC
Codec Name: FLAC (Free Lossless Audio Codec) Codec Name: FLAC (Free Lossless Audio Codec)
skipping to change at page 32, line 43 skipping to change at page 33, line 11
There SHOULD also be two Blocks containing one image each with the There SHOULD also be two Blocks containing one image each with the
timestamps "00:00:01:101" and "00:00:08:708". timestamps "00:00:01:101" and "00:00:08:708".
7.2. SRT Subtitles 7.2. SRT Subtitles
SRT is perhaps the most basic of all subtitle formats. SRT is perhaps the most basic of all subtitle formats.
It consists of four parts, all in text.. It consists of four parts, all in text..
1. A number indicating which subtitle it is in the sequence. 2. 1. A number indicating which subtitle it is in the sequence. 2. The
The time that the subtitle appears on the screen, and then time that the subtitle appears on the screen, and then disappears. 3.
disappears. 3. The subtitle itself. 4. A blank line indicating The subtitle itself. 4. A blank line indicating the start of a new
the start of a new subtitle. subtitle.
When placing SRT in Matroska, part 3 is converted to UTF-8 (S_TEXT/ When placing SRT in Matroska, part 3 is converted to UTF-8 (S_TEXT/
UTF8) and placed in the data portion of the Block. Part 2 is used to UTF8) and placed in the data portion of the Block. Part 2 is used to
set the timestamp of the Block, and BlockDuration element. Nothing set the timestamp of the Block, and BlockDuration element. Nothing
else is used. else is used.
Here is an example SRT file: Here is an example SRT file:
1 1
00:02:17,440 --> 00:02:20,375 00:02:17,440 --> 00:02:20,375
skipping to change at page 42, line 9 skipping to change at page 43, line 9
February 2012) and was based on an earlier draft of WebVTT and February 2012) and was based on an earlier draft of WebVTT and
ignores several parts that were added to WebVTT later; WebM does ignores several parts that were added to WebVTT later; WebM does
still not support subtitles at all (http://www.webmproject.org/docs/ still not support subtitles at all (http://www.webmproject.org/docs/
container/); the proposal suggests splitting the information across container/); the proposal suggests splitting the information across
multiple tracks making demuxer's and remuxer's life very difficult. multiple tracks making demuxer's and remuxer's life very difficult.
7.6. HDMV presentation graphics subtitles 7.6. HDMV presentation graphics subtitles
The specifications for the HDMV presentation graphics subtitle format The specifications for the HDMV presentation graphics subtitle format
(short: HDMV PGS) can be found in the document "Blu-ray Disc Read- (short: HDMV PGS) can be found in the document "Blu-ray Disc Read-
Only Format; Part 3 -- Audio Visual Basic Specifications" in section Only Format; Part 3 - Audio Visual Basic Specifications" in section
9.14 "HDMV graphics streams". 9.14 "HDMV graphics streams".
7.6.1. Storage of HDMV presentation graphics subtitles 7.6.1. Storage of HDMV presentation graphics subtitles
The CodecID to use is "S_HDMV/PGS". A CodecPrivate element is not The CodecID to use is "S_HDMV/PGS". A CodecPrivate element is not
used. used.
7.6.1.1. Storage of HDMV PGS Segments in Matroska Blocks 7.6.1.1. Storage of HDMV PGS Segments in Matroska Blocks
Each HDMV PGS Segment (short: Segment) will be stored in a Matroska Each HDMV PGS Segment (short: Segment) will be stored in a Matroska
skipping to change at page 42, line 41 skipping to change at page 43, line 41
A muxer MAY use a Duration, e.g. by calculating the distance between A muxer MAY use a Duration, e.g. by calculating the distance between
two subsequent Segments. If a Matroska Block has a Duration, a two subsequent Segments. If a Matroska Block has a Duration, a
player MUST display that Segment only for the duration of the Block's player MUST display that Segment only for the duration of the Block's
Duration. Duration.
7.7. HDMV text subtitles 7.7. HDMV text subtitles
The specifications for the HDMV text subtitle format (short: HDMV The specifications for the HDMV text subtitle format (short: HDMV
TextST) can be found in the document "Blu-ray Disc Read-Only Format; TextST) can be found in the document "Blu-ray Disc Read-Only Format;
Part 3 -- Audio Visual Basic Specifications" in section 9.15 "HDMV Part 3 - Audio Visual Basic Specifications" in section 9.15 "HDMV
text subtitle streams". text subtitle streams".
7.7.1. Storage of HDMV text subtitles 7.7.1. Storage of HDMV text subtitles
The CodecID to use is "S_HDMV/TEXTST". The CodecID to use is "S_HDMV/TEXTST".
A CodecPrivate Element is required. It MUST contain the stream's A CodecPrivate Element is required. It MUST contain the stream's
Dialog Style Segment as described in section 9.15.4.2 "Dialog Style Dialog Style Segment as described in section 9.15.4.2 "Dialog Style
Segment" of the Blu-ray specifications. Segment" of the Blu-ray specifications.
skipping to change at page 45, line 5 skipping to change at page 46, line 5
by the "BlockAdditionalMapping Element" within the associated "Track by the "BlockAdditionalMapping Element" within the associated "Track
Element" where the "BlockAddID Element" of "BlockAdditional Element" Element" where the "BlockAddID Element" of "BlockAdditional Element"
equals the "BlockAddIDValue" of the associated Track's equals the "BlockAddIDValue" of the associated Track's
"BlockAdditionalMapping Element". That "BlockAdditionalMapping "BlockAdditionalMapping Element". That "BlockAdditionalMapping
Element" then identifies a particular Block Additional Mapping by the Element" then identifies a particular Block Additional Mapping by the
"BlockAddIDType". "BlockAddIDType".
The following XML depicts a use of a Block Additional Mapping to The following XML depicts a use of a Block Additional Mapping to
associate a timecode value with a "Block": associate a timecode value with a "Block":
<Segment> <!--Mandatory elements ommitted for readability--> <Tracks> <TrackEntry> <TrackNumber>1</TrackNumber> <TrackUID>568001708</TrackUID> <TrackType>1</TrackType> <BlockAdditionalMapping> <BlockAddIDValue>2</BlockAddIDValue><!--arbitrary value used in BlockAddID--> <BlockAddIDName>timecode</BlockAddIDName> <BlockAddIDType>12</BlockAddIDType> </BlockAdditionalMapping> <CodecID>V_FFV1</CodecID> <Video> <PixelWidth>1920</PixelWidth> <PixelHeight>1080</PixelHeight> </Video> </TrackEntry> </Tracks> <Cluster> <Timestamp>3000</Timestamp> <BlockGroup> <Block>{binary video frame}</Block> <BlockAdditions> <BlockMore> <BlockAddID>2</BlockAddID><!--arbitrary value from BlockAdditionalMapping--> <BlockAdditional>01:00:00:00</BlockAdditional> </BlockMore> </BlockAdditions> </BlockGroup> </Cluster> </Segment> <Segment>
<!--Mandatory elements ommitted for readability-->
<Tracks>
<TrackEntry>
<TrackNumber>1</TrackNumber>
<TrackUID>568001708</TrackUID>
<TrackType>1</TrackType>
<BlockAdditionalMapping>
<BlockAddIDValue>2</BlockAddIDValue><!--arbitrary value
used in BlockAddID-->
<BlockAddIDName>timecode</BlockAddIDName>
<BlockAddIDType>12</BlockAddIDType>
</BlockAdditionalMapping>
<CodecID>V_FFV1</CodecID>
<Video>
<PixelWidth>1920</PixelWidth>
<PixelHeight>1080</PixelHeight>
</Video>
</TrackEntry>
</Tracks>
<Cluster>
<Timestamp>3000</Timestamp>
<BlockGroup>
<Block>{binary video frame}</Block>
<BlockAdditions>
<BlockMore>
<BlockAddID>2</BlockAddID><!--arbitrary value from
BlockAdditionalMapping-->
<BlockAdditional>01:00:00:00</BlockAdditional>
</BlockMore>
</BlockAdditions>
</BlockGroup>
</Cluster>
</Segment>
Block Additional Mappings detail how additional data MAY be stored in Block Additional Mappings detail how additional data MAY be stored in
the "BlockMore Element" with a "BlockAdditionMapping Element" within the "BlockMore Element" with a "BlockAdditionMapping Element" within
the "Track Element" which identifies the "BlockAdditional" content. the "Track Element" which identifies the "BlockAdditional" content.
Block Additional Mappings define the "BlockAddIDType" value reserved Block Additional Mappings define the "BlockAddIDType" value reserved
to identify that type of data as well as providing an optional label to identify that type of data as well as providing an optional label
stored within the "BlockAddIDName Element". When the Block stored within the "BlockAddIDName Element". When the Block
Additional Mapping is dependent on additional contextual information Additional Mapping is dependent on additional contextual information
then the Mapping SHOULD describe how such additional contextual then the Mapping SHOULD describe how such additional contextual
information is stored within the "BlockAddIDExtraData Element". information is stored within the "BlockAddIDExtraData Element".
The following Block Additional Mappings are defined. The following Block Additional Mappings are defined.
8.1. Summary of Assigned BlockAddIDType Values
For convenience, the following table shows the assigned
BlockAddIDType values along with the BlockAddIDName and Citation.
+----------------+------------------------+-------------+
| BlockAddIDType | BlockAddIDName | Citation |
+================+========================+=============+
| 121 | SMPTE ST 12-1 timecode | Section 8.2 |
+----------------+------------------------+-------------+
Table 4
8.2. SMPTE ST 12-1 Timecode
8.2.1. Timecode Description
SMPTE ST 12-1 timecode values can be stored in the "BlockMore
Element" to associate the content of a Matroska Block with a
particular timecode value. If the Block uses Lacing, the timecode
value is associated with the first frame of the Lace.
The Block Additional Mapping contains a full binary representation of
a 64 bit SMPTE timecode value stored in big endian format and
expressed exactly as defined in Section 8 and 9 of SMPTE 12M
[SMPTE-ST12]. For convenience, here are the bit assignments for a
SMPTE ST 12-1 binary representation as described in Section 6.2 of
[RFC5484]:
+---------------+------------------------+
| Bit Positions | Label |
+===============+========================+
| 0--3 | Units of frames |
+---------------+------------------------+
| 4--7 | First binary group |
+---------------+------------------------+
| 8--9 | Tens of frames |
+---------------+------------------------+
| 10 | Drop frame flag |
+---------------+------------------------+
| 11 | Color frame flag |
+---------------+------------------------+
| 12--15 | Second binary group |
+---------------+------------------------+
| 16--19 | Units of seconds |
+---------------+------------------------+
| 20--23 | Third binary group |
+---------------+------------------------+
| 24--26 | Tens of seconds |
+---------------+------------------------+
| 27 | Polarity correction |
+---------------+------------------------+
| 28--31 | Fourth binary group |
+---------------+------------------------+
| 32--35 | Units of minutes |
+---------------+------------------------+
| 36--39 | Fifth binary group |
+---------------+------------------------+
| 40--42 | Tens of minutes |
+---------------+------------------------+
| 43 | Binary group flag BGF0 |
+---------------+------------------------+
| 44--47 | Sixth binary group |
+---------------+------------------------+
| 48--51 | Units of hours |
+---------------+------------------------+
| 52--55 | Seventh binary group |
+---------------+------------------------+
| 56--57 | Tens of hours |
+---------------+------------------------+
| 58 | Binary group flag BGF1 |
+---------------+------------------------+
| 59 | Binary group flag BGF2 |
+---------------+------------------------+
| 60--63 | Eighth binary group |
+---------------+------------------------+
Table 5
For example, a timecode value of "07:32:54;18" can be expressed as a
64 bit SMPTE 12M value as:
10000000 01100000 01100000 01010000
00100000 00110000 01110000 00000000
8.2.2. BlockAddIDType
The BlockAddIDType value reserved for timecode is "121".
8.2.3. BlockAddIDName
The BlockAddIDName value reserved for timecode is "SMPTE ST 12-1
timecode".
8.2.4. BlockAddIDExtraData
BlockAddIDExtraData is unused within this block additional mapping.
9. Normative References 9. Normative References
[IEEE.754.1985]
Institute of Electrical and Electronics Engineers,
"Standard for Binary Floating-Point Arithmetic", August
1985.
[SMPTE-ST12]
Society of Motion Picture and Television Engineers, "SMPTE
ST 12-1:2014 Time and Control Code", February 2014,
<https://ieeexplore.ieee.org/servlet/
opac?punumber=7291027>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
<https://www.rfc-editor.org/info/rfc3339>. <https://www.rfc-editor.org/info/rfc3339>.
[RFC6648] Saint-Andre, P., Crocker, D., and M. Nottingham, [RFC6648] Saint-Andre, P., Crocker, D., and M. Nottingham,
"Deprecating the "X-" Prefix and Similar Constructs in "Deprecating the "X-" Prefix and Similar Constructs in
Application Protocols", BCP 178, RFC 6648, Application Protocols", BCP 178, RFC 6648,
DOI 10.17487/RFC6648, June 2012, DOI 10.17487/RFC6648, June 2012,
<https://www.rfc-editor.org/info/rfc6648>. <https://www.rfc-editor.org/info/rfc6648>.
[RFC6386] Bankoski, J., Koleszar, J., Quillio, L., Salonen, J., [RFC6386] Bankoski, J., Koleszar, J., Quillio, L., Salonen, J.,
Wilkins, P., and Y. Xu, "VP8 Data Format and Decoding Wilkins, P., and Y. Xu, "VP8 Data Format and Decoding
Guide", RFC 6386, DOI 10.17487/RFC6386, November 2011, Guide", RFC 6386, DOI 10.17487/RFC6386, November 2011,
<https://www.rfc-editor.org/info/rfc6386>. <https://www.rfc-editor.org/info/rfc6386>.
[IEEE.754.1985] 10. Informative References
Institute of Electrical and Electronics Engineers,
"Standard for Binary Floating-Point Arithmetic", August
1985.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC5484] Singer, D., "Associating Time-Codes with RTP Streams",
Requirement Levels", BCP 14, RFC 2119, RFC 5484, DOI 10.17487/RFC5484, March 2009,
DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc5484>.
<https://www.rfc-editor.org/info/rfc2119>.
Authors' Addresses Authors' Addresses
Steve Lhomme Steve Lhomme
Email: slhomme@matroska.org Email: slhomme@matroska.org
Moritz Bunkus Moritz Bunkus
Email: moritz@bunkus.org Email: moritz@bunkus.org
Dave Rice Dave Rice
 End of changes. 38 change blocks. 
65 lines changed or deleted 223 lines changed or added

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