diff options
Diffstat (limited to 'gr-audio/lib/osx/osx_source.h')
-rw-r--r-- | gr-audio/lib/osx/osx_source.h | 199 |
1 files changed, 92 insertions, 107 deletions
diff --git a/gr-audio/lib/osx/osx_source.h b/gr-audio/lib/osx/osx_source.h index 3c9147d26c..688ff3c32d 100644 --- a/gr-audio/lib/osx/osx_source.h +++ b/gr-audio/lib/osx/osx_source.h @@ -29,147 +29,132 @@ #include "circular_buffer.h" namespace gr { - namespace audio { - - /*! - * \brief audio source using OSX - * \ingroup audio_blk - * - * Input signature is one or two streams of floats. - * Samples must be in the range [-1,1]. - */ - class osx_source : public source - { - private: - - Float64 d_device_sample_rate, d_output_sample_rate; - UInt32 d_input_buffer_size_frames, d_input_buffer_size_bytes; - UInt32 d_output_buffer_size_frames, d_output_buffer_size_bytes; - UInt32 d_device_buffer_size_frames, d_device_buffer_size_bytes; - UInt32 d_lead_size_frames, d_lead_size_bytes; - UInt32 d_trail_size_frames, d_trail_size_bytes; - UInt32 d_extra_buffer_size_frames, d_extra_buffer_size_bytes; - UInt32 d_queue_sample_count, d_buffer_sample_count; - UInt32 d_n_available_input_frames, d_n_actual_input_frames; - UInt32 d_n_user_channels, d_n_dev_channels; - bool d_ok_to_block, d_pass_through; - bool d_waiting_for_data, d_do_reset, d_hardware_changed; - bool d_using_default_device; - gr::thread::mutex d_internal; - gr::thread::condition_variable d_cond_data; - std::vector < circular_buffer<float>* > d_buffers; - std::string d_desired_name, d_selected_name; +namespace audio { - // CoreAudio variables - - AudioDeviceID d_input_ad_id; - AudioUnit d_input_au; - AudioBufferList* d_input_buffer; - AudioBufferList* d_output_buffer; - AudioConverterRef d_audio_converter; +/*! + * \brief audio source using OSX + * \ingroup audio_blk + * + * Input signature is one or two streams of floats. + * Samples must be in the range [-1,1]. + */ +class osx_source : public source +{ +private: + Float64 d_device_sample_rate, d_output_sample_rate; + UInt32 d_input_buffer_size_frames, d_input_buffer_size_bytes; + UInt32 d_output_buffer_size_frames, d_output_buffer_size_bytes; + UInt32 d_device_buffer_size_frames, d_device_buffer_size_bytes; + UInt32 d_lead_size_frames, d_lead_size_bytes; + UInt32 d_trail_size_frames, d_trail_size_bytes; + UInt32 d_extra_buffer_size_frames, d_extra_buffer_size_bytes; + UInt32 d_queue_sample_count, d_buffer_sample_count; + UInt32 d_n_available_input_frames, d_n_actual_input_frames; + UInt32 d_n_user_channels, d_n_dev_channels; + bool d_ok_to_block, d_pass_through; + bool d_waiting_for_data, d_do_reset, d_hardware_changed; + bool d_using_default_device; + gr::thread::mutex d_internal; + gr::thread::condition_variable d_cond_data; + std::vector<circular_buffer<float>*> d_buffers; + std::string d_desired_name, d_selected_name; - // d_asbd_device: ASBD of the device that is creating the input - // data stream + // CoreAudio variables - AudioStreamBasicDescription d_asbd_device; + AudioDeviceID d_input_ad_id; + AudioUnit d_input_au; + AudioBufferList* d_input_buffer; + AudioBufferList* d_output_buffer; + AudioConverterRef d_audio_converter; - // d_asbd_client: ASBD of the client side (output) of the - // hardware device + // d_asbd_device: ASBD of the device that is creating the input + // data stream - AudioStreamBasicDescription d_asbd_client; + AudioStreamBasicDescription d_asbd_device; - // d_asbd_user: ASBD of the user's arguments, if an audio - // converter is needed outside that provided by the client side. + // d_asbd_client: ASBD of the client side (output) of the + // hardware device - AudioStreamBasicDescription d_asbd_user; + AudioStreamBasicDescription d_asbd_client; - public: + // d_asbd_user: ASBD of the user's arguments, if an audio + // converter is needed outside that provided by the client side. - osx_source(int sample_rate, - const std::string& device_name, - bool ok_to_block); + AudioStreamBasicDescription d_asbd_user; - virtual inline ~osx_source() { - teardown(); - } +public: + osx_source(int sample_rate, const std::string& device_name, bool ok_to_block); - virtual bool start(); - virtual bool stop(); + virtual inline ~osx_source() { teardown(); } - virtual bool check_topology(int ninputs, int noutputs); + virtual bool start(); + virtual bool stop(); - virtual int work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); + virtual bool check_topology(int ninputs, int noutputs); - inline void reset(bool hardware_changed) { - d_hardware_changed = hardware_changed; - d_do_reset = true; - } + virtual int work(int noutput_items, + gr_vector_const_void_star& input_items, + gr_vector_void_star& output_items); - private: + inline void reset(bool hardware_changed) + { + d_hardware_changed = hardware_changed; + d_do_reset = true; + } - bool is_running(); +private: + bool is_running(); - void setup(); + void setup(); - void teardown(); + void teardown(); - void alloc_audio_buffer_list - (AudioBufferList** t_abl, - UInt32 n_channels, - UInt32 input_buffer_size_bytes); + void alloc_audio_buffer_list(AudioBufferList** t_abl, + UInt32 n_channels, + UInt32 input_buffer_size_bytes); - void free_audio_buffer_list - (AudioBufferList** t_abl); + void free_audio_buffer_list(AudioBufferList** t_abl); - static OSStatus converter_callback - (AudioConverterRef in_audio_converter, - UInt32* io_number_data_packets, - AudioBufferList* io_data, - AudioStreamPacketDescription** out_aspd, - void* in_user_data); + static OSStatus converter_callback(AudioConverterRef in_audio_converter, + UInt32* io_number_data_packets, + AudioBufferList* io_data, + AudioStreamPacketDescription** out_aspd, + void* in_user_data); - static OSStatus au_input_callback - (void *in_ref_con, - AudioUnitRenderActionFlags *io_action_flags, - const AudioTimeStamp *in_time_stamp, - UInt32 in_bus_number, - UInt32 in_number_frames, - AudioBufferList *io_data); + static OSStatus au_input_callback(void* in_ref_con, + AudioUnitRenderActionFlags* io_action_flags, + const AudioTimeStamp* in_time_stamp, + UInt32 in_bus_number, + UInt32 in_number_frames, + AudioBufferList* io_data); #ifndef GR_USE_OLD_AUDIO_UNIT - // OSX 10.4 and newer + // OSX 10.4 and newer - static OSStatus hardware_listener - (AudioObjectID in_object_id, - UInt32 in_num_addresses, - const AudioObjectPropertyAddress in_addresses[], - void* in_client_data); + static OSStatus hardware_listener(AudioObjectID in_object_id, + UInt32 in_num_addresses, + const AudioObjectPropertyAddress in_addresses[], + void* in_client_data); - static OSStatus default_listener - (AudioObjectID in_object_id, - UInt32 in_num_addresses, - const AudioObjectPropertyAddress in_addresses[], - void* in_client_data); + static OSStatus default_listener(AudioObjectID in_object_id, + UInt32 in_num_addresses, + const AudioObjectPropertyAddress in_addresses[], + void* in_client_data); #else - // OSX 10.6 and older; removed as of 10.7 + // OSX 10.6 and older; removed as of 10.7 - static OSStatus hardware_listener - (AudioHardwarePropertyID in_property_id, - void* in_client_data); + static OSStatus hardware_listener(AudioHardwarePropertyID in_property_id, + void* in_client_data); - static OSStatus default_listener - (AudioHardwarePropertyID in_property_id, - void* in_client_data); + static OSStatus default_listener(AudioHardwarePropertyID in_property_id, + void* in_client_data); #endif - - }; - } /* namespace audio */ +}; +} /* namespace audio */ } /* namespace gr */ #endif /* INCLUDED_AUDIO_OSX_SOURCE_H */ |