diff --git a/src/modules/video_coding/main/source/receiver.cc b/src/modules/video_coding/main/source/receiver.cc index c503f98df5..95e875a014 100644 --- a/src/modules/video_coding/main/source/receiver.cc +++ b/src/modules/video_coding/main/source/receiver.cc @@ -275,7 +275,19 @@ VCMReceiver::FrameForDecoding(WebRtc_UWord16 maxWaitTimeMs, { // No time to wait for a complete frame, // check if we have an incomplete - frame = _jitterBuffer.GetFrameForDecoding(); + const bool dualReceiverEnabledAndPassive = (dualReceiver != NULL && + dualReceiver->State() == kPassive && + dualReceiver->NackMode() == kNackInfinite); + if (dualReceiverEnabledAndPassive && + !_jitterBuffer.CompleteSequenceWithNextFrame()) + { + // Jitter buffer state might get corrupt with this frame. + dualReceiver->CopyJitterBufferStateFromReceiver(*this); + frame = _jitterBuffer.GetFrameForDecoding(); + assert(frame); + } else { + frame = _jitterBuffer.GetFrameForDecoding(); + } } if (frame == NULL) {