Index: webrtc/media/engine/webrtcvoiceengine_unittest.cc |
diff --git a/webrtc/media/engine/webrtcvoiceengine_unittest.cc b/webrtc/media/engine/webrtcvoiceengine_unittest.cc |
index c55389ae7361d9beaa4e8a1469a732019836e943..0bb350133933a0fc477b0644b620337535999990 100644 |
--- a/webrtc/media/engine/webrtcvoiceengine_unittest.cc |
+++ b/webrtc/media/engine/webrtcvoiceengine_unittest.cc |
@@ -2814,6 +2814,50 @@ TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { |
EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
} |
+// Two tests to verify that adding a receive stream with the same SSRC as a |
+// previously added unsignaled stream will only recreate underlying stream |
+// objects if the stream parameters have changed. |
+TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamAfterUnsignaled_NoRecreate) { |
Taylor Brandstetter
2017/02/17 16:24:51
nit: I'd call this
AddRecvStreamAfterUnsignaledN
ossu
2017/02/17 17:05:10
Not sure if we do this in other places, but I'd fi
the sun
2017/02/17 17:19:09
Uhm. I think super long names are not very readabl
Taylor Brandstetter
2017/02/17 17:53:44
Yeah, that's fine.
|
+ EXPECT_TRUE(SetupChannel()); |
+ |
+ // Spawn unsignaled stream with SSRC=1. |
+ DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
Taylor Brandstetter
2017/02/17 16:24:51
This test relies on the fact that kPcmuFrame uses
the sun
2017/02/17 17:19:09
I think I'll instead make a helper:
void DeliverP
Taylor Brandstetter
2017/02/17 17:53:44
Sounds good.
|
+ EXPECT_EQ(1, call_.GetAudioReceiveStreams().size()); |
+ EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame, |
+ sizeof(kPcmuFrame))); |
+ |
+ // Verify that the underlying stream object in Call is not recreated when a |
+ // stream with SSRC=1 is added. |
+ const auto& streams = call_.GetAudioReceiveStreams(); |
+ EXPECT_EQ(1, streams.size()); |
+ int audio_receive_stream_id = streams.front()->id(); |
+ EXPECT_TRUE(AddRecvStream(1)); |
+ EXPECT_EQ(1, streams.size()); |
+ EXPECT_EQ(audio_receive_stream_id, streams.front()->id()); |
+} |
+ |
+TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamAfterUnsignaled_Recreate) { |
+ EXPECT_TRUE(SetupChannel()); |
+ |
+ // Spawn unsignaled stream with SSRC=1. |
+ DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
+ EXPECT_EQ(1, call_.GetAudioReceiveStreams().size()); |
+ EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame, |
+ sizeof(kPcmuFrame))); |
+ |
+ // Verify that the underlying stream object in Call *is* recreated when a |
+ // stream with SSRC=1 is added, and which has changed stream parameters. |
+ const auto& streams = call_.GetAudioReceiveStreams(); |
+ EXPECT_EQ(1, streams.size()); |
+ int audio_receive_stream_id = streams.front()->id(); |
+ cricket::StreamParams stream_params; |
+ stream_params.ssrcs.push_back(1); |
+ stream_params.sync_label = "sync_label"; |
+ EXPECT_TRUE(channel_->AddRecvStream(stream_params)); |
+ EXPECT_EQ(1, streams.size()); |
+ EXPECT_NE(audio_receive_stream_id, streams.front()->id()); |
+} |
+ |
// Test that we properly handle failures to add a receive stream. |
TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { |
EXPECT_TRUE(SetupChannel()); |