X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Faudio_unit.cc;h=dfcffb8cfed2288750ab9e86c59d58a47f673efa;hb=22067eaddbe989a33bae4df42a3bdabb1cbfa328;hp=25c8aeb53bd2d89c99e603214478f36f4ddcfa96;hpb=0a24970b4eeb84a3313755266872b1981c708d95;p=ardour.git diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 25c8aeb53b..dfcffb8cfe 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -112,9 +112,13 @@ AUPlugin::default_value (uint32_t port) return 0; } -jack_nframes_t -AUPlugin::latency () const +nframes_t +AUPlugin::signal_latency () const { + if (_user_latency) { + return _user_latency; + } + return unit->Latency (); } @@ -137,7 +141,7 @@ AUPlugin::get_parameter (uint32_t which) const int AUPlugin::get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const { - return -1; + return 0; } uint32_t @@ -159,13 +163,13 @@ AUPlugin::deactivate () } void -AUPlugin::set_block_size (jack_nframes_t nframes) +AUPlugin::set_block_size (nframes_t nframes) { } int -AUPlugin::connect_and_run (vector& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, jack_nframes_t nframes, jack_nframes_t offset) +AUPlugin::connect_and_run (vector& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset) { AudioUnitRenderActionFlags flags = 0; AudioTimeStamp ts; @@ -322,9 +326,10 @@ AUPluginInfo::discover () AUPluginInfoPtr plug(new AUPluginInfo); plug->name = AUPluginInfo::get_name (temp); - plug->type = PluginInfo::AudioUnit; + plug->type = ARDOUR::AudioUnit; plug->n_inputs = 0; plug->n_outputs = 0; + // plug->setup_nchannels (temp); plug->category = "AudioUnit"; plug->desc = new CAComponentDescription(temp); @@ -376,3 +381,21 @@ AUPluginInfo::get_name (CAComponentDescription& comp_desc) return CFStringRefToStdString(itemName); } + +void +AUPluginInfo::setup_nchannels (CAComponentDescription& comp_desc) +{ + CAAudioUnit unit; + + CAAudioUnit::Open (comp_desc, unit); + + if (unit.SupportsNumChannels()) { + n_inputs = n_outputs = 0; + } else { + AUChannelInfo cinfo; + size_t info_size = sizeof(cinfo); + OSStatus err = AudioUnitGetProperty (unit.AU(), kAudioUnitProperty_SupportedNumChannels, kAudioUnitScope_Global, + 0, &cinfo, &info_size); + } +} +