From c1470f60696c6b5c5cec114ffd436957d3625f35 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 29 Sep 2019 02:57:24 +0200 Subject: [PATCH] Ref T730, removed voice vatlib --- src/blackcore/context/contextaudioimpl.cpp | 26 +-- src/blackcore/vatsim/audiodevicevatlib.cpp | 129 ----------- src/blackcore/vatsim/audiodevicevatlib.h | 125 ----------- src/blackcore/vatsim/audiomixervatlib.cpp | 36 --- src/blackcore/vatsim/audiomixervatlib.h | 69 ------ src/blackcore/vatsim/voicechannelvatlib.cpp | 232 -------------------- src/blackcore/vatsim/voicechannelvatlib.h | 109 --------- src/blackcore/vatsim/voicevatlib.cpp | 168 -------------- src/blackcore/vatsim/voicevatlib.h | 133 ----------- 9 files changed, 7 insertions(+), 1020 deletions(-) delete mode 100644 src/blackcore/vatsim/audiodevicevatlib.cpp delete mode 100644 src/blackcore/vatsim/audiodevicevatlib.h delete mode 100644 src/blackcore/vatsim/audiomixervatlib.cpp delete mode 100644 src/blackcore/vatsim/audiomixervatlib.h delete mode 100644 src/blackcore/vatsim/voicechannelvatlib.cpp delete mode 100644 src/blackcore/vatsim/voicechannelvatlib.h delete mode 100644 src/blackcore/vatsim/voicevatlib.cpp delete mode 100644 src/blackcore/vatsim/voicevatlib.h diff --git a/src/blackcore/context/contextaudioimpl.cpp b/src/blackcore/context/contextaudioimpl.cpp index dd64dd713..2092fb171 100644 --- a/src/blackcore/context/contextaudioimpl.cpp +++ b/src/blackcore/context/contextaudioimpl.cpp @@ -15,12 +15,10 @@ #include "blackcore/audiodevice.h" #include "blackcore/corefacade.h" #include "blackcore/voice.h" -#include "blackcore/vatsim/voicevatlib.h" #include "blackmisc/simulation/simulatedaircraft.h" #include "blackmisc/audio/audiodeviceinfo.h" #include "blackmisc/audio/notificationsounds.h" #include "blackmisc/audio/audiosettings.h" -#include "blackmisc/audio/voiceroomlist.h" #include "blackmisc/aviation/callsign.h" #include "blackmisc/compare.h" #include "blackmisc/dbusserver.h" @@ -61,13 +59,6 @@ namespace BlackCore m_voiceClient(("https://voice1.vatsim.uk")) { - /** - initVoiceChannels(); - initInputDevice(); - initOutputDevice(); - initAudioMixer(); - **/ - this->setVoiceOutputVolume(m_audioSettings.getThreadLocal().getOutVolume()); m_selcalPlayer = new CSelcalPlayer(QAudioDeviceInfo::defaultOutputDevice(), this); @@ -251,8 +242,9 @@ namespace BlackCore void CContextAudio::setVoiceSetup(const CVoiceSetup &setup) { + // could be recycled for some AFV setup if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } - // if (m_voice) { m_voice->setVoiceSetup(setup); } + Q_UNUSED(setup) } CVoiceSetup CContextAudio::getVoiceSetup() const @@ -450,23 +442,19 @@ namespace BlackCore void CContextAudio::xCtxChangedAircraftCockpit(const CSimulatedAircraft &aircraft, const CIdentifier &originator) { + Q_UNUSED(aircraft) + Q_UNUSED(originator) + + /** if (CIdentifiable::isMyIdentifier(originator)) { return; } const bool integrated = this->isComIntegratedWithSimulator(); - if (integrated) { // set as in cockpit const bool com1Rec = aircraft.getCom1System().isReceiveEnabled(); const bool com2Rec = aircraft.getCom2System().isReceiveEnabled(); - // m_audioMixer->makeOrRemoveConnection(IAudioMixer::InputVoiceChannel1, IAudioMixer::OutputDevice1, com1Rec); - // m_audioMixer->makeOrRemoveConnection(IAudioMixer::InputVoiceChannel2, IAudioMixer::OutputDevice1, com2Rec); - } - else - { - // reset - // m_audioMixer->makeMixerConnectionIfNotExisting(IAudioMixer::InputVoiceChannel1, IAudioMixer::OutputDevice1); - // m_audioMixer->makeMixerConnectionIfNotExisting(IAudioMixer::InputVoiceChannel2, IAudioMixer::OutputDevice1); } + **/ } void CContextAudio::xCtxNetworkConnectionStatusChanged(const CConnectionStatus &from, const CConnectionStatus &to) diff --git a/src/blackcore/vatsim/audiodevicevatlib.cpp b/src/blackcore/vatsim/audiodevicevatlib.cpp deleted file mode 100644 index be7f65713..000000000 --- a/src/blackcore/vatsim/audiodevicevatlib.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* Copyright (C) 2014 - * swift project community / contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -//! \cond PRIVATE - -#include "blackcore/vatsim/audiodevicevatlib.h" -#include "blackmisc/logmessage.h" - -#include -#include - -using namespace BlackMisc; -using namespace BlackMisc::Audio; -using namespace BlackMisc::Aviation; - -namespace BlackCore -{ - namespace Vatsim - { - //! Cast void* to a pointer of CAudioInputDeviceVatlib - CAudioInputDeviceVatlib *cbvar_cast_inputDevice(void *cbvar) - { - return static_cast(cbvar); - } - - //! Cast void* to a pointer of CAudioOutputDeviceVatlib - CAudioOutputDeviceVatlib *cbvar_cast_outputDevice(void *cbvar) - { - return static_cast(cbvar); - } - - CAudioInputDeviceVatlib::CAudioInputDeviceVatlib(VatAudioService *audioService, QObject *parent) - : IAudioInputDevice(parent) - { - m_inputCodec.reset(Vat_CreateLocalInputCodec(audioService, vatCodecLegacy)); - int currentDeviceIndex; - Vat_GetInputDeviceInfo(m_inputCodec.data(), onInputHardwareDeviceReceived, this, ¤tDeviceIndex); - m_currentDevice = m_devices.findByDeviceIndex(currentDeviceIndex); - } - - const CAudioDeviceInfoList &CAudioInputDeviceVatlib::getInputDevices() const - { - return m_devices; - } - - const CAudioDeviceInfo &CAudioInputDeviceVatlib::getCurrentInputDevice() const - { - return m_currentDevice; - } - - void CAudioInputDeviceVatlib::setInputDevice(const CAudioDeviceInfo &device) - { - Q_ASSERT_X(m_inputCodec, "CAudioInputDeviceVatlib", "VatLocalCodec is invalid!"); - if (!device.isValid()) - { - CLogMessage(this).warning(u"Cannot set invalid input device!"); - return; - } - - if (!Vat_SetAudioInputDevice(m_inputCodec.data(), device.getIndex())) - { - CLogMessage(this).warning(u"Setting input device failed"); - } - m_currentDevice = device; - } - - void CAudioInputDeviceVatlib::onInputHardwareDeviceReceived(int deviceIndex, const char *hardwareName, void *cbVar) - { - CAudioDeviceInfo inputDevice(CAudioDeviceInfo::InputDevice, deviceIndex, QString(hardwareName)); - cbvar_cast_inputDevice(cbVar)->m_devices.push_back(inputDevice); - } - - CAudioOutputDeviceVatlib::CAudioOutputDeviceVatlib(VatAudioService *audioService, QObject *parent) - : IAudioOutputDevice(parent) - { - m_outputCodec.reset(Vat_CreateLocalOutputCodec(audioService, vatCodecLegacy)); - int currentDeviceIndex; - Vat_GetOutputDeviceInfo(m_outputCodec.data(), onOutputHardwareDeviceReceived, this, ¤tDeviceIndex); - m_currentDevice = m_devices.findByDeviceIndex(currentDeviceIndex); - } - - const CAudioDeviceInfoList &CAudioOutputDeviceVatlib::getOutputDevices() const - { - return m_devices; - } - - const CAudioDeviceInfo &CAudioOutputDeviceVatlib::getCurrentOutputDevice() const - { - return m_currentDevice; - } - - void CAudioOutputDeviceVatlib::setOutputDevice(const CAudioDeviceInfo &device) - { - Q_ASSERT_X(m_outputCodec, "CAudioOutputDeviceVatlib", "VatLocalCodec is invalid!"); - if (!device.isValid()) - { - CLogMessage(this).warning(u"Cannot set invalid output device!"); - return; - } - - Vat_SetAudioOutputDevice(m_outputCodec.data(), device.getIndex()); - m_currentDevice = device; - } - - void CAudioOutputDeviceVatlib::setOutputVolume(int volume) - { - Q_ASSERT(m_outputCodec); - Vat_SetOutputVolume(m_outputCodec.data(), volume); - } - - int CAudioOutputDeviceVatlib::getOutputVolume() const - { - Q_ASSERT(m_outputCodec); - return Vat_GetOutputVolume(m_outputCodec.data()); - } - - void CAudioOutputDeviceVatlib::onOutputHardwareDeviceReceived(int deviceIndex, const char *hardwareName, void *cbVar) - { - CAudioDeviceInfo outputDevice(CAudioDeviceInfo::OutputDevice, deviceIndex, QString(hardwareName)); - cbvar_cast_outputDevice(cbVar)->m_devices.push_back(outputDevice); - } - } // ns -} // ns -//! \endcond diff --git a/src/blackcore/vatsim/audiodevicevatlib.h b/src/blackcore/vatsim/audiodevicevatlib.h deleted file mode 100644 index 017d96a98..000000000 --- a/src/blackcore/vatsim/audiodevicevatlib.h +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright (C) 2014 - * swift project community / contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -//! \file - -#ifndef BLACKCORE_VATSIM_AUDIODEVICEVATLIB_H -#define BLACKCORE_VATSIM_AUDIODEVICEVATLIB_H - -#include "blackcore/audiodevice.h" -#include "blackcore/blackcoreexport.h" -#include "blackmisc/audio/audiodeviceinfo.h" -#include "blackmisc/audio/audiodeviceinfolist.h" -#include "vatlib/vatlib.h" - -#include -#include - -namespace BlackCore -{ - namespace Vatsim - { - //! Audio Input Device - class BLACKCORE_EXPORT CAudioInputDeviceVatlib : public IAudioInputDevice - { - Q_OBJECT - - public: - - //! Constructor - CAudioInputDeviceVatlib(VatAudioService *audioService, QObject *parent = nullptr); - - //! Destructor - virtual ~CAudioInputDeviceVatlib() = default; - - //! \copydoc IAudioInputDevice::getInputDevices - virtual const BlackMisc::Audio::CAudioDeviceInfoList &getInputDevices() const override; - - //! \copydoc IAudioInputDevice::getCurrentInputDevice - virtual const BlackMisc::Audio::CAudioDeviceInfo &getCurrentInputDevice() const override; - - //! \copydoc IAudioInputDevice::setInputDevice - virtual void setInputDevice(const BlackMisc::Audio::CAudioDeviceInfo &device) override; - - //! \copydoc IAudioInputDevice::isDummyDevice - virtual bool isDummyDevice() const override { return false; } - - //! Get vatlib input device pointer - VatLocalInputCodec *getVatLocalInputCodec() { return m_inputCodec.data(); } - - private: - - struct VatLocalInputCodecDeleter - { - static inline void cleanup(VatLocalInputCodec *obj) - { - if (obj) Vat_DestroyLocalInputCodec(obj); - } - }; - - static void onInputHardwareDeviceReceived(int deviceIndex, const char *hardwareName, void *cbVar); - - BlackMisc::Audio::CAudioDeviceInfoList m_devices; /*!< in and output devices */ - BlackMisc::Audio::CAudioDeviceInfo m_currentDevice; - - QScopedPointer m_inputCodec; - }; - - //! Audio Output Device - class CAudioOutputDeviceVatlib : public IAudioOutputDevice - { - Q_OBJECT - - public: - - //! Constructor - CAudioOutputDeviceVatlib(VatAudioService *audioService, QObject *parent = nullptr); - - //! Destructor - virtual ~CAudioOutputDeviceVatlib() = default; - - //! \copydoc IAudioOutputDevice::getOutputDevices - virtual const BlackMisc::Audio::CAudioDeviceInfoList &getOutputDevices() const override; - - //! \copydoc IAudioOutputDevice::getCurrentOutputDevice - virtual const BlackMisc::Audio::CAudioDeviceInfo &getCurrentOutputDevice() const override; - - //! \copydoc IAudioOutputDevice::setOutputDevice - virtual void setOutputDevice(const BlackMisc::Audio::CAudioDeviceInfo &device) override; - - //! \copydoc IAudioOutputDevice::setOutputVolume - virtual void setOutputVolume(int volume) override; - - //! \copydoc IAudioOutputDevice::getOutputVolume - virtual int getOutputVolume() const override; - - //! Get vatlib output device pointer - VatLocalOutputCodec *getVatLocalOutputCodec() { return m_outputCodec.data(); } - - private: - - struct VatLocalOutputCodecDeleter - { - static inline void cleanup(VatLocalOutputCodec *obj) - { - if (obj) Vat_DestroyLocalOutputCodec(obj); - } - }; - - static void onOutputHardwareDeviceReceived(int deviceIndex, const char *hardwareName, void *cbVar); - - - BlackMisc::Audio::CAudioDeviceInfoList m_devices; /*!< in and output devices */ - BlackMisc::Audio::CAudioDeviceInfo m_currentDevice; - - QScopedPointer m_outputCodec; - }; - } // ns -} // ns - -#endif // guard diff --git a/src/blackcore/vatsim/audiomixervatlib.cpp b/src/blackcore/vatsim/audiomixervatlib.cpp deleted file mode 100644 index cb0314a05..000000000 --- a/src/blackcore/vatsim/audiomixervatlib.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 2014 - * swift project community / contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -#include "blackcore/vatsim/audiomixervatlib.h" - -namespace BlackCore -{ - namespace Vatsim - { - CAudioMixerVatlib::CAudioMixerVatlib(QObject *parent) - : IAudioMixer(parent) - { - m_audioMixer.reset(Vat_CreateAudioMixer()); - } - - void CAudioMixerVatlib::makeMixerConnection(InputPort inputPort, OutputPort outputPort) - { - Vat_MakeMixerConnection(m_audioMixer.data(), inputPort, outputPort, true); - } - - void CAudioMixerVatlib::removeMixerConnection(InputPort inputPort, OutputPort outputPort) - { - Vat_MakeMixerConnection(m_audioMixer.data(), inputPort, outputPort, false); - } - - bool CAudioMixerVatlib::hasMixerConnection(InputPort inputPort, OutputPort outputPort) - { - return Vat_HasMixerConnection(m_audioMixer.data(), inputPort, outputPort); - } - } // ns -} // ns diff --git a/src/blackcore/vatsim/audiomixervatlib.h b/src/blackcore/vatsim/audiomixervatlib.h deleted file mode 100644 index 250a9dc02..000000000 --- a/src/blackcore/vatsim/audiomixervatlib.h +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright (C) 2014 - * swift project community / contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -//! \file - -#ifndef BLACKCORE_VATSIM_AUDIOMIXERVATLIB_H -#define BLACKCORE_VATSIM_AUDIOMIXERVATLIB_H - -#include "blackcore/audiomixer.h" -#include "blackcore/blackcoreexport.h" -#include "vatlib/vatlib.h" - -#include -#include -#include - -namespace BlackCore -{ - namespace Vatsim - { - //! Interface to an audio mixer - class BLACKCORE_EXPORT CAudioMixerVatlib : public IAudioMixer - { - Q_OBJECT - - public: - - /*! - * \brief Default constructor with parent - * \param parent - */ - CAudioMixerVatlib(QObject *parent = nullptr); - - //! Virtual destructor. - virtual ~CAudioMixerVatlib() {} - - //! \copydoc IAudioMixer::makeMixerConnection - virtual void makeMixerConnection(InputPort inputPort, OutputPort outputPort) override; - - //! \copydoc IAudioMixer::removeMixerConnection - virtual void removeMixerConnection(InputPort inputPort, OutputPort outputPort) override; - - //! \copydoc IAudioMixer::hasMixerConnection - virtual bool hasMixerConnection(InputPort inputPort, OutputPort outputPort) override; - - //! Return the pointer to vatlib audio mixer - VatAudioMixer *getVatAudioMixer() { return m_audioMixer.data(); } - - private: - - struct VatAudioMixerDeleter - { - static inline void cleanup(VatAudioMixer *obj) - { - if (obj) Vat_DestroyAudioMixer(obj); - } - }; - - QScopedPointer m_audioMixer; - }; - } // ns -} // ns - -#endif // guard diff --git a/src/blackcore/vatsim/voicechannelvatlib.cpp b/src/blackcore/vatsim/voicechannelvatlib.cpp deleted file mode 100644 index 869c0bf5f..000000000 --- a/src/blackcore/vatsim/voicechannelvatlib.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* Copyright (C) 2014 - * swift project community / contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -//! \cond PRIVATE - -#include "blackcore/application.h" -#include "blackcore/context/contextnetwork.h" -#include "blackcore/vatsim/voicechannelvatlib.h" -#include "blackmisc/logmessage.h" -#include "blackmisc/statusmessage.h" - -#include -#include -#include - -using namespace BlackMisc; -using namespace BlackMisc::Audio; -using namespace BlackMisc::Aviation; -using namespace BlackMisc::Network; - -namespace BlackCore -{ - namespace Vatsim - { - CVoiceChannelVatlib::CVoiceChannelVatlib(VatAudioService *audioService, VatUDPAudioPort *udpPort, QObject *parent) - : IVoiceChannel(parent) - { - m_voiceChannel.reset(Vat_CreateVoiceChannel(audioService, "", 3782, "", "", udpPort)); - Vat_SetConnectionChangedHandler(m_voiceChannel.data(), roomStatusUpdate, this); - Vat_SetClientJoinedHandler(m_voiceChannel.data(), processUserJoined, this); - Vat_SetClientLeftHandler(m_voiceChannel.data(), processUserLeft, this); - Vat_SetVoiceReceptionHandler(m_voiceChannel.data(), processVoiceReceptionChanged, this); - - } - - CVoiceChannelVatlib::~CVoiceChannelVatlib() - { - Q_ASSERT(m_roomStatus == IVoiceChannel::Disconnected); - } - - void CVoiceChannelVatlib::joinVoiceRoom(const CVoiceRoom &voiceRoom) - { - if (m_roomStatus == IVoiceChannel::Connecting || m_roomStatus == IVoiceChannel::Connected) return; - - // Make sure we are connected to a VATSIM FSD - CServer::ServerType connectedServerType = sApp->getIContextNetwork()->getConnectedServer().getServerType(); - if (!sApp->getIContextNetwork()->isConnected() || connectedServerType != CServer::FSDServerVatsim) - { - CLogMessage(this).warning(u"Cannot join VATSIM voice channel without active VATSIM FSD connection!"); - return; - } - - // No one else is using this voice room, so prepare to join - m_voiceRoom = voiceRoom; - QString callsign = QStringLiteral("%1 (%2)").arg(m_callsign.toQString(), m_userId); - Vat_SetRoomInfo(m_voiceChannel.data(), qPrintable(voiceRoom.getHostname()), 3782, - qPrintable(voiceRoom.getChannel()), - qPrintable(callsign)); - - CLogMessage(this).debug() << "Joining voice room " << m_voiceRoom.getVoiceRoomUrl(); - Vat_JoinRoom(m_voiceChannel.data()); - } - - // Leave room - void CVoiceChannelVatlib::leaveVoiceRoom() - { - // If this room is not connected, there is nothing to do - if (m_roomStatus == IVoiceChannel::Disconnecting || m_roomStatus == IVoiceChannel::Disconnected) return; - - CLogMessage(this).debug() << "Leaving voice room " << m_voiceRoom.getVoiceRoomUrl(); - Vat_DisconnectFromRoom(m_voiceChannel.data()); - m_voiceRoom = {}; - m_listCallsigns = {}; - } - - CCallsignSet CVoiceChannelVatlib::getVoiceRoomCallsigns() const - { - return m_listCallsigns; - } - - void CVoiceChannelVatlib::setOwnAircraftCallsign(const CCallsign &callsign) - { - m_callsign = callsign; - } - - void CVoiceChannelVatlib::setUserId(const QString &id) - { - m_userId = id; - } - - BlackMisc::Audio::CVoiceRoom CVoiceChannelVatlib::getVoiceRoom() const - { - return m_voiceRoom; - } - - bool CVoiceChannelVatlib::isMuted() const - { - // Remove - return false; - } - - void CVoiceChannelVatlib::setVolume(int /* volume */) - { - // Remove - } - - int CVoiceChannelVatlib::getVolume() const - { - // Remove - return 100; - } - - VatVoiceChannel *CVoiceChannelVatlib::getVoiceChannel() const - { - return m_voiceChannel.data(); - } - - CCallsign CVoiceChannelVatlib::extractCallsign(const QString &name) - { - CCallsign callsign; - if (name.isEmpty()) return callsign; - - // callsign might contain: VATSIM id, user name - if (name.contains(" ")) - { - QStringList parts = name.split(" "); - callsign = CCallsign(parts[0]); - // I throw away VATSIM id here, maybe we could use it - } - else - { - callsign = CCallsign(name); - } - - return callsign; - } - - void CVoiceChannelVatlib::userJoinedVoiceRoom(VatVoiceChannel *, int /** id **/, const char *name) - { - CCallsign callsign(extractCallsign(name)); - m_listCallsigns.push_back(callsign); - emit userJoinedRoom(callsign); - } - - void CVoiceChannelVatlib::userLeftVoiceRoom(VatVoiceChannel *, int /** id **/, const char *name) - { - CCallsign callsign(extractCallsign(name)); - m_listCallsigns.remove(callsign); - emit userLeftRoom(callsign); - } - - void CVoiceChannelVatlib::voiceReceptionChanged(VatVoiceChannel *, bool isVoiceReceiving) - { - if (isVoiceReceiving) emit audioStarted(); - else emit audioStopped(); - } - - void CVoiceChannelVatlib::updateRoomStatus(VatVoiceChannel *channel, VatConnectionStatus oldVatStatus, VatConnectionStatus newVatStatus) - { - Q_UNUSED(channel); - Q_UNUSED(oldVatStatus); - - IVoiceChannel::ConnectionStatus oldStatus = m_roomStatus; - switch (newVatStatus) - { - case vatStatusConnecting: - { - m_roomStatus = IVoiceChannel::Connecting; - break; - } - case vatStatusConnected: - { - m_voiceRoom.setConnected(true); - m_roomStatus = IVoiceChannel::Connected; - break; - } - case vatStatusDisconnecting: - { - m_roomStatus = IVoiceChannel::Disconnecting; - break; - } - case vatStatusDisconnected: - { - // Clear all internals - m_listCallsigns.clear(); - m_voiceRoom = {}; - m_roomStatus = IVoiceChannel::Disconnected; - break; - } - default: - break; - } - emit connectionStatusChanged(oldStatus, m_roomStatus); - } - - //! Cast void* to a pointer of CVoiceChannelVatlib - CVoiceChannelVatlib *cbvar_cast_voiceChannel(void *cbvar) - { - return static_cast(cbvar); - } - - void CVoiceChannelVatlib::processUserJoined(VatVoiceChannel *channel, int id, const char *name, void *cbVar) - { - auto obj = cbvar_cast_voiceChannel(cbVar); - obj->userJoinedVoiceRoom(channel, id, name); - } - - void CVoiceChannelVatlib::processUserLeft(VatVoiceChannel *channel, int id, const char *name, void *cbVar) - { - auto obj = cbvar_cast_voiceChannel(cbVar); - obj->userLeftVoiceRoom(channel, id, name); - } - - void CVoiceChannelVatlib::processVoiceReceptionChanged(VatVoiceChannel *channel, bool isVoiceReceiving, void *cbVar) - { - auto obj = cbvar_cast_voiceChannel(cbVar); - obj->voiceReceptionChanged(channel, isVoiceReceiving); - } - - void CVoiceChannelVatlib::roomStatusUpdate(VatVoiceChannel *channel, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbVar) - { - auto obj = cbvar_cast_voiceChannel(cbVar); - obj->updateRoomStatus(channel, oldStatus, newStatus); - } - } // ns -} // ns -//! \endcond diff --git a/src/blackcore/vatsim/voicechannelvatlib.h b/src/blackcore/vatsim/voicechannelvatlib.h deleted file mode 100644 index 15207235a..000000000 --- a/src/blackcore/vatsim/voicechannelvatlib.h +++ /dev/null @@ -1,109 +0,0 @@ -/* Copyright (C) 2014 - * swift project community / contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -//! \file - -#ifndef BLACKCORE_VATSIM_VOICE_CHANNEL_VATLIB_H -#define BLACKCORE_VATSIM_VOICE_CHANNEL_VATLIB_H - -#include "blackcore/blackcoreexport.h" -#include "blackcore/voicechannel.h" -#include "blackmisc/audio/voiceroom.h" -#include "blackmisc/aviation/callsign.h" -#include "blackmisc/aviation/callsignset.h" -#include "vatlib/vatlib.h" - -#include -#include -#include -#include - -namespace BlackCore -{ - namespace Vatsim - { - class CVoiceChannelVatlibPrivate; - - //! Class implementing the voice channel interface - class BLACKCORE_EXPORT CVoiceChannelVatlib : public IVoiceChannel - { - Q_OBJECT - - public: - - //! Default constructor - CVoiceChannelVatlib(VatAudioService *audioService, VatUDPAudioPort *udpPort, QObject *parent = nullptr); - - //! Destructor - virtual ~CVoiceChannelVatlib(); - - //! \copydoc IVoiceChannel::joinVoiceRoom - virtual void joinVoiceRoom(const BlackMisc::Audio::CVoiceRoom &voiceRoom) override; - - //! \copydoc IVoiceChannel::leaveVoiceRoom - virtual void leaveVoiceRoom() override; - - //! \copydoc IVoiceChannel::getVoiceRoomCallsigns - virtual BlackMisc::Aviation::CCallsignSet getVoiceRoomCallsigns() const override; - - //! \copydoc IVoiceChannel::setOwnAircraftCallsign - virtual void setOwnAircraftCallsign(const BlackMisc::Aviation::CCallsign &callsign) override; - - //! \copydoc IVoiceChannel::setUserId - virtual void setUserId(const QString &id) override; - - //! \copydoc IVoiceChannel::getVoiceRoom - virtual BlackMisc::Audio::CVoiceRoom getVoiceRoom() const override; - - //! \copydoc IVoiceChannel::isMuted - virtual bool isMuted() const override; - - //! Set channel volume - virtual void setVolume(int volume) override; - - //! Get channel volume - virtual int getVolume() const override; - - //! Get vatlib channel pointer - VatVoiceChannel *getVoiceChannel() const; - - private: - - struct VatVoiceChannelDeleter - { - static inline void cleanup(VatVoiceChannel *obj) - { - if (obj) Vat_DestroyVoiceChannel(obj); - } - }; - - BlackMisc::Aviation::CCallsign extractCallsign(const QString &name); - - void userJoinedVoiceRoom(VatVoiceChannel *, int id, const char *name); - void userLeftVoiceRoom(VatVoiceChannel *, int id, const char *name); - void voiceReceptionChanged(VatVoiceChannel *, bool isVoiceReceiving); - void updateRoomStatus(VatVoiceChannel *channel, VatConnectionStatus oldStatus, VatConnectionStatus newStatus); - - static void processUserJoined(VatVoiceChannel *channel, int id, const char *name, void *cbVar); - static void processUserLeft(VatVoiceChannel *channel, int id, const char *name, void *cbVar); - static void processVoiceReceptionChanged(VatVoiceChannel *channel, bool isVoiceReceiving, void *cbVar); - - static void roomStatusUpdate(VatVoiceChannel *channel, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbVar); - - BlackMisc::Aviation::CCallsign m_callsign; // Own callsign - QString m_userId; // Pilot user id - BlackMisc::Audio::CVoiceRoom m_voiceRoom; // Voice Room - BlackMisc::Aviation::CCallsignSet m_listCallsigns; // Callsigns connected to room - IVoiceChannel::ConnectionStatus m_roomStatus = IVoiceChannel::Disconnected; // Room connection status - - QScopedPointer m_voiceChannel; - }; - } // ns -} // ns - -#endif // guard diff --git a/src/blackcore/vatsim/voicevatlib.cpp b/src/blackcore/vatsim/voicevatlib.cpp deleted file mode 100644 index 045c4a9d3..000000000 --- a/src/blackcore/vatsim/voicevatlib.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/* Copyright (C) 2013 - * swift Project Community / Contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -#include "blackcore/audiodevice.h" -#include "blackcore/vatsim/audiodevicevatlib.h" -#include "blackcore/vatsim/audiomixervatlib.h" -#include "blackcore/voicechannel.h" -#include "blackcore/vatsim/voicechannelvatlib.h" -#include "blackcore/vatsim/voicevatlib.h" -#include "blackmisc/logmessage.h" -#include "vatlib/vatlib.h" - -#include -#include - -using namespace BlackMisc; -using namespace BlackMisc::Audio; -using namespace BlackMisc::Aviation; - -namespace BlackCore -{ - namespace Vatsim - { - const CLogCategoryList &CVoiceVatlib::getLogCategories() - { - static const CLogCategoryList cats({ CLogCategory::vatsimSpecific(), CLogCategory::network() }); - return cats; - } - - CVoiceVatlib::CVoiceVatlib(QObject *parent) : - IVoice(parent), - m_audioService(Vat_CreateAudioService()) - { - const int udpPort = m_vatsimVoiceSettings.get().getVatsimUdpVoicePort(); - Vat_SetVoiceLogHandler(vatSeverityDebug, CVoiceVatlib::voiceLogHandler); - m_udpPort.reset(Vat_CreateUDPAudioPort(m_audioService.data(), udpPort)); - - // do processing - this->startTimer(10); - } - - CVoiceVatlib::~CVoiceVatlib() {} - - void CVoiceVatlib::setVoiceSetup(const CVoiceSetup &setup) - { - if (m_vatsimVoiceSettings.get() == setup) { return; } - m_vatsimVoiceSettings.setAndSave(setup); - - // CHANGE VOICE PORT WOULD NEED TO GO HERE - } - - CVoiceSetup CVoiceVatlib::getVoiceSetup() const - { - return m_vatsimVoiceSettings.get(); - } - - QSharedPointer CVoiceVatlib::createVoiceChannel() - { - return QSharedPointer(new CVoiceChannelVatlib(m_audioService.data(), m_udpPort.data(), this)); - } - - std::unique_ptr CVoiceVatlib::createInputDevice() - { - return std::make_unique(m_audioService.data(), this); - } - - std::unique_ptr CVoiceVatlib::createOutputDevice() - { - return std::make_unique(m_audioService.data(), this); - } - - std::unique_ptr CVoiceVatlib::createAudioMixer() - { - return std::make_unique(this); - } - - void CVoiceVatlib::connectVoice(IAudioInputDevice *device, IAudioMixer *mixer, IAudioMixer::InputPort inputPort) - { - auto audioInputVatlib = qobject_cast(device); - Q_ASSERT_X(audioInputVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioInputDeviceVatlib pointer."); - - auto audioMixerVatlib = qobject_cast(mixer); - Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer."); - - Vat_VoiceConnect(VatProducerLocalInput, audioInputVatlib->getVatLocalInputCodec(), 0, - VatConsumerAudioMixer, audioMixerVatlib->getVatAudioMixer(), inputPort); - } - - void CVoiceVatlib::connectVoice(IVoiceChannel *channel, IAudioMixer *mixer, IAudioMixer::InputPort inputPort) - { - auto voiceChannelVatlib = qobject_cast(channel); - Q_ASSERT_X(voiceChannelVatlib, "CVoiceVatlib::connectVoice", "No valid CVoiceChannelVatlib pointer."); - - auto audioMixerVatlib = qobject_cast(mixer); - Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer."); - - Vat_VoiceConnect(VatProducerVoiceChannel, voiceChannelVatlib->getVoiceChannel(), 0, - VatConsumerAudioMixer, audioMixerVatlib->getVatAudioMixer(), inputPort); - } - - void CVoiceVatlib::connectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort, IAudioOutputDevice *device) - { - auto audioMixerVatlib = qobject_cast(mixer); - Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer."); - - auto audioDeviceVatlib = qobject_cast(device); - Q_ASSERT_X(audioDeviceVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioOutputDeviceVatlib pointer."); - - Vat_VoiceConnect(VatProducerAudioMixer, audioMixerVatlib->getVatAudioMixer(), outputPort, - VatConsumerLocalOutput, audioDeviceVatlib->getVatLocalOutputCodec(), 0); - } - - void CVoiceVatlib::connectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort, IVoiceChannel *channel) - { - auto audioMixerVatlib = qobject_cast(mixer); - Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer."); - - auto voiceChannelVatlib = qobject_cast(channel); - Q_ASSERT_X(voiceChannelVatlib, "CVoiceVatlib::connectVoice", "No valid CVoiceChannelVatlib pointer."); - - Vat_VoiceConnect(VatProducerAudioMixer, audioMixerVatlib->getVatAudioMixer(), outputPort, - VatConsumerVoiceChannel, voiceChannelVatlib->getVoiceChannel(), 0); - } - - void CVoiceVatlib::disconnectVoice(IAudioInputDevice *device) - { - auto audioInputVatlib = qobject_cast(device); - Q_ASSERT_X(audioInputVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioInputDeviceVatlib pointer."); - Vat_VoiceConnect(VatProducerLocalInput, audioInputVatlib->getVatLocalInputCodec(), 0, VatConsumerNone, nullptr, 0); - } - - void CVoiceVatlib::disconnectVoice(IVoiceChannel *channel) - { - auto voiceChannelVatlib = qobject_cast(channel); - Q_ASSERT_X(voiceChannelVatlib, "CVoiceVatlib::connectVoice", "No valid CVoiceChannelVatlib pointer."); - Vat_VoiceConnect(VatProducerVoiceChannel, voiceChannelVatlib->getVoiceChannel(), 0, VatConsumerNone, nullptr, 0); - } - - void CVoiceVatlib::disconnectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort) - { - auto audioMixerVatlib = qobject_cast(mixer); - Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer."); - Vat_VoiceConnect(VatProducerAudioMixer, audioMixerVatlib->getVatAudioMixer(), outputPort, VatConsumerNone, nullptr, 0); - } - - void CVoiceVatlib::timerEvent(QTimerEvent *) - { - Q_ASSERT_X(m_audioService, "CVoiceVatlib", "VatAudioService invalid!"); - Vat_ExecuteVoiceTasks(m_audioService.data()); - } - - void CVoiceVatlib::voiceLogHandler(VatSeverityLevel severity, const char *context, const char *message) - { - QString logMessage(context); - logMessage += ": "; - logMessage += message; - if (severity == vatSeverityDebug) { CLogMessage(static_cast(nullptr)).debug(logMessage); } - else if (severity == vatSeverityInfo) { CLogMessage(static_cast(nullptr)).info(logMessage); } - else if (severity == vatSeverityWarning) { CLogMessage(static_cast(nullptr)).warning(logMessage); } - else if (severity == vatSeverityError) { CLogMessage(static_cast(nullptr)).error(logMessage); } - } - } // namespace -} // namespace diff --git a/src/blackcore/vatsim/voicevatlib.h b/src/blackcore/vatsim/voicevatlib.h deleted file mode 100644 index 970071961..000000000 --- a/src/blackcore/vatsim/voicevatlib.h +++ /dev/null @@ -1,133 +0,0 @@ -/* Copyright (C) 2013 - * swift Project Community / Contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated, - * or distributed except according to the terms contained in the LICENSE file. - */ - -//! \file - -#ifndef BLACKCORE_VOICE_VATLIB_H -#define BLACKCORE_VOICE_VATLIB_H - -#include "blackcore/audiomixer.h" -#include "blackcore/blackcoreexport.h" -#include "blackcore/voice.h" -#include "blackmisc/audio/settings/voicesettings.h" -#include "blackmisc/logcategorylist.h" -#include - -#include -#include -#include -#include - -class QTimerEvent; - -struct VatAudioService_tag; -struct VatUDPAudioPort_tag; -template class QSharedPointer; - -#ifdef Q_OS_WIN -#ifndef NOMINMAX -#define NOMINMAX -#endif -#include -#endif - -namespace BlackCore -{ - class IAudioInputDevice; - class IAudioOutputDevice; - class IVoiceChannel; - - namespace Vatsim - { - //! Vatlib implementation of the IVoice interface. - class BLACKCORE_EXPORT CVoiceVatlib : public IVoice - { - Q_OBJECT - - public: - //! Log. categories - static const BlackMisc::CLogCategoryList &getLogCategories(); - - //! Default constructor - CVoiceVatlib(QObject *parent = nullptr); - - //! Destructor - virtual ~CVoiceVatlib() override; - - //! \copydoc IVoice::setVoiceSetup() - virtual void setVoiceSetup(const BlackMisc::Audio::CVoiceSetup &setup) override; - - //! \copydoc IVoice::getVoiceSetup() - virtual BlackMisc::Audio::CVoiceSetup getVoiceSetup() const override; - - //! \copydoc IVoice::createVoiceChannel() - virtual QSharedPointer createVoiceChannel() override; - - //! \copydoc IVoice::createInputDevice() - virtual std::unique_ptr createInputDevice() override; - - //! \copydoc IVoice::createOutputDevice() - virtual std::unique_ptr createOutputDevice() override; - - //! \copydoc IVoice::createAudioMixer() - virtual std::unique_ptr createAudioMixer() override; - - //! \copydoc IVoice::connectVoice() - virtual void connectVoice(IAudioInputDevice *device, IAudioMixer *mixer, IAudioMixer::InputPort inputPort) override; - - //! \copydoc IVoice::connectVoice() - virtual void connectVoice(IVoiceChannel *channel, IAudioMixer *mixer, IAudioMixer::InputPort inputPort) override; - - //! \copydoc IVoice::connectVoice() - virtual void connectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort, IAudioOutputDevice *device) override; - - //! \copydoc IVoice::connectVoice() - virtual void connectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort, IVoiceChannel *channel) override; - - //! \copydoc IVoice::disconnectVoice() - void disconnectVoice(IAudioInputDevice *device) override; - - //! \copydoc IVoice::disconnectVoice() - void disconnectVoice(IVoiceChannel *channel) override; - - //! \copydoc IVoice::disconnectVoice() - void disconnectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort) override; - - protected: - //! Process voice lib - virtual void timerEvent(QTimerEvent *) override; - - private: - //! this struct calls Vat_DestroyAudioService to delete the pointer - struct VatAudioServiceDeleter - { - static inline void cleanup(VatAudioService *obj) - { - Vat_DestroyAudioService(obj); - } - }; - - //! this struct calls Vat_DestroyUDPAudioPort to delete the pointer - struct VatUDPAudioPortDeleter - { - static inline void cleanup(VatUDPAudioPort *obj) - { - Vat_DestroyUDPAudioPort(obj); - } - }; - - static void voiceLogHandler(VatSeverityLevel severity, const char *context, const char *message); - - BlackMisc::CSetting m_vatsimVoiceSettings { this }; - QScopedPointer m_audioService; - QScopedPointer m_udpPort; - }; - } // namespace -} // namespace - -#endif // guard