Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated audio outputs to conform to the AES57-2011 spec #357

Closed
wants to merge 4 commits into from

Conversation

pwinckles
Copy link
Contributor

@pwinckles pwinckles commented Aug 14, 2018

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.)

Fixes #362 #367

@pwinckles
Copy link
Contributor Author

I see that the Travis-CI build is failing. As far as I can tell, the job it's running is comparing the XML output of previous JHOVE versions against the output of these changes. The output is necessarily different, which causes the build to fail.

@carlwilson carlwilson added the bug A product defect that needs fixing label Dec 11, 2018
@carlwilson carlwilson self-requested a review December 11, 2018 12:30
@carlwilson carlwilson added this to the v1.22-m2 Ready milestone Dec 19, 2018
@carlwilson carlwilson removed the bug A product defect that needs fixing label Dec 19, 2018
ThomasEdvardsen added a commit to NationalLibraryOfNorway/jhove that referenced this pull request Sep 24, 2019
@carlwilson carlwilson linked an issue May 5, 2020 that may be closed by this pull request
@MartinSpeller
Copy link

@carlwilson
Copy link
Member

FYI @deanforsmith the above conflicts mean a little work for me to get this PR ready for merging but I'll be doing just that ASAP :)

@carlwilson carlwilson modified the milestones: v1.22-m2 Ready, JHOVE 1.26 Apr 6, 2022
@ThomasEdvardsen
Copy link

Its now 4 1/2 years since @pwinckles created the pullrequest with a solution for this problem. I had to patch an local copy after a year, while waiting for this to be merged. Is there a plan for when this pull request will be merged @carlwilson?

ThomasEdvardsen added a commit to NationalLibraryOfNorway/jhove that referenced this pull request Jan 6, 2023
@carlwilson carlwilson added the bug A product defect that needs fixing label Mar 28, 2024
@carlwilson carlwilson added this to the JHOVE 1.32 milestone Mar 28, 2024
Copy link
Member

@carlwilson carlwilson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bit tough to resolve due to age (my bad) but this looks good to go.

carlwilson added a commit that referenced this pull request Aug 21, 2024
Copied from #357 contributed by @pwinckles, thanks! Apologies the PR was old enough to make merging difficult. My only contribution was the JSON handler output.

The AES output that JHOVE currently generates does not conform to the AES57-2011 spec. The schema can be found [here](https://www.loc.gov/standards/amdvmd/audiovideoMDschemas.html).

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:
```xml
<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:
```xml
<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](https://rucore.libraries.rutgers.edu/open/projects/openwms/index.php?sec=guides&sub=metadata&pg=t_sound-qual). 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](http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/Docs/AIFF-1.3.pdf), it should be LEFT, CENTER, RIGHT, SURROUND. JHOVE maps it as LEFT, RIGHT, CENTER, SURROUND.)

Fixes #362 #367
Closes #357
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A product defect that needs fixing
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Use of xsi:type in AES output AES output does not conform to the AES57-2011 spec
4 participants