diff --git a/src/client.cpp b/src/client.cpp index b88ace5a..02c880ff 100755 --- a/src/client.cpp +++ b/src/client.cpp @@ -220,6 +220,23 @@ CClient::CClient ( const quint16 iPortNumber, } } +CClient::~CClient() +{ + // free audio encoders and decoders + opus_custom_encoder_destroy ( OpusEncoderMono ); + opus_custom_decoder_destroy ( OpusDecoderMono ); + opus_custom_encoder_destroy ( OpusEncoderStereo ); + opus_custom_decoder_destroy ( OpusDecoderStereo ); + opus_custom_encoder_destroy ( Opus64EncoderMono ); + opus_custom_decoder_destroy ( Opus64DecoderMono ); + opus_custom_encoder_destroy ( Opus64EncoderStereo ); + opus_custom_decoder_destroy ( Opus64DecoderStereo ); + + // free audio modes + opus_custom_mode_destroy ( OpusMode ); + opus_custom_mode_destroy ( Opus64Mode ); +} + void CClient::OnSendProtMessage ( CVector vecMessage ) { // the protocol queries me to call the function to send the message diff --git a/src/client.h b/src/client.h index 24c61750..c73c7fbf 100755 --- a/src/client.h +++ b/src/client.h @@ -110,6 +110,8 @@ public: const bool bNoAutoJackConnect, const QString& strNClientName ); + virtual ~CClient(); + void Start(); void Stop(); bool IsRunning() { return Sound.IsRunning(); } diff --git a/src/server.cpp b/src/server.cpp index 80449d24..612f3426 100755 --- a/src/server.cpp +++ b/src/server.cpp @@ -550,6 +550,26 @@ void CServer::CreateAndSendJitBufMessage ( const int iCurChanID, vecChannels[iCurChanID].CreateJitBufMes ( iNNumFra ); } +CServer::~CServer() +{ + for ( int i = 0; i < iMaxNumChannels; i++ ) + { + // free audio encoders and decoders + opus_custom_encoder_destroy ( OpusEncoderMono[i] ); + opus_custom_decoder_destroy ( OpusDecoderMono[i] ); + opus_custom_encoder_destroy ( OpusEncoderStereo[i] ); + opus_custom_decoder_destroy ( OpusDecoderStereo[i] ); + opus_custom_encoder_destroy ( Opus64EncoderMono[i] ); + opus_custom_decoder_destroy ( Opus64DecoderMono[i] ); + opus_custom_encoder_destroy ( Opus64EncoderStereo[i] ); + opus_custom_decoder_destroy ( Opus64DecoderStereo[i] ); + + // free audio modes + opus_custom_mode_destroy ( OpusMode[i] ); + opus_custom_mode_destroy ( Opus64Mode[i] ); + } +} + void CServer::SendProtMessage ( int iChID, CVector vecMessage ) { // the protocol queries me to call the function to send the message diff --git a/src/server.h b/src/server.h index 4a370ad0..bb58dc2d 100755 --- a/src/server.h +++ b/src/server.h @@ -183,6 +183,8 @@ public: const bool bNUseDoubleSystemFrameSize, const ELicenceType eNLicenceType ); + virtual ~CServer(); + void Start(); void Stop(); bool IsRunning() { return HighPrecisionTimer.isActive(); }