From fda3fbf9dd86efa7ff3e37b2b14c255bf48ccc67 Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandresavard@alexandresavard-desktop.(none)> Date: Thu, 1 Apr 2010 18:05:46 -0400 Subject: [PATCH] [#3124] Delete audio codec when stopping RTP session --- sflphone-common/src/audio/audiortp/AudioRtpSession.h | 6 +++++- sflphone-common/src/audio/codecs/codecDescriptor.cpp | 6 ++---- sflphone-common/src/sip/sipvoiplink.cpp | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/sflphone-common/src/audio/audiortp/AudioRtpSession.h b/sflphone-common/src/audio/audiortp/AudioRtpSession.h index d2497d5a43..bfb5a72c22 100644 --- a/sflphone-common/src/audio/audiortp/AudioRtpSession.h +++ b/sflphone-common/src/audio/audiortp/AudioRtpSession.h @@ -267,6 +267,10 @@ namespace sfl { delete [] _spkrDataConverted; delete _time; delete _converter; + + if (_audiocodec) { + delete _audiocodec; _audiocodec = NULL; + } } template <typename D> @@ -615,7 +619,7 @@ namespace sfl { _debug("RTP: Starting main thread"); setSessionTimeouts(); setSessionMedia(audiocodec); - initBuffers(); + initBuffers(); return start(_mainloopSemaphore); } diff --git a/sflphone-common/src/audio/codecs/codecDescriptor.cpp b/sflphone-common/src/audio/codecs/codecDescriptor.cpp index 8ea6fab920..c13c907279 100644 --- a/sflphone-common/src/audio/codecs/codecDescriptor.cpp +++ b/sflphone-common/src/audio/codecs/codecDescriptor.cpp @@ -221,8 +221,6 @@ AudioCodec* CodecDescriptor::loadCodec (std::string path) { void CodecDescriptor::unloadCodec (CodecHandlePointer p) { - _debug("CodecDescriptor: Unload codec"); - using std::cerr; destroy_t* destroyCodec = (destroy_t*) dlsym (p.second , "destroy"); @@ -250,15 +248,15 @@ AudioCodec* CodecDescriptor::instantiateCodec (AudioCodecType payload) { AudioCodec* a = createCodec(); return a; - } - iter++; } return NULL; } + + AudioCodec* CodecDescriptor::getFirstCodecAvailable (void) { CodecsMap::iterator iter = _CodecsMap.begin(); diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp index 01c7d21854..9895d84a57 100644 --- a/sflphone-common/src/sip/sipvoiplink.cpp +++ b/sflphone-common/src/sip/sipvoiplink.cpp @@ -3276,14 +3276,14 @@ void call_on_media_update (pjsip_inv_session *inv, pj_status_t status) AudioCodec* audiocodec = Manager::instance().getCodecDescriptorMap().instantiateCodec(pl); if (audiocodec == NULL) - _error ("SIP: No audiocodec found"); + _error ("UserAgent: No audiocodec found"); try { call->setAudioStart (true); call->getAudioRtp()->start(audiocodec); } catch (exception& rtpException) { - _debug ("%s", rtpException.what()); + _error ("UserAgent: Error: %s", rtpException.what()); } } -- GitLab