Skip to content

Commit

Permalink
added support for configurable-audio-ports in plugin.hh / plugin.hxx
Browse files Browse the repository at this point in the history
  • Loading branch information
MeijisIrlnd committed Sep 14, 2024
1 parent b895ea2 commit a444bb6
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
21 changes: 21 additions & 0 deletions include/clap/helpers/plugin.hh
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,18 @@ namespace clap { namespace helpers {
return false;
}

//------------------------------------//
// clap_configurable_audio_ports //
//------------------------------------//
virtual bool implementsConfigurableAudioPorts() const noexcept { return false; };
virtual bool configurableAudioPortsCanApplyConfiguration(const clap_audio_port_configuration_request* requests,
uint32_t requests_count) noexcept {
return false;
}
virtual bool configurableAudioPortsApplyConfiguration(const clap_audio_port_configuration_request* requests,
uint32_t requests_count) noexcept {
return false;
}
//--------------------//
// clap_plugin_params //
//--------------------//
Expand Down Expand Up @@ -427,6 +439,14 @@ namespace clap { namespace helpers {
bool is_active,
uint32_t sample_size) noexcept;

static bool clapConfigurableAudioPortsCanApplyConfiguration(const clap_plugin_t* plugin,
const clap_audio_port_configuration_request* requests,
uint32_t requests_count) noexcept;

static bool clapConfigurableAudioPortsApplyConfiguration(const clap_plugin_t* plugin,
const clap_audio_port_configuration_request* requests,
uint32_t requests_count) noexcept;

// clap_plugin_params
static uint32_t clapParamsCount(const clap_plugin *plugin) noexcept;
static bool clapParamsInfo(const clap_plugin *plugin,
Expand Down Expand Up @@ -552,6 +572,7 @@ namespace clap { namespace helpers {
static const clap_plugin_audio_ports _pluginAudioPorts;
static const clap_plugin_audio_ports_config _pluginAudioPortsConfig;
static const clap_plugin_audio_ports_activation _pluginAudioPortsActivation;
static const clap_plugin_configurable_audio_ports _pluginConfigurableAudioPorts;
static const clap_plugin_gui _pluginGui;
static const clap_plugin_latency _pluginLatency;
static const clap_plugin_note_name _pluginNoteName;
Expand Down
38 changes: 38 additions & 0 deletions include/clap/helpers/plugin.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ namespace clap { namespace helpers {
clapAudioPortsActivationSetActive,
};

template<MisbehaviourHandler h, CheckingLevel l>
const clap_plugin_configurable_audio_ports Plugin<h, l>::_pluginConfigurableAudioPorts = {
clapConfigurableAudioPortsCanApplyConfiguration,
clapConfigurableAudioPortsApplyConfiguration
};

template <MisbehaviourHandler h, CheckingLevel l>
const clap_plugin_params Plugin<h, l>::_pluginParams = {
clapParamsCount,
Expand Down Expand Up @@ -472,6 +478,8 @@ namespace clap { namespace helpers {
return &_pluginAudioPortsActivation;
if (!strcmp(id, CLAP_EXT_AUDIO_PORTS_CONFIG) && self.implementsAudioPortsConfig())
return &_pluginAudioPortsConfig;
if(!strcmp(id, CLAP_EXT_CONFIGURABLE_AUDIO_PORTS) && self.implementsConfigurableAudioPorts())
return &_pluginConfigurableAudioPorts;
if (!strcmp(id, CLAP_EXT_PARAMS) && self.implementsParams())
return &_pluginParams;
if ((!strcmp(id, CLAP_EXT_PARAM_INDICATION) ||
Expand Down Expand Up @@ -783,6 +791,36 @@ namespace clap { namespace helpers {
return self.audioPortsActivationSetActive(is_input, port_index, is_active, sample_size);
}

template<MisbehaviourHandler h, CheckingLevel l>
bool Plugin<h, l>::clapConfigurableAudioPortsCanApplyConfiguration(const clap_plugin_t *plugin, const clap_audio_port_configuration_request *requests, uint32_t requests_count) noexcept {
auto& self = from(plugin);
self.ensureMainThread("clap_plugin_configurable_audio_ports.can_apply_configuration");
if(l >= CheckingLevel::Minimal) {
if(self.isActive()) {
self.hostMisbehaving(
"it is illegal to call clap_plugin_configurable_audio_ports.can_apply_configuration "
"if the plugin is active"
);
}
}
return self.configurableAudioPortsCanApplyConfiguration(requests, requests_count);
}

template<MisbehaviourHandler h, CheckingLevel l>
bool Plugin<h, l>::clapConfigurableAudioPortsApplyConfiguration(const clap_plugin_t *plugin, const clap_audio_port_configuration_request *requests, uint32_t requests_count) noexcept {
auto& self = from(plugin);
self.ensureMainThread("clap_plugin_configurable_audio_ports.apply_configuration");
if(l >= CheckingLevel::Minimal) {
if(self.isActive()) {
self.hostMisbehaving(
"it is illegal to call clap_plugin_configurable_audio_ports.apply_configuration "
"if the plugin is active"
);
}
}
return self.configurableAudioPortsApplyConfiguration(requests, requests_count);
}

template <MisbehaviourHandler h, CheckingLevel l>
uint32_t Plugin<h, l>::clapParamsCount(const clap_plugin *plugin) noexcept {
auto &self = from(plugin);
Expand Down

0 comments on commit a444bb6

Please sign in to comment.