refs #372 Adapt CContextAudio and voice sample to IAudioMixer

This commit is contained in:
Roland Winklmeier
2015-02-01 14:53:21 +01:00
committed by Klaus Basan
parent 7ba3a50e18
commit ff56d64ff2
4 changed files with 40 additions and 19 deletions

View File

@@ -51,8 +51,17 @@ namespace BlackCore
m_voiceInputDevice = m_voice->createInputDevice();
m_voiceOutputDevice = m_voice->createOutputDevice();
m_voice->connectChannelOutputDevice(m_channelCom1.get(), m_voiceOutputDevice.get());
m_voice->connectChannelOutputDevice(m_channelCom2.get(), m_voiceOutputDevice.get());
m_audioMixer = m_voice->createAudioMixer();
m_voice->connectVoice(m_voiceInputDevice.get(), m_audioMixer.get(), IAudioMixer::InputMicrophone);
m_voice->connectVoice(m_channelCom1.get(), m_audioMixer.get(), IAudioMixer::InputVoiceChannel1);
m_voice->connectVoice(m_channelCom2.get(), m_audioMixer.get(), IAudioMixer::InputVoiceChannel2);
m_voice->connectVoice(m_audioMixer.get(), IAudioMixer::OutputOutputDevice1, m_voiceOutputDevice.get());
m_voice->connectVoice(m_audioMixer.get(), IAudioMixer::OutputVoiceChannel1, m_channelCom1.get());
m_voice->connectVoice(m_audioMixer.get(), IAudioMixer::OutputVoiceChannel2, m_channelCom2.get());
m_audioMixer->makeMixerConnection(IAudioMixer::InputVoiceChannel1, IAudioMixer::OutputOutputDevice1);
m_audioMixer->makeMixerConnection(IAudioMixer::InputVoiceChannel2, IAudioMixer::OutputOutputDevice1);
// 4. load sounds (init), not possible in own thread
QTimer::singleShot(10 * 1000, this, SLOT(ps_initNotificationSounds()));
@@ -406,9 +415,9 @@ namespace BlackCore
Q_ASSERT(this->m_voice);
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
if (enable)
m_voice->enableAudioLoopback(m_voiceInputDevice.get(), m_voiceOutputDevice.get());
m_audioMixer->makeMixerConnection(IAudioMixer::InputMicrophone, IAudioMixer::OutputOutputDevice1);
else
m_voice->enableAudioLoopback(m_voiceInputDevice.get(), nullptr);
m_audioMixer->removeMixerConnection(IAudioMixer::InputMicrophone, IAudioMixer::OutputOutputDevice1);
}
bool CContextAudio::parseCommandLine(const QString &commandLine)
@@ -462,8 +471,8 @@ namespace BlackCore
void CContextAudio::ps_setVoiceTransmission(bool enable)
{
// FIXME: Use the 'active' channel instead of hardcoded COM1
if (enable) m_voice->connectChannelInputDevice(m_voiceInputDevice.get(), m_channelCom1.get());
else m_voice->connectChannelInputDevice(nullptr, m_channelCom1.get());
if (enable) m_audioMixer->makeMixerConnection(IAudioMixer::InputMicrophone, IAudioMixer::OutputVoiceChannel1);
else m_audioMixer->removeMixerConnection(IAudioMixer::InputMicrophone, IAudioMixer::OutputVoiceChannel1);
}
/*

View File

@@ -19,6 +19,7 @@
#include "voice.h"
#include "voice_channel.h"
#include "audio_device.h"
#include "audio_mixer.h"
#include "input_manager.h"
#include "blackinput/keyboard.h"
#include "blackmisc/voiceroomlist.h"
@@ -166,15 +167,19 @@ namespace BlackCore
//! Connection in transition
bool inTransitionState() const;
std::unique_ptr<IVoice> m_voice; //!< underlying voice lib
CInputManager *m_inputManager = nullptr;
CInputManager::RegistrationHandle m_handlePtt;
std::unique_ptr<IVoice> m_voice; //!< underlying voice lib
std::unique_ptr<IAudioMixer> m_audioMixer;
int m_outDeviceVolume = 100;
std::unique_ptr<IVoiceChannel> m_channelCom1;
std::unique_ptr<IVoiceChannel> m_channelCom2;
std::unique_ptr<IAudioOutputDevice> m_voiceOutputDevice;
int m_outDeviceVolume = 100;
std::unique_ptr<IAudioInputDevice> m_voiceInputDevice;
};
} // namespace