X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fbackends%2Fportaudio%2Fportaudio_io.h;h=c67fdc1b19c5efbfa653c88b46d51f9076a80a26;hb=6298246a009c32784aa1d789c5887390d113c4f5;hp=bfd4d1e0252cd37e0ff6d47e1a45f1bc94ec1b78;hpb=585930f0580bbb878095cee9029254510692a205;p=ardour.git diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h index bfd4d1e025..c67fdc1b19 100644 --- a/libs/backends/portaudio/portaudio_io.h +++ b/libs/backends/portaudio/portaudio_io.h @@ -35,20 +35,6 @@ public: PortAudioIO (void); ~PortAudioIO (void); - enum ErrorCode { - NoError = 0, - InitializationError, - DeInitializationError, - DeviceConfigNotSupportedError, - StreamOpenError, - StreamStartError, - StreamStopError, - StreamCloseError, - IOError, - BufferUnderrunError, - BufferOverrunError - }; - enum StandardDevices { DeviceNone = -2, DeviceDefault = -1 @@ -63,7 +49,7 @@ public: PaDeviceIndex get_default_input_device () const; PaDeviceIndex get_default_output_device () const; - void update_devices(); + bool update_devices(); void input_device_list (std::map &devices) const; void output_device_list (std::map &devices) const; @@ -77,19 +63,29 @@ public: long& preferred_size_frames, long& granularity); - bool get_asio_buffer_sizes (int device_id, std::vector& buffer_size); + bool get_asio_buffer_sizes(int device_id, + std::vector& buffer_size, + bool preferred_only); #endif std::string control_app_name (int device_id) const; void launch_control_app (int device_id); - ErrorCode open_blocking_stream(int device_input, - int device_output, - double sample_rate, - uint32_t samples_per_period); - ErrorCode start_stream(void); + PaErrorCode open_blocking_stream(int device_input, + int device_output, + double sample_rate, + uint32_t samples_per_period); + + PaErrorCode open_callback_stream(int device_input, + int device_output, + double sample_rate, + uint32_t samples_per_period, + PaStreamCallback* callback, + void* data); - ErrorCode close_stream(void); + PaErrorCode start_stream(void); + + PaErrorCode close_stream(void); uint32_t n_playback_channels (void) const { return _playback_channels; } uint32_t n_capture_channels (void) const { return _capture_channels; } @@ -106,6 +102,9 @@ public: int get_capture_channel (uint32_t chn, float *input, uint32_t n_samples); int set_playback_channel (uint32_t chn, const float *input, uint32_t n_samples); + float* get_capture_buffer () { return _input_buffer; } + float* get_playback_buffer () { return _output_buffer; } + private: // Methods static bool pa_initialize(); @@ -126,7 +125,7 @@ private: // Methods bool set_sample_rate_and_latency_from_stream(); bool allocate_buffers_for_blocking_api (uint32_t samples_per_period); - ErrorCode pre_stream_open(int device_input, + PaErrorCode pre_stream_open(int device_input, PaStreamParameters& inputParam, int device_output, PaStreamParameters& outputParam);