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/