Fixed compilation of CoreAudioSource
authorTaybin Rutkin <taybin@taybin.com>
Thu, 31 Aug 2006 16:34:42 +0000 (16:34 +0000)
committerTaybin Rutkin <taybin@taybin.com>
Thu, 31 Aug 2006 16:34:42 +0000 (16:34 +0000)
Seperated AUDIOUNITS support from COREAUDIO support.
Fixed metadata saving in SfdbUI.

git-svn-id: svn://localhost/ardour2/trunk@879 d708f5d6-7413-0410-9779-e7cbd77b26cf

17 files changed:
SConstruct
gtk2_ardour/SConscript
gtk2_ardour/au_pluginui.cc
gtk2_ardour/au_pluginui.h
gtk2_ardour/plugin_selector.cc
gtk2_ardour/plugin_selector.h
gtk2_ardour/redirect_box.cc
gtk2_ardour/sfdb_ui.cc
libs/ardour/SConscript
libs/ardour/ardour/utils.h
libs/ardour/audio_library.cc
libs/ardour/audio_unit.cc
libs/ardour/coreaudiosource.cc
libs/ardour/insert.cc
libs/ardour/plugin.cc
libs/ardour/source_factory.cc
libs/ardour/utils.cc

index 57177fa173875e34ef29326eb55a858699ad4ed5..d657e822cace09ad93219da3da44462f777e5a2e 100644 (file)
@@ -26,6 +26,7 @@ subst_dict = { }
 opts = Options('scache.conf')
 opts.AddOptions(
   ('ARCH', 'Set architecture-specific compilation flags by hand (all flags as 1 argument)',''),
+    BoolOption('AUDIOUNITS', 'Compile with Apple\'s AudioUnit library. (experimental)', 0),
     BoolOption('COREAUDIO', 'Compile with Apple\'s CoreAudio library', 0),
     BoolOption('DEBUG', 'Set to build with debugging information and no optimizations', 0),
     PathOption('DESTDIR', 'Set the intermediate install "prefix"', '/'),
@@ -508,8 +509,6 @@ else:
 
 libraries['dmalloc'] = conf.Finish ()
 
-#
-
 #
 # Audio/MIDI library (needed for MIDI, since audio is all handled via JACK)
 #
index ca40cbfcb909a2dda30a287c00b2c334d83c1a08..c1eba1ea1d1ad709a3f16ce0a4c741084d803785 100644 (file)
@@ -61,7 +61,7 @@ skipped_files=Split("""
 connection_editor.cc
 """)
 
-coreaudio_files=Split("""
+audiounit_files=Split("""
 au_pluginui.cc
 """)
 
@@ -221,9 +221,9 @@ if env['VST']:
        extra_sources += vst_files
        gtkardour.Append (CCFLAGS="-DVST_SUPPORT", CPPPATH="#libs/fst")
 
-if gtkardour['COREAUDIO']:
-    extra_sources += coreaudio_files
-    gtkardour.Append(CCFLAGS='-DHAVE_COREAUDIO')
+if gtkardour['AUDIOUNITS']:
+    extra_sources += audiounit_files
+    gtkardour.Append(CCFLAGS='-DHAVE_AUDIOUNITS')
     gtkardour.Append(LINKFLAGS='-framework Carbon')
     gtkardour.Merge([libraries['appleutility']])
  
index 092e34d50beaa0b0b477f35a5d68b10a53ef88c8..ce8771bc9499a00ef838adfe870ec1fc6007bf5e 100644 (file)
@@ -43,77 +43,6 @@ AUPluginUI::AUPluginUI (boost::shared_ptr<PluginInsert> insert)
                throw failed_constructor ();
        }
 
-       OSStatus err = noErr;
-       
-       CAComponentDescription desc;
-       Component carbonViewComponent = NULL;
-       AudioUnitCarbonView carbonView = NULL;
-       
-       GetComponentInfo(au->get_comp()->Comp(), &desc, 0, 0, 0);
-       carbonViewComponent = get_carbon_view_component(desc.componentSubType);
-       err = OpenAComponent(carbonViewComponent, &carbonView);
-       
-       Rect rec;
-       rec.top = 0;
-       rec.left = 0;
-       rec.bottom = 400;
-       rec.right = 500;
-       
-       ProcessSerialNumber ourPSN;
-       
-       /* Here we will set the MacOSX native section of the process to the foreground for putting up this
-     * dialog box.  First step is to get our process serial number.  We do this by calling 
-     * GetCurrentProcess. 
-     * First Argument: On success this PSN will be our PSN on return.
-     * Return Value: A Macintosh error indicating success or failure.
-     */
-    err = GetCurrentProcess(&ourPSN);
-    
-    //If no error then set this process to be frontmost.
-    if (err == noErr) {
-        /* Calling SetFrontProcess to make us frontmost.
-         * First Argument: The Process Serial Number of the process we want to make frontmost.  Here
-         *    of course we pass our process serial number
-         * Return Value: An error value indicating success or failure.  We just ignore the return
-         *    value here.
-         */
-        (void)SetFrontProcess(&ourPSN);
-    } else {
-               error << "couldn't get current process" << endmsg;
-       }
-       
-       err = CreateNewWindow (kDocumentWindowClass, kWindowStandardFloatingAttributes, &rec, &wr);
-       
-       ComponentResult auResult;
-       ControlRef rootControl = NULL;
-       GetRootControl(wr, &rootControl);
-       
-       int width = 500;
-       int height = 400;
-       Float32Point location = {30, 30};
-       Float32Point size = {width, height};
-       ControlRef audioUnitControl = NULL;
-       
-       auResult = AudioUnitCarbonViewCreate(carbonView,
-                                            au->get_au()->AU(),
-                                            wr,
-                                            rootControl,
-                                            &location,
-                                            &size,
-                                            &audioUnitControl);    
-       
-       ShowWindow (wr);
-       BringToFront (wr);
-//     AudioUnitCarbonViewSetEventListener(carbonView, EventListener, this);
-#if 0
-       set_name ("PluginEditor");
-       add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
-
-       signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), reinterpret_cast<Window*> (this)));
-#endif 
-
-       insert->GoingAway.connect (mem_fun(*this, &AUPluginUI::plugin_going_away));
-       
        info << "AUPluginUI created" << endmsg;
 }
 
@@ -122,38 +51,3 @@ AUPluginUI::~AUPluginUI ()
        // nothing to do here - plugin destructor destroys the GUI
 }
 
-void
-AUPluginUI::plugin_going_away (ARDOUR::Redirect* ignored)
-{
-        ENSURE_GUI_THREAD(bind (mem_fun(*this, &AUPluginUI::plugin_going_away), ignored));
-
-        delete_when_idle (this);
-}
-
-Component
-AUPluginUI::get_carbon_view_component(OSType subtype)
-{
-       ComponentDescription desc;
-       Component component;
-       
-       desc.componentType = kAudioUnitCarbonViewComponentType; // 'auvw'
-       desc.componentSubType = subtype;
-       desc.componentManufacturer = 0;
-       desc.componentFlags = 0;
-       desc.componentFlagsMask = 0;
-       
-       // First see if we can find a carbon view designed specifically for this
-       // plug-in:
-       
-       component = FindNextComponent(NULL, &desc);
-       if (component)
-          return component;
-       
-       // If not, grab the generic carbon view, which will create a GUI for
-       // any Audio Unit.
-       
-       desc.componentSubType = kAUCarbonViewSubType_Generic;
-       component = FindNextComponent(NULL, &desc);
-       
-       return component;
-}
index 2dcefcc42f3138eb5b15ba332975c964b09b6f97..f52605217ac35b68179d9549e28d90d05e520554 100644 (file)
@@ -38,11 +38,7 @@ class AUPluginUI
        ~AUPluginUI ();
        
   private:
-       WindowRef wr;
        boost::shared_ptr<ARDOUR::AUPlugin> au;
-
-       void plugin_going_away (ARDOUR::Redirect*);
-       Component get_carbon_view_component(OSType subtype);
 };
 
 #endif // __au_plugin_ui_h__
index 69f6f56690d696d1a365c452bf62ca4fce9ddd6b..8a52e8587f673e738bbb0b358ac5f846459e00fe 100644 (file)
@@ -92,7 +92,7 @@ PluginSelector::PluginSelector (PluginManager *mgr)
        }
 #endif
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
        aumodel = ListStore::create(aucols);
        au_display.set_model (aumodel);
        au_display.append_column (_("Available plugins"), aucols.name);
@@ -151,7 +151,7 @@ PluginSelector::PluginSelector (PluginManager *mgr)
        }
 #endif
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
        notebook.pages().push_back (TabElem (auscroller, _("AudioUnit")));
 #endif
 
@@ -171,7 +171,7 @@ PluginSelector::PluginSelector (PluginManager *mgr)
        }
 #endif
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
        au_display.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::row_clicked));
        au_display.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::au_display_selection_changed));
 #endif
@@ -187,7 +187,7 @@ PluginSelector::PluginSelector (PluginManager *mgr)
        vst_refiller ();
 #endif
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
        au_refiller ();
 #endif
 
@@ -219,7 +219,7 @@ PluginSelector::set_correct_focus()
        }
 #endif
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
        cp--;
 
        if (cp == 0) {
@@ -330,7 +330,7 @@ PluginSelector::vst_display_selection_changed()
 
 #endif //VST_SUPPORT
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
 
 void
 PluginSelector::_au_refiller (void *arg)
@@ -374,7 +374,7 @@ PluginSelector::au_display_selection_changed()
        current_selection = ARDOUR::AudioUnit;
 }
 
-#endif //HAVE_COREAUDIO
+#endif //HAVE_AUDIOUNIT
 
 void
 PluginSelector::use_plugin (PluginInfoPtr pi)
@@ -413,7 +413,7 @@ PluginSelector::btn_add_clicked()
 #endif
                        break;
                case ARDOUR::AudioUnit:
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
                        row = *(au_display.get_selection()->get_selected());
                        name = row[aucols.name];
                        pi = row[aucols.plugin];
@@ -451,7 +451,7 @@ PluginSelector::btn_update_clicked()
 #ifdef VST_SUPPORT
        vst_refiller ();
 #endif 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
        au_refiller ();
 #endif
 }
index d71203131c3a7bb647cb6d9d3491b45c8e0b5fa2..73c3008e642bfd5e3b3b029739056b223f35a67d 100644 (file)
@@ -110,7 +110,7 @@ class PluginSelector : public ArdourDialog
        void vst_display_selection_changed();
 #endif // VST_SUPPORT
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
        // page 3
        struct AUColumns : public Gtk::TreeModel::ColumnRecord {
                AUColumns () {
@@ -131,7 +131,7 @@ class PluginSelector : public ArdourDialog
        static void _au_refiller (void *);
        void au_refiller ();
        void au_display_selection_changed();
-#endif //HAVE_COREAUDIO
+#endif //HAVE_AUDIOUNIT
 
        ARDOUR::PluginManager *manager;
 
index 058cc9f5ab912d92713bc5b2c505e030ea78d48b..48562f1ffb6a33dcb1fea82de9f43c34cb8eb175 100644 (file)
@@ -62,7 +62,7 @@
 
 #include "i18n.h"
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
 #include "au_pluginui.h"
 #endif
 
@@ -1000,7 +1000,7 @@ RedirectBox::edit_redirect (boost::shared_ptr<Redirect> redirect)
                                } else {
                                        plugin_ui->show_all ();
                                }
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNIT
                        } else if (type == ARDOUR::AudioUnit) {
                                AUPluginUI* plugin_ui;
                                if (plugin_insert->get_gui() == 0) {
index cfede6d863d3b5b07098db663401586a0b22d88a..0f167776b01a511c11c344704bb68e46da8a0a08 100644 (file)
@@ -269,7 +269,11 @@ SoundFileBox::remove_field_clicked ()
 void
 SoundFileBox::field_edited (const Glib::ustring& str1, const Glib::ustring& str2)
 {
-       cout << "field_edited" << endl;
+       Gtk::TreeModel::Children rows(fields->children());
+       Gtk::TreeModel::Row row(rows[atoi(str1.c_str())]);
+       
+       Library->set_field (path, row[label_columns.field], str2);
+       
        Library->save_changes ();
 }
 
index 55acb865d1713e69c5fbb1328dd7c160b12946b6..63c0cdd96f6945d6ffe633457108e71c93eceb44 100644 (file)
@@ -102,7 +102,8 @@ arch_specific_objects = [ ]
 
 osc_files = [ 'osc.cc' ]
 vst_files = [ 'vst_plugin.cc', 'session_vst.cc' ]
-coreaudio_files = [ 'audio_unit.cc', 'coreaudiosource.cc' ]
+audiounit_files = [ 'audio_unit.cc' ]
+coreaudio_files = [ 'coreaudiosource.cc' ]
 extra_sources = [ ]
 
 if ardour['VST']:
@@ -180,11 +181,15 @@ if conf.CheckCHeader('sys/vfs.h'):
 if conf.CheckCHeader('/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h'):
     ardour.Append(LINKFLAGS="-framework CoreMIDI")
 
-if conf.CheckCHeader('/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h') and ardour['COREAUDIO'] == 1:
+if conf.CheckCHeader('/System/Library/Frameworks/AudioUnit.framework/Headers/AudioUnit.h') and ardour['AUDIOUNITS']:
+    ardour.Append(CXXFLAGS="-DHAVE_AUDIOUNITS")
+    ardour.Append(LINKFLAGS="-framework AudioUnit")
+    extra_sources += audiounit_files
+if conf.CheckCHeader('/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h') and ardour['COREAUDIO']:
     ardour.Append(CXXFLAGS="-DHAVE_COREAUDIO")    
     ardour.Append(LINKFLAGS="-framework AudioToolbox")
     extra_sources += coreaudio_files
-    
 
 if env['CONFIG_ARCH'] == 'apple':
     # this next line avoids issues with circular dependencies between libardour and libardour_cp.
@@ -212,7 +217,7 @@ ardour.Merge ([
 if ardour['LIBLO']:
     ardour.Merge ([ libraries['lo'] ])
 
-if ardour['COREAUDIO']:
+if ardour['COREAUDIO'] or ardour['AUDIOUNITS']:
     ardour.Merge ([ libraries['appleutility'] ])
 
 ardour.VersionBuild(['version.cc', 'ardour/version.h'], 'SConscript')
@@ -242,12 +247,12 @@ libardour = ardour.SharedLibrary('ardour', ardour_files + extra_sources + arch_s
 Default(libardour)
 
 if env['NLS']:
-       i18n (ardour, ardour_files + vst_files + coreaudio_files, env)
+       i18n (ardour, ardour_files + vst_files + coreaudio_files + audiounit_files, env)
 
 
 env.Alias('install', env.Install(os.path.join(install_prefix, 'lib/ardour2'), libardour))
              
 env.Alias('tarball', env.Distribute (env['DISTTREE'],
                                     [ 'SConscript', 'i18n.h', 'gettext.h', 'sse_functions.s', 'sse_functions_64bit.s' ] +
-                                    ardour_files + vst_files + coreaudio_files +
+                                    ardour_files + vst_files + coreaudio_files + audiounit_files +
                                     glob.glob('po/*.po') + glob.glob('ardour/*.h')))
index 5128c98a777ac9e5d09ae2502f8f4ffc3adc7afd..214e74156c6732cb1fe42848e64bc172758dfa06 100644 (file)
@@ -25,7 +25,7 @@
 #include <string>
 #include <cmath>
 
-#ifdef HAVE_COREAUDIO
+#if defined(HAVE_COREAUDIO) || defined(HAVE_AUDIOUNITS)
 #include <CoreFoundation/CoreFoundation.h>
 #endif
 
@@ -59,8 +59,9 @@ std::string path_expand (std::string);
 
 void compute_equal_power_fades (jack_nframes_t nframes, float* in, float* out);
 
-#ifdef HAVE_COREAUDIO
+#if defined(HAVE_COREAUDIO) || defined(HAVE_AUDIOUNITS)
 std::string CFStringRefToStdString(CFStringRef stringRef);
 #endif // HAVE_COREAUDIO
 
 #endif /* __ardour_utils_h__ */
+
index ad008f6312d4463444fe2db8b3929bcdb1184d02..3aa6d05be1fea88bc087318d349829c1583e8ab8 100644 (file)
@@ -432,9 +432,9 @@ AudioLibrary::safe_file_extension(string file)
         file.rfind(".vwe") == string::npos &&
         file.rfind(".paf") == string::npos &&
 #ifdef HAVE_COREAUDIO
-               file.rfind(".mp3") == string::npos &&
-               file.rfind(".aac") == string::npos &&
-               file.rfind(".mp4") == string::npos &&
+       file.rfind(".mp3") == string::npos &&
+       file.rfind(".aac") == string::npos &&
+       file.rfind(".mp4") == string::npos &&
 #endif // HAVE_COREAUDIO
         file.rfind(".voc") == string::npos);
 }
index ad9862181407fe0ba9389fae42d817756b5df266..57d5505a0f3c22331c3403c3a6b33a8904fd6977 100644 (file)
@@ -394,3 +394,4 @@ AUPluginInfo::setup_nchannels (CAComponentDescription& comp_desc)
                                              0, &cinfo, &info_size);
        }
 }
+
index 19b75619e3d87097e4520b3eede7d504604477f5..0d7e690a25b2f343e1811398f4518ca951c1f1f5 100644 (file)
@@ -31,16 +31,12 @@ CoreAudioSource::CoreAudioSource (const XMLNode& node)
        : AudioFileSource (node)
 {
        init (_name);
-       
-       AudioSourceCreated (this); /* EMIT SIGNAL */
 }
 
 CoreAudioSource::CoreAudioSource (const string& idstr, Flag flags)
        : AudioFileSource(idstr, flags)
 {
        init (idstr);
-
-       AudioSourceCreated (this); /* EMIT SIGNAL */
 }
 
 void 
index f9ead93dbce603ead221f5efc0d58b1a79c5db08..1c3ce510f31d243a5136ffe32e3482013980e65f 100644 (file)
@@ -35,7 +35,7 @@
 #include <ardour/vst_plugin.h>
 #endif
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNITS
 #include <ardour/audio_unit.h>
 #endif
 
@@ -513,7 +513,7 @@ PluginInsert::plugin_factory (boost::shared_ptr<Plugin> other)
 #ifdef VST_SUPPORT
        boost::shared_ptr<VSTPlugin> vp;
 #endif
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNITS
        boost::shared_ptr<AUPlugin> ap;
 #endif
 
@@ -523,7 +523,7 @@ PluginInsert::plugin_factory (boost::shared_ptr<Plugin> other)
        } else if ((vp = boost::dynamic_pointer_cast<VSTPlugin> (other)) != 0) {
                return boost::shared_ptr<Plugin> (new VSTPlugin (*vp));
 #endif
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNITS
        } else if ((ap = boost::dynamic_pointer_cast<AUPlugin> (other)) != 0) {
                return boost::shared_ptr<Plugin> (new AUPlugin (*ap));
 #endif
@@ -829,7 +829,7 @@ PluginInsert::type ()
 #ifdef VST_SUPPORT
        boost::shared_ptr<VSTPlugin> vp;
 #endif
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNITS
        boost::shared_ptr<AUPlugin> ap;
 #endif
        
@@ -841,7 +841,7 @@ PluginInsert::type ()
        } else if ((vp = boost::dynamic_pointer_cast<VSTPlugin> (other)) != 0) {
                return ARDOUR::VST;
 #endif
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNITS
        } else if ((ap = boost::dynamic_pointer_cast<AUPlugin> (other)) != 0) {
                return ARDOUR::AudioUnit;
 #endif
@@ -1068,3 +1068,4 @@ PortInsert::input_streams() const
 {
        return n_outputs ();
 }
+
index bedc32a0b359f53e951ef1f344458fea05b05b71..8d200b0ee413b30a273de56d59d90e81335bd72e 100644 (file)
@@ -261,7 +261,7 @@ ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginType ty
                break;
 #endif
 
-#ifdef HAVE_COREAUDIO
+#ifdef HAVE_AUDIOUNITS
        case ARDOUR::AudioUnit:
                plugs = AUPluginInfo::discover ();
                unique_id = 0; // Neither do AU.
@@ -282,3 +282,4 @@ ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginType ty
        
        return PluginPtr ((Plugin*) 0);
 }
+
index 8432bcbd6fd83e40db8830214c697b763ed45c2e..e5bbe96d5ee04840d22b5e310fe26f37cff4d2d1 100644 (file)
 #include <ardour/destructive_filesource.h>
 #include <ardour/configuration.h>
 
+#ifdef HAVE_COREAUDIO
+#include <ardour/coreaudiosource.h>
+#endif
+
 #include "i18n.h"
 
 using namespace ARDOUR;
@@ -31,8 +35,6 @@ using namespace std;
 sigc::signal<void,boost::shared_ptr<Source> > SourceFactory::SourceCreated;
 
 #ifdef HAVE_COREAUDIO
-
-
 boost::shared_ptr<Source>
 SourceFactory::create (const XMLNode& node)
 {
index 5f676964d262108e4ee7374dc9130038eda9cc21..9e8603827a106fd2584699f889f43f5dcf95e6b5 100644 (file)
@@ -253,7 +253,7 @@ path_expand (string path)
 #endif
 }
 
-#ifdef HAVE_COREAUDIO
+#if defined(HAVE_COREAUDIO) || defined(HAVE_AUDIOUNITS)
 string 
 CFStringRefToStdString(CFStringRef stringRef)
 {
@@ -297,4 +297,3 @@ compute_equal_power_fades (jack_nframes_t nframes, float* in, float* out)
                in[n] = inVal * (scale * inVal + 1.0f - scale);
        }
 }
-