diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-08-24 18:35:43 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-09-02 12:07:15 +1000 |
commit | 82f84d620383951732349b7864b009a2fa43c04f (patch) | |
tree | f646f930274054c94c3464a41d10d6c0364a3359 | |
parent | 1cb36108bbb97e2c7494b48c93964b1a47bf16b4 (diff) |
Refactor part of PortAudioIO::pcm_setup into new method
-rw-r--r-- | libs/backends/portaudio/portaudio_io.cc | 28 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_io.h | 5 |
2 files changed, 26 insertions, 7 deletions
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc index f0a6450c28..18eae36fd9 100644 --- a/libs/backends/portaudio/portaudio_io.cc +++ b/libs/backends/portaudio/portaudio_io.cc @@ -690,9 +690,10 @@ PortAudioIO::get_output_stream_params(int device_output, } PortAudioIO::ErrorCode -PortAudioIO::pcm_setup ( - int device_input, int device_output, - double sample_rate, uint32_t samples_per_period) +PortAudioIO::pre_stream_open(int device_input, + PaStreamParameters& inputParam, + int device_output, + PaStreamParameters& outputParam) { if (!pa_initialize()) { DEBUG_AUDIO ("PortAudio Initialization Failed\n"); @@ -708,9 +709,6 @@ PortAudioIO::pcm_setup ( return DeviceConfigNotSupportedError; } - PaStreamParameters inputParam; - PaStreamParameters outputParam; - if (get_input_stream_params(device_input, inputParam)) { _capture_channels = inputParam.channelCount; } @@ -728,9 +726,25 @@ PortAudioIO::pcm_setup ( _capture_channels, _playback_channels)); + return NoError; +} + +PortAudioIO::ErrorCode +PortAudioIO::pcm_setup(int device_input, + int device_output, + double sample_rate, + uint32_t samples_per_period) +{ + PaStreamParameters inputParam; + PaStreamParameters outputParam; + + ErrorCode error_code = + pre_stream_open(device_input, inputParam, device_output, outputParam); + + if (error_code != NoError) return error_code; + PaError err = paNoError; - // XXX re-consider using callback API, testing needed. err = Pa_OpenStream ( &_stream, _capture_channels > 0 ? &inputParam: NULL, diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h index 71200b6e15..7b54f676fe 100644 --- a/libs/backends/portaudio/portaudio_io.h +++ b/libs/backends/portaudio/portaudio_io.h @@ -126,6 +126,11 @@ 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, + PaStreamParameters& inputParam, + int device_output, + PaStreamParameters& outputParam); + void reset_stream_dependents (); static void get_default_sample_rates(std::vector<float>&); |