refs #372 Move voice channel sharing into CContextAudio

Before a very complex mechanism was implemented in order to share
a vatlib voice channel resource if more than one COM unit was connected
to the same channel. This is now moved into CContextAudio by mapping
a COM unit to a shared voice channel pointer.
This commit is contained in:
Roland Winklmeier
2015-02-03 21:22:11 +01:00
committed by Klaus Basan
parent 33dddf795e
commit 84ac5e9972
12 changed files with 354 additions and 530 deletions

View File

@@ -65,7 +65,37 @@ namespace BlackCore
VatVoiceChannel getVoiceChannel() const;
private:
QSharedPointer<CVoiceChannelVatlibPrivate> d_ptr;
struct VatVoiceChannelDeleter
{
static inline void cleanup(VatProducerConsumer_tag *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 transmissionChanged(VatVoiceChannel, VatVoiceTransmissionStatus status);
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 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::CCallsignList 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;
};
}