ebu / ear-production-suite

The EAR Production Suite is a set of VST® plugins and tools for producing immersive and personalizable audio content suitable for any Next Generation Audio codec. It is based on the Audio Definition Model (ITU-R BS.2076) and the ITU ADM Renderer (ITU-R BS.2127) and enables monitoring on any ITU-R BS.2051 loudspeaker configuration.
https://ear-production-suite.ebu.io/
GNU General Public License v3.0
101 stars 19 forks source link

Improve ADM import support from 3rd party tools #259

Closed firthm01 closed 4 months ago

firthm01 commented 8 months ago

Need to be able to support supplementary packformats within the software for DS layouts.

firthm01 commented 7 months ago

Force push was for rebase (CI fixes on base branch)

firthm01 commented 7 months ago

Force push was for rebase (since other PRs now on main)

firthm01 commented 6 months ago

Code review notes;

The EPS already had a helper class for querying common definitions (AdmCommonDefinitionHelper) which would be extended to support additional "supplementary" definitions too.

AdmCommonDefinitionHelper was used mainly by the HOA plugin to populate available configurations in the user interface and pass the selected configuration throughout the rest of the suite by it's AudioPackFormatIDValue. This was quite a neat solution as it avoided the need for hard-coded configurations and would allow the EPS to support new common definitions without any major changes if any more are added at a later date. By passing an AudioPackFormatIDValue around, we also avoid the potential pitfalls and bugs of using an index to refer to a particular configuration.

The DS plugin did not use this workflow as it was developed before the HOA plugin (and therefore the AdmCommonDefinitionHelper) was implemented. The DS plugin used hard-coded layouts (speaker_layouts.hpp), as did the extension, Scene plugin, and Monitoring plugins. These hard-coded layouts were stripped out and the rest of the code modified to make use of AdmCommonDefinitionHelper in place of it.

Since The AdmCommonDefinitionHelper class was to be extended to support supplementary definitions on top of the common definitions, it was eventually renamed AdmPresetDefinitionsHelper. It was also improved to provide more information on definitions and more functionality as required.


Stripping out hard-coded layouts: https://github.com/ebu/ear-production-suite/compare/ff1c4d8ec03976abb626ddf75205159ac66085b2%5E...95e83e8764661ea9b85627c838b634d5960dff1a


AdmCommonDefinitionHelper improvements: https://github.com/ebu/ear-production-suite/compare/4d952eb97a60544d2fc7ac794fbdf4168450ce38%5E...ad7383f0f4eb06cece07acb6ca1728cdc479009d


Rename AdmCommonDefinitionHelper to AdmPresetDefinitionsHelper: https://github.com/ebu/ear-production-suite/pull/259/commits/3cf3a4ca68dbac1fb71edc5afb33c67f053c599d


DS UI Speaker Labelling improvements: https://github.com/ebu/ear-production-suite/compare/44a7ce5e151351f62113e4b95e4d99f098f89781%5E...c7c83a65a44e1a97947e4ba746265733db21ffa0


Import supplementary definitions in to AdmPresetDefinitionsHelper (Part 1): https://github.com/ebu/ear-production-suite/compare/2732d3be7b5424b265e75a8a301a0d768d502d2e%5E...7afabb01de98bc971754b7b18999ab3618ebee81


Support supplementary definitions in Plugin Suites: https://github.com/ebu/ear-production-suite/compare/37f66b3860d2289a864c8add572db2bfcce985bf%5E...37f66b3860d2289a864c8add572db2bfcce985bf


Export support: https://github.com/ebu/ear-production-suite/compare/4b248ab915e5d83843356931f846a21cd0e263b2%5E...1d9a66f1a67d4edb32b2e60ee968d4f38b59ca09


Import supplementary definitions in to AdmPresetDefinitionsHelper (Part 2): https://github.com/ebu/ear-production-suite/compare/4e01fbd1697e21ecb369379f67f9d1f5e1939f7d%5E...a09c793b92f3e7b7b2cf0de2f46735ba686d9bb7


UI bits: https://github.com/ebu/ear-production-suite/compare/3810fc97e9fb2b145c79a47fe0dadf5fcd73b93d%5E...8eba33e915a0246b56c3e7975b0bd1b1d6fd0c58