- public:
- CoreAudioBackend (AudioEngine& e, AudioBackendInfo& info);
- ~CoreAudioBackend ();
-
- /* AUDIOBACKEND API */
-
- 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<float> available_sample_rates2 (const std::string&, const std::string&) const;
- std::vector<uint32_t> available_buffer_sizes (const std::string& device) const;
- std::vector<uint32_t> available_buffer_sizes2 (const std::string&, const std::string&) const;
- uint32_t available_input_channel_count (const std::string& device) const;
- uint32_t available_output_channel_count (const std::string& device) const;
-
- bool can_change_sample_rate_when_running () const;
- 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);
- int set_input_channels (uint32_t);
- int set_output_channels (uint32_t);
- int set_systemic_input_latency (uint32_t);
- int set_systemic_output_latency (uint32_t);
- int set_systemic_midi_input_latency (std::string const, uint32_t) { return 0; }
- int set_systemic_midi_output_latency (std::string const, uint32_t) { return 0; }
-
- int reset_device () { return 0; };
-
- /* 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;
- uint32_t input_channels () const;
- uint32_t output_channels () const;
- uint32_t systemic_input_latency () const;
- uint32_t systemic_output_latency () const;
- uint32_t systemic_midi_input_latency (std::string const) const { return 0; }
- uint32_t systemic_midi_output_latency (std::string const) const { return 0; }
-
- bool can_set_systemic_midi_latencies () const { return false; /* XXX */}
-
- /* External control app */
- std::string control_app_name () const { return std::string ("Apple"); }
- void launch_control_app ();
-
- /* MIDI */
- std::vector<std::string> enumerate_midi_options () const;
- int set_midi_option (const std::string&);
- std::string midi_option () const;
-
- std::vector<DeviceStatus> enumerate_midi_devices () const {
- return std::vector<AudioBackend::DeviceStatus> ();
- }
- int set_midi_device_enabled (std::string const, bool) {
- return true;
- }
- bool midi_device_enabled (std::string const) const {
- return false;
- }
-
- // really private, but needing static access:
- int process_callback(uint32_t, uint64_t);
- void error_callback();
- void xrun_callback();
- void buffer_size_callback();
- void sample_rate_callback();
- void hw_changed_callback();
-
- protected:
- /* State Control */
- int _start (bool for_latency_measurement);
- public:
- int stop ();
- int freewheel (bool);
- float dsp_load () const;
- size_t raw_buffer_size (DataType t);
-
- /* Process time */
- framepos_t sample_time ();
- framepos_t sample_time_at_cycle_start ();
- pframes_t samples_since_cycle_start ();
-
- int create_process_thread (boost::function<void()> func);
- int join_process_threads ();
- bool in_process_thread ();
- uint32_t process_thread_count ();
-
- void update_latencies ();
+ public:
+ CoreAudioBackend (AudioEngine& e, AudioBackendInfo& info);
+ ~CoreAudioBackend ();
+
+ /* AUDIOBACKEND API */
+
+ 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<float> available_sample_rates2 (const std::string&, const std::string&) const;
+ std::vector<uint32_t> available_buffer_sizes (const std::string& device) const;
+ std::vector<uint32_t> available_buffer_sizes2 (const std::string&, const std::string&) const;
+ uint32_t available_input_channel_count (const std::string& device) const;
+ uint32_t available_output_channel_count (const std::string& device) const;
+
+ bool can_change_sample_rate_when_running () const;
+ 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);
+ int set_input_channels (uint32_t);
+ int set_output_channels (uint32_t);
+ int set_systemic_input_latency (uint32_t);
+ int set_systemic_output_latency (uint32_t);
+ int set_systemic_midi_input_latency (std::string const, uint32_t) { return 0; }
+ int set_systemic_midi_output_latency (std::string const, uint32_t) { return 0; }
+
+ int reset_device () { return 0; };
+
+ /* 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;
+ uint32_t input_channels () const;
+ uint32_t output_channels () const;
+ uint32_t systemic_input_latency () const;
+ uint32_t systemic_output_latency () const;
+ uint32_t systemic_midi_input_latency (std::string const) const { return 0; }
+ uint32_t systemic_midi_output_latency (std::string const) const { return 0; }
+
+ bool can_set_systemic_midi_latencies () const { return false; /* XXX */}
+
+ /* External control app */
+ std::string control_app_name () const { return std::string ("Apple"); }
+ void launch_control_app ();
+
+ /* MIDI */
+ std::vector<std::string> enumerate_midi_options () const;
+ int set_midi_option (const std::string&);
+ std::string midi_option () const;
+
+ std::vector<DeviceStatus> enumerate_midi_devices () const {
+ return std::vector<AudioBackend::DeviceStatus> ();
+ }
+ int set_midi_device_enabled (std::string const, bool) {
+ return true;
+ }
+ bool midi_device_enabled (std::string const) const {
+ return false;
+ }