1、 Copyright 2016 by THE SOCIETY OF MOTION PICTURE AND TELEVISION ENGINEERS 3 Barker Avenue, White Plains, NY 10601 (914) 761-1100 Approved August 23, 2016 The attached document is a Registered Disclosure Document prepared by the proponent identified below. It has been examined by the appropriate SMPT
2、E Technology Committee and is believed to contain adequate information to satisfy the objectives defined in the Scope, and to be technically consistent. This document is NOT a Standard, Recommended Practice or Engineering Guideline, and does NOT imply a finding or representation of the Society. Ever
3、y attempt has been made to ensure that the information contained in this document is accurate. Errors in this document should be reported to the proponent identified below, with a copy to engsmpte.org. All other inquiries in respect of this document, including inquiries as to intellectual property r
4、equirements that may be attached to use of the disclosed technology, should be addressed to the proponent identified below. Proponent contact information: Scott Smyers DTS, Inc. 130 Knowles Drive, Suite B Los Gatos, CA 95032 Email: Page 1 of 32 pages SMPTE REGISTERED DISCLOSURE DOCUMENT MDA Bitstre
5、am Specification SMPTE RDD 43:2016 SMPTE RDD 41:2016 Page 2 of 32 pages Table of Contents Page Conventions 4 Introduction (Informative) . 4 1 Scope . 6 2 Normative References 6 3 Structures 6 3.1 Bitstream .6 3.2 Frames .7 3.3 Slice 9 3.4 Entity 10 3.5 LFEFragment . 12 3.6 ObjectFragment 12 3.7 Grou
6、p 13 3.8 Switch . 14 3.9 NormalizedGroup . 15 4 Packets . 16 4.1 General . 16 4.2 FrameHeaderPacket . 16 4.3 AssetFramePacket 18 4.4 Frame End Packet . 19 4.5 Slice Header Packet 19 4.6 ObjectFragmentPacket . 20 4.7 LFEFragmentPacket 20 4.8 Group Start Packet . 20 4.9 Group End Packet . 21 4.10 Swit
7、chStartPacket . 21 4.11 SwitchEndPacket 21 4.12 EntityPacket 21 4.13 FragmentPacket . 22 4.14 MonoSourceFragmentPacket . 22 4.15 UnknownPacket . 22 5 Common Data Structures 23 5.1 PacketHeader . 23 5.2 ChannelGain . 23 5.3 RenderingException . 23 5.4 Label . 24 5.5 PackedLength . 25 5.6 Extension 25
8、 SMPTE RDD 41:2016 Page 3 of 32 pages 5.7 FixedArray 26 5.8 Position 26 5.9 ByteArray . 27 5.10 PackedUInt64 . 27 5.11 PackedUInt32 . 27 5.12 OptionalItem 27 5.13 UTF8String 27 6 Common Functions 28 6.1 RadiusQToF 28 6.2 RadiusFToQ 28 6.3 PhiQToF . 28 6.4 PhiFToQ . 28 6.5 ThetaQToF . 28 6.6 ThetaFTo
9、Q . 28 6.7 ApertureQToF 28 6.8 ApertureFToQ 28 6.9 DivergenceQToF 28 6.10 DivergenceFToQ 28 6.11 GainQToF . 28 6.12 GainFToQ . 28 6.13 ChannelGainQToF 29 6.14 ChannelGainFToQ 29 7 Constants . 29 7.1 Packet Kind Labels . 29 7.2 Bitstream Version 29 7.3 Normalized Group Label 29 8 Extensibility 29 9 A
10、uthoring Guidelines 30 10 Structure Specification Language . 30 10.1 Macro . 30 10.2 Structure . 30 10.3 Basic Type . 31 10.4 Type Aliasing . 31 10.5 Control Statements 31 10.6 Fields . 31 10.7 Variables 32 10.8 Constants 32 SMPTE RDD 41:2016 Page 4 of 32 pages Conventions All sections are normative
11、, unless otherwise indicated. Pseudo-code and property names use font style courier new. The expressions MAY, NEED NOT, SHALL, SHALL NOT, SHOULD, and SHOULD NOT indicate normative behavior as specified in ISO/EIC Directives, Part 2. Edition 6.0, 2011-04. VERBAL FORM SEMANTICS MAY It is allowed NEED
12、NOT It is not required that SHALL Is required that SHALL NOT Is required to be not SHOULD It is recommended that SHOULD NOT It is not recommended that Introduction (Informative) The Bitstream consists of an ordered sequence of Packets. As illustrated in Figure 1, each Packet consists of a payload pr
13、eceded by a Label field identifying the nature of the payload and a length field indicating the size of the payload. Packet are byte-aligned, but information within their payloads not necessarily so. Implementations can skip over Packets without knowledge of their payload, enabling straightforward e
14、xtensibility. Figure 1 Packet Packets are logically grouped into hierarchical structures. Specifically, as depicted in Figure 2, a Bitstream consists of a sequence of Frame structures, each containing the metadata and audio samples required to completely reproduce a Program for a specified interval
15、within its timeline. In particular, each Frame structure contains a complete copy of the Program header information, thereby allowing playback to start on any Frame structure boundary without requiring access to prior or future Frames. K indLengthP ayloadP acke tSMPTE RDD 41:2016 Page 5 of 32 pages
16、Figure 2 Mapping Program to Bitstream Frame Structures As illustrated in Figure 3, Frame structures are further segmented, with Program header information followed by Fragment structures, each containing Entity metadata for a specified time interval within the timeline of the Frame. The audio sample
17、s associated with the Frame are contained in a sequence of Asset Frame Packets. Figure 3 Frame Structure The Program object model makes extensive use of URI as unique identifiers. To reduce overhead, this specification defines mappings between common URI values and shorter Label values. F r ame F r
18、ame F r ame F r ameP rogram Entiti e s ( ti me li n e )P rogramHe ad e rFrameHeaderPacketAssetFramePacketAssetFramePacketSliceHeaderPacketFrameEndPacketUnknownPacketSliceHeaderPacketGroupStartPacketGroupEndPacketObjectFragmentObjectFragmentObjectFragmentObjectFragmentframesl ice sl iceSMPTE RDD 41:2
19、016 Page 6 of 32 pages 1 Scope This specification maps the MDA Program specified in the MDA Program Specification, including audio samples, to a single binary structure the Bitstream. The Bitstream is partitioned into Frames such that reproduction can start at any Frame boundary, without knowledge o
20、f earlier or future Frames. 2 Normative References MDA Program Specification 1.03 Internet Engineering Task Force (IETF) (January 2005). RFC 3986 Uniform Resource Identifier (URI): Generic Syntax ISO/EIC Directives, Part 2. Edition 6.0, 2011-04 Internet Engineering Task Force (IETF) (January 2003).
21、RFC 3629 UTF-8, A Transformation Format of ISO 10646 3 Structures The Bitstream syntax is expressed using the operation of a hypothetical parser using the structure specification language described in Section 10. For extensibility, the Bitstream syntax allows the presence of unknown Packets captured
22、 by fields of type UnknownPacket. Implementations MAY ignore these unknown Packets. 3.1 Bitstream A Bitstream consists of an ordered sequence of Frames, as specified in Table 1. Each Frame is an item of the fFrame collection. The number of Frames in an MDA Bitstream for a given MDA Program SHALL be
23、less than or equal to 264. Table 1 Bitstream Structure aligned struct Bitstream var long unsigned int i = 0; while(!eof) peek PacketHeader fUnknownHeader; / Frames if (fUnknownHeader.fKind = FrameHeaderPacket.fKind) Frame fFramei+; / Unknown packets SMPTE RDD 41:2016 Page 7 of 32 pages else UnknownP
24、acket fUnknownPacket; 3.2 Frames A Frame SHALL correspond to an interval within a Program timeline, with the Program uniquely identified by the fFrameHeaderPacket.fProgramURI field. The MDA:Program.header object is specified by the fFrameHeaderPacket field. The audio samples required for the reprodu
25、ction of the Frame MAY be contained in the fAssetFramePacket field. Figure 4 Frame and Slice Structure Intervals The Entity instances associated with the Frame are contained in the fSlice field. Each item of fSlice is a Slice corresponding to a time interval within the time interval of the Frame. Th
26、e absolute offset of the Frame timeline within the Program timeline is equal to the value of the fFrameHeaderPacket.fOffset field. The duration of the Frame shall be equal to the sum of the duration of the Slices. Constraints on Frame duration are not specified by this specification and left to appl
27、ications. P rogr am Ti mel i neSl i ce Sl i ce Sl i ceFram eSl i ce Du rat i on = f SliceHeaderPac ket.fD uratio n Fram e Du rat i on = S Sl i ce Du rat i on sSl i ce Off set = F ram e Off set + S Pr e ce ding Sli ce Du rat i on sFram e Off set = fFrame Header Packet .fOffs et SMPTE RDD 41:2016 Page
28、 8 of 32 pages Two successive Frames do not necessarily belong to the same Program, i.e. a Bitstream may hold multiple Programs. The total number of Slices in a Frame SHALL be in the range 0,232. The total number of Asset Frame Packets in Frame SHALL be in the range 0,232. Table 2 Frame Structure al
29、igned struct Frame / process Frame Header packet FrameHeaderPacket fFrameHeaderPacket; / process asset frame packets var unsigned int i = 0; while(!eof) peek PacketHeader fUnknownHeader; if (fUnknownHeader.fKind = AssetFramePacket.fKind) / Asset Packets AssetFramePacket fAssetFramePacketi+; else if
30、(fUnknownHeader.fKind = SliceHeaderPacket.fKind) / End of assets, start of slices break; else / Unknown packet UnknownPacket fUnknownPacket; /* process Slices */ var unsigned int j = 0; while(!eof) peek PacketHeader fUnknownHeader; / Slices if (fUnknownHeader.fKind = SliceHeaderPacket.fKind) SMPTE R
31、DD 41:2016 Page 9 of 32 pages Slice fSlicej+; / End of frame/Slices else if (fUnknownHeader.fKind = FrameEndPacket.fKind) break; / Unknown packet else UnknownPacket fUnknownPacket; 3.3 Slice The number of Entities in a Slice SHALL be less than or equal to 232. The offset and duration of each Entity
32、SHALL be equal to the offset and duration of the Slice, respectively. The duration of the Slice SHALL be equal to the fSliceHeaderPacket.fDuration field. The start offset of a Slice SHALL be equal to the offset of the Frame plus the sum of the durations of the Slices preceding it. Note: The Slice is
33、 bitstream-specific structure that does not have a corresponding concept in the MDA Program object model. Table 3 Slice Structure aligned struct Slice SliceHeaderPacket fSliceHeaderPacket; / process entities var unsigned int i = 0; while(! eof) peek PacketHeader fUnknownHeader; if (fUnknownHeader.fK
34、ind = SliceHeaderPacket.fKind) / SliceHeader, new Slice SMPTE RDD 41:2016 Page 10 of 32 pages break; else if (fUnknownHeader.fKind = FrameEndPacket.fKind) / FrameEnd break; else if (mIsEntityKind(fUnknownHeader.fKind) / Entity Entity fEntityi+; else / Unknown packet UnknownPacket fUnknownPacket; 3.4
35、 Entity The fields of the Entity structure are mapped to concrete derived classes of the MDA:Entity abstract class, as summarized in Table 4. Table 4 Entity Fields to MDA Object Classes Entity Field MDA Object Class Entity.fObjectFragment MDA:ObjectFragment Entity.fNormalizedGroup MDA:ObjectFragment
36、 Entity.fLFEFragment MDA:LFEFragment Entity.fGroup MDA:Group Entity.fSwitch MDA:Switch Table 5 defines a function that returns whether a Packet corresponds to an entity defined. Table 5 mIsEntityKind() Definition #define mIsEntityKind(pKind) ( pKind = ObjectFragmentPacket.fKind | pKind = LFEFragment
37、Packet.fKind | pKind = GroupStartPacket.fKind | pKind = SwitchStartPacket.fKind) SMPTE RDD 41:2016 Page 11 of 32 pages Table 6 Entity Structure aligned struct Entity peek PacketHeader fUnknownHeader; if (fUnknownHeader.fKind = ObjectFragmentPacket.fKind) / ObjectFragment ObjectFragment fObjectFragme
38、nt; else if (fUnknownHeader.fKind = LFEFragmentPacket.fKind) / LFEFragment LFEFragment fLFEFragment; else if (fUnknownHeader.fKind = GroupStartPacket.fKind) / Group peek GroupStartPacket fGroupStart; if (gGroupStart.fExtensions.fPresent) var uint32 i; for(i = 0; i fExtensions; / Frame parameters Pac
39、kedUInt64 fOffset; unsigned int(16) fDuration; OptionalItem fCRC; 4.2.1 fBitstreamVersion The fBitstreamVersion field SHALL be equal to kBitstreamVersion3 for a Bitstream conforming to this version of the MDA Bitstream Specification. 4.2.2 fProgramNamespace For this version of the Bitstream Specific
40、ation, the fProgramNamespace field SHALL be equal to as specified in MDA Program Specification. 4.2.3 fProgramURI The fProgramURI field SHALL be equal to MDA:Program.header.programURI. 4.2.4 fSampleRate The fSampleRate field SHALL be equal to MDA:Program.header.sampleRate. Implementations SHALL supp
41、ort the values and as defined in MDA Program Specification. 4.2.5 fExtensions Each item of fExtensions field SHALL correspond to an item of the MDA:Program.header.extensions collection. 4.2.6 fOffset The fOffset field SHALL be equal to the offset (in samples) of the first sample of the Frame within
42、the Program timeline. SMPTE RDD 41:2016 Page 18 of 32 pages 4.2.7 fDuration The fDuration field SHALL be equal to the duration of the time interval represented by the Frame, defined as the sum of all SliceHeaderPacket.fDuration values for the Slices within the Frame. 4.2.8 fCRC The fCRC field SHALL
43、be computed over all fields starting with fBitstreamVersion and ending with fDuration using the 16-bit CRC specified in Figure 5, with all bits initialized to 1. The generating polynomial is x16 + x12 + x5 + 1. Figure 5 CRC-16 Algorithm The fCRC field can be used by implementations to reliably locat
44、e the start of a Frame in a Bitstream. Figure 6 Relationship between Asset Frame Packets and Object Fragment Packets 4.3 AssetFramePacket Each AssetFramePacket contains a sequence of audio samples associated with the Frame. As illustrated in Figure 6, multiple Entities may reference audio samples wi
45、thin the same AssetFramePacket. Note: The AssetFramePacket is bitstream-specific structure that does not have a corresponding concept in the MDA Program object model. Asse tF r ameP ack et( fId = 2 )S l i ceAsse tF r ameP ack et ( fId = 1 )Obj e ctF r agme ntP acke t ( fId = 9 )Audio S am p l esS l
46、i ceObj e ct F r agme nt P acke t( fId = 9 )Audio S am p l esObj e ctF r agme ntP a c ke t ( fId = 3 2)fAsset URI = urn :x-mda:bitstr eam:afid:1fAsset Offset = 0fAsset URI = urn :x-mda:bitstr eam:afid:2fAsset Offset = 0fAsset URI = urn :x-mda:bitstr eam:afid:2fAsset FrameOffset = 60SMPTE RDD 41:2016
47、 Page 19 of 32 pages Table 16 Asset Frame Packet Structure aligned struct AssetFramePacket : PacketHeader fKind = ESASSETFRAME_LOCALLABEL; PackedUInt32 fId; Label fAssetEncoding; ByteArray fAssetBytes; 4.3.1 fId The fId field identifies the AssetFramePacket and shall be unique within the Frame. 4.3.
48、2 fAssetEncoding The fAssetEncoding field shall identify the format of data contained in the fAssetBytes field. Implementations SHALL support the format and listed in Table 17. Table 17 Audio Encoding Constant URI Definition PCM24BE /labels/essence-encoding/PCM24 Sequence of 24-bit PCM audio samples
49、, each packed in MSB order. PCM32BE /labels/essence-encoding/PCM32 Sequence of 32-bit PCM audio samples, each packed in MSB order. 4.3.3 fAssetBytes The fAssetBytes field SHALL contain a representation of the audio samples. A value of fAssetBytes.fCount equal to 0 shall be interpreted an all 0 (zero) array of audio samples with