Closed firthm01 closed 4 months ago
Force push was for rebase (CI fixes on base branch)
Force push was for rebase (since other PRs now on main)
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.
AudioPackFormatIDValue
for a given index to support older saved projects - this is getPackFormatIdValueFromLegacySpeakerSetupsIndex
.AdmCommonDefinitionHelper
was adapted to pull this info tooprotobuf_utilities.cpp/hpp
provided code to do speaker layout lookups for (de)serialisation which would no longer be required and so they were removed. We will pass the AudioPackFormatIDValue
using protobuf, as we do with HOA.
DirectSpeakersTypeMetadata::Speaker
array to list the speakers in the pack format. Although a lookup could be done from the AudioPackFormatIDValue
at the receiving end, leaving this in at the transmitting end allows us to support user-customised layouts in future if we want.
Q: Should we just accept user-customisable layouts will never happen so simplify the code now?PluginSuite
s updated to use AdmCommonDefinitionHelper
instead of the SpeakerLayout
structs (used during import).ProgrammeStoreAdmSerializer
updated to use AdmCommonDefinitionHelper
instead of the SpeakerLayout
structs (used during export).AdmCommonDefinitionHelper
to populate meters and speaker positions. Frontend Connector passes around int representing AudioPackFormatIDValue
rather than SpeakerSetup
indexes.AdmCommonDefinitionHelper
to populate meters.AdmCommonDefinitionHelper
to pull info for DS items.AdmCommonDefinitionHelper
instead of the SpeakerLayout
structs.AdmCommonDefinitionHelper
improvements: https://github.com/ebu/ear-production-suite/compare/4d952eb97a60544d2fc7ac794fbdf4168450ce38%5E...ad7383f0f4eb06cece07acb6ca1728cdc479009dAudioChannelFormatID
, you can define a default speaker label. Sometimes the speaker label to use for a given AudioChannelFormat
depends upon the AudioPackFormat
it has been referenced from (usually due to the differing naming conventions of the standards that the AudioPackFormat
s have been derived from.) Therefore, you can also specify exceptions to the default label in this map.AdmCommonDefinitionHelper
to AdmPresetDefinitionsHelper
: https://github.com/ebu/ear-production-suite/pull/259/commits/3cf3a4ca68dbac1fb71edc5afb33c67f053c599dAdmPresetDefinitionsHelper
(Part 1): https://github.com/ebu/ear-production-suite/compare/2732d3be7b5424b265e75a8a301a0d768d502d2e%5E...7afabb01de98bc971754b7b18999ab3618ebee81getPackFormatDataByMatchingChannels
so we can find a matching PF in AdmPresetDefinitionsHelper
from a set of CF's (e.g, during import). This is because third-party tools don't use consistent ID's for thier custom PFs, so we must match by contained CFsgetBestSpeakerLabel
func so we don't have to do checks elsewhere in codecartesianspeakerlayouts.h/cpp
moved to shared helpers dir and used within AdmPresetDefinitionsHelper
to find an appropriate PF in the presets from a give PF on import. This consolidates all of the "maybe common def, maybe cart layout, maybe custom def without consistent id" checks in one placeAdmPresetDefinitionsHelper
, we can support it.AdmPresetDefinitionsHelper
AdmPresetDefinitionsHelper
in to a target document. This is then called via the serialiser code.EarVstExportSources
checks if preset def, rather than common def.AdmPresetDefinitionsHelper
(Part 2): https://github.com/ebu/ear-production-suite/compare/4e01fbd1697e21ecb369379f67f9d1f5e1939f7d%5E...a09c793b92f3e7b7b2cf0de2f46735ba686d9bb7
Need to be able to support supplementary packformats within the software for DS layouts.