Use PBD::sys::operator/ instead of PBD::sys::path::operator/= in ARDOUR::SessionDirectory
[ardour.git] / libs / ardour / audio_unit.cc
index 0a31df40ee7c207ce7456d3b3a4253ae5339f988..dfcffb8cfed2288750ab9e86c59d58a47f673efa 100644 (file)
@@ -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<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, jack_nframes_t nframes, jack_nframes_t offset)
+AUPlugin::connect_and_run (vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset)
 {
        AudioUnitRenderActionFlags flags = 0;
        AudioTimeStamp ts;
@@ -325,6 +329,7 @@ AUPluginInfo::discover ()
                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);
+       }
+}
+