diff --git a/src/MediaConchBundle/Lib/Checks/Checks.php b/src/MediaConchBundle/Lib/Checks/Checks.php
index c3c19e22..45b6638d 100644
--- a/src/MediaConchBundle/Lib/Checks/Checks.php
+++ b/src/MediaConchBundle/Lib/Checks/Checks.php
@@ -2238,7 +2238,7 @@ public function __construct($specId = null, $elementId = null, $fieldId = null,
[ 'General_compliance']
),
new Check(
- '(element name)
value (element value)
shall match the (target attribue name)
attribute of an (target element name)
element',
+ '(element name)
value (element value)
shall match the (target attribue name)
attribute of a(target element name)
element',
'Error',
[
new Reference(
@@ -2920,6 +2920,34 @@ public function __construct($specId = null, $elementId = null, $fieldId = null,
),
]
),
+ new Check(
+ '(element names)
elements are not all present (extra spec name if needed)
',
+ 'Error',
+ [
+ new Reference(
+ 'Dolby_Atmos_Master_ADM_Profile',
+ 'audioChannelFormat/audioBlockFormat',
+ null,
+ '"If any size sub-elements [width, depth, height] are present, then all three sub-elements must be present and set to the same value"',
+ 'Configure the encoder to write a same values, then reencode the content.'
+ ),
+ new Reference(
+ 'Dolby_Atmos_Master_ADM_Profile',
+ 'audioChannelFormat/audioBlockFormat',
+ 'width'
+ ),
+ new Reference(
+ 'Dolby_Atmos_Master_ADM_Profile',
+ 'audioChannelFormat/audioBlockFormat',
+ 'height'
+ ),
+ new Reference(
+ 'Dolby_Atmos_Master_ADM_Profile',
+ 'audioChannelFormat/audioBlockFormat',
+ 'depth'
+ ),
+ ]
+ ),
new Check(
'(element names)
element values are not same (extra spec name if needed)
',
'Error',
diff --git a/src/MediaConchBundle/Lib/Checks/Specs.php b/src/MediaConchBundle/Lib/Checks/Specs.php
index b9c57e50..0df6ac1d 100644
--- a/src/MediaConchBundle/Lib/Checks/Specs.php
+++ b/src/MediaConchBundle/Lib/Checks/Specs.php
@@ -544,34 +544,31 @@ public function __construct($description = null)
'',
[
'audioContentID' => new Field(
- '(Attribute) '
+ '(Attribute) ID of the content'
),
'audioContentName' => new Field(
- '(Attribute) '
+ '(Attribute) Name of the content'
),
'audioContentLanguage' => new Field(
- '(Attribute) '
+ '(Attribute) Language of the content'
),
'typeLabel' => new Field(
- '(Attribute) '
+ '(Attribute) (Only in buggy files)'
),
'audioContentLabel' => new Field(
- ''
+ 'Definition of an audioContent label'
),
'audioObjectIDRef' => new Field(
- ''
+ 'Reference to audioObject'
),
'loudnessMetadata' => new Field(
- ''
- ),
- 'loudnessMetadata_integratedLoudness' => new Field(
- ''
+ 'Loudness'
),
'dialogue' => new Field(
- ''
+ 'If the audio is not dialogue set a value of 0; if it contains only dialogue set a value of 1; if it contains both then set a value of 2.'
),
'alternativeValueSetIDRef' => new Field(
- ''
+ 'Reference to an alternativeValueSet within an audioObject'
),
]
),
@@ -579,70 +576,70 @@ public function __construct($description = null)
'',
[
'audioObjectID' => new Field(
- '(Attribute) '
+ '(Attribute) ID of the object'
),
'audioObjectName' => new Field(
- '(Attribute) '
+ '(Attribute) Name of the object'
),
'start' => new Field(
- '(Attribute) '
+ '(Attribute) Start time for the object, relative to the start of the audioProgramme'
),
'startTime' => new Field(
- '(Attribute) '
+ '(Attribute) (only in legacy files)'
),
'duration' => new Field(
- '(Attribute) '
+ '(Attribute) Duration of object'
),
'dialogue' => new Field(
- '(Attribute) '
+ '(Attribute) If the audio is not dialogue set a value of 0; if it contains only dialogue a value of 1; if it contains both then a value of 2.'
),
'importance' => new Field(
- '(Attribute) '
+ '(Attribute) Importance of an object'
),
'interact' => new Field(
- '(Attribute) '
+ '(Attribute) Set to 1 if a user can interact with the object, 0 if not'
),
'disableDucking' => new Field(
- '(Attribute) '
+ '(Attribute) Set to 1 to disallow automatic ducking of object, 0 to allow ducking'
),
'typeLabel' => new Field(
- '(Attribute) '
+ '(Attribute) (Only in buggy files)'
),
'audioPackFormatIDRef' => new Field(
- ''
+ 'Reference to an audioPackFormat for format description'
),
'audioObjectIDRef' => new Field(
- ''
+ 'Reference to another audioObject'
),
'audioObjectLabel' => new Field(
- ''
+ 'Definition of audioObject label'
),
'audioComplementaryObjectGroupLabel' => new Field(
- ''
+ 'Definition of a label for a group of complementary audioObjects'
),
'audioComplementaryObjectIDRef' => new Field(
- ''
+ 'Reference to another audioObject that is complementary to the object, e.g. to describe mutually exclusive languages'
),
'audioTrackUIDRef' => new Field(
- ''
+ 'Reference to an audioTrackUID'
),
'audioObjectInteraction' => new Field(
- ''
+ 'Specification of possible user interaction with the object'
),
'gain' => new Field(
- ''
+ 'Definition of a gain value to be applied to all audio samples referenced by the audioObject'
),
'headLocked' => new Field(
- ''
+ 'Indicates if the perceived location of the audio element is locked to the head or not locked'
),
'positionOffset' => new Field(
- ''
+ 'Apply an offset to all elements in the audioObjects'
),
'mute' => new Field(
- ''
+ 'Status of the audioObject to play back or not.'
),
'alternativeValueSet' => new Field(
- ''
+ 'An alternative set of parameters that will be used if the alternativeValueSetID is referenced by an audioProgramme or audioContent element'
),
]
),
@@ -650,55 +647,55 @@ public function __construct($description = null)
'',
[
'audioPackFormatID' => new Field(
- '(Attribute) '
+ '(Attribute) ID for the pack'
),
'audioPackFormatName' => new Field(
- '(Attribute) '
- ),
- 'typeDefinition' => new Field(
- '(Attribute) '
+ '(Attribute) Name for the pack'
),
'typeLabel' => new Field(
- '(Attribute) '
+ '(Attribute) Descriptor of the type of channel'
+ ),
+ 'typeDefinition' => new Field(
+ '(Attribute) Description of the type of channel'
),
'typeLink' => new Field(
- '(Attribute) '
+ '(Attribute) (Unused)'
),
'typeLanguage' => new Field(
- '(Attribute) '
+ '(Attribute) (Unused)'
),
'importance' => new Field(
- '(Attribute) '
+ '(Attribute) Importance of a pack'
),
'audioChannelFormatIDRef' => new Field(
- ''
+ 'Reference to an audioChannelFormat'
),
'audioPackFormatIDRef' => new Field(
- ''
+ 'Reference to an audioPackFormat'
),
'absoluteDistance' => new Field(
- ''
+ 'Absolute distance'
),
'encodePackFormatIDRef' => new Field(
- ''
+ '(Matrix) Reference to an encoding matrix audioPackFormat from a decoding matrix'
),
'decodePackFormatIDRef' => new Field(
- ''
+ '(Matrix) Reference to a decoding matrix audioPackFormat from an encoding matrix'
),
'inputPackFormatIDRef' => new Field(
- ''
+ '(Matrix) Reference to a channel-based (DirectSpeakers) input audioPackFormat'
),
'outputPackFormatIDRef' => new Field(
- ''
+ '(Matrix) Reference to a channel-based (DirectSpeakers) matrix decoded audioPackFormat'
),
'normalization' => new Field(
- ''
+ '(HOA) Indicates the normalization scheme of the HOA content (N3D, SN3D, FuMa)'
),
'nfcRefDist' => new Field(
- ''
+ '(HOA) Indicates the reference distance of the loudspeaker setup for near-field compensation (NFC)'
),
'screenRef' => new Field(
- ''
+ '(HOA) Indicates whether the content is screen-related or not'
),
]
),
@@ -706,28 +703,123 @@ public function __construct($description = null)
'',
[
'audioChannelFormatID' => new Field(
- '(Attribute) '
+ '(Attribute) ID of the channel'
),
'audioChannelFormatName' => new Field(
- '(Attribute) '
- ),
- 'typeDefinition' => new Field(
- '(Attribute) '
+ '(Attribute) Name of the channel'
),
'typeLabel' => new Field(
- '(Attribute) '
+ '(Attribute) Descriptor of the type of channel'
+ ),
+ 'typeDefinition' => new Field(
+ '(Attribute) Description of the type of channel'
),
'typeLink' => new Field(
- '(Attribute) '
+ '(Attribute) (Unused)'
),
'typeLanguage' => new Field(
+ '(Attribute) (Unused)'
+ ),
+ 'frequency' => new Field(
+ 'frequency'
+ ),
+ ]
+ ),
+ 'audioChannelFormat/audioBlockFormat' => new Element(
+ '',
+ [
+ 'audioBlockFormatID' => new Field(
+ '(Attribute) ID for block'
+ ),
+ 'rtime' => new Field(
+ '(Attribute) Start time of block'
+ ),
+ 'duration' => new Field(
+ '(Attribute) Duration of block'
+ ),
+ 'lstart' => new Field(
'(Attribute) '
),
- 'audioBlockFormat' => new Field(
- ''
+ 'lduration' => new Field(
+ '(Attribute) (S-ADM) Duration of block in the S-ADM metadata frame'
),
- 'frequency' => new Field(
- ''
+ 'initializeBlock' => new Field(
+ '(Attribute) (S-ADM) If the initializeBlock is set to ‘1’, it indicates the audioBlockFormat of ‘AB_xxxxyyyy_00000000’ is used to specify initial values of all elements for the first audio block in the frame'
+ ),
+ 'gain' => new Field(
+ 'Definition of a gain value to be applied to all audio samples corresponding to the audioBlockFormat'
+ ),
+ 'importance' => new Field(
+ 'Importance of the audioChannelFormat, defined for the duration of the current audioBlockFormat'
+ ),
+ 'headLocked' => new Field(
+ 'Indicates if the perceived location of the audio element is locked to the head or not locked'
+ ),
+ 'headphoneVirtualise' => new Field(
+ 'Specifies whether the object should be virtualised using a headphone virtualiser or not'
+ ),
+ 'speakerLabel' => new Field(
+ 'A reference to the label of the speaker position'
+ ),
+ 'position' => new Field(
+ 'Exact location of sound'
+ ),
+ 'outputChannelFormatIDRef' => new Field(
+ '(Matrix) For defining a decoding or direct matrix, this is the output audioChannelFormat that defines the channel being decoded to'
+ ),
+ 'outputChannelIDRef,' => new Field(
+ '(Only in legacy files)'
+ ),
+ 'jumpPosition' => new Field(
+ '(Matrix, Objects) If jumpPosition is set to 1 the position will change instantly from the previous block’s position. If set to 0 then interpolation of the position will take the entire length of the block'
+ ),
+ 'matrix' => new Field(
+ '(Matrix) Matrix'
+ ),
+ 'coefficient' => new Field(
+ '(Matrix) Multiplication factor of another channel'
+ ),
+ 'width' => new Field(
+ '(Objects) horizontal extent'
+ ),
+ 'depth' => new Field(
+ '(Objects) vertical extent'
+ ),
+ 'height' => new Field(
+ '(Objects) distance extent'
+ ),
+ 'cartesian' => new Field(
+ 'Specifies coordinate system'
+ ),
+ 'diffuse' => new Field(
+ 'Describes the diffuseness of an audioObject (if it is diffuse or direct sound)'
+ ),
+ 'channelLock' => new Field(
+ 'If set to 1 a renderer can lock the object to the nearest channel or speaker, rather than normal rendering'
+ ),
+ 'objectDivergence' => new Field(
+ 'Adjusts the balance between the object’s specified position and two other positions specified by the azimuthRange value'
+ ),
+ 'zoneExclusion' => new Field(
+ 'Indicates which speaker/room zones the object should not be rendered through'
+ ),
+ 'equation' => new Field(
+ '(HOA) An equation to describe the HOA component'
+ ),
+ 'order' => new Field(
+ '(HOA) Order of the HOA component'
+ ),
+ 'degree' => new Field(
+ '(HOA) Degree of the HOA component'
+ ),
+ 'normalization' => new Field(
+ '(HOA) Indicates the normalization scheme of the HOA component (N3D, SN3D, FuMa)'
+ ),
+ 'nfcRefDist' => new Field(
+ '(HOA) Indicates the reference distance of the loudspeaker setup for near-field compensation (NFC)'
+ ),
+ 'screenRef' => new Field(
+ '(Objects, HOA) Indicates whether the object is screen-related or not'
),
]
),
@@ -735,28 +827,28 @@ public function __construct($description = null)
'',
[
'UID' => new Field(
- '(Attribute) '
+ '(Attribute) The actual UID value'
),
'sampleRate' => new Field(
- '(Attribute) '
+ '(Attribute) Sample rate of track'
),
'bitDepth' => new Field(
- '(Attribute) '
+ '(Attribute) Bit-depth of track'
),
'typeLabel' => new Field(
- '(Attribute) '
+ '(Attribute) (Only in buggy files)'
),
'audioMXFLookUp' => new Field(
- ''
+ 'MXF sub-elements'
),
'audioTrackFormatIDRef' => new Field(
- ''
+ 'Reference to an audioTrackFormat description'
),
'audioChannelFormatIDRef' => new Field(
- ''
+ 'Reference to an audioChannelFormat description'
),
'audioPackFormatIDRef' => new Field(
- ''
+ 'Reference to an audioPackFormat description'
),
]
),
@@ -764,31 +856,31 @@ public function __construct($description = null)
'',
[
'audioTrackFormatID' => new Field(
- '(Attribute) '
+ '(Attribute) ID for track'
),
'audioTrackFormatName' => new Field(
- '(Attribute) '
+ '(Attribute) Name for track'
),
'typeLabel' => new Field(
- '(Attribute) '
+ '(Attribute) (Only in buggy files)'
),
'typeDefinition' => new Field(
- '(Attribute) '
+ '(Attribute) (Only in buggy files)'
),
'formatLabel' => new Field(
- '(Attribute) '
+ '(Attribute) Descriptor of the format'
),
'formatDefinition' => new Field(
- '(Attribute) '
+ '(Attribute) Description of the format'
),
'formatLink' => new Field(
- '(Attribute) '
+ '(Attribute) (Unused)'
),
'formatLanguage' => new Field(
- '(Attribute) '
+ '(Attribute) (Unused)'
),
'audioStreamFormatIDRef' => new Field(
- ''
+ 'Reference to an audioStreamFormat'
),
]
),
@@ -796,141 +888,38 @@ public function __construct($description = null)
'',
[
'audioStreamFormatID' => new Field(
- '(Attribute) '
+ '(Attribute) ID for the stream'
),
'audioStreamFormatName' => new Field(
- '(Attribute) '
+ '(Attribute) Name of the stream'
),
'typeLabel' => new Field(
- '(Attribute) '
+ '(Attribute) (Only in buggy files)'
),
'typeDefinition' => new Field(
- '(Attribute) '
+ '(Attribute) (Only in buggy files)'
),
'formatLabel' => new Field(
- '(Attribute) '
+ '(Attribute) Descriptor of the format'
),
'formatDefinition' => new Field(
- '(Attribute) '
+ '(Attribute) Description of the format'
),
'formatLink' => new Field(
- '(Attribute) '
+ '(Attribute) (Unused)'
),
'formatLanguage' => new Field(
- '(Attribute) '
+ '(Attribute) (Unused)'
),
'audioChannelFormatIDRef' => new Field(
- ''
+ 'Reference to audioChannelFormat'
),
'audioPackFormatIDRef' => new Field(
- ''
+ 'Reference to audioPackFormat'
),
'audioTrackFormatIDRef' => new Field(
- ''
- ),
- ]
- ),
- 'audioBlockFormat' => new Element(
- '',
- [
- 'audioBlockFormatID' => new Field(
- '(Attribute) '
- ),
- 'rtime' => new Field(
- '(Attribute) '
- ),
- 'duration' => new Field(
- '(Attribute) '
- ),
- 'lstart' => new Field(
- '(Attribute) '
- ),
- 'lduration' => new Field(
- '(Attribute) '
- ),
- 'initializeBlock' => new Field(
- '(Attribute) '
- ),
- 'gain' => new Field(
- ''
- ),
- 'importance' => new Field(
- ''
- ),
- 'headLocked' => new Field(
- ''
- ),
- 'headphoneVirtualise' => new Field(
- ''
+ 'Reference to audioTrackFormat'
),
- 'speakerLabel' => new Field(
- ''
- ),
- 'position' => new Field(
- ''
- ),
- 'outputChannelFormatIDRef' => new Field(
- ''
- ),
- 'outputChannelIDRef,' => new Field(
- ''
- ),
- 'jumpPosition' => new Field(
- ''
- ),
- 'matrix' => new Field(
- ''
- ),
- 'coefficient' => new Field(
- ''
- ),
- 'width' => new Field(
- ''
- ),
- 'depth' => new Field(
- ''
- ),
- 'height' => new Field(
- ''
- ),
- 'cartesian' => new Field(
- ''
- ),
- 'diffuse' => new Field(
- ''
- ),
- 'channelLock' => new Field(
- ''
- ),
- 'objectDivergence' => new Field(
- ''
- ),
- 'zoneExclusion' => new Field(
- ''
- ),
- 'equation' => new Field(
- ''
- ),
- 'order' => new Field(
- ''
- ),
- 'degree' => new Field(
- ''
- ),
- 'normalization' => new Field(
- ''
- ),
- 'nfcRefDist' => new Field(
- ''
- ),
- 'screenRef' => new Field(
- ''
- ),
- ]
- ),
- 'audioalternativeValueSet' => new Element(
- '',
- [
]
),
],