summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-24 18:35:43 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:15 +1000
commit82f84d620383951732349b7864b009a2fa43c04f (patch)
treef646f930274054c94c3464a41d10d6c0364a3359
parent1cb36108bbb97e2c7494b48c93964b1a47bf16b4 (diff)
Refactor part of PortAudioIO::pcm_setup into new method
-rw-r--r--libs/backends/portaudio/portaudio_io.cc28
-rw-r--r--libs/backends/portaudio/portaudio_io.h5
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>&);