[AFV] Ref T739, audio context default device handling

This commit is contained in:
Klaus Basan
2019-10-27 16:52:41 +01:00
committed by Mat Sutcliffe
parent aed1103ce6
commit a9a772c929
3 changed files with 44 additions and 12 deletions

View File

@@ -139,7 +139,7 @@ namespace BlackCore
void CContextAudioBase::initVoiceClient() void CContextAudioBase::initVoiceClient()
{ {
if (!m_voiceClient) { return; } if (m_voiceClient) { return; }
m_voiceClient = new CAfvClient(CVoiceSetup().getAfvVoiceServerUrl(), this); m_voiceClient = new CAfvClient(CVoiceSetup().getAfvVoiceServerUrl(), this);
const CVoiceSetup vs = m_voiceSettings.getThreadLocal(); const CVoiceSetup vs = m_voiceSettings.getThreadLocal();
@@ -172,9 +172,9 @@ namespace BlackCore
// connect(m_voiceClient, &CAfvClient::inputVolumePeakVU, this, &CContextAudioBase::inputVolumePeakVU, Qt::QueuedConnection); // connect(m_voiceClient, &CAfvClient::inputVolumePeakVU, this, &CContextAudioBase::inputVolumePeakVU, Qt::QueuedConnection);
// connect(m_voiceClient, &CAfvClient::receivingCallsignsChanged, this, &CContextAudioBase::receivingCallsignsChanged, Qt::QueuedConnection); // connect(m_voiceClient, &CAfvClient::receivingCallsignsChanged, this, &CContextAudioBase::receivingCallsignsChanged, Qt::QueuedConnection);
// connect(m_voiceClient, &CAfvClient::updatedFromOwnAircraftCockpit, this, &CContextAudioBase::updatedFromOwnAircraftCockpit, Qt::QueuedConnection); // connect(m_voiceClient, &CAfvClient::updatedFromOwnAircraftCockpit, this, &CContextAudioBase::updatedFromOwnAircraftCockpit, Qt::QueuedConnection);
connect(m_voiceClient, &CAfvClient::startedAudio, this, &CContextAudioBase::startedAudio, Qt::QueuedConnection); connect(m_voiceClient, &CAfvClient::startedAudio, this, &CContextAudioBase::startedAudio, Qt::QueuedConnection);
connect(m_voiceClient, &CAfvClient::stoppedAudio, this, &CContextAudioBase::stoppedAudio, Qt::QueuedConnection); connect(m_voiceClient, &CAfvClient::stoppedAudio, this, &CContextAudioBase::stoppedAudio, Qt::QueuedConnection);
connect(m_voiceClient, &CAfvClient::ptt, this, &CContextAudioBase::ptt, Qt::QueuedConnection); connect(m_voiceClient, &CAfvClient::ptt, this, &CContextAudioBase::ptt, Qt::QueuedConnection);
} }
void CContextAudioBase::terminateVoiceClient() void CContextAudioBase::terminateVoiceClient()
@@ -287,13 +287,38 @@ namespace BlackCore
return CAudioDeviceInfoList::allDevices(); return CAudioDeviceInfoList::allDevices();
} }
CAudioDeviceInfoList CContextAudioBase::getAudioInputDevices() const
{
return this->getAudioDevices().getInputDevices();
}
CAudioDeviceInfoList CContextAudioBase::getAudioOutputDevices() const
{
return this->getAudioDevices().getOutputDevices();
}
CAudioDeviceInfoList CContextAudioBase::getAudioDevicesPlusDefault() const
{
return CAudioDeviceInfoList::allDevicesPlusDefault();
}
CAudioDeviceInfoList CContextAudioBase::getAudioInputDevicesPlusDefault() const
{
return this->getAudioDevicesPlusDefault().getInputDevices();
}
CAudioDeviceInfoList CContextAudioBase::getAudioOutputDevicesPlusDefault() const
{
return this->getAudioDevicesPlusDefault().getOutputDevices();
}
CAudioDeviceInfoList CContextAudioBase::getCurrentAudioDevices() const CAudioDeviceInfoList CContextAudioBase::getCurrentAudioDevices() const
{ {
const QString inputDeviceName = m_inputDeviceSetting.get(); const QString inputDeviceName = m_inputDeviceSetting.get();
const CAudioDeviceInfo inputDevice = this->getAudioInputDevices().findByNameOrDefault(inputDeviceName, CAudioDeviceInfo::getDefaultInputDevice()); const CAudioDeviceInfo inputDevice = this->getAudioInputDevicesPlusDefault().findByNameOrDefault(inputDeviceName, CAudioDeviceInfo::getDefaultInputDevice());
const QString outputDeviceName = m_outputDeviceSetting.get(); const QString outputDeviceName = m_outputDeviceSetting.get();
const CAudioDeviceInfo outputDevice = this->getAudioOutputDevices().findByNameOrDefault(outputDeviceName, CAudioDeviceInfo::getDefaultOutputDevice()); const CAudioDeviceInfo outputDevice = this->getAudioOutputDevicesPlusDefault().findByNameOrDefault(outputDeviceName, CAudioDeviceInfo::getDefaultOutputDevice());
CAudioDeviceInfoList devices; CAudioDeviceInfoList devices;
devices.push_back(inputDevice); devices.push_back(inputDevice);
@@ -459,10 +484,10 @@ namespace BlackCore
void CContextAudioBase::changeDeviceSettings() void CContextAudioBase::changeDeviceSettings()
{ {
const QString inputDeviceName = m_inputDeviceSetting.get(); const QString inputDeviceName = m_inputDeviceSetting.get();
const CAudioDeviceInfo input = this->getAudioInputDevices().findByNameOrDefault(inputDeviceName, CAudioDeviceInfo::getDefaultInputDevice()); const CAudioDeviceInfo input = this->getAudioInputDevicesPlusDefault().findByNameOrDefault(inputDeviceName, CAudioDeviceInfo::getDefaultInputDevice());
const QString outputDeviceName = m_outputDeviceSetting.get(); const QString outputDeviceName = m_outputDeviceSetting.get();
const CAudioDeviceInfo output = this->getAudioOutputDevices().findByNameOrDefault(outputDeviceName, CAudioDeviceInfo::getDefaultOutputDevice()); const CAudioDeviceInfo output = this->getAudioOutputDevicesPlusDefault().findByNameOrDefault(outputDeviceName, CAudioDeviceInfo::getDefaultOutputDevice());
this->setCurrentAudioDevices(input, output); this->setCurrentAudioDevices(input, output);
} }

View File

@@ -134,8 +134,11 @@ namespace BlackCore
//! Audio devices //! Audio devices
//! @{ //! @{
BlackMisc::Audio::CAudioDeviceInfoList getAudioDevices() const; BlackMisc::Audio::CAudioDeviceInfoList getAudioDevices() const;
BlackMisc::Audio::CAudioDeviceInfoList getAudioInputDevices() const { return this->getAudioDevices().getInputDevices(); } BlackMisc::Audio::CAudioDeviceInfoList getAudioInputDevices() const;
BlackMisc::Audio::CAudioDeviceInfoList getAudioOutputDevices() const { return this->getAudioDevices().getOutputDevices(); } BlackMisc::Audio::CAudioDeviceInfoList getAudioOutputDevices() const;
BlackMisc::Audio::CAudioDeviceInfoList getAudioDevicesPlusDefault() const;
BlackMisc::Audio::CAudioDeviceInfoList getAudioInputDevicesPlusDefault() const;
BlackMisc::Audio::CAudioDeviceInfoList getAudioOutputDevicesPlusDefault() const;
//! @} //! @}
//! Get current audio device //! Get current audio device

View File

@@ -86,8 +86,12 @@ namespace BlackSound
{ {
if (device.isDefault() || !device.isValid()) if (device.isDefault() || !device.isValid())
{ {
if (device.getType() == CAudioDeviceInfo::InputDevice) { return CAudioDeviceInfoList::defaultQtInputDevice(); } const QAudioDeviceInfo defDevice = device.isInputDevice() ? QAudioDeviceInfo::defaultInputDevice() : QAudioDeviceInfo::defaultOutputDevice();
else { return CAudioDeviceInfoList::defaultQtOutputDevice(); } if (!defDevice.isFormatSupported(format))
{
format = defDevice.nearestFormat(format);
}
return defDevice;
} }
const QList<QAudioDeviceInfo> allQtDevices = const QList<QAudioDeviceInfo> allQtDevices =