mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 14:55:36 +08:00
Upgrade to vatlib v0.9.7
This commit is contained in:
committed by
Klaus Basan
parent
dd0f4058f2
commit
d68f678cc5
Submodule externals updated: fe097bc329...db480d4361
@@ -7,6 +7,7 @@
|
||||
* contained in the LICENSE file.
|
||||
*/
|
||||
|
||||
|
||||
#include "blackcore/audiodevice.h"
|
||||
#include "blackcore/audiomixer.h"
|
||||
#include "blackcore/context/contextaudioimpl.h"
|
||||
|
||||
@@ -35,9 +35,8 @@ namespace BlackCore
|
||||
return static_cast<CAudioOutputDeviceVatlib *>(cbvar);
|
||||
}
|
||||
|
||||
CAudioInputDeviceVatlib::CAudioInputDeviceVatlib(VatAudioService audioService, QObject *parent)
|
||||
: IAudioInputDevice(parent),
|
||||
m_audioService(audioService)
|
||||
CAudioInputDeviceVatlib::CAudioInputDeviceVatlib(VatAudioService *audioService, QObject *parent)
|
||||
: IAudioInputDevice(parent)
|
||||
{
|
||||
m_inputCodec.reset(Vat_CreateLocalInputCodec(audioService, vatCodecLegacy));
|
||||
Vat_GetInputDeviceInfo(m_inputCodec.data(), onInputHardwareDeviceReceived, this, nullptr);
|
||||
@@ -82,11 +81,10 @@ namespace BlackCore
|
||||
cbvar_cast_inputDevice(cbVar)->m_devices.push_back(inputDevice);
|
||||
}
|
||||
|
||||
CAudioOutputDeviceVatlib::CAudioOutputDeviceVatlib(VatAudioService audioService, QObject *parent)
|
||||
: IAudioOutputDevice(parent),
|
||||
m_audioService(audioService)
|
||||
CAudioOutputDeviceVatlib::CAudioOutputDeviceVatlib(VatAudioService *audioService, QObject *parent)
|
||||
: IAudioOutputDevice(parent)
|
||||
{
|
||||
m_outputCodec.reset(Vat_CreateLocalOutputCodec(m_audioService, vatCodecLegacy));
|
||||
m_outputCodec.reset(Vat_CreateLocalOutputCodec(audioService, vatCodecLegacy));
|
||||
Vat_GetOutputDeviceInfo(m_outputCodec.data(), onOutputHardwareDeviceReceived, this, nullptr);
|
||||
m_currentDevice = getDefaultOutputDevice();
|
||||
}
|
||||
|
||||
@@ -21,9 +21,6 @@
|
||||
#include <QObject>
|
||||
#include <QScopedPointer>
|
||||
|
||||
struct VatConsumer_tag;
|
||||
struct VatProducer_tag;
|
||||
|
||||
namespace BlackCore
|
||||
{
|
||||
namespace Vatsim
|
||||
@@ -36,7 +33,7 @@ namespace BlackCore
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
CAudioInputDeviceVatlib(VatAudioService audioService, QObject *parent = nullptr);
|
||||
CAudioInputDeviceVatlib(VatAudioService *audioService, QObject *parent = nullptr);
|
||||
|
||||
//! Destructor
|
||||
virtual ~CAudioInputDeviceVatlib() = default;
|
||||
@@ -54,13 +51,13 @@ namespace BlackCore
|
||||
virtual void setInputDevice(const BlackMisc::Audio::CAudioDeviceInfo &device) override;
|
||||
|
||||
//! Get vatlib input device pointer
|
||||
VatLocalInputCodec getVatLocalInputCodec() { return m_inputCodec.data(); }
|
||||
VatLocalInputCodec *getVatLocalInputCodec() { return m_inputCodec.data(); }
|
||||
|
||||
private:
|
||||
|
||||
struct VatLocalInputCodecDeleter
|
||||
{
|
||||
static inline void cleanup(VatProducer_tag *obj)
|
||||
static inline void cleanup(VatLocalInputCodec *obj)
|
||||
{
|
||||
if (obj) Vat_DestroyLocalInputCodec(obj);
|
||||
}
|
||||
@@ -71,8 +68,7 @@ namespace BlackCore
|
||||
BlackMisc::Audio::CAudioDeviceInfoList m_devices; /*!< in and output devices */
|
||||
BlackMisc::Audio::CAudioDeviceInfo m_currentDevice;
|
||||
|
||||
VatAudioService m_audioService;
|
||||
QScopedPointer<VatProducer_tag, VatLocalInputCodecDeleter> m_inputCodec;
|
||||
QScopedPointer<VatLocalInputCodec, VatLocalInputCodecDeleter> m_inputCodec;
|
||||
};
|
||||
|
||||
//! Audio Output Device
|
||||
@@ -83,7 +79,7 @@ namespace BlackCore
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
CAudioOutputDeviceVatlib(VatAudioService audioService, QObject *parent = nullptr);
|
||||
CAudioOutputDeviceVatlib(VatAudioService *audioService, QObject *parent = nullptr);
|
||||
|
||||
//! Destructor
|
||||
virtual ~CAudioOutputDeviceVatlib() = default;
|
||||
@@ -107,13 +103,13 @@ namespace BlackCore
|
||||
virtual int getOutputVolume() const override;
|
||||
|
||||
//! Get vatlib output device pointer
|
||||
VatLocalOutputCodec getVatLocalOutputCodec() { return m_outputCodec.data(); }
|
||||
VatLocalOutputCodec *getVatLocalOutputCodec() { return m_outputCodec.data(); }
|
||||
|
||||
private:
|
||||
|
||||
struct VatLocalOutputCodecDeleter
|
||||
{
|
||||
static inline void cleanup(VatConsumer_tag *obj)
|
||||
static inline void cleanup(VatLocalOutputCodec *obj)
|
||||
{
|
||||
if (obj) Vat_DestroyLocalOutputCodec(obj);
|
||||
}
|
||||
@@ -125,8 +121,7 @@ namespace BlackCore
|
||||
BlackMisc::Audio::CAudioDeviceInfoList m_devices; /*!< in and output devices */
|
||||
BlackMisc::Audio::CAudioDeviceInfo m_currentDevice;
|
||||
|
||||
VatAudioService m_audioService;
|
||||
QScopedPointer<VatConsumer_tag, VatLocalOutputCodecDeleter> m_outputCodec;
|
||||
QScopedPointer<VatLocalOutputCodec, VatLocalOutputCodecDeleter> m_outputCodec;
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
#include <QObject>
|
||||
#include <QScopedPointer>
|
||||
|
||||
struct VatProducerConsumer_tag;
|
||||
|
||||
namespace BlackCore
|
||||
{
|
||||
namespace Vatsim
|
||||
@@ -52,19 +50,19 @@ namespace BlackCore
|
||||
virtual bool hasMixerConnection(InputPort inputPort, OutputPort outputPort) override;
|
||||
|
||||
//! Return the pointer to vatlib audio mixer
|
||||
VatAudioMixer getVatAudioMixer() { return m_audioMixer.data(); }
|
||||
VatAudioMixer *getVatAudioMixer() { return m_audioMixer.data(); }
|
||||
|
||||
private:
|
||||
|
||||
struct VatAudioMixerDeleter
|
||||
{
|
||||
static inline void cleanup(VatProducerConsumer_tag *obj)
|
||||
static inline void cleanup(VatAudioMixer *obj)
|
||||
{
|
||||
if (obj) Vat_DestroyAudioMixer(obj);
|
||||
}
|
||||
};
|
||||
|
||||
QScopedPointer<VatProducerConsumer_tag, VatAudioMixerDeleter> m_audioMixer;
|
||||
QScopedPointer<VatAudioMixer, VatAudioMixerDeleter> m_audioMixer;
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
#include <type_traits>
|
||||
|
||||
static_assert(! std::is_abstract<BlackCore::Vatsim::CNetworkVatlib>::value, "Must implement all pure virtuals");
|
||||
static_assert(VAT_LIBVATLIB_VERSION == 906, "Wrong vatlib header installed");
|
||||
static_assert(VAT_LIBVATLIB_VERSION == 907, "Wrong vatlib header installed");
|
||||
|
||||
using namespace BlackConfig;
|
||||
using namespace BlackMisc;
|
||||
@@ -84,7 +84,7 @@ namespace BlackCore
|
||||
CNetworkVatlib::CNetworkVatlib(IOwnAircraftProvider *ownAircraft, QObject *parent)
|
||||
: INetwork(parent), COwnAircraftAware(ownAircraft),
|
||||
m_loginMode(LoginNormal),
|
||||
m_status(vatStatusIdle),
|
||||
m_status(vatStatusDisconnected),
|
||||
m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1)
|
||||
{
|
||||
connect(this, &CNetworkVatlib::terminate, this, &INetwork::terminateConnection, Qt::QueuedConnection);
|
||||
@@ -132,7 +132,8 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
m_net.reset(Vat_CreateNetworkSession(serverType, sApp->swiftVersionChar(),
|
||||
CBuildConfig::getVersion().majorVersion(), CBuildConfig::getVersion().minorVersion(),
|
||||
CBuildConfig::getVersion().majorVersion(),
|
||||
CBuildConfig::getVersion().minorVersion(),
|
||||
"None", clientId, clientKey.toLocal8Bit().constData(),
|
||||
clientCapabilities));
|
||||
|
||||
@@ -149,7 +150,7 @@ namespace BlackCore
|
||||
Vat_SetMetarResponseHandler(m_net.data(), onMetarReceived, this);
|
||||
Vat_SetClientQueryHandler(m_net.data(), onInfoQueryRequestReceived, this);
|
||||
Vat_SetClientQueryResponseHandler(m_net.data(), onInfoQueryReplyReceived, this);
|
||||
Vat_SetInfoCAPSReplyHandler(m_net.data(), onCapabilitiesReplyReceived, this);
|
||||
Vat_SetClientCapabilitiesReplyHandler(m_net.data(), onCapabilitiesReplyReceived, this);
|
||||
Vat_SetControllerAtisHandler(m_net.data(), onAtisReplyReceived, this);
|
||||
Vat_SetFlightPlanHandler(m_net.data(), onFlightPlanReceived, this);
|
||||
Vat_SetServerErrorHandler(m_net.data(), onErrorReceived, this);
|
||||
@@ -248,12 +249,10 @@ namespace BlackCore
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case vatStatusIdle: return INetwork::Disconnected;
|
||||
case vatStatusConnecting: return INetwork::Connecting;
|
||||
case vatStatusConnected: return INetwork::Connected;
|
||||
case vatStatusDisconnected: return INetwork::Disconnected;
|
||||
case vatStatusDisconnecting: return INetwork::Disconnecting;
|
||||
case vatStatusError: return INetwork::DisconnectedError;
|
||||
}
|
||||
qFatal("unrecognised connection status");
|
||||
return INetwork::DisconnectedError;
|
||||
@@ -372,11 +371,11 @@ namespace BlackCore
|
||||
//! \fixme Define recognized simulators somewhere */
|
||||
if (simInfo.getSimulator() == "fs9" || simInfo.getSimulator() == "fsx")
|
||||
{
|
||||
return vatSimTypeMSCFS;
|
||||
return vatSimTypeMSFS95;
|
||||
}
|
||||
else if (simInfo.getSimulator() == "xplane")
|
||||
{
|
||||
return vatSimTypeXPLANE;
|
||||
return vatSimTypeXPLANE10;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -795,19 +794,19 @@ namespace BlackCore
|
||||
return static_cast<CNetworkVatlib *>(cbvar);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onConnectionStatusChanged(VatSessionID, VatConnectionStatus, VatConnectionStatus newStatus, void *cbvar)
|
||||
void CNetworkVatlib::onConnectionStatusChanged(VatFsdClient *, VatConnectionStatus, VatConnectionStatus newStatus, void *cbvar)
|
||||
{
|
||||
cbvar_cast(cbvar)->changeConnectionStatus(newStatus);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onTextMessageReceived(VatSessionID, const char *from, const char *to, const char *msg, void *cbvar)
|
||||
void CNetworkVatlib::onTextMessageReceived(VatFsdClient *, const char *from, const char *to, const char *msg, void *cbvar)
|
||||
{
|
||||
CTextMessage tm(cbvar_cast(cbvar)->fromFSD(msg), CCallsign(cbvar_cast(cbvar)->fromFSD(from)), CCallsign(cbvar_cast(cbvar)->fromFSD(to)));
|
||||
tm.setCurrentUtcTime();
|
||||
cbvar_cast(cbvar)->consolidateTextMessage(tm);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onRadioMessageReceived(VatSessionID, const char *from, int numFreq, int *freqList, const char *msg, void *cbvar)
|
||||
void CNetworkVatlib::onRadioMessageReceived(VatFsdClient *, const char *from, int numFreq, int *freqList, const char *msg, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
const int com1 = self->getOwnAircraft().getCom1System().getFrequencyActive().valueInteger(CFrequencyUnit::kHz());
|
||||
@@ -826,18 +825,18 @@ namespace BlackCore
|
||||
emit cbvar_cast(cbvar)->textMessagesReceived(messages);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onPilotDisconnected(VatSessionID, const char *callsign, void *cbvar)
|
||||
void CNetworkVatlib::onPilotDisconnected(VatFsdClient *, const char *callsign, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
emit self->pilotDisconnected(CCallsign(self->fromFSD(callsign), CCallsign::Aircraft));
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onControllerDisconnected(VatSessionID, const char *callsign, void *cbvar)
|
||||
void CNetworkVatlib::onControllerDisconnected(VatFsdClient *, const char *callsign, void *cbvar)
|
||||
{
|
||||
emit cbvar_cast(cbvar)->atcDisconnected(CCallsign(cbvar_cast(cbvar)->fromFSD(callsign), CCallsign::Atc));
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onPilotPositionUpdate(VatSessionID, const char *callsignChar , const VatPilotPosition *position, void *cbvar)
|
||||
void CNetworkVatlib::onPilotPositionUpdate(VatFsdClient *, const char *callsignChar , const VatPilotPosition *position, void *cbvar)
|
||||
{
|
||||
const CCallsign callsign(callsignChar, CCallsign::Aircraft);
|
||||
CAircraftSituation situation(
|
||||
@@ -878,7 +877,7 @@ namespace BlackCore
|
||||
emit cbvar_cast(cbvar)->aircraftPositionUpdate(situation, transponder);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onAircraftConfigReceived(VatSessionID, const char *callsignChar, const char *aircraftConfig, void *cbvar)
|
||||
void CNetworkVatlib::onAircraftConfigReceived(VatFsdClient *, const char *callsignChar, const char *aircraftConfig, void *cbvar)
|
||||
{
|
||||
const QByteArray json = cbvar_cast(cbvar)->fromFSD(aircraftConfig).toUtf8();
|
||||
QJsonParseError parserError;
|
||||
@@ -905,7 +904,7 @@ namespace BlackCore
|
||||
emit self->aircraftConfigPacketReceived(callsign, config, isFull);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onInterimPilotPositionUpdate(VatSessionID, const char *sender, const VatInterimPilotPosition *position, void *cbvar)
|
||||
void CNetworkVatlib::onInterimPilotPositionUpdate(VatFsdClient *, const char *sender, const VatInterimPilotPosition *position, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
CAircraftSituation situation(
|
||||
@@ -924,7 +923,7 @@ namespace BlackCore
|
||||
emit self->aircraftInterimPositionUpdate(situation);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onAtcPositionUpdate(VatSessionID, const char *callsign, const VatAtcPosition *pos, void *cbvar)
|
||||
void CNetworkVatlib::onAtcPositionUpdate(VatFsdClient *, const char *callsign, const VatAtcPosition *pos, void *cbvar)
|
||||
{
|
||||
const int frequencyKHz = pos->frequency;
|
||||
CFrequency freq(frequencyKHz, CFrequencyUnit::kHz());
|
||||
@@ -934,17 +933,17 @@ namespace BlackCore
|
||||
CCoordinateGeodetic(pos->latitude, pos->longitude, 0), CLength(pos->visibleRange, CLengthUnit::NM()));
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onKicked(VatSessionID, const char *reason, void *cbvar)
|
||||
void CNetworkVatlib::onKicked(VatFsdClient *, const char *reason, void *cbvar)
|
||||
{
|
||||
emit cbvar_cast(cbvar)->kicked(cbvar_cast(cbvar)->fromFSD(reason));
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onPong(VatSessionID, const char *sender, double elapsedTime, void *cbvar)
|
||||
void CNetworkVatlib::onPong(VatFsdClient *, const char *sender, double elapsedTime, void *cbvar)
|
||||
{
|
||||
emit cbvar_cast(cbvar)->pongReceived(cbvar_cast(cbvar)->fromFSD(sender), CTime(elapsedTime, CTimeUnit::ms()));
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onCustomPacketReceived(VatSessionID, const char *callsign, const char *packetId, const char **data, int dataSize, void *cbvar)
|
||||
void CNetworkVatlib::onCustomPacketReceived(VatFsdClient *, const char *callsign, const char *packetId, const char **data, int dataSize, void *cbvar)
|
||||
{
|
||||
cbvar_cast(cbvar)->customPacketDispatcher(cbvar_cast(cbvar)->fromFSD(callsign), cbvar_cast(cbvar)->fromFSD(packetId), cbvar_cast(cbvar)->fromFSD(data, dataSize));
|
||||
}
|
||||
@@ -1007,13 +1006,13 @@ namespace BlackCore
|
||||
m_textMessagesToConsolidate.clear();
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onMetarReceived(VatSessionID, const char *data, void *cbvar)
|
||||
void CNetworkVatlib::onMetarReceived(VatFsdClient *, const char *data, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
emit self->metarReplyReceived(self->fromFSD(data));
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onInfoQueryRequestReceived(VatSessionID, const char *callsignString, VatClientQueryType type, const char *, void *cbvar)
|
||||
void CNetworkVatlib::onInfoQueryRequestReceived(VatFsdClient *, const char *callsignString, VatClientQueryType type, const char *, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
const CCallsign callsign(self->fromFSD(callsignString));
|
||||
@@ -1030,7 +1029,7 @@ namespace BlackCore
|
||||
}
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onInfoQueryReplyReceived(VatSessionID, const char *callsign, VatClientQueryType type, const char *data, const char *data2, void *cbvar)
|
||||
void CNetworkVatlib::onInfoQueryReplyReceived(VatFsdClient *, const char *callsign, VatClientQueryType type, const char *data, const char *data2, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
switch (type)
|
||||
@@ -1044,7 +1043,7 @@ namespace BlackCore
|
||||
}
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onCapabilitiesReplyReceived(VatSessionID, const char *callsign, int capabilityFlags, void *cbvar)
|
||||
void CNetworkVatlib::onCapabilitiesReplyReceived(VatFsdClient *, const char *callsign, int capabilityFlags, void *cbvar)
|
||||
{
|
||||
int flags = 0;
|
||||
if (capabilityFlags & vatCapsAtcInfo) { flags |= AcceptsAtisResponses; }
|
||||
@@ -1055,7 +1054,7 @@ namespace BlackCore
|
||||
emit self->capabilitiesReplyReceived(self->fromFSD(callsign), flags);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onAtisReplyReceived(VatSessionID, const char *callsign, const VatControllerAtis *atis, void *cbvar)
|
||||
void CNetworkVatlib::onAtisReplyReceived(VatFsdClient *, const char *callsign, const VatControllerAtis *atis, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
emit self->atisVoiceRoomReplyReceived(self->fromFSD(callsign), self->fromFSD(atis->voiceRoom));
|
||||
@@ -1084,7 +1083,7 @@ namespace BlackCore
|
||||
emit self->atisReplyReceived(CCallsign(self->fromFSD(callsign), CCallsign::Atc), atisMessage);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onFlightPlanReceived(VatSessionID, const char *callsignChar, const VatFlightPlan *fp, void *cbvar)
|
||||
void CNetworkVatlib::onFlightPlanReceived(VatFsdClient *, const char *callsignChar, const VatFlightPlan *fp, void *cbvar)
|
||||
{
|
||||
CFlightPlan::FlightRules rules = CFlightPlan::VFR;
|
||||
switch (fp->flightType)
|
||||
@@ -1130,7 +1129,7 @@ namespace BlackCore
|
||||
emit self->flightPlanReplyReceived(callsign, flightPlan);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onErrorReceived(VatSessionID, VatServerError error, const char *msg, const char *data, void *cbvar)
|
||||
void CNetworkVatlib::onErrorReceived(VatFsdClient *, VatServerError error, const char *msg, const char *data, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
switch (error)
|
||||
@@ -1160,14 +1159,14 @@ namespace BlackCore
|
||||
}
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onPilotInfoRequestReceived(VatSessionID, const char *callsignChar, void *cbvar)
|
||||
void CNetworkVatlib::onPilotInfoRequestReceived(VatFsdClient *, const char *callsignChar, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
const CCallsign callsign(self->fromFSD(callsignChar));
|
||||
QTimer::singleShot(0, self, [ = ]() { self->sendAircraftInfo(callsign); });
|
||||
}
|
||||
|
||||
void CNetworkVatlib::onPilotInfoReceived(VatSessionID, const char *callsignChar, const VatAircraftInfo *aircraftInfo, void *cbvar)
|
||||
void CNetworkVatlib::onPilotInfoReceived(VatFsdClient *, const char *callsignChar, const VatAircraftInfo *aircraftInfo, void *cbvar)
|
||||
{
|
||||
auto *self = cbvar_cast(cbvar);
|
||||
const CCallsign callsign(self->fromFSD(callsignChar), CCallsign::Aircraft);
|
||||
@@ -1179,9 +1178,13 @@ namespace BlackCore
|
||||
);
|
||||
}
|
||||
|
||||
void CNetworkVatlib::networkLogHandler(SeverityLevel /** severity **/, const char *message)
|
||||
void CNetworkVatlib::networkLogHandler(SeverityLevel /** severity **/, const char *context, const char *message)
|
||||
{
|
||||
CLogMessage(static_cast<CNetworkVatlib *>(nullptr)).error(message);
|
||||
QString errorMessage("vatlib ");
|
||||
errorMessage += context;
|
||||
errorMessage += ": ";
|
||||
errorMessage += message;
|
||||
CLogMessage(static_cast<CNetworkVatlib *>(nullptr)).error(errorMessage);
|
||||
}
|
||||
|
||||
const QJsonObject &CNetworkVatlib::JsonPackets::aircraftConfigRequest()
|
||||
|
||||
@@ -141,27 +141,27 @@ namespace BlackCore
|
||||
|
||||
//! \name Shimlib callbacks
|
||||
//! @{
|
||||
static void onConnectionStatusChanged(VatSessionID, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbvar);
|
||||
static void onTextMessageReceived(VatSessionID, const char *from, const char *to, const char *msg, void *cbvar);
|
||||
static void onRadioMessageReceived(VatSessionID, const char *from, int freqCount, int *freqList, const char *message, void *cbvar);
|
||||
static void onControllerDisconnected(VatSessionID, const char *callsign, void *cbvar);
|
||||
static void onInterimPilotPositionUpdate(VatSessionID, const char *sender, const VatInterimPilotPosition *position, void *cbvar);
|
||||
static void onAtcPositionUpdate(VatSessionID, const char *callsign, const VatAtcPosition *pos, void *cbvar);
|
||||
static void onKicked(VatSessionID, const char *reason, void *cbvar);
|
||||
static void onPong(VatSessionID, const char *sender, double elapsedTime, void *cbvar);
|
||||
static void onMetarReceived(VatSessionID, const char *data, void *cbvar);
|
||||
static void onInfoQueryRequestReceived(VatSessionID, const char *callsign, VatClientQueryType type, const char *data, void *cbvar);
|
||||
static void onInfoQueryReplyReceived(VatSessionID, const char *callsign, VatClientQueryType type, const char *data, const char *data2, void *cbvar);
|
||||
static void onCapabilitiesReplyReceived(VatSessionID, const char *callsign, int capabilityFlags, void *cbvar);
|
||||
static void onAtisReplyReceived(VatSessionID, const char *callsign, const VatControllerAtis *atis, void *cbvar);
|
||||
static void onFlightPlanReceived(VatSessionID, const char *callsign, const VatFlightPlan *fp, void *cbvar);
|
||||
static void onErrorReceived(VatSessionID, VatServerError error, const char *msg, const char *data, void *cbvar);
|
||||
static void onPilotDisconnected(VatSessionID, const char *callsign, void *cbvar);
|
||||
static void onPilotInfoRequestReceived(VatSessionID, const char *callsign, void *cbvar);
|
||||
static void onPilotInfoReceived(VatSessionID, const char *callsign, const VatAircraftInfo *aircraftInfo, void *cbvar);
|
||||
static void onPilotPositionUpdate(VatSessionID, const char *callsign, const VatPilotPosition *position, void *cbvar);
|
||||
static void onAircraftConfigReceived(VatSessionID, const char *callsign, const char *aircraftConfig, void *cbvar);
|
||||
static void onCustomPacketReceived(VatSessionID, const char *callsign, const char *packetId, const char **data, int dataSize, void *cbvar);
|
||||
static void onConnectionStatusChanged(VatFsdClient *, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbvar);
|
||||
static void onTextMessageReceived(VatFsdClient *, const char *from, const char *to, const char *msg, void *cbvar);
|
||||
static void onRadioMessageReceived(VatFsdClient *, const char *from, int freqCount, int *freqList, const char *message, void *cbvar);
|
||||
static void onControllerDisconnected(VatFsdClient *, const char *callsign, void *cbvar);
|
||||
static void onInterimPilotPositionUpdate(VatFsdClient *, const char *sender, const VatInterimPilotPosition *position, void *cbvar);
|
||||
static void onAtcPositionUpdate(VatFsdClient *, const char *callsign, const VatAtcPosition *pos, void *cbvar);
|
||||
static void onKicked(VatFsdClient *, const char *reason, void *cbvar);
|
||||
static void onPong(VatFsdClient *, const char *sender, double elapsedTime, void *cbvar);
|
||||
static void onMetarReceived(VatFsdClient *, const char *data, void *cbvar);
|
||||
static void onInfoQueryRequestReceived(VatFsdClient *, const char *callsign, VatClientQueryType type, const char *data, void *cbvar);
|
||||
static void onInfoQueryReplyReceived(VatFsdClient *, const char *callsign, VatClientQueryType type, const char *data, const char *data2, void *cbvar);
|
||||
static void onCapabilitiesReplyReceived(VatFsdClient *, const char *callsign, int capabilityFlags, void *cbvar);
|
||||
static void onAtisReplyReceived(VatFsdClient *, const char *callsign, const VatControllerAtis *atis, void *cbvar);
|
||||
static void onFlightPlanReceived(VatFsdClient *, const char *callsign, const VatFlightPlan *fp, void *cbvar);
|
||||
static void onErrorReceived(VatFsdClient *, VatServerError error, const char *msg, const char *data, void *cbvar);
|
||||
static void onPilotDisconnected(VatFsdClient *, const char *callsign, void *cbvar);
|
||||
static void onPilotInfoRequestReceived(VatFsdClient *, const char *callsign, void *cbvar);
|
||||
static void onPilotInfoReceived(VatFsdClient *, const char *callsign, const VatAircraftInfo *aircraftInfo, void *cbvar);
|
||||
static void onPilotPositionUpdate(VatFsdClient *, const char *callsign, const VatPilotPosition *position, void *cbvar);
|
||||
static void onAircraftConfigReceived(VatFsdClient *, const char *callsign, const char *aircraftConfig, void *cbvar);
|
||||
static void onCustomPacketReceived(VatFsdClient *, const char *callsign, const char *packetId, const char **data, int dataSize, void *cbvar);
|
||||
//! @}
|
||||
|
||||
QByteArray toFSD(const QString &qstr) const;
|
||||
@@ -177,7 +177,7 @@ namespace BlackCore
|
||||
bool isDisconnected() const { return m_status != vatStatusConnecting && m_status != vatStatusConnected; }
|
||||
static QString convertToUnicodeEscaped(const QString &str);
|
||||
static VatSimType convertToSimType(BlackMisc::Simulation::CSimulatorPluginInfo &simInfo);
|
||||
static void networkLogHandler(SeverityLevel severity, const char *message);
|
||||
static void networkLogHandler(SeverityLevel severity, const char *context, const char *message);
|
||||
void sendCustomPacket(const BlackMisc::Aviation::CCallsign &callsign, const QString &packetId, const QStringList &data);
|
||||
|
||||
static const QString &defaultModelString()
|
||||
@@ -208,13 +208,13 @@ namespace BlackCore
|
||||
void emitConsolidatedTextMessages();
|
||||
|
||||
//! Deletion policy for QScopedPointer
|
||||
struct VatlibQScopedPointerDeleter
|
||||
struct VatFsdClientDeleter
|
||||
{
|
||||
//! Called by QScopedPointer destructor
|
||||
static void cleanup(VatSessionID session) { if (session) Vat_DestroyNetworkSession(session); }
|
||||
static void cleanup(VatFsdClient *session) { if (session) Vat_DestroyNetworkSession(session); }
|
||||
};
|
||||
|
||||
QScopedPointer<PCSBClient, VatlibQScopedPointerDeleter> m_net;
|
||||
QScopedPointer<VatFsdClient, VatFsdClientDeleter> m_net;
|
||||
LoginMode m_loginMode;
|
||||
VatConnectionStatus m_status;
|
||||
BlackMisc::Network::CServer m_server;
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
//! \cond PRIVATE
|
||||
|
||||
#include "blackcore/application.h"
|
||||
#include "blackcore/context/contextnetwork.h"
|
||||
#include "blackcore/vatsim/voicechannelvatlib.h"
|
||||
#include "blackmisc/logmessage.h"
|
||||
#include "blackmisc/statusmessage.h"
|
||||
@@ -20,21 +22,20 @@
|
||||
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_audioService(audioService),
|
||||
m_udpPort(udpPort)
|
||||
CVoiceChannelVatlib::CVoiceChannelVatlib(VatAudioService *audioService, VatUDPAudioPort *udpPort, QObject *parent)
|
||||
: IVoiceChannel(parent)
|
||||
{
|
||||
m_voiceChannel.reset(Vat_CreateVoiceChannel(m_audioService, "", 3782, "", "", m_udpPort));
|
||||
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_SetVoiceTransmissionChangedHandler(m_voiceChannel.data(), processTransmissionChange, this);
|
||||
Vat_SetVoiceReceptionHandler(m_voiceChannel.data(), processVoiceReceptionChanged, this);
|
||||
|
||||
}
|
||||
|
||||
@@ -47,6 +48,14 @@ namespace BlackCore
|
||||
{
|
||||
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("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;
|
||||
Vat_SetRoomInfo(m_voiceChannel.data(), qPrintable(voiceRoom.getHostname()), 3782,
|
||||
@@ -101,7 +110,7 @@ namespace BlackCore
|
||||
return 100;
|
||||
}
|
||||
|
||||
VatVoiceChannel CVoiceChannelVatlib::getVoiceChannel() const
|
||||
VatVoiceChannel *CVoiceChannelVatlib::getVoiceChannel() const
|
||||
{
|
||||
return m_voiceChannel.data();
|
||||
}
|
||||
@@ -126,27 +135,27 @@ namespace BlackCore
|
||||
return callsign;
|
||||
}
|
||||
|
||||
void CVoiceChannelVatlib::userJoinedVoiceRoom(VatVoiceChannel, int /** id **/, const char *name)
|
||||
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)
|
||||
void CVoiceChannelVatlib::userLeftVoiceRoom(VatVoiceChannel *, int /** id **/, const char *name)
|
||||
{
|
||||
CCallsign callsign(extractCallsign(name));
|
||||
m_listCallsigns.remove(callsign);
|
||||
emit userLeftRoom(callsign);
|
||||
}
|
||||
|
||||
void CVoiceChannelVatlib::transmissionChanged(VatVoiceChannel, VatVoiceTransmissionStatus status)
|
||||
void CVoiceChannelVatlib::voiceReceptionChanged(VatVoiceChannel *, bool isVoiceReceiving)
|
||||
{
|
||||
if (status == vatVoiceStarted) emit audioStarted();
|
||||
if (isVoiceReceiving) emit audioStarted();
|
||||
else emit audioStopped();
|
||||
}
|
||||
|
||||
void CVoiceChannelVatlib::updateRoomStatus(VatVoiceChannel channel, VatConnectionStatus oldVatStatus, VatConnectionStatus newVatStatus)
|
||||
void CVoiceChannelVatlib::updateRoomStatus(VatVoiceChannel *channel, VatConnectionStatus oldVatStatus, VatConnectionStatus newVatStatus)
|
||||
{
|
||||
Q_UNUSED(channel);
|
||||
Q_UNUSED(oldVatStatus);
|
||||
@@ -190,25 +199,25 @@ namespace BlackCore
|
||||
return static_cast<CVoiceChannelVatlib *>(cbvar);
|
||||
}
|
||||
|
||||
void CVoiceChannelVatlib::processUserJoined(VatVoiceChannel channel, int id, const char *name, void *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)
|
||||
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::processTransmissionChange(VatVoiceChannel channel, VatVoiceTransmissionStatus status, void *cbVar)
|
||||
void CVoiceChannelVatlib::processVoiceReceptionChanged(VatVoiceChannel *channel, bool isVoiceReceiving, void *cbVar)
|
||||
{
|
||||
auto obj = cbvar_cast_voiceChannel(cbVar);
|
||||
obj->transmissionChanged(channel, status);
|
||||
obj->voiceReceptionChanged(channel, isVoiceReceiving);
|
||||
}
|
||||
|
||||
void CVoiceChannelVatlib::roomStatusUpdate(VatVoiceChannel channel, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbVar)
|
||||
void CVoiceChannelVatlib::roomStatusUpdate(VatVoiceChannel *channel, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbVar)
|
||||
{
|
||||
auto obj = cbvar_cast_voiceChannel(cbVar);
|
||||
obj->updateRoomStatus(channel, oldStatus, newStatus);
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
#include <QScopedPointer>
|
||||
#include <QString>
|
||||
|
||||
struct VatProducerConsumer_tag;
|
||||
|
||||
namespace BlackCore
|
||||
{
|
||||
namespace Vatsim
|
||||
@@ -40,7 +38,7 @@ namespace BlackCore
|
||||
public:
|
||||
|
||||
//! Default constructor
|
||||
CVoiceChannelVatlib(VatAudioService audioService, VatUDPAudioPort udpPort, QObject *parent = nullptr);
|
||||
CVoiceChannelVatlib(VatAudioService *audioService, VatUDPAudioPort *udpPort, QObject *parent = nullptr);
|
||||
|
||||
//! Destructor
|
||||
virtual ~CVoiceChannelVatlib();
|
||||
@@ -70,13 +68,13 @@ namespace BlackCore
|
||||
virtual int getVolume() const override;
|
||||
|
||||
//! Get vatlib channel pointer
|
||||
VatVoiceChannel getVoiceChannel() const;
|
||||
VatVoiceChannel *getVoiceChannel() const;
|
||||
|
||||
private:
|
||||
|
||||
struct VatVoiceChannelDeleter
|
||||
{
|
||||
static inline void cleanup(VatProducerConsumer_tag *obj)
|
||||
static inline void cleanup(VatVoiceChannel *obj)
|
||||
{
|
||||
if (obj) Vat_DestroyVoiceChannel(obj);
|
||||
}
|
||||
@@ -84,26 +82,23 @@ namespace BlackCore
|
||||
|
||||
BlackMisc::Aviation::CCallsign extractCallsign(const QString &name);
|
||||
|
||||
void userJoinedVoiceRoom(VatVoiceChannel, int id, const char *name);
|
||||
void userLeftVoiceRoom(VatVoiceChannel, int id, const char *name);
|
||||
void transmissionChanged(VatVoiceChannel, VatVoiceTransmissionStatus status);
|
||||
void updateRoomStatus(VatVoiceChannel channel, VatConnectionStatus oldStatus, VatConnectionStatus newStatus);
|
||||
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 processTransmissionChange(VatVoiceChannel channel, VatVoiceTransmissionStatus status, void *cbVar);
|
||||
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);
|
||||
static void roomStatusUpdate(VatVoiceChannel *channel, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbVar);
|
||||
|
||||
BlackMisc::Aviation::CCallsign m_callsign; // Own callsign
|
||||
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
|
||||
|
||||
VatAudioService m_audioService;
|
||||
VatUDPAudioPort m_udpPort;
|
||||
|
||||
QScopedPointer<VatProducerConsumer_tag, VatVoiceChannelDeleter> m_voiceChannel;
|
||||
QScopedPointer<VatVoiceChannel, VatVoiceChannelDeleter> m_voiceChannel;
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -74,7 +74,8 @@ namespace BlackCore
|
||||
auto audioMixerVatlib = qobject_cast<CAudioMixerVatlib *>(mixer);
|
||||
Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer.");
|
||||
|
||||
Vat_ConnectProducerToProducerConsumer(audioInputVatlib->getVatLocalInputCodec(), 0, audioMixerVatlib->getVatAudioMixer(), inputPort);
|
||||
Vat_VoiceConnect(VatProducerLocalInput, audioInputVatlib->getVatLocalInputCodec(), 0,
|
||||
VatConsumerAudioMixer, audioMixerVatlib->getVatAudioMixer(), inputPort);
|
||||
}
|
||||
|
||||
void CVoiceVatlib::connectVoice(IVoiceChannel *channel, IAudioMixer *mixer, IAudioMixer::InputPort inputPort)
|
||||
@@ -85,7 +86,8 @@ namespace BlackCore
|
||||
auto audioMixerVatlib = qobject_cast<CAudioMixerVatlib *>(mixer);
|
||||
Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer.");
|
||||
|
||||
Vat_ConnectProducerConsumerToProducerConsumer(voiceChannelVatlib->getVoiceChannel(), 0, audioMixerVatlib->getVatAudioMixer(), inputPort);
|
||||
Vat_VoiceConnect(VatProducerVoiceChannel, voiceChannelVatlib->getVoiceChannel(), 0,
|
||||
VatConsumerAudioMixer, audioMixerVatlib->getVatAudioMixer(), inputPort);
|
||||
}
|
||||
|
||||
void CVoiceVatlib::connectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort, IAudioOutputDevice *device)
|
||||
@@ -96,7 +98,8 @@ namespace BlackCore
|
||||
auto audioDeviceVatlib = qobject_cast<CAudioOutputDeviceVatlib *>(device);
|
||||
Q_ASSERT_X(audioDeviceVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioOutputDeviceVatlib pointer.");
|
||||
|
||||
Vat_ConnectProducerConsumerToConsumer(audioMixerVatlib->getVatAudioMixer(), outputPort, audioDeviceVatlib->getVatLocalOutputCodec(), 0);
|
||||
Vat_VoiceConnect(VatProducerAudioMixer, audioMixerVatlib->getVatAudioMixer(), outputPort,
|
||||
VatConsumerLocalOutput, audioDeviceVatlib->getVatLocalOutputCodec(), 0);
|
||||
}
|
||||
|
||||
void CVoiceVatlib::connectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort, IVoiceChannel *channel)
|
||||
@@ -107,39 +110,44 @@ namespace BlackCore
|
||||
auto voiceChannelVatlib = qobject_cast<CVoiceChannelVatlib *>(channel);
|
||||
Q_ASSERT_X(voiceChannelVatlib, "CVoiceVatlib::connectVoice", "No valid CVoiceChannelVatlib pointer.");
|
||||
|
||||
Vat_ConnectProducerConsumerToProducerConsumer(audioMixerVatlib->getVatAudioMixer(), outputPort, voiceChannelVatlib->getVoiceChannel(), 0);
|
||||
Vat_VoiceConnect(VatProducerAudioMixer, audioMixerVatlib->getVatAudioMixer(), outputPort,
|
||||
VatConsumerVoiceChannel, voiceChannelVatlib->getVoiceChannel(), 0);
|
||||
}
|
||||
|
||||
void CVoiceVatlib::disconnectVoice(IAudioInputDevice *device)
|
||||
{
|
||||
auto audioInputVatlib = qobject_cast<CAudioInputDeviceVatlib *>(device);
|
||||
Q_ASSERT_X(audioInputVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioInputDeviceVatlib pointer.");
|
||||
Vat_ConnectProducerToConsumer(audioInputVatlib->getVatLocalInputCodec(), 0, nullptr, 0);
|
||||
Vat_VoiceConnect(VatProducerLocalInput, audioInputVatlib->getVatLocalInputCodec(), 0, VatConsumerNone, nullptr, 0);
|
||||
}
|
||||
|
||||
void CVoiceVatlib::disconnectVoice(IVoiceChannel *channel)
|
||||
{
|
||||
auto voiceChannelVatlib = qobject_cast<CVoiceChannelVatlib *>(channel);
|
||||
Q_ASSERT_X(voiceChannelVatlib, "CVoiceVatlib::connectVoice", "No valid CVoiceChannelVatlib pointer.");
|
||||
Vat_ConnectProducerConsumerToConsumer(voiceChannelVatlib->getVoiceChannel(), 0, nullptr, 0);
|
||||
Vat_VoiceConnect(VatProducerVoiceChannel, voiceChannelVatlib->getVoiceChannel(), 0, VatConsumerNone, nullptr, 0);
|
||||
}
|
||||
|
||||
void CVoiceVatlib::disconnectVoice(IAudioMixer *mixer, IAudioMixer::OutputPort outputPort)
|
||||
{
|
||||
auto audioMixerVatlib = qobject_cast<CAudioMixerVatlib *>(mixer);
|
||||
Q_ASSERT_X(audioMixerVatlib, "CVoiceVatlib::connectVoice", "No valid CAudioMixerVatlib pointer.");
|
||||
Vat_ConnectProducerConsumerToConsumer(audioMixerVatlib->getVatAudioMixer(), outputPort, nullptr, 0);
|
||||
Vat_VoiceConnect(VatProducerAudioMixer, audioMixerVatlib->getVatAudioMixer(), outputPort, VatConsumerNone, nullptr, 0);
|
||||
}
|
||||
|
||||
void CVoiceVatlib::timerEvent(QTimerEvent *)
|
||||
{
|
||||
Q_ASSERT_X(m_audioService, "CVoiceVatlib", "VatAudioService invalid!");
|
||||
Vat_ExecuteTasks(m_audioService.data());
|
||||
Vat_ExecuteVoiceTasks(m_audioService.data());
|
||||
}
|
||||
|
||||
void CVoiceVatlib::voiceLogHandler(SeverityLevel /** severity **/, const char *message)
|
||||
void CVoiceVatlib::voiceLogHandler(SeverityLevel /** severity **/, const char *context, const char *message)
|
||||
{
|
||||
CLogMessage(static_cast<CVoiceVatlib *>(nullptr)).error(message);
|
||||
QString errorMessage ("vatlib ");
|
||||
errorMessage += context;
|
||||
errorMessage += ": ";
|
||||
errorMessage += message;
|
||||
CLogMessage(static_cast<CVoiceVatlib *>(nullptr)).error(errorMessage);
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -99,7 +99,7 @@ namespace BlackCore
|
||||
//! this struct calls Vat_DestroyAudioService to delete the pointer
|
||||
struct VatAudioServiceDeleter
|
||||
{
|
||||
static inline void cleanup(VatAudioService_tag *obj)
|
||||
static inline void cleanup(VatAudioService *obj)
|
||||
{
|
||||
Vat_DestroyAudioService(obj);
|
||||
}
|
||||
@@ -108,16 +108,16 @@ namespace BlackCore
|
||||
//! this struct calls Vat_DestroyUDPAudioPort to delete the pointer
|
||||
struct VatUDPAudioPortDeleter
|
||||
{
|
||||
static inline void cleanup(VatUDPAudioPort_tag *obj)
|
||||
static inline void cleanup(VatUDPAudioPort *obj)
|
||||
{
|
||||
Vat_DestroyUDPAudioPort(obj);
|
||||
}
|
||||
};
|
||||
|
||||
static void voiceLogHandler(SeverityLevel severity, const char *message);
|
||||
static void voiceLogHandler(SeverityLevel severity, const char *context, const char *message);
|
||||
|
||||
QScopedPointer<VatAudioService_tag, VatAudioServiceDeleter> m_audioService;
|
||||
QScopedPointer<VatUDPAudioPort_tag, VatUDPAudioPortDeleter> m_udpPort;
|
||||
QScopedPointer<VatAudioService, VatAudioServiceDeleter> m_audioService;
|
||||
QScopedPointer<VatUDPAudioPort, VatUDPAudioPortDeleter> m_udpPort;
|
||||
};
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user