mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-28 11:45:40 +08:00
[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:
@@ -141,10 +141,8 @@ namespace BlackMisc
|
||||
|
||||
CAudioDeviceInfoList CAudioDeviceInfoList::allInputDevices()
|
||||
{
|
||||
const QList<QAudioDeviceInfo> 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<QAudioDeviceInfo> 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<QAudioDeviceInfo> CAudioDeviceInfoList::allQtInputDevices()
|
||||
{
|
||||
const QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
|
||||
return devices;
|
||||
}
|
||||
|
||||
QList<QAudioDeviceInfo> CAudioDeviceInfoList::allQtOutputDevices()
|
||||
{
|
||||
const QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
|
||||
return devices;
|
||||
}
|
||||
|
||||
QAudioDeviceInfo CAudioDeviceInfoList::defaultInputDevice()
|
||||
{
|
||||
return QAudioDeviceInfo::defaultInputDevice();
|
||||
|
||||
/**
|
||||
const QList<QAudioDeviceInfo> devices = allQtInputDevices();
|
||||
if (devices.isEmpty()) { return devices.front(); }
|
||||
return QAudioDeviceInfo();
|
||||
**/
|
||||
}
|
||||
|
||||
QAudioDeviceInfo CAudioDeviceInfoList::defaultOutputDevice()
|
||||
{
|
||||
return QAudioDeviceInfo::defaultOutputDevice();
|
||||
|
||||
/**
|
||||
const QList<QAudioDeviceInfo> devices = allQtOutputDevices();
|
||||
if (devices.isEmpty()) { return devices.front(); }
|
||||
return QAudioDeviceInfo();
|
||||
**/
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -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 <QMetaType>
|
||||
#include <QAudioDeviceInfo>
|
||||
#include <QStringList>
|
||||
|
||||
namespace BlackMisc
|
||||
@@ -82,6 +83,10 @@ namespace BlackMisc
|
||||
static CAudioDeviceInfoList allInputDevices();
|
||||
static CAudioDeviceInfoList allOutputDevices();
|
||||
static CAudioDeviceInfoList allDevices();
|
||||
static QList<QAudioDeviceInfo> allQtInputDevices();
|
||||
static QList<QAudioDeviceInfo> allQtOutputDevices();
|
||||
static QAudioDeviceInfo defaultInputDevice();
|
||||
static QAudioDeviceInfo defaultOutputDevice();
|
||||
//! @}
|
||||
};
|
||||
} //namespace
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user