ISO/IEC 23008-3:XXXX/DAM 1:2026(en)
ISO/IEC JTC1/SC 29/WG 6
Secretariat: JISC
Date: 2025-11-21
Information technology — High efficiency coding and media delivery in heterogeneous environments — Part 3: 3D audio
Amendment 1: Media authenticity
© ISO/IEC 2026
All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
Foreword
ISO (the International Organization for Standardization) is a worldwide federation of national standards bodies (ISO member bodies). The work of preparing International Standards is normally carried out through ISO technical committees. Each member body interested in a subject for which a technical committee has been established has the right to be represented on that committee. International organizations, governmental and non-governmental, in liaison with ISO, also take part in the work. ISO collaborates closely with the International Electrotechnical Commission (IEC) on all matters of electrotechnical standardization.
The procedures used to develop this document and those intended for its further maintenance are described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for the different types of ISO documents should be noted. This document was drafted in accordance with the editorial rules of the ISO/IEC Directives, Part 2 (see www.iso.org/directives).
ISO draws attention to the possibility that the implementation of this document may involve the use of (a) patent(s). ISO takes no position concerning the evidence, validity or applicability of any claimed patent rights in respect thereof. As of the date of publication of this document, ISO [had/had not] received notice of (a) patent(s) which may be required to implement this document. However, implementers are cautioned that this may not represent the latest information, which may be obtained from the patent database available at www.iso.org/patents. ISO shall not be held responsible for identifying any or all such patent rights.
Any trade name used in this document is information given for the convenience of users and does not constitute an endorsement.
For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and expressions related to conformity assessment, as well as information about ISO's adherence to the World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see www.iso.org/iso/foreword.html.
This document was prepared by Technical Committee [or Project Committee] ISO/TC [or ISO/PC] ###, [name of committee], Subcommittee SC ##, [name of subcommittee].
This second/third/… edition cancels and replaces the first/second/… edition (ISO #####:####), which has been technically revised.
The main changes are as follows:
— xxx xxxxxxx xxx xxxx
A list of all parts in the ISO ##### series can be found on the ISO website.
Any feedback or questions on this document should be directed to the user’s national standards body. A complete listing of these bodies can be found at www.iso.org/members.html.
Information technology — High efficiency coding and media delivery in heterogeneous environments — Part 3: 3D audio
Amendment 1: Media authenticity
Add the following at the end of Section 2:
IETF RFC 3986, Uniform Resource Identifier (URI): Generic Syntax
Replace Table 223 with the following:
Syntax | No. of bits | Mnemonic |
|---|---|---|
MHASPacketPayload(MHASPacketType) | ||
{ | ||
switch (MHASPacketType) { | ||
case PACTYP_SYNC: | ||
0xA5; /* syncword*/ | 8 | uimsbf |
break; | ||
case PACTYP_MPEGH3DACFG: | ||
mpegh3daConfig(); | ||
break; | ||
case PACTYP_MPEGH3DAFRAME: | ||
mpegh3daFrame(); | ||
break; | ||
case PACTYP_AUDIOSCENEINFO: | ||
mae_AudioSceneInfo(); | ||
break; | ||
case PACTYP_FILLDATA: | ||
for (i=0; i< MHASPacketLength; i++) { | ||
mhas_fill_data_byte(i); | 8 | bslbf |
} | ||
break; | ||
case PACTYP_SYNCGAP: | ||
syncSpacingLength = escapedValue(16,24,24); | 16,40,64 | uimsbf |
break; | ||
case PACTYP_MARKER: | ||
for (i=0; i< MHASPacketLength; i++) { | ||
marker_byte(i); | 8 | bslbf |
} | ||
break; | ||
case PACTYP_CRC16: | ||
mhasParity16Data; | 16 | bslbf |
break; | ||
case PACTYP_CRC32: | ||
mhasParity32Data; | 32 | bslbf |
break; | ||
case PACTYP_GLOBAL_CRC16: | ||
global_CRC_type; | 2 | bslbf |
numProtectedPackets; | 6 | bslbf |
mhasParity16Data; | 16 | bslbf |
break; | ||
case PACTYP_ GLOBAL_CRC32: | ||
global_CRC_type; | 2 | bslbf |
numProtectedPackets; | 6 | bslbf |
mhasParity32Data; | 32 | bslbf |
break; | ||
case PACTYP_DESCRIPTOR: | ||
for (i=0; i< MHASPacketLength; i++) { | ||
mhas_descriptor_data_byte(i); | 8 | bslbf |
} | ||
break; | ||
case PACTYP_USERINTERACTION: | ||
mpegh3daElementInteraction(); | ||
break; | ||
case PACTYP_LOUDNESS_DRC: | ||
mpegh3daLoudnessDrcInterface(); | ||
break; | ||
case PACTYP_BUFFERINFO: | ||
mhas_buffer_fullness_present | 1 | uimsbf |
if (mhas_buffer_fullness_present) | ||
mhas_buffer_fullness = escapedValue(15,24,32); | 15,39,71 | uimsbf |
} | ||
break; | ||
case PACTYP_AUDIOTRUNCATION: | ||
audioTruncationInfo(); | ||
break; | ||
case PACTYP_GENDATA: | ||
GenDataPayload(); | ||
break; | ||
case PACTYP_EARCON: | ||
earconInfo(); | ||
break; | ||
case PACTYP_PCMCONFIG: | ||
pcmDataConfig(); | ||
break; | ||
case PACTYP_PCMDATA: | ||
pcmDataPayload(); | ||
break; | ||
case PACTYP_LOUDNESS: | ||
mpegh3daLoudnessInfoSet(); | ||
break; | ||
case PACTYP_AUTH_START: | ||
mpegh3daAuthStart(); | ||
break; | ||
case PACTYP_AUTH_SIG: | ||
mpegh3daAuthSig(); | ||
break; | ||
case PACTYP_UUID: | ||
authUUID(); | ||
break; | ||
case PACTYP_TIMESTAMP: | ||
authTimestamp(); | ||
break; | ||
} | ||
ByteAlign(); | ||
} |
Replace Table 226 with the following:
Table 1 — MHASPacketType | Table 2 — Value |
PACTYP_FILLDATA | 0 |
PACTYP_MPEGH3DACFG | 1 |
PACTYP_MPEGH3DAFRAME | 2 |
PACTYP_AUDIOSCENEINFO | 3 |
/* reserved for ISO use */ | 4-5 |
PACTYP_SYNC | 6 |
PACTYP_SYNCGAP | 7 |
PACTYP_MARKER | 8 |
PACTYP_CRC16 | 9 |
PACTYP_CRC32 | 10 |
PACTYP_DESCRIPTOR | 11 |
PACTYP_USERINTERACTION | 12 |
PACTYP_LOUDNESS_DRC | 13 |
PACTYP_BUFFERINFO | 14 |
PACTYP_GLOBAL_CRC16 | 15 |
PACTYP_GLOBAL_CRC32 | 16 |
PACTYP_AUDIOTRUNCATION | 17 |
PACTYP_GENDATA | 18 |
PACTYP_EARCON | 19 |
PACTYP_PCMCONFIG | 20 |
PACTYP_PCMDATA | 21 |
PACTYP_LOUDNESS | 22 |
PACTYP_AUTH_START | 23 |
PACTYP_AUTH_SIG | 24 |
PACTYP_UUID | 25 |
PACTYP_TIMESTAMP | 26 |
/* reserved for ISO use */ | 27-127 |
/* reserved for use outside of ISO scope */ | 128-261 |
/* reserved for ISO use */ | 262-389 |
/* reserved for use outside of ISO scope */ | 390-517 |
Application-specific MHASPacketType values are mandated to be in the space reserved for use outside of ISO scope. These shall be skipped by a decoder as a minimum of structure is required by the decoder to skip these extensions. | |
After 14.4.18, add the following:
14.4.19 PACTYP_AUTH_START
The MHASPacketType PACTYP_AUTH_START shall be used embed information for media authentication into the bitstream.
For this packet type, MHASPacketLabel has the same value as the related packets to which this authentication information refers to.
14.4.20 PACTYP_AUTH_SIG
The MHASPacketType PACTYP_AUTH_SIG shall be used embed information for media authentication into the bitstream.
For this packet type, MHASPacketLabel has the same value as the related packets to which this authentication information refers to.
14.4.21 PACTYP_AUTH_UUID
The MHASPacketType PACTYP_UUID shall be used embed UUID information into the bitstream, for instance in support of media authentication.
For this packet type, MHASPacketLabel has the same value as the related packets to which this UUID refers to.
14.4.22 PACTYP_TIMESTAMP
The MHASPacketType PACTYP_TIMESTAMP shall be used embed timestamp information into the bitstream, for instance in support of media authentication.
For this packet type, MHASPacketLabel has the same value as the related packets to which this timestamp information refers to.
Replace Table 229 with the following:
MHASPacketType | Value | Value of MHASPacketLabel | ||
|---|---|---|---|---|
0 | 0x01 – 0x10 (main stream) | 0x11 and larger | ||
PACTYP_FILLDATA | 0 | required | not allowed | not allowed |
PACTYP_MPEGH3DACFG | 1 | not allowed | no restriction | no restriction |
PACTYP_MPEGH3DAFRAME | 2 | not allowed | no restriction | no restriction |
PACTYP_AUDIOSCENEINFO | 3 | not allowed | no restriction | no restriction |
/* reserved for ISO use */ | 4-5 | — | — | — |
PACTYP_SYNC | 6 | required | not allowed | not allowed |
PACTYP_SYNCGAP | 7 | required | not allowed | not allowed |
PACTYP_MARKER | 8 | no restriction | no restriction | no restriction |
PACTYP_CRC16 | 9 | shall be identical to MHASPacketLabel of MHAS packet immediately following the present MHAS packet | ||
PACTYP_CRC32 | 10 | |||
PACTYP_DESCRIPTOR | 11 | required | not allowed | not allowed |
PACTYP_USERINTERACTION | 12 | not allowed | required | not allowed |
PACTYP_LOUDNESS_DRC | 13 | not allowed | required | not allowed |
PACTYP_BUFFERINFO | 14 | no restriction | no restriction | no restriction |
PACTYP_GLOBAL_CRC16 | 15 | required | not allowed | not allowed |
PACTYP_GLOBAL_CRC32 | 16 | required | not allowed | not allowed |
PACTYP_AUDIOTRUNCATION | 17 | not allowed | no restriction | no restriction |
PACTYP_GENDATA | 18 | no restriction | no restriction | no restriction |
PACTYP_ EARCON | 19 | shall be identical to MHASPacketLabel of MHAS packets containing the audio addressed by the earcon | ||
PACTYP_ PCMCONFIG | 20 | not allowed | not allowed | > 2048 |
PACTYP_ PCMDATA | 21 | not allowed | not allowed | > 2048 |
PACTYP_ LOUDNESS | 22 | not allowed | no restriction | no restriction |
PACTYP_ AUTH_START | 23 | no restriction | no restriction | no restriction |
PACTYP_ AUTH_SIG | 24 | no restriction | no restriction | no restriction |
PACTYP_ UUID | 25 | no restriction | no restriction | no restriction |
PACTYP_ TIMESTAMP | 26 | no restriction | no restriction | no restriction |
/* reserved for ISO use */ | 27-127 | — | — | — |
/* reserved for use outside of ISO scope */ | 128-261 | — | — | — |
/* reserved for ISO use */ | 262-389 | — | — | — |
/* reserved for use outside of ISO scope */ | 390-517 | — | — | — |
Key: —: undefined required: MHASPacketLabel shall have (one of) the value(s) listed in the title row of this column if packet is present no restriction: MHASPacketLabel may have (one of) the value(s) listed in the title row of this column if packet is present not allowed: MHASPacketLabel shall not have (any of) the value(s) listed in the title row of this column | ||||
After 14.7, add:
14.8 Media Authentication
The media authentication data is encapsulated in multiple MHAS Packets as part of a MHAS audio data stream.
14.8.1 Syntax
For the MHAS packet with MHASPacketType of PACTYP_AUTH_START, mpegh3daAuthStart() is defined as shown in Table 1.
For the MHAS packet with MHASPacketType of PACTYP_AUTH_SIG, mpegh3daAuthSig() is defined as shown in Table 2.
For the MHAS packet with MHASPacketType of PACTYP_UUID, authUUID() is defined as shown in Table 3.
For the MHAS packet with MHASPacketType of PACTYP_TIMESTAMP, authTimestamp() is defined as shown in Table 4.
Table 1 — Syntax of mpegh3daAuthStart
Syntax | No. of bits | Mnemonic |
mpegh3daAuthStart() | ||
{ | ||
authID | 8 | uimsbf |
authSequence | 1 | uimsbf |
authHashType = escapedValue(4,8,8); | 4, 12, 20 | uimsbf |
authKeyID = escapedValue(3,8,8); | 3, 11, 19 | uimsbf |
authProvID = escapedValue(8,8,16); | 8, 16, 32 | uimsbf |
if (authProvID == 0x00) { | ||
authSourceURILengthMinus1 = escapedValue(8,8,8); | 8, 16, 24 | uimsbf |
for (i=0; i<= authSourceURILengthMinus1; i++) { | ||
authSourceURI[i] | 8 | bslbf |
} | ||
} | ||
isAuthCRC | 1 | uimsbf |
authFrameTypes | 1 | uimsbf |
if (authFrameTypes){ | ||
authPactypInclusion | 1 | uimsbf |
authPactypListLengthMinus1 | 6 | uimsbf |
for (i=0; i <= authPactypListLengthMinus1; i++) { | ||
authPacketType[i] = escapedValue(8,8,8); | 8, 16, 24 | uimsbf |
} | ||
} | ||
authMultiStreams | 1 | uimsbf |
if (authMultiStreams) { | ||
authMSInclusion | 1 | uimsbf |
authMSLabelsListLengthMinus1 | 6 | uimsbf |
for(i=0; i <= authMSLabelsListLengthMinus1; i++) { | ||
authPacketLabel[i] | 8, 16, 48 | uimsbf |
= escapedValue(8,8,32); | ||
} | ||
} | ||
} |
Table 2 — Syntax of mpegh3daAuthSig
Syntax | No. of bits | Mnemonic |
mpegh3daAuthSig() | ||
{ | ||
authID | 8 | uimsbf |
authSequence | 1 | uimsbf |
authPartialSig | 1 | uimsbf |
authABREnable | 2 | uimsbf |
numSig = 1; | ||
if (authABREnable) { | ||
authABRBitrateAtMinMax | 2 | uimsbf |
if (authABREnable==1) { | ||
if(authABRBitrateAtMinMax==1) { | ||
numSig = 2; | ||
} else { | ||
numSig = 3; | ||
} | ||
} | ||
if (authABREnable==2) { | ||
if(authABRBitrateAtMinMax==1) { | ||
numSig = 3; | ||
} else if(authABRBitrateAtMinMax==2) { | ||
numSig = 4; | ||
} else { | ||
numSig = 5; | ||
} | ||
} | ||
} | ||
for (n=0; n<numSig; n++) { | ||
if (authPartialSig){ | ||
sigSegmentStart | 1 | uimsbf |
sigSegmentStop | 1 | uimsbf |
sigSegmentLengthMinus1 | 4 | uimsbf |
sigPartial | (sigSegmentLengthMinus1+1)*8 | uimsbf |
} else { | ||
sigLengthMinus1 | 6 | uimsbf |
sigComplete | (sigLengthMinus1+1)*8 | uimsbf |
} | ||
} | ||
} |
Table 3 — Syntax of authUUID
Syntax | No. of bits | Mnemonic |
authUUID() | ||
{ | ||
uuidSegmentStart | 1 | uimsbf |
uuidSegmentStop | 1 | uimsbf |
uuidSegmentLengthMinus1 | 4 | uimsbf |
uuid | (uuidSegmentLengthMinus1+1)*8 | uimsbf |
} |
Table 4 — Syntax of authTimestamp
Syntax | No. of bits | Mnemonic |
authTimestamp() | ||
{ | ||
authID | 8 | uimsbf |
authTimeType | 7 | uimsbf |
authTimeOffsetType | 1 | uimsbf |
switch (authTimeType ) { | ||
case authTimeLong: | ||
authTime = escapedValue(12,16,32); | 12, 28, 60 | uimsbf |
authTimeOffset | 12 | uimsbf |
break; | ||
case authTimeShort: | ||
authTimeS = escapedValue(4,8,8); | 4, 12, 20 | uimsbf |
authTimeOffsetS = escapedValue(4,8,8); | 4, 12, 20 | uimsbf |
break; | ||
case authTimeTAI: { /* acc. ISO/IEC 23001-17 */ | ||
TAI_timestamp; | 64 | uimsbf |
status_bits; | 8 | uimsbf |
break; | ||
default: | ||
break; | ||
} | ||
} |
14.8.2 Semantics
authID | Shall be used to identify the combination of authHashType, authProvID and authKeyID to which the related authentication information belongs to. This may be used to enable authentication of one authentication sequence with different authentication configurations. |
authSequence | Indicates the authentication sequence to which the related authentication information belongs to. |
authHashType | Indicates the hashing algorithm used according to Table XYZ. |
Table XYZ — Value and meaning of authHashType
authHashType Value | Hashing algorithm |
0 | SHA-1 |
1 | SHA-224 |
2 | SHA-256 |
3 | SHA-384 |
4 | SHA-512 |
All other values | /* reserved for ISO use */ |
authProvID | Identifies the provider of the authentication system according to Table XYZ. In case authProvID equals to 1, there is no provider. This mode can be used to create a message digest only by using the method identified by authHashType. |
Table XYZ — Value and meaning of authProvID
authProvID Value | Authentication Provider URI |
0 | See authSourceURI. |
1 | Message Digest only |
2-… | /* Registration Authority */ |
authKeyID | Identifies the authentication key used to calculate the value of the signature in mpegh3daAuthSig() according to Table XYZ. The values of authKeyID are dependent on the authentication provider and are not defined in the present document. This value shall be set to 0 in case there is no key needed for the underlying hashing function. |
Table XYZ — Value and meaning of authKeyID
authKeyID Value | Key |
0 | No key |
All values | /* Authentication Provider key ID */ |
authSourceURILengthMinus1 | Plus 1 indicates the length of the authSourceURI-field in bytes. |
authSourceURI | Contains a URI with syntax and semantics as defined in as defined in IETF RFC 3986. |
isAuthCRC | Indicates if an CRC-based authentication method is used. If set to 1, the used verification mechanism shall generate the signature (sigPartial or sigComplete) utilizing the data resulting from calculating a CRC as defined in 1.8.4.5 (CRC16) of ISO/IEC 14496-3, using the syntax elements according to 17.12.4 as input. |
|
|
authFrameTypes | Indicates if authentication information for additional MHAS packet types is signalled. |
authPactypInclusion | If set to 1, all packet types signalled in authPacketType shall be included into the calculation of the authentication information, according to 17.12.4. If set to 0, all packet types signalled in authPacketType shall be excluded from the calculation of the authentication information, according to 17.12.4. |
authPactypListLengthMinus1 | Plus 1 indicates the length of the list of authPacketType. |
authPacketType | Indicates the MHAS packet type to be included or excluded for the calculation of the authentication information. |
authMultiStreams | Indicates if authentication information for multi-stream scenarios is signalled. |
authMSInclusion | If set to 1, all packets with the labels signalled in authPacketLabel shall be included into the calculation of the authentication information, according to according to 17.12.4. If set to 0, all packet types signalled in authPacketLabel shall be excluded from the calculation of the authentication information, according to according to 17.12.4. |
authMSLabelsListLengthMinus1 | Plus 1 indicates the length of the list of authPacketLabel. |
authPacketLabel | Indicates the MHASPacketLabel to be included or excluded for the calculation of the authentication information. If authMSInclusion is equal to ‘1’, the value of authPacketLabel indicates that the sub-stream with this packet label shall be included in the calculation of the authentication information, according to 17.12.4. If authMSInclusion is equal to ‘0’, the value of authPacketLabel indicates that the sub-stream with this packet label shall be excluded from the calculation of the authentication information, according to according to 17.12.4. |
authPartialSig | If set to ‘1’, indicates that the signature is transmitted partially. |
authABREnable | Indicates the type of the adaptive bitrate (ABR) scheme and the respective number of signature values according to Table XYZ. In the case that authABREnable equals 1 (upDownABR), the order of encapsulation is as follows: signatures for the streams at the current bitrate, the bitrate one above, the bitrate one below. In the case that authABREnable equals 2 (upDownMinMaxABR), the order of encapsulation is as follows: signatures for the streams at the current bitrate, the bitrate one above, the bitrate one below, the maximum bitrate, the minimum bitrate. |
Table XYZ — Value and meaning of authABREnable
authABREnable Value | ABR Scheme |
0 | noABR |
1 | upDownABR |
2 | upDownMinMaxABR |
3 | /* reserved */ |
authABRBitrateAtMinMax | Indicates whether the current bitrate fulfils one of the conditions according to Table XYZ, that are related to the minimum and maximum bitrates in the adaptation set. In either case, the number of signature values is reduced. |
Table XYZ — Value and meaning of authABRBitrateMinMax
authABRBitrateMinMax Value | ABR Bitrate Status |
0 | Default value |
1 | The current bitrate is equal to the maximum or minimum bitrate in the adaptation set |
2 | The current bitrate is one level below the maximum or one level above the minimum bitrate in the adaptation set |
3 | /* reserved */ |
sigSegmentStart | Indicates that the following sigPartial is the first segment of a signature. |
sigSegmentStop | Indicates that the following sigPartial is the last segment of a signature. NOTE: If both sigSegmentStartand and sigSegmentStop are equal to ‘1’, sigPartial contains a signature which is complete, but shorter than a full signature resulting from the related hashing algorithm. |
sigSegmentLengthMinus1 | Plus 1 indicates the length of the sigPartial field. |
sigPartial | This field carries a segment of the signature resulting from the used verification mechanism. sigPartial shall be calculated in the same way as sigComplete. sigPartial may be created by truncating sigComplete. Note: Verification may happen comparing only a subset of the bits resulting from the hashing algorithm. |
sigLengthMinus1 | Plus 1 indicates the length of the sigComplete field in bytes. |
sigComplete | This field carries the signature resulting from the used verification mechanism. sigComplete shall be calculated by applying the hashing algorithm and configuration as signalled in the mpegh3daAuthStart() syntax element. The input data to the hashing algorithm shall be created in alignment with 17.12.4. Note: Verification may happen comparing only a subset of the bits resulting from the hashing algorithm. |
uuidSegmentStart | If set to ‘1’, indicates if the bytes in the uuid field are the first bytes of a UUID-segment. |
uuidSegmentStop | If set to ‘1’, indicates if the bytes in the uuid field are the last bytes of a UUID-segment. Note: If both uuidSegmentStart and uuidSegmentStop are set to ‘1’ the uuid field contains the full UUID. |
uuidSegmentLengthMinus1 | Plus 1 indicates the length of the uuid-field in bytes. |
uuid | This field contains the UUID of the related (sub-)stream of MHAS packets. It may be used to map the MHAS stream to other media types, such as a related video stream. |
authTimeType | Indicates the type of the time-signalling according to Table XYZ. |
Table XYZ — Value and meaning of authTimeType
authTimeType Value | Timing Scheme |
0 | authTimeLong |
1 | authTimeShort |
2 | authTimeTAI |
3-127 | /* reserved */ |
authTimeOffestType | Indicates the unit of authTimeOffset value. This shall be set to ‘0’ if the unit is milliseconds, and shall be set to ‘1’ for using the sampling rate configured for the underlying signal type as base time. |
authTime | Indicates the base time. This is counted in seconds and the count starts on January 1st, 2025 at 00.00.01 UTC. |
authTimeOffset | Indicates the time offset compared to the value indicated in authTime. The time shall be set in a way that authTime + authTimeOffset indicates the time when the first sample of following related mpegh3daFrame() has been recorded. |
authTimeS | Indicates the base time elapsed in seconds since the last time update of type ‘authTimeLong’. |
authTimeOffsetS | Indicates the time offset compared to the value indicated in authTimeS. The time shall be set in a way that authTime + authTimeOffset + authTimeS + authTimeOffsetS indicates the time when the first sample of following related mpegh3daFrame() has been recorded. |
TAI_timestamp | Indicates the TAI_timestamp according to ISO/IEC 23001-17. |
status_bits | Indicates the bits synchronization_state, timestamp_generation_failure, timestamp_is_modified and reserved according to ISO/IEC 23001-17. |
After 17.11, add the following:
17.12 Interface for media authentication data
17.12.1 General
For applications which require media authentication, related data for verification of the authenticity of a bitstream and mapping to other media types shall be provided to the system by using the syntax element mpegh3da_GetAuthData().
17.12.2 Syntax
Table 5 — Syntax of mpegh3da_GetAuthData
Syntax | No. of bits | Mnemonic |
mpegh3da_GetAuthData() |
|
|
{ |
|
|
mpegh3daAuthStart() |
|
|
mpegh3daAuthSig() |
|
|
authUUID() |
|
|
authTimestamp() |
|
|
gad_bytesLengthMinus1 | 64 | uimsbf |
gad_bytes | (gad_bytesLengthMinus1+1)*8 | uimsbf |
} |
|
|
17.12.3 Semantics
gad_bytesLengthMinus1 | Plus 1 indicates the length of the gad_bytes field. |
gad_bytes | Includes all bytes relevant for the creation of the authentication information according to the configuration described in mpegh3daAuthStart(). |
17.12.4 Processing
17.12.4.1 General
The MPEG-H 3D audio decoder shall extract the MHAS packets related to media authentication for every authentication sequence as indicated by authID and authSequence, and populate the respective fields in mpegh3da_GetAuthData().
mpegh3daAuthStart() and mpegh3daAuthSig(),for the related authentication sequence (as indicated by the respective authID and authSequence) shall be copied from the respective bitstream elements. authTimestamp() having the same authID as the current authentication sequence and authUUID() syntax elements shall always be copied from the latest occurrences in bitstream. The gad_bytes field shall be populated by concatenating all bytes of all packets starting from the packet with MHASPacketType equal to ‘PACTYP_ AUTH_START’ for the related authentication sequence and having the same MHASPacketLabel up until but excludingthe packet with MHASPacketType equal to ‘PACTYP_AUTH_SIG’ in which either sigSegmentStop equals ‘1’ or authPartialSig equals ‘0’, unless the MHASPacketType of the related packet is excluded by default or signalled to be excluded (see 17.12.4.2 for additional information). Packets with MHASPacketType equal to ‘PACTYP_AUTH_SIG’ belonging to the respective authentication sequence shall not be populated into gad_bytes. Packets with MHASPacketType equal to ‘PACTYP_ AUTH_START’ or ‘PACTYP_AUTH_SIG’ with the same authID value as the current authentication sequence and a different authSequence value shall be populated into gad_bytes. Packets with MHASPacketType equal to ‘PACTYP_ AUTH_START’ or ‘PACTYP_AUTH_SIG’ with a different authID value than the current authentication sequence shall not be populated into gad_bytes.In addition to the above, packets with the following packet types shall be excluded by default and not be populated into gad_bytes:
| — | PACTYP_SYNCGAP |
| — | PACTYP_MARKER |
| — | PACTYP_CRC16 |
| — | PACTYP_CRC32 |
| — | PACTYP_GLOBAL_CRC16 |
| — | PACTYP_GLOBAL_CRC32 |
| — | PACTYP_USERINTERACTION |
| — | PACTYP_AUDIOTRUNCATION |
| — | PACTYP_GENDATA |
| — | PACTYP_EARCON |
| — | PACTYP_PCMCONFIG |
| — | PACTYP_PCMDATA |
If the related packet with the MHASPacketType equal to ‘PACTYP_AUTH_START’ contains a MHASPacketLabel equal to ‘0’, all bytes of all packets shall be concatenated as described above, independent of their MHASPacketLabel (all sub streams).
The input data for the hashing algorithm shall be created by concatenating gad_bytes with the bytes contained in the uuid field, if existing.
17.12.4.2 Inclusion and exclusion
Per default, all bytes of all packets other than the packets carrying a MHASPacketType which is listed to be excluded by default shall be concatenated for populating the gad_bytes field. In addition, all bytes of all packets having a MHASPacketType listed in the authPacketType field shall be included, if authPactypInclusion is equal to ‘1’. If authPactypInclusion is equal to ‘0’, all bytes of all packets having a MHASPacketType listed in the authPacketType field shall be excluded (in addition to the packets which are excluded by default).
In addition to the bytes of all packets belonging to the same sub stream as indicated by the MHASPacketLabel field (or all sub streams in case MHASPacketLabel is equal to ‘0’), all bytes of all relevant packets for each sub streams as indicated in the authPacketLabel field shall be included, if authMSInclusion is equal to ‘1’. If authMSInclusion is equal to ‘0’, all bytes of all relevant packets for each sub streams having a MHASPacketLabel listed in the authPacketLabel field shall be excluded.
Add the following paragraph to the end of the clause 20.1:
If a SwitchingGroupBox as defined in ISO/IEC 14496-12 is present, the values of the mae_groupIDs (defined in subclause 15) of the corresponding stream(s) shall be carried in the tag field of the SwitchingGroupBox as a whitespace separated list.
