[AFV] Ref T739, default device handling

* renamed some device list functions
* improved default device handling
This commit is contained in:
Klaus Basan
2019-10-27 02:51:48 +01:00
committed by Mat Sutcliffe
parent 5150fb4e86
commit aed1103ce6
5 changed files with 66 additions and 28 deletions

View File

@@ -12,6 +12,7 @@
#include <QStringBuilder>
#include <QHostInfo>
#include <QtGlobal>
#include <QAudioDeviceInfo>
namespace BlackMisc
{
@@ -27,6 +28,15 @@ namespace BlackMisc
m_deviceName(name), m_hostName(QHostInfo::localHostName())
{ }
bool CAudioDeviceInfo::isDefault() const
{
if (m_deviceName.isEmpty()) { return false; }
if (m_deviceName == "default") { return true; }
if (this->isInputDevice() && m_deviceName == QAudioDeviceInfo::defaultInputDevice().deviceName()) { return true; }
if (this->isOutputDevice() && m_deviceName == QAudioDeviceInfo::defaultOutputDevice().deviceName()) { return true; }
return false;
}
bool CAudioDeviceInfo::matchesNameTypeHostName(const CAudioDeviceInfo &device) const
{
return device.getType() == this->getType() &&
@@ -45,6 +55,16 @@ namespace BlackMisc
return Unknown;
}
CAudioDeviceInfo CAudioDeviceInfo::getDefaultOutputDevice()
{
return CAudioDeviceInfo(OutputDevice, QAudioDeviceInfo::defaultOutputDevice().deviceName());
}
CAudioDeviceInfo CAudioDeviceInfo::getDefaultInputDevice()
{
return CAudioDeviceInfo(InputDevice, QAudioDeviceInfo::defaultInputDevice().deviceName());
}
QString CAudioDeviceInfo::convertToQString(bool i18n) const
{
Q_UNUSED(i18n)

View File

@@ -62,10 +62,10 @@ namespace BlackMisc
bool isOutputDevice() const { return this->getType() == OutputDevice; }
//! Valid audio device object?
bool isValid() const { return !m_deviceName.isEmpty() && (m_deviceName != Unknown); }
bool isValid() const { return !m_deviceName.isEmpty() && (m_type != Unknown); }
//! Is this a default device?
bool isDefault() const { return m_deviceName == "default"; }
bool isDefault() const;
//! Mathcing name, type and machine
bool matchesNameTypeHostName(const CAudioDeviceInfo &device) const;
@@ -74,16 +74,10 @@ namespace BlackMisc
static DeviceType fromQtMode(QAudio::Mode m);
//! Default output device
static CAudioDeviceInfo getDefaultOutputDevice()
{
return CAudioDeviceInfo(OutputDevice, "default");
}
static CAudioDeviceInfo getDefaultOutputDevice();
//! Default input device
static CAudioDeviceInfo getDefaultInputDevice()
{
return CAudioDeviceInfo(InputDevice, "default");
}
static CAudioDeviceInfo getDefaultInputDevice();
//! \copydoc BlackMisc::Mixin::String::toQString
QString convertToQString(bool i18n = false) const;

View File

@@ -178,6 +178,27 @@ namespace BlackMisc
return i;
}
CAudioDeviceInfoList CAudioDeviceInfoList::allInputDevicesPlusDefault()
{
CAudioDeviceInfoList i = allInputDevices();
i.push_back(CAudioDeviceInfoList::defaultInputDevice());
return i;
}
CAudioDeviceInfoList CAudioDeviceInfoList::allOutputDevicesPlusDefault()
{
CAudioDeviceInfoList o = allOutputDevices();
o.push_back(CAudioDeviceInfoList::defaultOutputDevice());
return o;
}
CAudioDeviceInfoList CAudioDeviceInfoList::allDevicesPlusDefault()
{
CAudioDeviceInfoList i = allInputDevicesPlusDefault();
i.push_back(allOutputDevicesPlusDefault());
return i;
}
QList<QAudioDeviceInfo> CAudioDeviceInfoList::allQtInputDevices()
{
const QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
@@ -190,26 +211,24 @@ namespace BlackMisc
return devices;
}
QAudioDeviceInfo CAudioDeviceInfoList::defaultInputDevice()
QAudioDeviceInfo CAudioDeviceInfoList::defaultQtInputDevice()
{
return QAudioDeviceInfo::defaultInputDevice();
/**
const QList<QAudioDeviceInfo> devices = allQtInputDevices();
if (devices.isEmpty()) { return devices.front(); }
return QAudioDeviceInfo();
**/
}
QAudioDeviceInfo CAudioDeviceInfoList::defaultOutputDevice()
QAudioDeviceInfo CAudioDeviceInfoList::defaultQtOutputDevice()
{
return QAudioDeviceInfo::defaultOutputDevice();
}
/**
const QList<QAudioDeviceInfo> devices = allQtOutputDevices();
if (devices.isEmpty()) { return devices.front(); }
return QAudioDeviceInfo();
**/
CAudioDeviceInfo CAudioDeviceInfoList::defaultInputDevice()
{
return CAudioDeviceInfo(CAudioDeviceInfo::InputDevice, defaultQtInputDevice().deviceName());
}
CAudioDeviceInfo CAudioDeviceInfoList::defaultOutputDevice()
{
return CAudioDeviceInfo(CAudioDeviceInfo::OutputDevice, defaultQtOutputDevice().deviceName());
}
} // namespace

View File

@@ -86,10 +86,15 @@ namespace BlackMisc
static CAudioDeviceInfoList allInputDevices();
static CAudioDeviceInfoList allOutputDevices();
static CAudioDeviceInfoList allDevices();
static CAudioDeviceInfoList allInputDevicesPlusDefault();
static CAudioDeviceInfoList allOutputDevicesPlusDefault();
static CAudioDeviceInfoList allDevicesPlusDefault();
static QList<QAudioDeviceInfo> allQtInputDevices();
static QList<QAudioDeviceInfo> allQtOutputDevices();
static QAudioDeviceInfo defaultInputDevice();
static QAudioDeviceInfo defaultOutputDevice();
static QAudioDeviceInfo defaultQtInputDevice();
static QAudioDeviceInfo defaultQtOutputDevice();
static CAudioDeviceInfo defaultInputDevice();
static CAudioDeviceInfo defaultOutputDevice();
//! @}
};
} //namespace

View File

@@ -86,8 +86,8 @@ namespace BlackSound
{
if (device.isDefault() || !device.isValid())
{
if (device.getType() == CAudioDeviceInfo::InputDevice) { return CAudioDeviceInfoList::defaultInputDevice(); }
else { return CAudioDeviceInfoList::defaultOutputDevice(); }
if (device.getType() == CAudioDeviceInfo::InputDevice) { return CAudioDeviceInfoList::defaultQtInputDevice(); }
else { return CAudioDeviceInfoList::defaultQtOutputDevice(); }
}
const QList<QAudioDeviceInfo> allQtDevices =
@@ -157,7 +157,7 @@ namespace BlackSound
QAudioDeviceInfo getHighestCompatibleOutputDevice(const CAudioDeviceInfo &device, QAudioFormat &format)
{
if (device.isDefault()) { return CAudioDeviceInfoList::defaultOutputDevice(); }
if (device.isDefault()) { return CAudioDeviceInfoList::defaultQtOutputDevice(); }
const QList<QAudioDeviceInfo> allQtDevices = CAudioDeviceInfoList::allQtOutputDevices();
QList<QAudioDeviceInfo> supportedDevices;