| Index: webrtc/media/engine/webrtcvoiceengine_unittest.cc
|
| diff --git a/webrtc/media/engine/webrtcvoiceengine_unittest.cc b/webrtc/media/engine/webrtcvoiceengine_unittest.cc
|
| index 3777b3daa33942f93f5a45b4cab5bd1efc558f61..2d41ecd43b513a4c620bd1c41ea9bd4dfd0bb55e 100644
|
| --- a/webrtc/media/engine/webrtcvoiceengine_unittest.cc
|
| +++ b/webrtc/media/engine/webrtcvoiceengine_unittest.cc
|
| @@ -31,7 +31,6 @@
|
| #include "webrtc/test/gtest.h"
|
| #include "webrtc/voice_engine/transmit_mixer.h"
|
|
|
| -using testing::ContainerEq;
|
| using testing::Return;
|
| using testing::StrictMock;
|
|
|
| @@ -796,12 +795,26 @@
|
| parameters.codecs[2].id = 126;
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| EXPECT_TRUE(AddRecvStream(kSsrcX));
|
| - EXPECT_THAT(GetRecvStreamConfig(kSsrcX).decoder_map,
|
| - (ContainerEq<std::map<int, webrtc::SdpAudioFormat>>(
|
| - {{0, {"PCMU", 8000, 1}},
|
| - {106, {"ISAC", 16000, 1}},
|
| - {126, {"telephone-event", 8000, 1}},
|
| - {107, {"telephone-event", 32000, 1}}})));
|
| + int channel_num = voe_.GetLastChannel();
|
| +
|
| + webrtc::CodecInst gcodec;
|
| + rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC");
|
| + gcodec.plfreq = 16000;
|
| + gcodec.channels = 1;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, gcodec));
|
| + EXPECT_EQ(106, gcodec.pltype);
|
| + EXPECT_STREQ("ISAC", gcodec.plname);
|
| +
|
| + rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event");
|
| + gcodec.plfreq = 8000;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, gcodec));
|
| + EXPECT_EQ(126, gcodec.pltype);
|
| + EXPECT_STREQ("telephone-event", gcodec.plname);
|
| +
|
| + gcodec.plfreq = 32000;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, gcodec));
|
| + EXPECT_EQ(107, gcodec.pltype);
|
| + EXPECT_STREQ("telephone-event", gcodec.plname);
|
| }
|
|
|
| // Test that we fail to set an unknown inbound codec.
|
| @@ -832,11 +845,16 @@
|
| parameters.codecs.push_back(kOpusCodec);
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| EXPECT_TRUE(AddRecvStream(kSsrcX));
|
| - EXPECT_THAT(GetRecvStreamConfig(kSsrcX).decoder_map,
|
| - (ContainerEq<std::map<int, webrtc::SdpAudioFormat>>(
|
| - {{0, {"PCMU", 8000, 1}},
|
| - {103, {"ISAC", 16000, 1}},
|
| - {111, {"opus", 48000, 2}}})));
|
| + int channel_num = voe_.GetLastChannel();
|
| + webrtc::CodecInst opus;
|
| + cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus);
|
| + // Even without stereo parameters, recv codecs still specify channels = 2.
|
| + EXPECT_EQ(2, opus.channels);
|
| + EXPECT_EQ(111, opus.pltype);
|
| + EXPECT_STREQ("opus", opus.plname);
|
| + opus.pltype = 0;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, opus));
|
| + EXPECT_EQ(111, opus.pltype);
|
| }
|
|
|
| // Test that we can decode OPUS with stereo = 0.
|
| @@ -849,11 +867,16 @@
|
| parameters.codecs[2].params["stereo"] = "0";
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| EXPECT_TRUE(AddRecvStream(kSsrcX));
|
| - EXPECT_THAT(GetRecvStreamConfig(kSsrcX).decoder_map,
|
| - (ContainerEq<std::map<int, webrtc::SdpAudioFormat>>(
|
| - {{0, {"PCMU", 8000, 1}},
|
| - {103, {"ISAC", 16000, 1}},
|
| - {111, {"opus", 48000, 2, {{"stereo", "0"}}}}})));
|
| + int channel_num2 = voe_.GetLastChannel();
|
| + webrtc::CodecInst opus;
|
| + cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus);
|
| + // Even when stereo is off, recv codecs still specify channels = 2.
|
| + EXPECT_EQ(2, opus.channels);
|
| + EXPECT_EQ(111, opus.pltype);
|
| + EXPECT_STREQ("opus", opus.plname);
|
| + opus.pltype = 0;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus));
|
| + EXPECT_EQ(111, opus.pltype);
|
| }
|
|
|
| // Test that we can decode OPUS with stereo = 1.
|
| @@ -866,11 +889,15 @@
|
| parameters.codecs[2].params["stereo"] = "1";
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| EXPECT_TRUE(AddRecvStream(kSsrcX));
|
| - EXPECT_THAT(GetRecvStreamConfig(kSsrcX).decoder_map,
|
| - (ContainerEq<std::map<int, webrtc::SdpAudioFormat>>(
|
| - {{0, {"PCMU", 8000, 1}},
|
| - {103, {"ISAC", 16000, 1}},
|
| - {111, {"opus", 48000, 2, {{"stereo", "1"}}}}})));
|
| + int channel_num2 = voe_.GetLastChannel();
|
| + webrtc::CodecInst opus;
|
| + cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus);
|
| + EXPECT_EQ(2, opus.channels);
|
| + EXPECT_EQ(111, opus.pltype);
|
| + EXPECT_STREQ("opus", opus.plname);
|
| + opus.pltype = 0;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus));
|
| + EXPECT_EQ(111, opus.pltype);
|
| }
|
|
|
| // Test that changes to recv codecs are applied to all streams.
|
| @@ -884,15 +911,28 @@
|
| parameters.codecs[0].id = 106; // collide with existing CN 32k
|
| parameters.codecs[2].id = 126;
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| - for (const auto& ssrc : {kSsrcX, kSsrcY}) {
|
| - EXPECT_TRUE(AddRecvStream(ssrc));
|
| - EXPECT_THAT(GetRecvStreamConfig(ssrc).decoder_map,
|
| - (ContainerEq<std::map<int, webrtc::SdpAudioFormat>>(
|
| - {{0, {"PCMU", 8000, 1}},
|
| - {106, {"ISAC", 16000, 1}},
|
| - {126, {"telephone-event", 8000, 1}},
|
| - {107, {"telephone-event", 32000, 1}}})));
|
| - }
|
| + EXPECT_TRUE(AddRecvStream(kSsrcX));
|
| + int channel_num2 = voe_.GetLastChannel();
|
| +
|
| + webrtc::CodecInst gcodec;
|
| + rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC");
|
| + gcodec.plfreq = 16000;
|
| + gcodec.channels = 1;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, gcodec));
|
| + EXPECT_EQ(106, gcodec.pltype);
|
| + EXPECT_STREQ("ISAC", gcodec.plname);
|
| +
|
| + rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event");
|
| + gcodec.plfreq = 8000;
|
| + gcodec.channels = 1;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, gcodec));
|
| + EXPECT_EQ(126, gcodec.pltype);
|
| + EXPECT_STREQ("telephone-event", gcodec.plname);
|
| +
|
| + gcodec.plfreq = 32000;
|
| + EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, gcodec));
|
| + EXPECT_EQ(107, gcodec.pltype);
|
| + EXPECT_STREQ("telephone-event", gcodec.plname);
|
| }
|
|
|
| TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsAfterAddingStreams) {
|
| @@ -2921,9 +2961,12 @@
|
| parameters.codecs.push_back(kPcmuCodec);
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| EXPECT_TRUE(AddRecvStream(kSsrcX));
|
| - EXPECT_THAT(GetRecvStreamConfig(kSsrcX).decoder_map,
|
| - (ContainerEq<std::map<int, webrtc::SdpAudioFormat>>(
|
| - {{0, {"PCMU", 8000, 1}}, {103, {"ISAC", 16000, 1}}})));
|
| + int channel_num2 = voe_.GetLastChannel();
|
| + webrtc::CodecInst gcodec;
|
| + rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "opus");
|
| + gcodec.plfreq = 48000;
|
| + gcodec.channels = 2;
|
| + EXPECT_EQ(-1, voe_.GetRecPayloadType(channel_num2, gcodec));
|
| }
|
|
|
| // Test that we properly clean up any streams that were added, even if
|
|
|