update wavesaudio backend, now supports Windows (ASIO) as well as OS X (CoreAudio)
[ardour.git] / libs / backends / wavesaudio / waves_audiobackend.h
index 3a56f7b55ab9a27ba48e327cb18e5c8b484934ee..6fd91913d1d6faff955d2555b03d0a6f8f40f3d8 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014 Waves Audio Ltd.
+    Copyright (C) 2013 Valeriy Kamyshniy
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@
 class ArdourAudioDeviceManager : public WCMRCoreAudioDeviceManager
 {
   public:
-    ArdourAudioDeviceManager (WCMRAudioDeviceManagerClient *client) : WCMRCoreAudioDeviceManager (client, eFullDuplexDevices, true, eCABS_Simple, false) {};
+    ArdourAudioDeviceManager (WCMRAudioDeviceManagerClient *client) : WCMRCoreAudioDeviceManager (client, eAllDevices) {};
 };
 
 #elif defined (_WINDOWS)
@@ -51,7 +51,7 @@ class ArdourAudioDeviceManager : public WCMRCoreAudioDeviceManager
 class ArdourAudioDeviceManager : public WCMRPortAudioDeviceManager
 {
   public:
-    ArdourAudioDeviceManager (WCMRAudioDeviceManagerClient *client) : WCMRPortAudioDeviceManager (client, eFullDuplexDevices, paASIO) {};
+    ArdourAudioDeviceManager (WCMRAudioDeviceManagerClient *client) : WCMRPortAudioDeviceManager (client, eAllDevices) {};
 };
 
 #endif
@@ -103,10 +103,14 @@ class WavesMidiPort;
 
     virtual int set_device_name (const std::string& name);
 
+       virtual int drop_device();
+
     virtual int set_sample_rate (float);
 
     virtual int set_buffer_size (uint32_t);
 
+    virtual int set_sample_format (SampleFormat);
+
     virtual int set_interleaved (bool yn);
     
     virtual int set_input_channels (uint32_t);
@@ -123,6 +127,8 @@ class WavesMidiPort;
     
     virtual uint32_t buffer_size () const;
     
+    virtual SampleFormat sample_format () const;
+    
     virtual bool interleaved () const;
     
     virtual uint32_t input_channels () const;
@@ -275,6 +281,7 @@ class WavesMidiPort;
     WavesMidiDeviceManager _midi_device_manager;
 
     WCMRAudioDevice *_device;
+    SampleFormat _sample_format;
     bool _interleaved;
     static std::string __instantiated_name;
     uint32_t _input_channels;
@@ -317,8 +324,15 @@ class WavesMidiPort;
                                  pframes_t sample_time,
                                  uint64_t cycle_start_time_nanos);
 
+       int _reset_device (uint32_t buffer_size, float sample_rate);
     void _changed_midi_devices ();
 
+       // DO change sample rate and buffer size
+       int _buffer_size_change(uint32_t new_buffer_size);
+       int _sample_rate_change(float new_sample_rate);
+    
+    int _device_list_change();
+    
     int _register_system_audio_ports ();
     int _register_system_midi_ports ();