Here is a patch that re-initializes the RTP session and jitter buffer
after new RTP streams are negotiated, for instance after a supervised
transfer etc.

   ...Carsten


Index: sipXtapi-3.2/sipXmediaLib/include/mp/MprDejitter.h
===================================================================
--- sipXtapi-3.2/sipXmediaLib/include/mp/MprDejitter.h  (revision 10928)
+++ sipXtapi-3.2/sipXmediaLib/include/mp/MprDejitter.h  (working copy)
@@ -109,6 +109,9 @@
      *  amount of time, possible forever.
      */
 
+   /// Reset dejitter to initial state and prepare for new stream.
+   void reset();
+
 //@}
 
 /* ============================ ACCESSORS ================================= */
@@ -148,8 +151,6 @@
                   /// we can distinguish out-of-order packets.
    RtpSeq        mMaxPulledSeqNo;
 
-     /// Reset dejitter to initial state and prepare for new stream.
-   void reset();
 
 /* //////////////////////////// PRIVATE /////////////////////////////////// */
 private:
Index: sipXtapi-3.2/sipXmediaLib/src/mp/MprDecode.cpp
===================================================================
--- sipXtapi-3.2/sipXmediaLib/src/mp/MprDecode.cpp      (revision 10928)
+++ sipXtapi-3.2/sipXmediaLib/src/mp/MprDecode.cpp      (working copy)
@@ -555,6 +555,13 @@
    osPrintf("MprDecode::handleSelectCodecs(%d codec%s):\n",
       numCodecs, ((1 == numCodecs) ? "" : "s"));
 #endif
+
+   // The RTP session and jitter buffer need to be reset
+   // when new RTP streams are negotiated, for instance after a
+   // supervised transfer
+   mIsStreamInitialized = FALSE;
+   mpMyDJ->reset();
+
    if (OsSysLog::willLog(FAC_MP, PRI_DEBUG))
    {
       for (i=0; i<numCodecs; i++) {
_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/

Reply via email to