summaryrefslogtreecommitdiff
path: root/libs/backends/coreaudio/coreaudio_pcmio.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-03-06 21:26:07 +0100
committerRobin Gareus <robin@gareus.org>2015-03-06 23:26:05 +0100
commit13bad670facd14ab63dccb8b1a0f1c7b8498e6bf (patch)
tree231987bfd57d21c5fe23e1fd35b9557102c7c709 /libs/backends/coreaudio/coreaudio_pcmio.h
parent3b941fc0fa23d5612497a99771676ac70fdd10ad (diff)
more ongoing work on the coreaudio backend
* audio port names * latency compensation * xrun reporting * various fixes and cleanup
Diffstat (limited to 'libs/backends/coreaudio/coreaudio_pcmio.h')
-rw-r--r--libs/backends/coreaudio/coreaudio_pcmio.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/libs/backends/coreaudio/coreaudio_pcmio.h b/libs/backends/coreaudio/coreaudio_pcmio.h
index b249dedbf3..6bb3d08356 100644
--- a/libs/backends/coreaudio/coreaudio_pcmio.h
+++ b/libs/backends/coreaudio/coreaudio_pcmio.h
@@ -64,7 +64,6 @@ public:
void * process_arg
);
- // TODO: combine callbacks below, add a enum type
void set_error_callback (
void ( error_callback (void*)),
void * error_arg
@@ -80,6 +79,13 @@ public:
_hw_changed_callback = callback;
_hw_changed_arg = arg;
}
+ void set_xrun_callback (
+ void ( callback (void*)),
+ void * arg
+ ) {
+ _xrun_callback = callback;
+ _xrun_arg = arg;
+ }
// must be called from process_callback;
int get_capture_channel (uint32_t chn, float *input, uint32_t n_samples);
@@ -94,7 +100,8 @@ public:
UInt32 inNumberFrames,
AudioBufferList* ioData);
- void hwPropertyChange();
+ void xrun_callback ();
+ void hw_changed_callback ();
private:
int set_device_sample_rate (uint32 device_id, float rate, bool input);
@@ -106,6 +113,9 @@ private:
AudioBufferList* _input_audio_buffer_list;
AudioBufferList* _output_audio_buffer_list;
+ AudioDeviceID _active_input;
+ AudioDeviceID _active_output;
+
int _state;
uint32_t _max_samples_per_period;
@@ -124,6 +134,10 @@ private:
void (* _hw_changed_callback) (void*);
void * _hw_changed_arg;
+ void (* _xrun_callback) (void*);
+ void * _xrun_arg;
+
+
// TODO proper device info struct
std::map<size_t, std::string> _devices;
uint32_t * _device_ins;