Refactor part of PortAudioIO::pcm_setup into new method

This commit is contained in:
Tim Mayberry
2015-08-24 18:35:43 +10:00
parent 1cb36108bb
commit 82f84d6203
2 changed files with 26 additions and 7 deletions

View File

@@ -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,

View File

@@ -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>&);