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..7555e6a1 100644
--- a/src/MediaConchBundle/Lib/Checks/Specs.php
+++ b/src/MediaConchBundle/Lib/Checks/Specs.php
@@ -541,396 +541,385 @@ public function __construct($description = null)
]
),
'audioContent' => new Element(
- '',
+ 'An audioContent element describes the content of one component of a programme (e.g. background music), and refers to audioObjects to tie the content to its format. This element includes loudness metadata',
[
'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'
),
]
),
'audioObject' => new Element(
- '',
+ 'An audioObject establishes the relationship between the content, the format via audio packs, and the assets using the track UIDs',
[
'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'
),
]
),
'audioPackFormat' => new Element(
- '',
+ 'The audioPackFormat groups together one or more audioChannelFormats that belong together',
[
'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'
),
]
),
'audioChannelFormat' => new Element(
- '',
+ 'An audioChannelFormat represents a single sequence of audio samples on which some action may be performed, such as movement of an object, which is rendered in a scene. It is sub-divided in the time domain into one or more audioBlockFormats',
[
'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) '
- ),
- 'audioBlockFormat' => new Field(
- ''
+ '(Attribute) (Unused)'
),
'frequency' => new Field(
- ''
- ),
- ]
- ),
- 'audioTrackUID' => new Element(
- '',
- [
- 'UID' => new Field(
- '(Attribute) '
- ),
- 'sampleRate' => new Field(
- '(Attribute) '
- ),
- 'bitDepth' => new Field(
- '(Attribute) '
- ),
- 'typeLabel' => new Field(
- '(Attribute) '
- ),
- 'audioMXFLookUp' => new Field(
- ''
- ),
- 'audioTrackFormatIDRef' => new Field(
- ''
- ),
- 'audioChannelFormatIDRef' => new Field(
- ''
- ),
- 'audioPackFormatIDRef' => new Field(
- ''
+ 'frequency'
),
]
),
- 'audioTrackFormat' => new Element(
- '',
- [
- 'audioTrackFormatID' => new Field(
- '(Attribute) '
- ),
- 'audioTrackFormatName' => new Field(
- '(Attribute) '
- ),
- 'typeLabel' => new Field(
- '(Attribute) '
- ),
- 'typeDefinition' => new Field(
- '(Attribute) '
- ),
- 'formatLabel' => new Field(
- '(Attribute) '
- ),
- 'formatDefinition' => new Field(
- '(Attribute) '
- ),
- 'formatLink' => new Field(
- '(Attribute) '
- ),
- 'formatLanguage' => new Field(
- '(Attribute) '
- ),
- 'audioStreamFormatIDRef' => new Field(
- ''
- ),
- ]
- ),
- 'audioStreamFormat' => new Element(
- '',
- [
- 'audioStreamFormatID' => new Field(
- '(Attribute) '
- ),
- 'audioStreamFormatName' => new Field(
- '(Attribute) '
- ),
- 'typeLabel' => new Field(
- '(Attribute) '
- ),
- 'typeDefinition' => new Field(
- '(Attribute) '
- ),
- 'formatLabel' => new Field(
- '(Attribute) '
- ),
- 'formatDefinition' => new Field(
- '(Attribute) '
- ),
- 'formatLink' => new Field(
- '(Attribute) '
- ),
- 'formatLanguage' => new Field(
- '(Attribute) '
- ),
- 'audioChannelFormatIDRef' => new Field(
- ''
- ),
- 'audioPackFormatIDRef' => new Field(
- ''
- ),
- 'audioTrackFormatIDRef' => new Field(
- ''
- ),
- ]
- ),
- 'audioBlockFormat' => new Element(
- '',
+ 'audioChannelFormat/audioBlockFormat' => new Element(
+ 'An audioBlockFormat represents a single sequence of audioChannelFormat samples with fixed parameters, including position, within a specified time interval',
[
'audioBlockFormatID' => new Field(
- '(Attribute) '
+ '(Attribute) ID for block'
),
'rtime' => new Field(
- '(Attribute) '
+ '(Attribute) Start time of block'
),
'duration' => new Field(
- '(Attribute) '
+ '(Attribute) Duration of block'
),
'lstart' => new Field(
'(Attribute) '
),
'lduration' => new Field(
- '(Attribute) '
+ '(Attribute) (S-ADM) Duration of block in the S-ADM metadata frame'
),
'initializeBlock' => new Field(
- '(Attribute) '
+ '(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'
),
]
),
- 'audioalternativeValueSet' => new Element(
- '',
+ 'audioTrackUID' => new Element(
+ 'The audioTrackUID uniquely identifies a track or asset within a file or recording of an audio scene',
[
+ 'UID' => new Field(
+ '(Attribute) The actual UID value'
+ ),
+ 'sampleRate' => new Field(
+ '(Attribute) Sample rate of track'
+ ),
+ 'bitDepth' => new Field(
+ '(Attribute) Bit-depth of track'
+ ),
+ 'typeLabel' => new Field(
+ '(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'
+ ),
+ ]
+ ),
+ 'audioTrackFormat' => new Element(
+ 'The audioTrackFormat element corresponds to a single set of samples or data in a single track in a storage medium',
+ [
+ 'audioTrackFormatID' => new Field(
+ '(Attribute) ID for track'
+ ),
+ 'audioTrackFormatName' => new Field(
+ '(Attribute) Name for track'
+ ),
+ 'typeLabel' => new Field(
+ '(Attribute) (Only in buggy files)'
+ ),
+ 'typeDefinition' => new Field(
+ '(Attribute) (Only in buggy files)'
+ ),
+ 'formatLabel' => new Field(
+ '(Attribute) Descriptor of the format'
+ ),
+ 'formatDefinition' => new Field(
+ '(Attribute) Description of the format'
+ ),
+ 'formatLink' => new Field(
+ '(Attribute) (Unused)'
+ ),
+ 'formatLanguage' => new Field(
+ '(Attribute) (Unused)'
+ ),
+ 'audioStreamFormatIDRef' => new Field(
+ 'Reference to an audioStreamFormat'
+ ),
+ ]
+ ),
+ 'audioStreamFormat' => new Element(
+ 'A stream is a combination of tracks (or one track) required to render a channel, object, HOA component or pack',
+ [
+ 'audioStreamFormatID' => new Field(
+ '(Attribute) ID for the stream'
+ ),
+ 'audioStreamFormatName' => new Field(
+ '(Attribute) Name of the stream'
+ ),
+ 'typeLabel' => new Field(
+ '(Attribute) (Only in buggy files)'
+ ),
+ 'typeDefinition' => new Field(
+ '(Attribute) (Only in buggy files)'
+ ),
+ 'formatLabel' => new Field(
+ '(Attribute) Descriptor of the format'
+ ),
+ 'formatDefinition' => new Field(
+ '(Attribute) Description of the format'
+ ),
+ 'formatLink' => new Field(
+ '(Attribute) (Unused)'
+ ),
+ 'formatLanguage' => new Field(
+ '(Attribute) (Unused)'
+ ),
+ 'audioChannelFormatIDRef' => new Field(
+ 'Reference to audioChannelFormat'
+ ),
+ 'audioPackFormatIDRef' => new Field(
+ 'Reference to audioPackFormat'
+ ),
+ 'audioTrackFormatIDRef' => new Field(
+ 'Reference to audioTrackFormat'
+ ),
]
),
],