| 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) {
|
| + 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 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());
|
|
|