1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

AAX Client: Remove channel layout compatibility checks

It's important that the plugin always returns the full set of available
components.

The plugin may be scanned by a separate process from the 'main' DAW
process, and these processes may report different compatibility levels.
If the scanner has more restricted compatibility than the 'main' DAW
process, then some channel layouts may not be registered, and will be
hidden in the DAW.
This commit is contained in:
reuk 2024-11-18 13:59:32 +00:00
parent 0aaaea265a
commit 4e6440c3d7
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C

View file

@ -2546,30 +2546,6 @@ namespace AAXClasses
check (desc.AddProcessProc_Native (algorithmProcessCallback, properties));
}
static inline bool hostSupportsStemFormat (AAX_EStemFormat stemFormat, const AAX_IFeatureInfo* featureInfo)
{
if (featureInfo != nullptr)
{
AAX_ESupportLevel supportLevel;
if (featureInfo->SupportLevel (supportLevel) == AAX_SUCCESS && supportLevel == AAX_eSupportLevel_ByProperty)
{
std::unique_ptr<const AAX_IPropertyMap> props (featureInfo->AcquireProperties());
// Due to a bug in ProTools 12.8, ProTools thinks that AAX_eStemFormat_Ambi_1_ACN is not supported
// To workaround this bug, check if ProTools supports AAX_eStemFormat_Ambi_2_ACN, and, if yes,
// we can safely assume that it will also support AAX_eStemFormat_Ambi_1_ACN
if (stemFormat == AAX_eStemFormat_Ambi_1_ACN)
stemFormat = AAX_eStemFormat_Ambi_2_ACN;
if (props != nullptr && props->GetProperty ((AAX_EProperty) stemFormat, (AAX_CPropertyValue*) &supportLevel) != 0)
return (supportLevel == AAX_eSupportLevel_Supported);
}
}
return (AAX_STEM_FORMAT_INDEX (stemFormat) <= 12);
}
static void getPlugInDescription (AAX_IEffectDescriptor& descriptor, [[maybe_unused]] const AAX_IFeatureInfo* featureInfo)
{
auto plugin = createPluginFilterOfType (AudioProcessor::wrapperType_AAX);
@ -2628,19 +2604,15 @@ namespace AAXClasses
auto aaxOutFormat = numOuts > 0 ? aaxFormats[outIdx] : AAX_eStemFormat_None;
auto outLayout = channelSetFromStemFormat (aaxOutFormat, false);
if (hostSupportsStemFormat (aaxInFormat, featureInfo)
&& hostSupportsStemFormat (aaxOutFormat, featureInfo))
AudioProcessor::BusesLayout fullLayout;
if (! JuceAAX_Processor::fullBusesLayoutFromMainLayout (*plugin, inLayout, outLayout, fullLayout))
continue;
if (auto* desc = descriptor.NewComponentDescriptor())
{
AudioProcessor::BusesLayout fullLayout;
if (! JuceAAX_Processor::fullBusesLayoutFromMainLayout (*plugin, inLayout, outLayout, fullLayout))
continue;
if (auto* desc = descriptor.NewComponentDescriptor())
{
createDescriptor (*desc, fullLayout, *plugin, pluginIds, numMeters);
check (descriptor.AddComponent (desc));
}
createDescriptor (*desc, fullLayout, *plugin, pluginIds, numMeters);
check (descriptor.AddComponent (desc));
}
}
}