diff --git a/src/blackmisc/audio/audiodeviceinfolist.cpp b/src/blackmisc/audio/audiodeviceinfolist.cpp index 704e72f87..21d251363 100644 --- a/src/blackmisc/audio/audiodeviceinfolist.cpp +++ b/src/blackmisc/audio/audiodeviceinfolist.cpp @@ -141,10 +141,8 @@ namespace BlackMisc CAudioDeviceInfoList CAudioDeviceInfoList::allInputDevices() { - const QList inputDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); CAudioDeviceInfoList devices; - - for (const QAudioDeviceInfo &inputDevice : inputDevices) + for (const QAudioDeviceInfo &inputDevice : allQtInputDevices()) { const CAudioDeviceInfo d(CAudioDeviceInfo::InputDevice, inputDevice.deviceName()); if (! devices.contains(d)) { devices.push_back(d); } @@ -154,10 +152,8 @@ namespace BlackMisc CAudioDeviceInfoList CAudioDeviceInfoList::allOutputDevices() { - const QList outputDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); CAudioDeviceInfoList devices; - - for (const QAudioDeviceInfo &outputDevice : outputDevices) + for (const QAudioDeviceInfo &outputDevice : allQtOutputDevices()) { const CAudioDeviceInfo d(CAudioDeviceInfo::OutputDevice, outputDevice.deviceName()); if (! devices.contains(d)) { devices.push_back(d); } @@ -172,5 +168,39 @@ namespace BlackMisc return i; } + QList CAudioDeviceInfoList::allQtInputDevices() + { + const QList devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); + return devices; + } + + QList CAudioDeviceInfoList::allQtOutputDevices() + { + const QList devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); + return devices; + } + + QAudioDeviceInfo CAudioDeviceInfoList::defaultInputDevice() + { + return QAudioDeviceInfo::defaultInputDevice(); + + /** + const QList devices = allQtInputDevices(); + if (devices.isEmpty()) { return devices.front(); } + return QAudioDeviceInfo(); + **/ + } + + QAudioDeviceInfo CAudioDeviceInfoList::defaultOutputDevice() + { + return QAudioDeviceInfo::defaultOutputDevice(); + + /** + const QList devices = allQtOutputDevices(); + if (devices.isEmpty()) { return devices.front(); } + return QAudioDeviceInfo(); + **/ + } + } // namespace } // namespace diff --git a/src/blackmisc/audio/audiodeviceinfolist.h b/src/blackmisc/audio/audiodeviceinfolist.h index cc940f6db..fd8affef5 100644 --- a/src/blackmisc/audio/audiodeviceinfolist.h +++ b/src/blackmisc/audio/audiodeviceinfolist.h @@ -12,12 +12,13 @@ #define BLACKMISC_AUDIO_AUDIODEVICELIST_H #include "blackmisc/audio/audiodeviceinfo.h" -#include "blackmisc/blackmiscexport.h" #include "blackmisc/collection.h" #include "blackmisc/sequence.h" #include "blackmisc/variant.h" +#include "blackmisc/blackmiscexport.h" #include +#include #include namespace BlackMisc @@ -82,6 +83,10 @@ namespace BlackMisc static CAudioDeviceInfoList allInputDevices(); static CAudioDeviceInfoList allOutputDevices(); static CAudioDeviceInfoList allDevices(); + static QList allQtInputDevices(); + static QList allQtOutputDevices(); + static QAudioDeviceInfo defaultInputDevice(); + static QAudioDeviceInfo defaultOutputDevice(); //! @} }; } //namespace diff --git a/src/blacksound/audioutilities.cpp b/src/blacksound/audioutilities.cpp index e503fed09..a2edae2af 100644 --- a/src/blacksound/audioutilities.cpp +++ b/src/blacksound/audioutilities.cpp @@ -7,6 +7,7 @@ */ #include "audioutilities.h" +#include "blackmisc/audio/audiodeviceinfolist.h" #include #include #include @@ -85,12 +86,13 @@ namespace BlackSound { if (device.isDefault() || !device.isValid()) { - if (device.getType() == CAudioDeviceInfo::InputDevice) { return QAudioDeviceInfo::defaultInputDevice(); } - else { return QAudioDeviceInfo::defaultOutputDevice(); } + if (device.getType() == CAudioDeviceInfo::InputDevice) { return CAudioDeviceInfoList::defaultInputDevice(); } + else { return CAudioDeviceInfoList::defaultOutputDevice(); } } - const QAudio::Mode mode = device.isInputDevice() ? QAudio::AudioInput : QAudio::AudioOutput; - const QList allQtDevices = QAudioDeviceInfo::availableDevices(mode); + const QList allQtDevices = + device.isInputDevice() ? + CAudioDeviceInfoList::allQtInputDevices() : CAudioDeviceInfoList::allQtOutputDevices(); // Find the one with lowest latency. QList supportedDevices; @@ -155,8 +157,8 @@ namespace BlackSound QAudioDeviceInfo getHighestCompatibleOutputDevice(const CAudioDeviceInfo &device, QAudioFormat &format) { - if (device.isDefault()) { return QAudioDeviceInfo::defaultOutputDevice(); } - const QList allQtDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); + if (device.isDefault()) { return CAudioDeviceInfoList::defaultOutputDevice(); } + const QList allQtDevices = CAudioDeviceInfoList::allQtOutputDevices(); QList supportedDevices; for (const QAudioDeviceInfo &d : allQtDevices)