summaryrefslogtreecommitdiff
path: root/libs/backends/portaudio/portaudio_io.cc
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-23 17:37:14 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:14 +1000
commit8e0e3fcdee28a7a7a4ba6b3e26505a57c37c6dfa (patch)
tree7eef5c35eebf85569fdde1cc88e76977268fc356 /libs/backends/portaudio/portaudio_io.cc
parent58cfd00e5a41d38a49e8672b535a62b7fff3da2d (diff)
Refactor part of PortAudioIO::pcm_setup into new method
Diffstat (limited to 'libs/backends/portaudio/portaudio_io.cc')
-rw-r--r--libs/backends/portaudio/portaudio_io.cc43
1 files changed, 26 insertions, 17 deletions
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc
index 4cb10c5431..c4711e06b2 100644
--- a/libs/backends/portaudio/portaudio_io.cc
+++ b/libs/backends/portaudio/portaudio_io.cc
@@ -560,6 +560,31 @@ PortAudioIO::pcm_start()
}
bool
+PortAudioIO::set_sample_rate_and_latency_from_stream ()
+{
+ const PaStreamInfo* nfo_s = Pa_GetStreamInfo(_stream);
+
+ if (nfo_s == NULL) {
+ return false;
+ }
+
+ _cur_sample_rate = nfo_s->sampleRate;
+ _cur_input_latency = nfo_s->inputLatency * _cur_sample_rate;
+ _cur_output_latency = nfo_s->outputLatency * _cur_sample_rate;
+
+ DEBUG_AUDIO (string_compose ("PA Sample Rate %1 SPS\n", _cur_sample_rate));
+
+ DEBUG_AUDIO (string_compose ("PA Input Latency %1ms, %2 spl\n",
+ 1e3 * nfo_s->inputLatency,
+ _cur_input_latency));
+
+ DEBUG_AUDIO (string_compose ("PA Output Latency %1ms, %2 spl\n",
+ 1e3 * nfo_s->outputLatency,
+ _cur_output_latency));
+ return true;
+}
+
+bool
PortAudioIO::allocate_buffers_for_blocking_api (uint32_t samples_per_period)
{
if (_capture_channels > 0) {
@@ -592,7 +617,6 @@ PortAudioIO::pcm_setup (
PaError err = paNoError;
const PaDeviceInfo *nfo_in = NULL;
const PaDeviceInfo *nfo_out = NULL;
- const PaStreamInfo *nfo_s = NULL;
if (!initialize_pa()) {
DEBUG_AUDIO ("PortAudio Initialization Failed\n");
@@ -693,27 +717,12 @@ PortAudioIO::pcm_setup (
return -1;
}
- nfo_s = Pa_GetStreamInfo (_stream);
- if (!nfo_s) {
+ if (!set_sample_rate_and_latency_from_stream()) {
DEBUG_AUDIO ("PortAudio failed to query stream information.\n");
pcm_stop();
return -1;
}
- _cur_sample_rate = nfo_s->sampleRate;
- _cur_input_latency = nfo_s->inputLatency * _cur_sample_rate;
- _cur_output_latency = nfo_s->outputLatency * _cur_sample_rate;
-
- DEBUG_AUDIO (string_compose ("PA Sample Rate %1 SPS\n", _cur_sample_rate));
-
- DEBUG_AUDIO (string_compose ("PA Input Latency %1ms, %2 spl\n",
- 1e3 * nfo_s->inputLatency,
- _cur_input_latency));
-
- DEBUG_AUDIO (string_compose ("PA Output Latency %1ms, %2 spl\n",
- 1e3 * nfo_s->outputLatency,
- _cur_output_latency));
-
_state = 0;
if (!allocate_buffers_for_blocking_api(samples_per_period)) {