Index: include/mp/MpdSipxPcma.h
===================================================================
--- include/mp/MpdSipxPcma.h	(revision 9887)
+++ include/mp/MpdSipxPcma.h	(working copy)
@@ -118,6 +118,7 @@
    bool mIsFirstFrame;       ///< True, if no frames decoded.
    bool mClockDrift;         ///< True, if clock drift detected.
    int mLastReportSize;
+   RtpSRC mLastSSRC;       ///< RTP SSRC of currently processed stream
 };
 
 #endif  // _MpdSipxPcma_h_
Index: include/mp/MpdSipxPcmu.h
===================================================================
--- include/mp/MpdSipxPcmu.h	(revision 9887)
+++ include/mp/MpdSipxPcmu.h	(working copy)
@@ -118,6 +118,7 @@
    bool mIsFirstFrame;       ///< True, if no frames decoded.
    bool mClockDrift;         ///< True, if clock drift detected.
    int mLastReportSize;
+   RtpSRC mLastSSRC;	     ///< RTP SSRC of currently processed stream
 };
 
 #endif  // _MpdSipxPcmu_h_
Index: src/mp/MpdSipxPcma.cpp
===================================================================
--- src/mp/MpdSipxPcma.cpp	(revision 9887)
+++ src/mp/MpdSipxPcma.cpp	(working copy)
@@ -34,7 +34,8 @@
   mLastSeqNo(0),
   mIsFirstFrame(true),
   mClockDrift(false),
-  mLastReportSize(-1)
+  mLastReportSize(-1),
+  mLastSSRC(0)
 {
 }
 
@@ -51,6 +52,7 @@
    mIsFirstFrame = true;
    mClockDrift = false;
    mLastReportSize = -1;
+   mLastSSRC = 0;
 
    return OS_SUCCESS;
 }
@@ -125,12 +127,13 @@
                            // rtpTimestamp and mNextPullTimerCount are unsigned,
                            // so a straight subtraction will fail.
 
-   // If this is our first packet
-   if (mIsFirstFrame)
+   // If this is our first packet or SSRC changed
+   if (mIsFirstFrame || (pPacket->getRtpSSRC() != mLastSSRC))
    {
       mIsFirstFrame = false;
       mNextPullTimerCount = rtpTimestamp + (160*(mWaitTimeInFrames*2));
       mLastSeqNo = pPacket->getRtpSequenceNumber();
+      mLastSSRC = pPacket->getRtpSSRC();
 
       // Always accept the first packet
       return pPacket->getPayloadSize();
Index: src/mp/MpdSipxPcmu.cpp
===================================================================
--- src/mp/MpdSipxPcmu.cpp	(revision 9887)
+++ src/mp/MpdSipxPcmu.cpp	(working copy)
@@ -34,7 +34,8 @@
   mLastSeqNo(0),
   mIsFirstFrame(true),
   mClockDrift(false),
-  mLastReportSize(-1)
+  mLastReportSize(-1),
+  mLastSSRC(0)
 {
 }
 
@@ -51,6 +52,7 @@
    mIsFirstFrame = true;
    mClockDrift = false;
    mLastReportSize = -1;
+   mLastSSRC = 0;
 
    return OS_SUCCESS;
 }
@@ -125,12 +127,13 @@
                            // rtpTimestamp and mNextPullTimerCount are unsigned,
                            // so a straight subtraction will fail.
 
-   // If this is our first packet
-   if (mIsFirstFrame)
+   // If this is our first packet or SSRC changed
+   if (mIsFirstFrame || (pPacket->getRtpSSRC() != mLastSSRC))
    {
       mIsFirstFrame = false;
       mNextPullTimerCount = rtpTimestamp + (160*(mWaitTimeInFrames*2));
       mLastSeqNo = pPacket->getRtpSequenceNumber();
+      mLastSSRC = pPacket->getRtpSSRC();
 
       // Always accept the first packet
       return pPacket->getPayloadSize();
