summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-04-15 03:04:19 +0200
committerRobin Gareus <robin@gareus.org>2015-04-15 03:05:09 +0200
commit9391da0c24000ac479adc00a04a7ad7e197f2049 (patch)
treed47855fdc8f1f380da9a2c03763c9690ad872e00
parent15bf19961f743d03581d0dee15858444e775df82 (diff)
portaudio backend: allow Pa_GetDeviceInfo to fail.
-rw-r--r--libs/backends/portaudio/portaudio_io.cc46
1 files changed, 25 insertions, 21 deletions
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc
index 1a254f27b7..18a676f7a9 100644
--- a/libs/backends/portaudio/portaudio_io.cc
+++ b/libs/backends/portaudio/portaudio_io.cc
@@ -78,31 +78,35 @@ PortAudioIO::available_sample_rates(int device_id, std::vector<float>& sampleRat
sampleRates.clear();
const PaDeviceInfo* nfo = Pa_GetDeviceInfo(device_id);
- PaStreamParameters inputParam;
- PaStreamParameters outputParam;
-
- inputParam.device = device_id;
- inputParam.channelCount = nfo->maxInputChannels;
- inputParam.sampleFormat = paFloat32;
- inputParam.suggestedLatency = 0;
- inputParam.hostApiSpecificStreamInfo = 0;
-
- outputParam.device = device_id;
- outputParam.channelCount = nfo->maxOutputChannels;
- outputParam.sampleFormat = paFloat32;
- outputParam.suggestedLatency = 0;
- outputParam.hostApiSpecificStreamInfo = 0;
-
- for (uint32_t i = 0; i < sizeof(ardourRates)/sizeof(float); ++i) {
- if (paFormatIsSupported == Pa_IsFormatSupported(
- nfo->maxInputChannels > 0 ? &inputParam : NULL,
- nfo->maxOutputChannels > 0 ? &outputParam : NULL,
- ardourRates[i])) {
- sampleRates.push_back (ardourRates[i]);
+ if (nfo) {
+ PaStreamParameters inputParam;
+ PaStreamParameters outputParam;
+
+ inputParam.device = device_id;
+ inputParam.channelCount = nfo->maxInputChannels;
+ inputParam.sampleFormat = paFloat32;
+ inputParam.suggestedLatency = 0;
+ inputParam.hostApiSpecificStreamInfo = 0;
+
+ outputParam.device = device_id;
+ outputParam.channelCount = nfo->maxOutputChannels;
+ outputParam.sampleFormat = paFloat32;
+ outputParam.suggestedLatency = 0;
+ outputParam.hostApiSpecificStreamInfo = 0;
+
+ for (uint32_t i = 0; i < sizeof(ardourRates)/sizeof(float); ++i) {
+ if (paFormatIsSupported == Pa_IsFormatSupported(
+ nfo->maxInputChannels > 0 ? &inputParam : NULL,
+ nfo->maxOutputChannels > 0 ? &outputParam : NULL,
+ ardourRates[i])) {
+ sampleRates.push_back (ardourRates[i]);
+ }
}
}
if (sampleRates.empty()) {
+ // fill in something..
+ sampleRates.push_back (44100.0);
sampleRates.push_back (48000.0);
}