jhove
jhove copied to clipboard
AES output does not conform to the AES57-2011 spec
JHOVE's AES output was written based on the beta spec, and does not conform to the final AES57-2011 spec. More details and a merge request to address the problem can be found here: https://github.com/openpreserve/jhove/pull/357.
Dev Effort
2D
Description
The AES output that JHOVE currently generates does not conform to the AES57-2011 spec. The schema can be found here.
This commit updates JHOVE to produce a valid AES57-2011 document. The bulk of the changes are related to how times and durations are reported. The original code generated a structure like this:
<tcf:duration tcf:frameCount="30" tcf:timeBase="1000" tcf:videoField="FIELD_1" tcf:countingMode="NTSC_NON_DROP_FRAME">
<tcf:hours>0</tcf:hours>
<tcf:minutes>0</tcf:minutes>
<tcf:seconds>12</tcf:seconds>
<tcf:frames>29</tcf:frames>
<tcf:samples tcf:sampleRate="S44100">
<tcf:numberOfSamples>121</tcf:numberOfSamples>
</tcf:samples>
<tcf:filmFraming tcf:framing="NOT_APPLICABLE" xsi:type="tcf:ntscFilmFramingType"/>
</tcf:duration>
The same information is now represented like this:
<aes:duration editRate="44100" factorNumerator="1" factorDenominator="1">571951</aes:duration>
Another change affects the "channelAssignment" element. This element does not have a "mapLocation" attribute, as the current code adds. Instead, AES57-2011 uses two new attributes "leftRightPostion" and "frontRearPosition". Detailed descriptions of this attributes can be found on this page. I could not determine a way to map all of the possible JHOVE "mapLocations" to the new AES attributes (for example, what does "SURROUND" mean?), so I decided to leave them out rather than include potentially inaccurate data.
(As an aside, I suspect that the way that JHOVE is currently mapping channel location for 4-channel AIFF audio is incorrect. Per spec, it should be LEFT, CENTER, RIGHT, SURROUND. JHOVE maps it as LEFT, RIGHT, CENTER, SURROUND.)