how to model this, perhaps BS2076Version(version: int) or OtherVersion(name: str)
warn if the version is not standardised
error if the version is not supported at all (as BS.2076 makes forward-incompatible changes)
new audioObject parameters
[x] positionOffset -- in #59
[x] gain -- in #59
[x] mute -- in #59
[x] alternativeValueSet -- in #59
[x] gain, mute, positionOffset
parse alternativeValueSetIDRef
[x] check that they are unique within audioProgramme and audioContent
[x] check that they are unique within the matched set of audioProgrammes and audioCntents
presumably it's ok to reference an audioObject more than once as long as only one alternativeValueSetIDRef is used?
[ ] parse gainInteractionRange and positionInteractionRamge and check the gain and positionOffset are within the specified bounds -- parsing is done, but the checking isn't really a v2 feature and is not done
[x] check that all these are only specified in leaf audioObject -- in #59
[x] change objectDivergence azimuth default from 45 to 0 -- in #59
warn about using default in any version -- in #59
things that don't need implementing
no need to do anything with authoringInformation
coordinates of screen which have changed are not used
could remove the "more than one audioProgramme; selecting the one with the lowest id" warning, but it's still useful
maximum divergence is not validated
HOA
order and degree now override equation (good), so we could remove the exception when equation is specified, but I don't see the need and would have to change it to a warning in -2 anyway
dynamic metadata for matrix is probably not a priority
misc
add a mechanism to warn about use of non-standardised features?
this is mostly quite obvious, so I don't think there's any need
warnings above are based on this policy: warn when using features which:
can cause silent differences in behaviour when interpreted according to different versions -- i.e. software is not going to break because of a new attribute or changed default, but the output may be wrong
and can easily be replaced by equivalent metadata which doesn't have the same problem
To Do
[x] parse version -- in #59
BS2076Version(version: int)
orOtherVersion(name: str)
new audioObject parameters
[x] track uid to channel reference: -- in #59 (originally https://github.com/ebu/ebu_adm_renderer/pull/32)
channel_format_for_track_uid
) -- in #59[x] gain in DirectSpeakers -- in #59
[x] gain in HOA -- in #59
[x] gain in Matrix -- in #59
[x] extend importance handling to DirectSpeakers/HOA/Matrix? -- in https://github.com/ebu/ebu_adm_renderer/pull/71
[x] fractional time format -- in #59
[x] gainUnit everywhere -- this is a really bad idea but needed for compatibility -- in #59
[x] change objectDivergence azimuth default from 45 to 0 -- in #59
things that don't need implementing
no need to do anything with authoringInformation
coordinates of screen which have changed are not used
could remove the "more than one audioProgramme; selecting the one with the lowest id" warning, but it's still useful
maximum divergence is not validated
HOA
dynamic metadata for matrix is probably not a priority
misc
add a mechanism to warn about use of non-standardised features?
warnings above are based on this policy: warn when using features which:
can cause silent differences in behaviour when interpreted according to different versions -- i.e. software is not going to break because of a new attribute or changed default, but the output may be wrong
and can easily be replaced by equivalent metadata which doesn't have the same problem