r3267 - in trunk/libminisip: include/libminisip/media source/subsystem_media
svn at minisip.org
svn at minisip.org
Wed May 9 13:58:59 CEST 2007
Author: erik
Date: 2007-05-03 15:49:39 +0200 (Thu, 03 May 2007)
New Revision: 3267
Modified:
trunk/libminisip/include/libminisip/media/CallRecorder.h
trunk/libminisip/include/libminisip/media/MediaHandler.h
trunk/libminisip/include/libminisip/media/Session.h
trunk/libminisip/source/subsystem_media/CallRecorder.cxx
trunk/libminisip/source/subsystem_media/Session.cxx
Log:
* libminisip: Break CallRecorder<->RtpReceiver reference loop.
Modified: trunk/libminisip/include/libminisip/media/CallRecorder.h
===================================================================
--- trunk/libminisip/include/libminisip/media/CallRecorder.h 2007-05-03 13:45:17 UTC (rev 3266)
+++ trunk/libminisip/include/libminisip/media/CallRecorder.h 2007-05-03 13:49:39 UTC (rev 3267)
@@ -72,8 +72,15 @@
MRef<IpProvider *> ipProvider );
virtual ~CallRecorder( );
+ /**
+ * Removes reference loops (needs to be called to let the
+ * garbage collector remove this object)
+ */
+ void free();
+
virtual std::string getMemObjectType() const {return "CallRecorder";}
-
+
+
/**
* Inherited from SoundRecorderCallback
* Function that will be called when sound data is available from
Modified: trunk/libminisip/include/libminisip/media/MediaHandler.h
===================================================================
--- trunk/libminisip/include/libminisip/media/MediaHandler.h 2007-05-03 13:45:17 UTC (rev 3266)
+++ trunk/libminisip/include/libminisip/media/MediaHandler.h 2007-05-03 13:49:39 UTC (rev 3267)
@@ -60,7 +60,7 @@
* @param callId identifier shared with the SIP stack
* @returns a reference to the session created
*/
- MRef<Session *> createSession( /*SipDialogSecurityConfig &config*/ MRef<SipIdentity*> ident, std::string callId = "" );
+ MRef<Session *> createSession( MRef<SipIdentity*> ident, std::string callId = "" );
/**
* Registers a new media type (audio or video
Modified: trunk/libminisip/include/libminisip/media/Session.h
===================================================================
--- trunk/libminisip/include/libminisip/media/Session.h 2007-05-03 13:45:17 UTC (rev 3266)
+++ trunk/libminisip/include/libminisip/media/Session.h 2007-05-03 13:49:39 UTC (rev 3267)
@@ -32,8 +32,6 @@
#include<libmikey/Mikey.h>
-//#include<libminisip/signaling/sip/SipDialogSecurityConfig.h>
-#include<libmsip/SipDialogConfig.h>
#include<libminisip/media/DtmfSender.h>
#include<libminisip/signaling/sdp/SdpPacket.h>
@@ -42,6 +40,7 @@
class SdpHeaderM;
class IPAddress;
class SessionRegistry;
+class SipIdentity;
/**
* The session class is a representation of the media session associated
@@ -69,7 +68,7 @@
* description
* @param config security related configuration for the call
*/
- Session( std::string localIp, /*SipDialogSecurityConfig &config*/ MRef<SipIdentity*> ident, std::string localIp6 = "" );
+ Session( std::string localIp, MRef<SipIdentity*> ident, std::string localIp6 = "" );
/**
* Destructor.
@@ -277,7 +276,6 @@
std::string errorString;
uint16_t errorCode;
- //SipDialogSecurityConfig securityConfig;
MRef<SipIdentity*> identity;
int ka_type;
Modified: trunk/libminisip/source/subsystem_media/CallRecorder.cxx
===================================================================
--- trunk/libminisip/source/subsystem_media/CallRecorder.cxx 2007-05-03 13:45:17 UTC (rev 3266)
+++ trunk/libminisip/source/subsystem_media/CallRecorder.cxx 2007-05-03 13:49:39 UTC (rev 3267)
@@ -91,12 +91,23 @@
cerr << "CallRecorder::destroy - closing file opened to record = " << filename << endl;
}
}
- audioMedia->getSoundIO()->unRegisterRecorderReceiver( this );
+ if (audioMedia)
+ audioMedia->getSoundIO()->unRegisterRecorderReceiver( this );
if( micData!=NULL ) delete micData;
if( ntwkData!=NULL ) delete ntwkData;
//
}
+void CallRecorder::free(){
+ if (audioMedia)
+ audioMedia->getSoundIO()->unRegisterRecorderReceiver( this );
+ audioMedia=NULL;
+
+ //free inherited references
+ rtpReceiver=NULL;
+ rtp6Receiver=NULL;
+}
+
void CallRecorder::setFilename( string name, int ssrc ) {
filename = "minisip.callrecord." + name + "." + itoa( ssrc ) + ".8khz.16bit.signed.raw.sw";
#ifdef DEBUG_OUTPUT
Modified: trunk/libminisip/source/subsystem_media/Session.cxx
===================================================================
--- trunk/libminisip/source/subsystem_media/Session.cxx 2007-05-03 13:45:17 UTC (rev 3266)
+++ trunk/libminisip/source/subsystem_media/Session.cxx 2007-05-03 13:49:39 UTC (rev 3267)
@@ -43,6 +43,7 @@
#include<libminisip/signaling/sdp/SdpHeaderM.h>
#include<libminisip/signaling/sdp/SdpHeaderS.h>
#include<libminisip/signaling/sdp/SdpHeaderO.h>
+#include<libmsip/SipDialogConfig.h>
#include<libmikey/KeyAgreement.h>
#include<libmikey/KeyAgreementDH.h>
#include<libmutil/dbg.h>
@@ -889,6 +890,7 @@
#endif
} else {
cr->setAllowStart( false );
+ cr->free();
}
callRecorder = NULL; //stop the call recorder object
More information about the Minisip-devel
mailing list