Don't reset sequence number for a stream on deactivate/reactivate.
BUG=chromium:431908
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/32199004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7750 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc
index 3bcec4d..2c6e561 100644
--- a/talk/media/webrtc/webrtcvideoengine.cc
+++ b/talk/media/webrtc/webrtcvideoengine.cc
@@ -3927,7 +3927,8 @@
}
engine()->vie()->rtp()->SetTransmissionSmoothingStatus(channel_id, true);
- if (!SetSendSsrcs(channel_id, send_params.stream, codec)) {
+ if (send_channel->IsActive() &&
+ !SetSendSsrcs(channel_id, send_params.stream, codec)) {
return false;
}
diff --git a/talk/media/webrtc/webrtcvideoengine_unittest.cc b/talk/media/webrtc/webrtcvideoengine_unittest.cc
index 00d6e4b..e481114 100644
--- a/talk/media/webrtc/webrtcvideoengine_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoengine_unittest.cc
@@ -41,7 +41,6 @@
#include "talk/media/webrtc/webrtcvoiceengine.h"
#include "talk/session/media/mediasession.h"
#include "webrtc/system_wrappers/interface/trace.h"
-
// Tests for the WebRtcVideoEngine/VideoChannel code.
using cricket::kRtpTimestampOffsetHeaderExtension;
@@ -2553,3 +2552,33 @@
640, 400, 30,
0));
}
+
+// Test that sequence number are not reset if stopping and then
+// resuming a stream.
+TEST_F(WebRtcVideoMediaChannelTest, DontResetSequenceNumbers) {
+ cricket::VideoCodec codec = DefaultCodec();
+ EXPECT_TRUE(SetOneCodec(codec));
+
+ uint16_t seq_before =
+ engine_.vie()
+ ->rtp()
+ ->GetRtpStateForSsrc(channel_->GetDefaultChannelId(), kSsrc)
+ .sequence_number;
+
+ // Deactive.
+ EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
+ EXPECT_TRUE(SetOneCodec(codec));
+
+ // Reactivate.
+ EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams()));
+ EXPECT_TRUE(SetOneCodec(codec));
+
+ // Sequence number should now have changed.
+ uint16_t seq_after =
+ engine_.vie()
+ ->rtp()
+ ->GetRtpStateForSsrc(channel_->GetDefaultChannelId(), kSsrc)
+ .sequence_number;
+
+ EXPECT_EQ(seq_before, seq_after);
+}