[AFV] Ref T739, encapsulate defaultXXDevice calls

* based on bug: https://bugreports.qt.io/plugins/servlet/mobile#issue/QTBUG-55631
* approach: avoid calls to default device (did not work out)
* kept encapsulation as it easier allows to text/apply workarounds
This commit is contained in:
Klaus Basan
2019-10-17 01:47:59 +02:00
parent 2dbe8464f4
commit 9959b12b9d
3 changed files with 50 additions and 13 deletions

View File

@@ -7,6 +7,7 @@
*/
#include "audioutilities.h"
#include "blackmisc/audio/audiodeviceinfolist.h"
#include <QStringBuilder>
#include <QAudioInput>
#include <QAudioOutput>
@@ -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<QAudioDeviceInfo> allQtDevices = QAudioDeviceInfo::availableDevices(mode);
const QList<QAudioDeviceInfo> allQtDevices =
device.isInputDevice() ?
CAudioDeviceInfoList::allQtInputDevices() : CAudioDeviceInfoList::allQtOutputDevices();
// Find the one with lowest latency.
QList<QAudioDeviceInfo> supportedDevices;
@@ -155,8 +157,8 @@ namespace BlackSound
QAudioDeviceInfo getHighestCompatibleOutputDevice(const CAudioDeviceInfo &device, QAudioFormat &format)
{
if (device.isDefault()) { return QAudioDeviceInfo::defaultOutputDevice(); }
const QList<QAudioDeviceInfo> allQtDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
if (device.isDefault()) { return CAudioDeviceInfoList::defaultOutputDevice(); }
const QList<QAudioDeviceInfo> allQtDevices = CAudioDeviceInfoList::allQtOutputDevices();
QList<QAudioDeviceInfo> supportedDevices;
for (const QAudioDeviceInfo &d : allQtDevices)