coreaudio support for multiple devices

This commit is contained in:
Robin Gareus 2015-05-05 17:28:31 +02:00
parent 4d2bc612f2
commit 1fe738a36e
4 changed files with 134 additions and 23 deletions

View file

@ -165,7 +165,11 @@ class CoreAudioBackend : public AudioBackend {
std::string name () const;
bool is_realtime () const;
bool use_separate_input_and_output_devices () const { return true; }
std::vector<DeviceStatus> enumerate_devices () const;
std::vector<DeviceStatus> enumerate_input_devices () const;
std::vector<DeviceStatus> enumerate_output_devices () const;
std::vector<float> available_sample_rates (const std::string& device) const;
std::vector<uint32_t> available_buffer_sizes (const std::string& device) const;
uint32_t available_input_channel_count (const std::string& device) const;
@ -175,6 +179,8 @@ class CoreAudioBackend : public AudioBackend {
bool can_change_buffer_size_when_running () const;
int set_device_name (const std::string&);
int set_input_device_name (const std::string&);
int set_output_device_name (const std::string&);
int set_sample_rate (float);
int set_buffer_size (uint32_t);
int set_interleaved (bool yn);
@ -189,6 +195,8 @@ class CoreAudioBackend : public AudioBackend {
/* Retrieving parameters */
std::string device_name () const;
std::string input_device_name () const;
std::string output_device_name () const;
float sample_rate () const;
uint32_t buffer_size () const;
bool interleaved () const;
@ -336,10 +344,13 @@ class CoreAudioBackend : public AudioBackend {
pthread_cond_t _freewheel_signal;
static std::vector<std::string> _midi_options;
static std::vector<AudioBackend::DeviceStatus> _audio_device_status;
static std::vector<AudioBackend::DeviceStatus> _input_audio_device_status;
static std::vector<AudioBackend::DeviceStatus> _output_audio_device_status;
static std::vector<AudioBackend::DeviceStatus> _duplex_audio_device_status;
static std::vector<AudioBackend::DeviceStatus> _midi_device_status;
mutable std::string _audio_device;
mutable std::string _input_audio_device;
mutable std::string _output_audio_device;
std::string _midi_driver_option;
/* audio settings */