Commit read-only stack security fix for 64bit processors.
[ardour.git] / libs / ardour / audio_unit.cc
index 0a31df40ee7c207ce7456d3b3a4253ae5339f988..6879123ff1a24398d14a89293b49bdd36361af20 100644 (file)
@@ -112,7 +112,7 @@ AUPlugin::default_value (uint32_t port)
        return 0;
 }
 
-jack_nframes_t
+nframes_t
 AUPlugin::latency () const
 {
        return unit->Latency ();
@@ -137,7 +137,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 +159,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;
@@ -190,18 +190,6 @@ AUPlugin::automatable() const
        return automates;
 }
 
-void
-AUPlugin::store_state (ARDOUR::PluginState&)
-{
-       
-}
-
-void
-AUPlugin::restore_state (ARDOUR::PluginState&)
-{
-       
-}
-
 string
 AUPlugin::describe_parameter (uint32_t)
 {
@@ -325,6 +313,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 +365,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);
+       }
+}
+