Set the actually opened audio device from vatlib

In the past, the optional arguments currentInput and currentOutput were not
used. Therefore we never knew which device was actually opened by vatlib.
This caused the Audio UI to be completely unsychronized from the reality
when loading swiftgui.

ref T337
This commit is contained in:
Roland Winklmeier
2018-09-12 17:12:55 +02:00
committed by Klaus Basan
parent 44b1273085
commit 24ebc2ce7f
5 changed files with 14 additions and 28 deletions

View File

@@ -37,9 +37,6 @@ namespace BlackCore
//! Get available input devices
virtual const BlackMisc::Audio::CAudioDeviceInfoList &getInputDevices() const = 0;
//! Default input device
virtual const BlackMisc::Audio::CAudioDeviceInfo &getDefaultInputDevice() const = 0;
//! Current input device
virtual const BlackMisc::Audio::CAudioDeviceInfo &getCurrentInputDevice() const = 0;
@@ -63,9 +60,6 @@ namespace BlackCore
//! Get available output devices
virtual const BlackMisc::Audio::CAudioDeviceInfoList &getOutputDevices() const = 0;
//! Default output device
virtual const BlackMisc::Audio::CAudioDeviceInfo &getDefaultOutputDevice() const = 0;
//! Current output device
virtual const BlackMisc::Audio::CAudioDeviceInfo &getCurrentOutputDevice() const = 0;

View File

@@ -39,8 +39,9 @@ namespace BlackCore
: IAudioInputDevice(parent)
{
m_inputCodec.reset(Vat_CreateLocalInputCodec(audioService, vatCodecLegacy));
Vat_GetInputDeviceInfo(m_inputCodec.data(), onInputHardwareDeviceReceived, this, nullptr);
m_currentDevice = getDefaultInputDevice();
int currentDeviceIndex;
Vat_GetInputDeviceInfo(m_inputCodec.data(), onInputHardwareDeviceReceived, this, &currentDeviceIndex);
m_currentDevice = m_devices.findByDeviceIndex(currentDeviceIndex);
}
const CAudioDeviceInfoList &CAudioInputDeviceVatlib::getInputDevices() const
@@ -48,12 +49,6 @@ namespace BlackCore
return m_devices;
}
const CAudioDeviceInfo &CAudioInputDeviceVatlib::getDefaultInputDevice() const
{
static CAudioDeviceInfo info(CAudioDeviceInfo::InputDevice, CAudioDeviceInfo::defaultDeviceIndex(), "default");
return info;
}
const CAudioDeviceInfo &CAudioInputDeviceVatlib::getCurrentInputDevice() const
{
return m_currentDevice;
@@ -85,8 +80,9 @@ namespace BlackCore
: IAudioOutputDevice(parent)
{
m_outputCodec.reset(Vat_CreateLocalOutputCodec(audioService, vatCodecLegacy));
Vat_GetOutputDeviceInfo(m_outputCodec.data(), onOutputHardwareDeviceReceived, this, nullptr);
m_currentDevice = getDefaultOutputDevice();
int currentDeviceIndex;
Vat_GetOutputDeviceInfo(m_outputCodec.data(), onOutputHardwareDeviceReceived, this, &currentDeviceIndex);
m_currentDevice = m_devices.findByDeviceIndex(currentDeviceIndex);
}
const CAudioDeviceInfoList &CAudioOutputDeviceVatlib::getOutputDevices() const
@@ -94,12 +90,6 @@ namespace BlackCore
return m_devices;
}
const CAudioDeviceInfo &CAudioOutputDeviceVatlib::getDefaultOutputDevice() const
{
static CAudioDeviceInfo info(CAudioDeviceInfo::OutputDevice, CAudioDeviceInfo::defaultDeviceIndex(), "default");
return info;
}
const CAudioDeviceInfo &CAudioOutputDeviceVatlib::getCurrentOutputDevice() const
{
return m_currentDevice;

View File

@@ -41,9 +41,6 @@ namespace BlackCore
//! \copydoc IAudioInputDevice::getInputDevices
virtual const BlackMisc::Audio::CAudioDeviceInfoList &getInputDevices() const override;
//! \copydoc IAudioInputDevice::getDefaultInputDevice
virtual const BlackMisc::Audio::CAudioDeviceInfo &getDefaultInputDevice() const override;
//! \copydoc IAudioInputDevice::getCurrentInputDevice
virtual const BlackMisc::Audio::CAudioDeviceInfo &getCurrentInputDevice() const override;
@@ -87,9 +84,6 @@ namespace BlackCore
//! \copydoc IAudioOutputDevice::getOutputDevices
virtual const BlackMisc::Audio::CAudioDeviceInfoList &getOutputDevices() const override;
//! \copydoc IAudioOutputDevice::getDefaultOutputDevice
virtual const BlackMisc::Audio::CAudioDeviceInfo &getDefaultOutputDevice() const override;
//! \copydoc IAudioOutputDevice::getCurrentOutputDevice
virtual const BlackMisc::Audio::CAudioDeviceInfo &getCurrentOutputDevice() const override;

View File

@@ -36,6 +36,11 @@ namespace BlackMisc
return this->findBy(&CAudioDeviceInfo::getType, CAudioDeviceInfo::InputDevice);
}
CAudioDeviceInfo CAudioDeviceInfoList::findByDeviceIndex(int deviceIndex)
{
return this->findBy(&CAudioDeviceInfo::getIndex, deviceIndex).frontOrDefault();
}
int CAudioDeviceInfoList::count(CAudioDeviceInfo::DeviceType type) const
{
return std::count_if(this->begin(), this->end(), [type](const CAudioDeviceInfo &device)

View File

@@ -44,6 +44,9 @@ namespace BlackMisc
//! Get output devices in that list
CAudioDeviceInfoList getInputDevices() const;
//! Find device by its index
CAudioDeviceInfo findByDeviceIndex(int deviceIndex);
//! Count (as of type)
int count(CAudioDeviceInfo::DeviceType type) const;
};