23 #ifndef INCLUDED_AUDIO_OSX_SOURCE_H
24 #define INCLUDED_AUDIO_OSX_SOURCE_H
28 #include <AudioToolbox/AudioToolbox.h>
29 #include <AudioUnit/AudioUnit.h>
42 Float64 d_deviceSampleRate, d_outputSampleRate;
44 UInt32 d_inputBufferSizeFrames, d_inputBufferSizeBytes;
45 UInt32 d_outputBufferSizeFrames, d_outputBufferSizeBytes;
46 UInt32 d_deviceBufferSizeFrames, d_deviceBufferSizeBytes;
47 UInt32 d_leadSizeFrames, d_leadSizeBytes;
48 UInt32 d_trailSizeFrames, d_trailSizeBytes;
49 UInt32 d_extraBufferSizeFrames, d_extraBufferSizeBytes;
50 UInt32 d_queueSampleCount, d_max_sample_count;
51 UInt32 d_n_AvailableInputFrames, d_n_ActualInputFrames;
52 UInt32 d_n_user_channels, d_n_max_channels, d_n_deviceChannels;
53 bool d_do_block, d_passThrough, d_waiting_for_data;
60 AudioBufferList* d_InputBuffer;
61 AudioBufferList* d_OutputBuffer;
62 AudioConverterRef d_AudioConverter;
66 const std::string device_name =
"",
68 int channel_config = -1,
69 int max_sample_count = -1);
79 int work (
int noutput_items,
84 void SetDefaultInputDeviceAsCurrent ();
86 void AllocAudioBufferList (AudioBufferList** t_ABL,
88 UInt32 inputBufferSizeBytes);
90 void FreeAudioBufferList (AudioBufferList** t_ABL);
92 static OSStatus ConverterCallback (AudioConverterRef inAudioConverter,
93 UInt32* ioNumberDataPackets,
94 AudioBufferList* ioData,
95 AudioStreamPacketDescription** outASPD,
98 static OSStatus AUInputCallback (
void *inRefCon,
99 AudioUnitRenderActionFlags *ioActionFlags,
100 const AudioTimeStamp *inTimeStamp,
102 UInt32 inNumberFrames,
103 AudioBufferList *ioData);
104 #if _OSX_DO_LISTENERS_
105 static OSStatus UnitListener (
void *inRefCon,
107 AudioUnitPropertyID inID,
108 AudioUnitScope inScope,
109 AudioUnitElement inElement);
111 static OSStatus HardwareListener (AudioHardwarePropertyID inPropertyID,