try just removing all PLATFORM_WINDOWS conditionals in ipmidi code to see if it will...
[ardour.git] / libs / backends / coreaudio / coreaudio_pcmio.h
index 63ae495cbfa9140643d74133591e4ed126a599a9..5f9778e8456127b0a1da30da2a8770f3b4ca86ae 100644 (file)
@@ -16,6 +16,9 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#ifndef __libbackend_coreaudio_pcmio_h__
+#define __libbackend_coreaudio_pcmio_h__
+
 #include <CoreServices/CoreServices.h>
 #include <CoreAudio/CoreAudio.h>
 #include <AudioUnit/AudioUnit.h>
@@ -31,6 +34,8 @@
 #define AUHAL_INPUT_ELEMENT 1
 
 
+namespace ARDOUR {
+
 class CoreAudioPCM {
 public:
        CoreAudioPCM (void);
@@ -43,12 +48,16 @@ public:
 
        void     discover();
        void     device_list (std::map<size_t, std::string> &devices) const { devices = _devices;}
+       void     input_device_list (std::map<size_t, std::string> &devices) const { devices = _input_devices;}
+       void     output_device_list (std::map<size_t, std::string> &devices) const { devices = _output_devices;}
+       void     duplex_device_list (std::map<size_t, std::string> &devices) const { devices = _duplex_devices;}
 
        int      available_sample_rates (uint32_t device_id, std::vector<float>& sampleRates);
        int      available_buffer_sizes (uint32_t device_id, std::vector<uint32_t>& sampleRates);
        uint32_t available_channels (uint32_t device_id, bool input);
        float    current_sample_rate (uint32_t device_id, bool input = false);
        uint32_t get_latency (uint32_t device_id, bool input);
+       uint32_t get_latency (bool input);
 
        std::string cached_port_name (uint32_t portnum, bool input) const;
 
@@ -65,7 +74,7 @@ public:
                        uint32_t output_device,
                        uint32_t sample_rate,
                        uint32_t samples_per_period,
-                       int (process_callback (void*)),
+                       int (process_callback (void*, const uint32_t, const uint64_t)),
                        void * process_arg
                        );
 
@@ -142,7 +151,7 @@ private:
                        AudioDeviceID *created_device);
 
 
-       AudioUnit _auhal;
+       ::AudioUnit _auhal;
        AudioDeviceID* _device_ids;
        AudioBufferList* _input_audio_buffer_list;
        AudioBufferList* _output_audio_buffer_list;
@@ -160,7 +169,7 @@ private:
        bool     _in_process;
        size_t   _n_devices;
 
-       int (* _process_callback) (void*);
+       int (* _process_callback) (void*, const uint32_t, const uint64_t);
        void * _process_arg;
 
        void (* _error_callback) (void*);
@@ -181,6 +190,9 @@ private:
 
        // TODO proper device info struct
        std::map<size_t, std::string> _devices;
+       std::map<size_t, std::string> _input_devices;
+       std::map<size_t, std::string> _output_devices;
+       std::map<size_t, std::string> _duplex_devices;
        uint32_t * _device_ins;
        uint32_t * _device_outs;
        std::vector<std::string> _input_names;
@@ -188,3 +200,7 @@ private:
 
        pthread_mutex_t _discovery_lock;
 };
+
+} // namespace
+
+#endif /* __libbackend_coreaudio_pcmio_h__ */