OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 23 matching lines...) Expand all Loading... | |
34 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1, 0); | 34 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1, 0); |
35 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 64000, 2, 0); | 35 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 64000, 2, 0); |
36 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1, 0); | 36 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1, 0); |
37 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1, 0); | 37 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1, 0); |
38 const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); | 38 const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); |
39 const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); | 39 const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); |
40 const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1, 0); | 40 const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1, 0); |
41 const cricket::AudioCodec kTelephoneEventCodec(106, "telephone-event", 8000, 0, | 41 const cricket::AudioCodec kTelephoneEventCodec(106, "telephone-event", 8000, 0, |
42 1, 0); | 42 1, 0); |
43 const uint32_t kSsrc1 = 0x99; | 43 const uint32_t kSsrc1 = 0x99; |
44 const uint32_t kSsrc2 = 0x98; | 44 const uint32_t kSsrc2 = 2; |
45 const uint32_t kSsrc3 = 3; | |
45 const uint32_t kSsrcs4[] = { 1, 2, 3, 4 }; | 46 const uint32_t kSsrcs4[] = { 1, 2, 3, 4 }; |
46 | 47 |
47 class FakeVoEWrapper : public cricket::VoEWrapper { | 48 class FakeVoEWrapper : public cricket::VoEWrapper { |
48 public: | 49 public: |
49 explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine) | 50 explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine) |
50 : cricket::VoEWrapper(engine, // processing | 51 : cricket::VoEWrapper(engine, // processing |
51 engine, // base | 52 engine, // base |
52 engine, // codec | 53 engine, // codec |
53 engine, // hw | 54 engine, // hw |
54 engine, // network | 55 engine, // network |
55 engine, // rtp | 56 engine, // rtp |
56 engine) { // volume | 57 engine) { // volume |
57 } | 58 } |
58 }; | 59 }; |
59 } // namespace | 60 } // namespace |
60 | 61 |
61 class FakeAudioSink : public webrtc::AudioSinkInterface { | 62 class FakeAudioSink : public webrtc::AudioSinkInterface { |
62 public: | 63 public: |
63 void OnData(const Data& audio) override {} | 64 void OnData(const Data& audio) override {} |
64 }; | 65 }; |
65 | 66 |
67 class FakeAudioSource : public cricket::AudioSource { | |
68 void SetSink(Sink* sink) override {} | |
69 }; | |
70 | |
66 class WebRtcVoiceEngineTestFake : public testing::Test { | 71 class WebRtcVoiceEngineTestFake : public testing::Test { |
67 public: | 72 public: |
68 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {} | 73 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {} |
69 | 74 |
70 explicit WebRtcVoiceEngineTestFake(const char* field_trials) | 75 explicit WebRtcVoiceEngineTestFake(const char* field_trials) |
71 : call_(webrtc::Call::Config()), | 76 : call_(webrtc::Call::Config()), |
72 engine_(new FakeVoEWrapper(&voe_)), | 77 engine_(new FakeVoEWrapper(&voe_)), |
73 channel_(nullptr), | 78 channel_(nullptr), |
79 fake_source_(new FakeAudioSource()), | |
74 override_field_trials_(field_trials) { | 80 override_field_trials_(field_trials) { |
75 send_parameters_.codecs.push_back(kPcmuCodec); | 81 send_parameters_.codecs.push_back(kPcmuCodec); |
76 recv_parameters_.codecs.push_back(kPcmuCodec); | 82 recv_parameters_.codecs.push_back(kPcmuCodec); |
77 } | 83 } |
78 bool SetupEngine() { | 84 bool SetupEngine() { |
79 if (!engine_.Init(rtc::Thread::Current())) { | 85 if (!engine_.Init(rtc::Thread::Current())) { |
80 return false; | 86 return false; |
81 } | 87 } |
82 channel_ = engine_.CreateChannel(&call_, cricket::MediaConfig(), | 88 channel_ = engine_.CreateChannel(&call_, cricket::MediaConfig(), |
83 cricket::AudioOptions()); | 89 cricket::AudioOptions()); |
84 return (channel_ != nullptr); | 90 return (channel_ != nullptr); |
85 } | 91 } |
86 bool SetupEngineWithRecvStream() { | 92 bool SetupEngineWithRecvStream() { |
87 if (!SetupEngine()) { | 93 if (!SetupEngine()) { |
88 return false; | 94 return false; |
89 } | 95 } |
90 return channel_->AddRecvStream( | 96 return channel_->AddRecvStream( |
91 cricket::StreamParams::CreateLegacy(kSsrc1)); | 97 cricket::StreamParams::CreateLegacy(kSsrc1)); |
92 } | 98 } |
93 bool SetupEngineWithSendStream() { | 99 bool SetupEngineWithSendStream() { |
94 if (!SetupEngine()) { | 100 if (!SetupEngine()) { |
95 return false; | 101 return false; |
96 } | 102 } |
97 return channel_->AddSendStream( | 103 if (!channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc1))) { |
98 cricket::StreamParams::CreateLegacy(kSsrc1)); | 104 return false; |
105 } | |
106 return channel_->SetAudioSend(kSsrc1, true, nullptr, fake_source_.get()); | |
99 } | 107 } |
100 void SetupForMultiSendStream() { | 108 void SetupForMultiSendStream() { |
101 EXPECT_TRUE(SetupEngineWithSendStream()); | 109 EXPECT_TRUE(SetupEngineWithSendStream()); |
102 // Remove stream added in Setup. | 110 // Remove stream added in Setup. |
103 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 111 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
104 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); | 112 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); |
105 // Verify the channel does not exist. | 113 // Verify the channel does not exist. |
106 EXPECT_FALSE(call_.GetAudioSendStream(kSsrc1)); | 114 EXPECT_FALSE(call_.GetAudioSendStream(kSsrc1)); |
107 } | 115 } |
108 void DeliverPacket(const void* data, int len) { | 116 void DeliverPacket(const void* data, int len) { |
(...skipping 11 matching lines...) Expand all Loading... | |
120 return *send_stream; | 128 return *send_stream; |
121 } | 129 } |
122 | 130 |
123 const cricket::FakeAudioReceiveStream& GetRecvStream(uint32_t ssrc) { | 131 const cricket::FakeAudioReceiveStream& GetRecvStream(uint32_t ssrc) { |
124 const auto* recv_stream = call_.GetAudioReceiveStream(ssrc); | 132 const auto* recv_stream = call_.GetAudioReceiveStream(ssrc); |
125 EXPECT_TRUE(recv_stream); | 133 EXPECT_TRUE(recv_stream); |
126 return *recv_stream; | 134 return *recv_stream; |
127 } | 135 } |
128 | 136 |
129 const webrtc::AudioSendStream::Config& GetSendStreamConfig(uint32_t ssrc) { | 137 const webrtc::AudioSendStream::Config& GetSendStreamConfig(uint32_t ssrc) { |
130 const auto* send_stream = call_.GetAudioSendStream(ssrc); | 138 return GetSendStream(ssrc).GetConfig(); |
131 EXPECT_TRUE(send_stream); | |
132 return send_stream->GetConfig(); | |
133 } | 139 } |
134 | 140 |
135 const webrtc::AudioReceiveStream::Config& GetRecvStreamConfig(uint32_t ssrc) { | 141 const webrtc::AudioReceiveStream::Config& GetRecvStreamConfig(uint32_t ssrc) { |
136 const auto* recv_stream = call_.GetAudioReceiveStream(ssrc); | 142 return GetRecvStream(ssrc).GetConfig(); |
137 EXPECT_TRUE(recv_stream); | |
138 return recv_stream->GetConfig(); | |
139 } | 143 } |
140 | 144 |
141 void TestInsertDtmf(uint32_t ssrc, bool caller) { | 145 void TestInsertDtmf(uint32_t ssrc, bool caller) { |
142 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); | 146 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); |
143 channel_ = engine_.CreateChannel(&call_, cricket::MediaConfig(), | 147 channel_ = engine_.CreateChannel(&call_, cricket::MediaConfig(), |
144 cricket::AudioOptions()); | 148 cricket::AudioOptions()); |
145 EXPECT_TRUE(channel_ != nullptr); | 149 EXPECT_TRUE(channel_ != nullptr); |
146 if (caller) { | 150 if (caller) { |
147 // If this is a caller, local description will be applied and add the | 151 // If this is a caller, local description will be applied and add the |
148 // send stream. | 152 // send stream. |
149 EXPECT_TRUE(channel_->AddSendStream( | 153 EXPECT_TRUE(channel_->AddSendStream( |
150 cricket::StreamParams::CreateLegacy(kSsrc1))); | 154 cricket::StreamParams::CreateLegacy(kSsrc1))); |
151 } | 155 } |
152 | 156 |
153 // Test we can only InsertDtmf when the other side supports telephone-event. | 157 // Test we can only InsertDtmf when the other side supports telephone-event. |
154 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 158 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
155 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 159 EXPECT_TRUE(channel_->SetSend(true)); |
156 EXPECT_FALSE(channel_->CanInsertDtmf()); | 160 EXPECT_FALSE(channel_->CanInsertDtmf()); |
157 EXPECT_FALSE(channel_->InsertDtmf(ssrc, 1, 111)); | 161 EXPECT_FALSE(channel_->InsertDtmf(ssrc, 1, 111)); |
158 send_parameters_.codecs.push_back(kTelephoneEventCodec); | 162 send_parameters_.codecs.push_back(kTelephoneEventCodec); |
159 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 163 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
160 EXPECT_TRUE(channel_->CanInsertDtmf()); | 164 EXPECT_TRUE(channel_->CanInsertDtmf()); |
161 | 165 |
162 if (!caller) { | 166 if (!caller) { |
163 // If this is callee, there's no active send channel yet. | 167 // If this is callee, there's no active send channel yet. |
164 EXPECT_FALSE(channel_->InsertDtmf(ssrc, 2, 123)); | 168 EXPECT_FALSE(channel_->InsertDtmf(ssrc, 2, 123)); |
165 EXPECT_TRUE(channel_->AddSendStream( | 169 EXPECT_TRUE(channel_->AddSendStream( |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
394 EXPECT_EQ(info.capture_start_ntp_time_ms, stats.capture_start_ntp_time_ms); | 398 EXPECT_EQ(info.capture_start_ntp_time_ms, stats.capture_start_ntp_time_ms); |
395 } | 399 } |
396 | 400 |
397 protected: | 401 protected: |
398 cricket::FakeCall call_; | 402 cricket::FakeCall call_; |
399 cricket::FakeWebRtcVoiceEngine voe_; | 403 cricket::FakeWebRtcVoiceEngine voe_; |
400 cricket::WebRtcVoiceEngine engine_; | 404 cricket::WebRtcVoiceEngine engine_; |
401 cricket::VoiceMediaChannel* channel_; | 405 cricket::VoiceMediaChannel* channel_; |
402 cricket::AudioSendParameters send_parameters_; | 406 cricket::AudioSendParameters send_parameters_; |
403 cricket::AudioRecvParameters recv_parameters_; | 407 cricket::AudioRecvParameters recv_parameters_; |
408 rtc::scoped_ptr<FakeAudioSource> fake_source_; | |
the sun
2016/03/07 21:24:54
No need for scoped_ptr here.
Taylor Brandstetter
2016/03/08 00:00:31
Done.
| |
404 | 409 |
405 private: | 410 private: |
406 webrtc::test::ScopedFieldTrials override_field_trials_; | 411 webrtc::test::ScopedFieldTrials override_field_trials_; |
407 }; | 412 }; |
408 | 413 |
409 // Tests that our stub library "works". | 414 // Tests that our stub library "works". |
410 TEST_F(WebRtcVoiceEngineTestFake, StartupShutdown) { | 415 TEST_F(WebRtcVoiceEngineTestFake, StartupShutdown) { |
411 EXPECT_FALSE(voe_.IsInited()); | 416 EXPECT_FALSE(voe_.IsInited()); |
412 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); | 417 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); |
413 EXPECT_TRUE(voe_.IsInited()); | 418 EXPECT_TRUE(voe_.IsInited()); |
(...skipping 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1994 TEST_F(WebRtcVoiceEngineTestFake, SendAbsoluteSendTimeHeaderExtensions) { | 1999 TEST_F(WebRtcVoiceEngineTestFake, SendAbsoluteSendTimeHeaderExtensions) { |
1995 TestSetSendRtpHeaderExtensions(kRtpAbsoluteSenderTimeHeaderExtension); | 2000 TestSetSendRtpHeaderExtensions(kRtpAbsoluteSenderTimeHeaderExtension); |
1996 } | 2001 } |
1997 TEST_F(WebRtcVoiceEngineTestFake, RecvAbsoluteSendTimeHeaderExtensions) { | 2002 TEST_F(WebRtcVoiceEngineTestFake, RecvAbsoluteSendTimeHeaderExtensions) { |
1998 TestSetRecvRtpHeaderExtensions(kRtpAbsoluteSenderTimeHeaderExtension); | 2003 TestSetRecvRtpHeaderExtensions(kRtpAbsoluteSenderTimeHeaderExtension); |
1999 } | 2004 } |
2000 | 2005 |
2001 // Test that we can create a channel and start sending on it. | 2006 // Test that we can create a channel and start sending on it. |
2002 TEST_F(WebRtcVoiceEngineTestFake, Send) { | 2007 TEST_F(WebRtcVoiceEngineTestFake, Send) { |
2003 EXPECT_TRUE(SetupEngineWithSendStream()); | 2008 EXPECT_TRUE(SetupEngineWithSendStream()); |
2004 int channel_num = voe_.GetLastChannel(); | |
2005 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2009 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2006 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2010 EXPECT_TRUE(channel_->SetSend(true)); |
2007 EXPECT_TRUE(voe_.GetSend(channel_num)); | 2011 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2008 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); | 2012 EXPECT_TRUE(channel_->SetSend(false)); |
2009 EXPECT_FALSE(voe_.GetSend(channel_num)); | 2013 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
2014 } | |
2015 | |
2016 // Test that a channel will send if and only if it has a source and is enabled | |
2017 // for sending. | |
2018 TEST_F(WebRtcVoiceEngineTestFake, SendStateWithAndWithoutSource) { | |
2019 EXPECT_TRUE(SetupEngineWithSendStream()); | |
2020 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | |
2021 EXPECT_TRUE(channel_->SetAudioSend(kSsrc1, true, nullptr, nullptr)); | |
2022 EXPECT_TRUE(channel_->SetSend(true)); | |
2023 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | |
2024 EXPECT_TRUE( | |
2025 channel_->SetAudioSend(kSsrc1, true, nullptr, fake_source_.get())); | |
2026 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); | |
2027 EXPECT_TRUE(channel_->SetAudioSend(kSsrc1, true, nullptr, nullptr)); | |
2028 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | |
2010 } | 2029 } |
2011 | 2030 |
2012 // Test that we can create a channel and start playing out on it. | 2031 // Test that we can create a channel and start playing out on it. |
2013 TEST_F(WebRtcVoiceEngineTestFake, Playout) { | 2032 TEST_F(WebRtcVoiceEngineTestFake, Playout) { |
2014 EXPECT_TRUE(SetupEngineWithRecvStream()); | 2033 EXPECT_TRUE(SetupEngineWithRecvStream()); |
2015 int channel_num = voe_.GetLastChannel(); | 2034 int channel_num = voe_.GetLastChannel(); |
2016 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2035 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
2017 EXPECT_TRUE(channel_->SetPlayout(true)); | 2036 EXPECT_TRUE(channel_->SetPlayout(true)); |
2018 EXPECT_TRUE(voe_.GetPlayout(channel_num)); | 2037 EXPECT_TRUE(voe_.GetPlayout(channel_num)); |
2019 EXPECT_TRUE(channel_->SetPlayout(false)); | 2038 EXPECT_TRUE(channel_->SetPlayout(false)); |
2020 EXPECT_FALSE(voe_.GetPlayout(channel_num)); | 2039 EXPECT_FALSE(voe_.GetPlayout(channel_num)); |
2021 } | 2040 } |
2022 | 2041 |
2023 // Test that we can add and remove send streams. | 2042 // Test that we can add and remove send streams. |
2024 TEST_F(WebRtcVoiceEngineTestFake, CreateAndDeleteMultipleSendStreams) { | 2043 TEST_F(WebRtcVoiceEngineTestFake, CreateAndDeleteMultipleSendStreams) { |
2025 SetupForMultiSendStream(); | 2044 SetupForMultiSendStream(); |
2026 | 2045 |
2027 // Set the global state for sending. | 2046 // Set the global state for sending. |
2028 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2047 EXPECT_TRUE(channel_->SetSend(true)); |
2029 | 2048 |
2030 for (uint32_t ssrc : kSsrcs4) { | 2049 for (uint32_t ssrc : kSsrcs4) { |
2031 EXPECT_TRUE(channel_->AddSendStream( | 2050 EXPECT_TRUE(channel_->AddSendStream( |
2032 cricket::StreamParams::CreateLegacy(ssrc))); | 2051 cricket::StreamParams::CreateLegacy(ssrc))); |
2052 EXPECT_TRUE( | |
2053 channel_->SetAudioSend(ssrc, true, nullptr, fake_source_.get())); | |
2033 // Verify that we are in a sending state for all the created streams. | 2054 // Verify that we are in a sending state for all the created streams. |
2034 EXPECT_TRUE(voe_.GetSend(GetSendStreamConfig(ssrc).voe_channel_id)); | 2055 EXPECT_TRUE(GetSendStream(ssrc).IsSending()); |
2035 } | 2056 } |
2036 EXPECT_EQ(arraysize(kSsrcs4), call_.GetAudioSendStreams().size()); | 2057 EXPECT_EQ(arraysize(kSsrcs4), call_.GetAudioSendStreams().size()); |
2037 | 2058 |
2038 // Delete the send streams. | 2059 // Delete the send streams. |
2039 for (uint32_t ssrc : kSsrcs4) { | 2060 for (uint32_t ssrc : kSsrcs4) { |
2040 EXPECT_TRUE(channel_->RemoveSendStream(ssrc)); | 2061 EXPECT_TRUE(channel_->RemoveSendStream(ssrc)); |
2041 EXPECT_FALSE(call_.GetAudioSendStream(ssrc)); | 2062 EXPECT_FALSE(call_.GetAudioSendStream(ssrc)); |
2042 EXPECT_FALSE(channel_->RemoveSendStream(ssrc)); | 2063 EXPECT_FALSE(channel_->RemoveSendStream(ssrc)); |
2043 } | 2064 } |
2044 EXPECT_EQ(0u, call_.GetAudioSendStreams().size()); | 2065 EXPECT_EQ(0u, call_.GetAudioSendStreams().size()); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2079 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); | 2100 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); |
2080 EXPECT_STREQ("PCMU", gcodec.plname); | 2101 EXPECT_STREQ("PCMU", gcodec.plname); |
2081 EXPECT_FALSE(voe_.GetVAD(channel_num)); | 2102 EXPECT_FALSE(voe_.GetVAD(channel_num)); |
2082 } | 2103 } |
2083 } | 2104 } |
2084 | 2105 |
2085 // Test we can SetSend on all send streams correctly. | 2106 // Test we can SetSend on all send streams correctly. |
2086 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { | 2107 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { |
2087 SetupForMultiSendStream(); | 2108 SetupForMultiSendStream(); |
2088 | 2109 |
2089 // Create the send channels and they should be a SEND_NOTHING date. | 2110 // Create the send channels and they should be a "not sending" date. |
2090 for (uint32_t ssrc : kSsrcs4) { | 2111 for (uint32_t ssrc : kSsrcs4) { |
2091 EXPECT_TRUE(channel_->AddSendStream( | 2112 EXPECT_TRUE(channel_->AddSendStream( |
2092 cricket::StreamParams::CreateLegacy(ssrc))); | 2113 cricket::StreamParams::CreateLegacy(ssrc))); |
2093 int channel_num = voe_.GetLastChannel(); | 2114 EXPECT_TRUE( |
2094 EXPECT_FALSE(voe_.GetSend(channel_num)); | 2115 channel_->SetAudioSend(ssrc, true, nullptr, fake_source_.get())); |
2116 EXPECT_FALSE(GetSendStream(ssrc).IsSending()); | |
2095 } | 2117 } |
2096 | 2118 |
2097 // Set the global state for starting sending. | 2119 // Set the global state for starting sending. |
2098 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2120 EXPECT_TRUE(channel_->SetSend(true)); |
2099 for (uint32_t ssrc : kSsrcs4) { | 2121 for (uint32_t ssrc : kSsrcs4) { |
2100 // Verify that we are in a sending state for all the send streams. | 2122 // Verify that we are in a sending state for all the send streams. |
2101 int channel_num = GetSendStreamConfig(ssrc).voe_channel_id; | 2123 EXPECT_TRUE(GetSendStream(ssrc).IsSending()); |
2102 EXPECT_TRUE(voe_.GetSend(channel_num)); | |
2103 } | 2124 } |
2104 | 2125 |
2105 // Set the global state for stopping sending. | 2126 // Set the global state for stopping sending. |
2106 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); | 2127 EXPECT_TRUE(channel_->SetSend(false)); |
2107 for (uint32_t ssrc : kSsrcs4) { | 2128 for (uint32_t ssrc : kSsrcs4) { |
2108 // Verify that we are in a stop state for all the send streams. | 2129 // Verify that we are in a stop state for all the send streams. |
2109 int channel_num = GetSendStreamConfig(ssrc).voe_channel_id; | 2130 EXPECT_FALSE(GetSendStream(ssrc).IsSending()); |
2110 EXPECT_FALSE(voe_.GetSend(channel_num)); | |
2111 } | 2131 } |
2112 } | 2132 } |
2113 | 2133 |
2114 // Test we can set the correct statistics on all send streams. | 2134 // Test we can set the correct statistics on all send streams. |
2115 TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) { | 2135 TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) { |
2116 SetupForMultiSendStream(); | 2136 SetupForMultiSendStream(); |
2117 | 2137 |
2118 // Create send streams. | 2138 // Create send streams. |
2119 for (uint32_t ssrc : kSsrcs4) { | 2139 for (uint32_t ssrc : kSsrcs4) { |
2120 EXPECT_TRUE(channel_->AddSendStream( | 2140 EXPECT_TRUE(channel_->AddSendStream( |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2173 TEST_F(WebRtcVoiceEngineTestFake, PlayoutWithMultipleStreams) { | 2193 TEST_F(WebRtcVoiceEngineTestFake, PlayoutWithMultipleStreams) { |
2174 EXPECT_TRUE(SetupEngineWithSendStream()); | 2194 EXPECT_TRUE(SetupEngineWithSendStream()); |
2175 int channel_num1 = voe_.GetLastChannel(); | 2195 int channel_num1 = voe_.GetLastChannel(); |
2176 | 2196 |
2177 // Start playout without a receive stream. | 2197 // Start playout without a receive stream. |
2178 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2198 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2179 EXPECT_TRUE(channel_->SetPlayout(true)); | 2199 EXPECT_TRUE(channel_->SetPlayout(true)); |
2180 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2200 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2181 | 2201 |
2182 // Adding another stream should enable playout on the new stream only. | 2202 // Adding another stream should enable playout on the new stream only. |
2183 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2203 EXPECT_TRUE( |
2204 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2184 int channel_num2 = voe_.GetLastChannel(); | 2205 int channel_num2 = voe_.GetLastChannel(); |
2185 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2206 EXPECT_TRUE(channel_->SetSend(true)); |
2186 EXPECT_TRUE(voe_.GetSend(channel_num1)); | 2207 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2187 EXPECT_FALSE(voe_.GetSend(channel_num2)); | |
2188 | 2208 |
2189 // Make sure only the new stream is played out. | 2209 // Make sure only the new stream is played out. |
2190 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2210 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2191 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); | 2211 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); |
2192 | 2212 |
2193 // Adding yet another stream should have stream 2 and 3 enabled for playout. | 2213 // Adding yet another stream should have stream 2 and 3 enabled for playout. |
2194 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2214 EXPECT_TRUE( |
2215 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc3))); | |
2195 int channel_num3 = voe_.GetLastChannel(); | 2216 int channel_num3 = voe_.GetLastChannel(); |
2196 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2217 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2197 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); | 2218 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); |
2198 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); | 2219 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); |
2199 EXPECT_FALSE(voe_.GetSend(channel_num3)); | |
2200 | 2220 |
2201 // Stop sending. | 2221 // Stop sending. |
2202 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); | 2222 EXPECT_TRUE(channel_->SetSend(false)); |
2203 EXPECT_FALSE(voe_.GetSend(channel_num1)); | 2223 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
2204 EXPECT_FALSE(voe_.GetSend(channel_num2)); | |
2205 EXPECT_FALSE(voe_.GetSend(channel_num3)); | |
2206 | 2224 |
2207 // Stop playout. | 2225 // Stop playout. |
2208 EXPECT_TRUE(channel_->SetPlayout(false)); | 2226 EXPECT_TRUE(channel_->SetPlayout(false)); |
2209 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2227 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2210 EXPECT_FALSE(voe_.GetPlayout(channel_num2)); | 2228 EXPECT_FALSE(voe_.GetPlayout(channel_num2)); |
2211 EXPECT_FALSE(voe_.GetPlayout(channel_num3)); | 2229 EXPECT_FALSE(voe_.GetPlayout(channel_num3)); |
2212 | 2230 |
2213 // Restart playout and make sure only recv streams are played out. | 2231 // Restart playout and make sure only recv streams are played out. |
2214 EXPECT_TRUE(channel_->SetPlayout(true)); | 2232 EXPECT_TRUE(channel_->SetPlayout(true)); |
2215 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2233 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2216 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); | 2234 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); |
2217 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); | 2235 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); |
2218 | 2236 |
2219 // Now remove the recv streams and verify that the send stream doesn't play. | 2237 // Now remove the recv streams and verify that the send stream doesn't play. |
2220 EXPECT_TRUE(channel_->RemoveRecvStream(3)); | 2238 EXPECT_TRUE(channel_->RemoveRecvStream(3)); |
2221 EXPECT_TRUE(channel_->RemoveRecvStream(2)); | 2239 EXPECT_TRUE(channel_->RemoveRecvStream(2)); |
2222 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2240 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2223 } | 2241 } |
2224 | 2242 |
2225 // Test that we can create a channel configured for Codian bridges, | 2243 // Test that we can create a channel configured for Codian bridges, |
2226 // and start sending on it. | 2244 // and start sending on it. |
2227 TEST_F(WebRtcVoiceEngineTestFake, CodianSend) { | 2245 TEST_F(WebRtcVoiceEngineTestFake, CodianSend) { |
2228 EXPECT_TRUE(SetupEngineWithSendStream()); | 2246 EXPECT_TRUE(SetupEngineWithSendStream()); |
2229 cricket::AudioOptions options_adjust_agc; | 2247 cricket::AudioOptions options_adjust_agc; |
2230 options_adjust_agc.adjust_agc_delta = rtc::Optional<int>(-10); | 2248 options_adjust_agc.adjust_agc_delta = rtc::Optional<int>(-10); |
2231 int channel_num = voe_.GetLastChannel(); | |
2232 webrtc::AgcConfig agc_config; | 2249 webrtc::AgcConfig agc_config; |
2233 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2250 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
2234 EXPECT_EQ(0, agc_config.targetLeveldBOv); | 2251 EXPECT_EQ(0, agc_config.targetLeveldBOv); |
2235 send_parameters_.options = options_adjust_agc; | 2252 send_parameters_.options = options_adjust_agc; |
2236 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2253 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2237 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2254 EXPECT_TRUE(channel_->SetSend(true)); |
2238 EXPECT_TRUE(voe_.GetSend(channel_num)); | 2255 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2239 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2256 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
2240 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated | 2257 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated |
2241 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); | 2258 EXPECT_TRUE(channel_->SetSend(false)); |
2242 EXPECT_FALSE(voe_.GetSend(channel_num)); | 2259 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
2243 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2260 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
2244 } | 2261 } |
2245 | 2262 |
2246 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) { | 2263 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) { |
2247 EXPECT_TRUE(SetupEngineWithSendStream()); | 2264 EXPECT_TRUE(SetupEngineWithSendStream()); |
2248 webrtc::AgcConfig agc_config; | 2265 webrtc::AgcConfig agc_config; |
2249 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2266 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
2250 EXPECT_EQ(0, agc_config.targetLeveldBOv); | 2267 EXPECT_EQ(0, agc_config.targetLeveldBOv); |
2251 send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3); | 2268 send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3); |
2252 send_parameters_.options.tx_agc_digital_compression_gain = | 2269 send_parameters_.options.tx_agc_digital_compression_gain = |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2308 EXPECT_EQ(1u, info.senders.size()); | 2325 EXPECT_EQ(1u, info.senders.size()); |
2309 VerifyVoiceSenderInfo(info.senders[0], false); | 2326 VerifyVoiceSenderInfo(info.senders[0], false); |
2310 // We have added one receive stream. We should see empty stats. | 2327 // We have added one receive stream. We should see empty stats. |
2311 EXPECT_EQ(info.receivers.size(), 1u); | 2328 EXPECT_EQ(info.receivers.size(), 1u); |
2312 EXPECT_EQ(info.receivers[0].ssrc(), 0); | 2329 EXPECT_EQ(info.receivers[0].ssrc(), 0); |
2313 } | 2330 } |
2314 | 2331 |
2315 // Start sending - this affects some reported stats. | 2332 // Start sending - this affects some reported stats. |
2316 { | 2333 { |
2317 cricket::VoiceMediaInfo info; | 2334 cricket::VoiceMediaInfo info; |
2318 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2335 EXPECT_TRUE(channel_->SetSend(true)); |
2319 EXPECT_EQ(true, channel_->GetStats(&info)); | 2336 EXPECT_EQ(true, channel_->GetStats(&info)); |
2320 VerifyVoiceSenderInfo(info.senders[0], true); | 2337 VerifyVoiceSenderInfo(info.senders[0], true); |
2321 } | 2338 } |
2322 | 2339 |
2323 // Remove the kSsrc2 stream. No receiver stats. | 2340 // Remove the kSsrc2 stream. No receiver stats. |
2324 { | 2341 { |
2325 cricket::VoiceMediaInfo info; | 2342 cricket::VoiceMediaInfo info; |
2326 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc2)); | 2343 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc2)); |
2327 EXPECT_EQ(true, channel_->GetStats(&info)); | 2344 EXPECT_EQ(true, channel_->GetStats(&info)); |
2328 EXPECT_EQ(1u, info.senders.size()); | 2345 EXPECT_EQ(1u, info.senders.size()); |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2567 } | 2584 } |
2568 | 2585 |
2569 // Test the InsertDtmf on specified send stream as callee. | 2586 // Test the InsertDtmf on specified send stream as callee. |
2570 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { | 2587 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { |
2571 TestInsertDtmf(kSsrc1, false); | 2588 TestInsertDtmf(kSsrc1, false); |
2572 } | 2589 } |
2573 | 2590 |
2574 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { | 2591 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { |
2575 EXPECT_TRUE(SetupEngineWithSendStream()); | 2592 EXPECT_TRUE(SetupEngineWithSendStream()); |
2576 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2593 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2577 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2594 EXPECT_TRUE(channel_->SetSend(true)); |
2578 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2595 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); |
2579 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2596 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); |
2580 EXPECT_TRUE(channel_->SetPlayout(true)); | 2597 EXPECT_TRUE(channel_->SetPlayout(true)); |
2581 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); | 2598 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); |
2582 EXPECT_TRUE(channel_->SetPlayout(false)); | 2599 EXPECT_TRUE(channel_->SetPlayout(false)); |
2583 EXPECT_FALSE(channel_->SetPlayout(true)); | 2600 EXPECT_FALSE(channel_->SetPlayout(true)); |
2584 } | 2601 } |
2585 | 2602 |
2586 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { | 2603 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { |
2587 EXPECT_TRUE(SetupEngineWithSendStream()); | 2604 EXPECT_TRUE(SetupEngineWithSendStream()); |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2837 webrtc::AgcModes agc_mode; | 2854 webrtc::AgcModes agc_mode; |
2838 bool ns_enabled; | 2855 bool ns_enabled; |
2839 webrtc::NsModes ns_mode; | 2856 webrtc::NsModes ns_mode; |
2840 voe_.GetEcStatus(ec_enabled, ec_mode); | 2857 voe_.GetEcStatus(ec_enabled, ec_mode); |
2841 voe_.GetAgcStatus(agc_enabled, agc_mode); | 2858 voe_.GetAgcStatus(agc_enabled, agc_mode); |
2842 voe_.GetNsStatus(ns_enabled, ns_mode); | 2859 voe_.GetNsStatus(ns_enabled, ns_mode); |
2843 EXPECT_TRUE(ec_enabled); | 2860 EXPECT_TRUE(ec_enabled); |
2844 EXPECT_TRUE(agc_enabled); | 2861 EXPECT_TRUE(agc_enabled); |
2845 EXPECT_TRUE(ns_enabled); | 2862 EXPECT_TRUE(ns_enabled); |
2846 | 2863 |
2847 channel1->SetSend(cricket::SEND_MICROPHONE); | 2864 channel1->SetSend(true); |
2848 voe_.GetEcStatus(ec_enabled, ec_mode); | 2865 voe_.GetEcStatus(ec_enabled, ec_mode); |
2849 voe_.GetAgcStatus(agc_enabled, agc_mode); | 2866 voe_.GetAgcStatus(agc_enabled, agc_mode); |
2850 voe_.GetNsStatus(ns_enabled, ns_mode); | 2867 voe_.GetNsStatus(ns_enabled, ns_mode); |
2851 EXPECT_TRUE(ec_enabled); | 2868 EXPECT_TRUE(ec_enabled); |
2852 EXPECT_TRUE(agc_enabled); | 2869 EXPECT_TRUE(agc_enabled); |
2853 EXPECT_FALSE(ns_enabled); | 2870 EXPECT_FALSE(ns_enabled); |
2854 | 2871 |
2855 channel2->SetSend(cricket::SEND_MICROPHONE); | 2872 channel2->SetSend(true); |
2856 voe_.GetEcStatus(ec_enabled, ec_mode); | 2873 voe_.GetEcStatus(ec_enabled, ec_mode); |
2857 voe_.GetAgcStatus(agc_enabled, agc_mode); | 2874 voe_.GetAgcStatus(agc_enabled, agc_mode); |
2858 voe_.GetNsStatus(ns_enabled, ns_mode); | 2875 voe_.GetNsStatus(ns_enabled, ns_mode); |
2859 EXPECT_TRUE(ec_enabled); | 2876 EXPECT_TRUE(ec_enabled); |
2860 EXPECT_FALSE(agc_enabled); | 2877 EXPECT_FALSE(agc_enabled); |
2861 EXPECT_TRUE(ns_enabled); | 2878 EXPECT_TRUE(ns_enabled); |
2862 | 2879 |
2863 // Make sure settings take effect while we are sending. | 2880 // Make sure settings take effect while we are sending. |
2864 ASSERT_TRUE(channel_->SetSendParameters(parameters_options_all)); | 2881 ASSERT_TRUE(channel_->SetSendParameters(parameters_options_all)); |
2865 cricket::AudioSendParameters parameters_options_no_agc_nor_ns = | 2882 cricket::AudioSendParameters parameters_options_no_agc_nor_ns = |
2866 send_parameters_; | 2883 send_parameters_; |
2867 parameters_options_no_agc_nor_ns.options.auto_gain_control = | 2884 parameters_options_no_agc_nor_ns.options.auto_gain_control = |
2868 rtc::Optional<bool>(false); | 2885 rtc::Optional<bool>(false); |
2869 parameters_options_no_agc_nor_ns.options.noise_suppression = | 2886 parameters_options_no_agc_nor_ns.options.noise_suppression = |
2870 rtc::Optional<bool>(false); | 2887 rtc::Optional<bool>(false); |
2871 channel2->SetSend(cricket::SEND_MICROPHONE); | 2888 channel2->SetSend(true); |
2872 channel2->SetSendParameters(parameters_options_no_agc_nor_ns); | 2889 channel2->SetSendParameters(parameters_options_no_agc_nor_ns); |
2873 expected_options.echo_cancellation = rtc::Optional<bool>(true); | 2890 expected_options.echo_cancellation = rtc::Optional<bool>(true); |
2874 expected_options.auto_gain_control = rtc::Optional<bool>(false); | 2891 expected_options.auto_gain_control = rtc::Optional<bool>(false); |
2875 expected_options.noise_suppression = rtc::Optional<bool>(false); | 2892 expected_options.noise_suppression = rtc::Optional<bool>(false); |
2876 EXPECT_EQ(expected_options, channel2->options()); | 2893 EXPECT_EQ(expected_options, channel2->options()); |
2877 voe_.GetEcStatus(ec_enabled, ec_mode); | 2894 voe_.GetEcStatus(ec_enabled, ec_mode); |
2878 voe_.GetAgcStatus(agc_enabled, agc_mode); | 2895 voe_.GetAgcStatus(agc_enabled, agc_mode); |
2879 voe_.GetNsStatus(ns_enabled, ns_mode); | 2896 voe_.GetNsStatus(ns_enabled, ns_mode); |
2880 EXPECT_TRUE(ec_enabled); | 2897 EXPECT_TRUE(ec_enabled); |
2881 EXPECT_FALSE(agc_enabled); | 2898 EXPECT_FALSE(agc_enabled); |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3292 cricket::WebRtcVoiceEngine engine; | 3309 cricket::WebRtcVoiceEngine engine; |
3293 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); | 3310 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); |
3294 std::unique_ptr<webrtc::Call> call( | 3311 std::unique_ptr<webrtc::Call> call( |
3295 webrtc::Call::Create(webrtc::Call::Config())); | 3312 webrtc::Call::Create(webrtc::Call::Config())); |
3296 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), | 3313 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), |
3297 cricket::AudioOptions(), call.get()); | 3314 cricket::AudioOptions(), call.get()); |
3298 cricket::AudioRecvParameters parameters; | 3315 cricket::AudioRecvParameters parameters; |
3299 parameters.codecs = engine.codecs(); | 3316 parameters.codecs = engine.codecs(); |
3300 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3317 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3301 } | 3318 } |
OLD | NEW |