diff options
author | Robin Gareus <robin@gareus.org> | 2015-04-15 03:04:19 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-04-15 03:05:09 +0200 |
commit | 9391da0c24000ac479adc00a04a7ad7e197f2049 (patch) | |
tree | d47855fdc8f1f380da9a2c03763c9690ad872e00 /libs/backends/portaudio/portaudio_io.cc | |
parent | 15bf19961f743d03581d0dee15858444e775df82 (diff) |
portaudio backend: allow Pa_GetDeviceInfo to fail.
Diffstat (limited to 'libs/backends/portaudio/portaudio_io.cc')
-rw-r--r-- | libs/backends/portaudio/portaudio_io.cc | 46 |
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); } |