summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-24 10:50:00 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:15 +1000
commitfd0b54f4593b68bcebb7a5c4b3acab3c437e0fff (patch)
tree5359f43e89a40d4f902725e2e124741ffd1fd7e4
parent4e75220661cdede1aed3465a6fed3049fbc29e50 (diff)
Use PortAudioIO::ErrorCode as return value from PortAudioIO::pcm_setup
-rw-r--r--libs/backends/portaudio/portaudio_backend.cc22
-rw-r--r--libs/backends/portaudio/portaudio_io.cc22
-rw-r--r--libs/backends/portaudio/portaudio_io.h10
3 files changed, 25 insertions, 29 deletions
diff --git a/libs/backends/portaudio/portaudio_backend.cc b/libs/backends/portaudio/portaudio_backend.cc
index 067e1e5b7a..882fb47487 100644
--- a/libs/backends/portaudio/portaudio_backend.cc
+++ b/libs/backends/portaudio/portaudio_backend.cc
@@ -456,20 +456,22 @@ PortAudioBackend::_start (bool for_latency_measurement)
_freewheeling = false;
_freewheel = false;
- _pcmio->pcm_setup (name_to_id(_input_audio_device), name_to_id(_output_audio_device), _samplerate, _samples_per_period);
+ PortAudioIO::ErrorCode err;
- switch (_pcmio->state ()) {
- case 0: /* OK */
- break;
- case -1:
- PBD::error << get_error_string(AudioDeviceOpenError) << endmsg;
+ err = _pcmio->pcm_setup(name_to_id(_input_audio_device),
+ name_to_id(_output_audio_device),
+ _samplerate,
+ _samples_per_period);
+
+ switch (err) {
+ case PortAudioIO::NoError:
break;
+ case PortAudioIO::DeviceConfigNotSupportedError:
+ PBD::error << get_error_string(DeviceConfigurationNotSupportedError)
+ << endmsg;
+ return -1;
default:
PBD::error << get_error_string(AudioDeviceOpenError) << endmsg;
- break;
- }
-
- if (_pcmio->state ()) {
return -1;
}
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc
index 419c0b0263..698eab30de 100644
--- a/libs/backends/portaudio/portaudio_io.cc
+++ b/libs/backends/portaudio/portaudio_io.cc
@@ -681,18 +681,16 @@ PortAudioIO::get_output_stream_params(int device_output,
return true;
}
-int
+PortAudioIO::ErrorCode
PortAudioIO::pcm_setup (
int device_input, int device_output,
double sample_rate, uint32_t samples_per_period)
{
_state = -2;
- PaError err = paNoError;
-
if (!initialize_pa()) {
DEBUG_AUDIO ("PortAudio Initialization Failed\n");
- return -1;
+ return InitializationError;
}
reset_stream_dependents ();
@@ -701,10 +699,7 @@ PortAudioIO::pcm_setup (
"PortAudio Device IDs: i:%1 o:%2\n", device_input, device_output));
if (device_input == DeviceNone && device_output == DeviceNone) {
- // just send the error msg for now rather than return it
- error << AudioBackend::get_error_string(AudioBackend::DeviceConfigurationNotSupportedError)
- << endmsg;
- return -1;
+ return DeviceConfigNotSupportedError;
}
PaStreamParameters inputParam;
@@ -720,13 +715,14 @@ PortAudioIO::pcm_setup (
if (_capture_channels == 0 && _playback_channels == 0) {
DEBUG_AUDIO("PortAudio no input or output channels.\n");
- return -1;
+ return DeviceConfigNotSupportedError;
}
DEBUG_AUDIO (string_compose ("PortAudio Channels: in:%1 out:%2\n",
_capture_channels,
_playback_channels));
+ PaError err = paNoError;
// XXX re-consider using callback API, testing needed.
err = Pa_OpenStream (
@@ -740,22 +736,22 @@ PortAudioIO::pcm_setup (
if (err != paNoError) {
DEBUG_AUDIO ("PortAudio failed to start stream.\n");
- return -1;
+ return StreamOpenError;
}
if (!set_sample_rate_and_latency_from_stream()) {
DEBUG_AUDIO ("PortAudio failed to query stream information.\n");
pcm_stop();
- return -1;
+ return StreamOpenError;
}
_state = 0;
if (!allocate_buffers_for_blocking_api(samples_per_period)) {
pcm_stop();
- return -1;
+ return StreamOpenError;
}
- return 0;
+ return NoError;
}
int
diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h
index 8b04337c73..3c21deccee 100644
--- a/libs/backends/portaudio/portaudio_io.h
+++ b/libs/backends/portaudio/portaudio_io.h
@@ -90,12 +90,10 @@ public:
void pcm_stop (void);
int pcm_start (void);
- int pcm_setup (
- int device_input,
- int device_output,
- double sample_rate,
- uint32_t samples_per_period
- );
+ ErrorCode pcm_setup(int device_input,
+ int device_output,
+ double sample_rate,
+ uint32_t samples_per_period);
uint32_t n_playback_channels (void) const { return _playback_channels; }
uint32_t n_capture_channels (void) const { return _capture_channels; }