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 |
11 #include <memory> | 11 #include <memory> |
12 | 12 |
13 #include "webrtc/pc/channel.h" | 13 #include "webrtc/pc/channel.h" |
14 #include "webrtc/base/arraysize.h" | 14 #include "webrtc/base/arraysize.h" |
15 #include "webrtc/base/byteorder.h" | 15 #include "webrtc/base/byteorder.h" |
16 #include "webrtc/base/gunit.h" | 16 #include "webrtc/base/gunit.h" |
17 #include "webrtc/call.h" | 17 #include "webrtc/call.h" |
18 #include "webrtc/p2p/base/faketransportcontroller.h" | 18 #include "webrtc/p2p/base/faketransportcontroller.h" |
19 #include "webrtc/test/field_trial.h" | 19 #include "webrtc/test/field_trial.h" |
20 #include "webrtc/media/base/fakemediaengine.h" | 20 #include "webrtc/media/base/fakemediaengine.h" |
21 #include "webrtc/media/base/fakenetworkinterface.h" | 21 #include "webrtc/media/base/fakenetworkinterface.h" |
22 #include "webrtc/media/base/fakertp.h" | 22 #include "webrtc/media/base/fakertp.h" |
23 #include "webrtc/media/base/mediaconstants.h" | 23 #include "webrtc/media/base/mediaconstants.h" |
24 #include "webrtc/media/engine/fakewebrtccall.h" | 24 #include "webrtc/media/engine/fakewebrtccall.h" |
25 #include "webrtc/media/engine/fakewebrtcvoiceengine.h" | 25 #include "webrtc/media/engine/fakewebrtcvoiceengine.h" |
26 #include "webrtc/media/engine/webrtcvoiceengine.h" | 26 #include "webrtc/media/engine/webrtcvoiceengine.h" |
27 #include "webrtc/modules/audio_device/include/mock_audio_device.h" | 27 #include "webrtc/modules/audio_device/include/mock_audio_device.h" |
28 | 28 |
29 using cricket::kRtpAudioLevelHeaderExtension; | |
30 using cricket::kRtpAbsoluteSenderTimeHeaderExtension; | |
31 using testing::Return; | 29 using testing::Return; |
32 using testing::StrictMock; | 30 using testing::StrictMock; |
33 | 31 |
34 namespace { | 32 namespace { |
35 | 33 |
36 const cricket::AudioCodec kPcmuCodec(0, "PCMU", 8000, 64000, 1); | 34 const cricket::AudioCodec kPcmuCodec(0, "PCMU", 8000, 64000, 1); |
37 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1); | 35 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1); |
38 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 64000, 2); | 36 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 64000, 2); |
39 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1); | 37 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1); |
40 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1); | 38 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1); |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 EXPECT_EQ(expected_codec_bitrate, GetCodecBitrate(kSsrc1)); | 280 EXPECT_EQ(expected_codec_bitrate, GetCodecBitrate(kSsrc1)); |
283 } | 281 } |
284 | 282 |
285 void TestSetSendRtpHeaderExtensions(const std::string& ext) { | 283 void TestSetSendRtpHeaderExtensions(const std::string& ext) { |
286 EXPECT_TRUE(SetupSendStream()); | 284 EXPECT_TRUE(SetupSendStream()); |
287 | 285 |
288 // Ensure extensions are off by default. | 286 // Ensure extensions are off by default. |
289 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); | 287 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
290 | 288 |
291 // Ensure unknown extensions won't cause an error. | 289 // Ensure unknown extensions won't cause an error. |
292 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension( | 290 send_parameters_.extensions.push_back( |
293 "urn:ietf:params:unknownextention", 1)); | 291 webrtc::RtpExtension("urn:ietf:params:unknownextention", 1)); |
294 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 292 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
295 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); | 293 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
296 | 294 |
297 // Ensure extensions stay off with an empty list of headers. | 295 // Ensure extensions stay off with an empty list of headers. |
298 send_parameters_.extensions.clear(); | 296 send_parameters_.extensions.clear(); |
299 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 297 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
300 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); | 298 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
301 | 299 |
302 // Ensure extension is set properly. | 300 // Ensure extension is set properly. |
303 const int id = 1; | 301 const int id = 1; |
304 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension(ext, id)); | 302 send_parameters_.extensions.push_back(webrtc::RtpExtension(ext, id)); |
305 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 303 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
306 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); | 304 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
307 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc1).rtp.extensions[0].name); | 305 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc1).rtp.extensions[0].uri); |
308 EXPECT_EQ(id, GetSendStreamConfig(kSsrc1).rtp.extensions[0].id); | 306 EXPECT_EQ(id, GetSendStreamConfig(kSsrc1).rtp.extensions[0].id); |
309 | 307 |
310 // Ensure extension is set properly on new stream. | 308 // Ensure extension is set properly on new stream. |
311 EXPECT_TRUE(channel_->AddSendStream( | 309 EXPECT_TRUE(channel_->AddSendStream( |
312 cricket::StreamParams::CreateLegacy(kSsrc2))); | 310 cricket::StreamParams::CreateLegacy(kSsrc2))); |
313 EXPECT_NE(call_.GetAudioSendStream(kSsrc1), | 311 EXPECT_NE(call_.GetAudioSendStream(kSsrc1), |
314 call_.GetAudioSendStream(kSsrc2)); | 312 call_.GetAudioSendStream(kSsrc2)); |
315 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); | 313 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); |
316 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc2).rtp.extensions[0].name); | 314 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc2).rtp.extensions[0].uri); |
317 EXPECT_EQ(id, GetSendStreamConfig(kSsrc2).rtp.extensions[0].id); | 315 EXPECT_EQ(id, GetSendStreamConfig(kSsrc2).rtp.extensions[0].id); |
318 | 316 |
319 // Ensure all extensions go back off with an empty list. | 317 // Ensure all extensions go back off with an empty list. |
320 send_parameters_.codecs.push_back(kPcmuCodec); | 318 send_parameters_.codecs.push_back(kPcmuCodec); |
321 send_parameters_.extensions.clear(); | 319 send_parameters_.extensions.clear(); |
322 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 320 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
323 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); | 321 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
324 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); | 322 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); |
325 } | 323 } |
326 | 324 |
327 void TestSetRecvRtpHeaderExtensions(const std::string& ext) { | 325 void TestSetRecvRtpHeaderExtensions(const std::string& ext) { |
328 EXPECT_TRUE(SetupRecvStream()); | 326 EXPECT_TRUE(SetupRecvStream()); |
329 | 327 |
330 // Ensure extensions are off by default. | 328 // Ensure extensions are off by default. |
331 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 329 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
332 | 330 |
333 // Ensure unknown extensions won't cause an error. | 331 // Ensure unknown extensions won't cause an error. |
334 recv_parameters_.extensions.push_back(cricket::RtpHeaderExtension( | 332 recv_parameters_.extensions.push_back( |
335 "urn:ietf:params:unknownextention", 1)); | 333 webrtc::RtpExtension("urn:ietf:params:unknownextention", 1)); |
336 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 334 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
337 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 335 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
338 | 336 |
339 // Ensure extensions stay off with an empty list of headers. | 337 // Ensure extensions stay off with an empty list of headers. |
340 recv_parameters_.extensions.clear(); | 338 recv_parameters_.extensions.clear(); |
341 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 339 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
342 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 340 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
343 | 341 |
344 // Ensure extension is set properly. | 342 // Ensure extension is set properly. |
345 const int id = 2; | 343 const int id = 2; |
346 recv_parameters_.extensions.push_back(cricket::RtpHeaderExtension(ext, id)); | 344 recv_parameters_.extensions.push_back(webrtc::RtpExtension(ext, id)); |
347 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 345 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
348 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 346 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
349 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].name); | 347 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].uri); |
350 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].id); | 348 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].id); |
351 | 349 |
352 // Ensure extension is set properly on new stream. | 350 // Ensure extension is set properly on new stream. |
353 EXPECT_TRUE(channel_->AddRecvStream( | 351 EXPECT_TRUE(channel_->AddRecvStream( |
354 cricket::StreamParams::CreateLegacy(kSsrc2))); | 352 cricket::StreamParams::CreateLegacy(kSsrc2))); |
355 EXPECT_NE(call_.GetAudioReceiveStream(kSsrc1), | 353 EXPECT_NE(call_.GetAudioReceiveStream(kSsrc1), |
356 call_.GetAudioReceiveStream(kSsrc2)); | 354 call_.GetAudioReceiveStream(kSsrc2)); |
357 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); | 355 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); |
358 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].name); | 356 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].uri); |
359 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].id); | 357 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].id); |
360 | 358 |
361 // Ensure all extensions go back off with an empty list. | 359 // Ensure all extensions go back off with an empty list. |
362 recv_parameters_.extensions.clear(); | 360 recv_parameters_.extensions.clear(); |
363 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 361 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
364 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 362 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
365 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); | 363 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); |
366 } | 364 } |
367 | 365 |
368 webrtc::AudioSendStream::Stats GetAudioSendStreamStats() const { | 366 webrtc::AudioSendStream::Stats GetAudioSendStreamStats() const { |
(...skipping 1848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2217 class WebRtcVoiceEngineWithSendSideBweTest : public WebRtcVoiceEngineTestFake { | 2215 class WebRtcVoiceEngineWithSendSideBweTest : public WebRtcVoiceEngineTestFake { |
2218 public: | 2216 public: |
2219 WebRtcVoiceEngineWithSendSideBweTest() | 2217 WebRtcVoiceEngineWithSendSideBweTest() |
2220 : WebRtcVoiceEngineTestFake("WebRTC-Audio-SendSideBwe/Enabled/") {} | 2218 : WebRtcVoiceEngineTestFake("WebRTC-Audio-SendSideBwe/Enabled/") {} |
2221 }; | 2219 }; |
2222 | 2220 |
2223 TEST_F(WebRtcVoiceEngineWithSendSideBweTest, | 2221 TEST_F(WebRtcVoiceEngineWithSendSideBweTest, |
2224 SupportsTransportSequenceNumberHeaderExtension) { | 2222 SupportsTransportSequenceNumberHeaderExtension) { |
2225 cricket::RtpCapabilities capabilities = engine_->GetCapabilities(); | 2223 cricket::RtpCapabilities capabilities = engine_->GetCapabilities(); |
2226 ASSERT_FALSE(capabilities.header_extensions.empty()); | 2224 ASSERT_FALSE(capabilities.header_extensions.empty()); |
2227 for (const cricket::RtpHeaderExtension& extension : | 2225 for (const webrtc::RtpExtension& extension : capabilities.header_extensions) { |
2228 capabilities.header_extensions) { | 2226 if (extension.uri == webrtc::RtpExtension::kTransportSequenceNumberUri) { |
2229 if (extension.uri == cricket::kRtpTransportSequenceNumberHeaderExtension) { | 2227 EXPECT_EQ(webrtc::RtpExtension::kTransportSequenceNumberDefaultId, |
2230 EXPECT_EQ(cricket::kRtpTransportSequenceNumberHeaderExtensionDefaultId, | |
2231 extension.id); | 2228 extension.id); |
2232 return; | 2229 return; |
2233 } | 2230 } |
2234 } | 2231 } |
2235 FAIL() << "Transport sequence number extension not in header-extension list."; | 2232 FAIL() << "Transport sequence number extension not in header-extension list."; |
2236 } | 2233 } |
2237 | 2234 |
2238 // Test support for audio level header extension. | 2235 // Test support for audio level header extension. |
2239 TEST_F(WebRtcVoiceEngineTestFake, SendAudioLevelHeaderExtensions) { | 2236 TEST_F(WebRtcVoiceEngineTestFake, SendAudioLevelHeaderExtensions) { |
2240 TestSetSendRtpHeaderExtensions(kRtpAudioLevelHeaderExtension); | 2237 TestSetSendRtpHeaderExtensions(webrtc::RtpExtension::kAudioLevelUri); |
2241 } | 2238 } |
2242 TEST_F(WebRtcVoiceEngineTestFake, RecvAudioLevelHeaderExtensions) { | 2239 TEST_F(WebRtcVoiceEngineTestFake, RecvAudioLevelHeaderExtensions) { |
2243 TestSetRecvRtpHeaderExtensions(kRtpAudioLevelHeaderExtension); | 2240 TestSetRecvRtpHeaderExtensions(webrtc::RtpExtension::kAudioLevelUri); |
2244 } | 2241 } |
2245 | 2242 |
2246 // Test support for absolute send time header extension. | 2243 // Test support for absolute send time header extension. |
2247 TEST_F(WebRtcVoiceEngineTestFake, SendAbsoluteSendTimeHeaderExtensions) { | 2244 TEST_F(WebRtcVoiceEngineTestFake, SendAbsoluteSendTimeHeaderExtensions) { |
2248 TestSetSendRtpHeaderExtensions(kRtpAbsoluteSenderTimeHeaderExtension); | 2245 TestSetSendRtpHeaderExtensions(webrtc::RtpExtension::kAbsSendTimeUri); |
2249 } | 2246 } |
2250 TEST_F(WebRtcVoiceEngineTestFake, RecvAbsoluteSendTimeHeaderExtensions) { | 2247 TEST_F(WebRtcVoiceEngineTestFake, RecvAbsoluteSendTimeHeaderExtensions) { |
2251 TestSetRecvRtpHeaderExtensions(kRtpAbsoluteSenderTimeHeaderExtension); | 2248 TestSetRecvRtpHeaderExtensions(webrtc::RtpExtension::kAbsSendTimeUri); |
2252 } | 2249 } |
2253 | 2250 |
2254 // Test that we can create a channel and start sending on it. | 2251 // Test that we can create a channel and start sending on it. |
2255 TEST_F(WebRtcVoiceEngineTestFake, Send) { | 2252 TEST_F(WebRtcVoiceEngineTestFake, Send) { |
2256 EXPECT_TRUE(SetupSendStream()); | 2253 EXPECT_TRUE(SetupSendStream()); |
2257 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2254 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2258 SetSend(channel_, true); | 2255 SetSend(channel_, true); |
2259 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); | 2256 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2260 SetSend(channel_, false); | 2257 SetSend(channel_, false); |
2261 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | 2258 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
(...skipping 17 matching lines...) Expand all Loading... |
2279 TEST_F(WebRtcVoiceEngineTestFake, SendStateWhenStreamsAreRecreated) { | 2276 TEST_F(WebRtcVoiceEngineTestFake, SendStateWhenStreamsAreRecreated) { |
2280 EXPECT_TRUE(SetupSendStream()); | 2277 EXPECT_TRUE(SetupSendStream()); |
2281 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | 2278 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
2282 | 2279 |
2283 // Turn on sending. | 2280 // Turn on sending. |
2284 SetSend(channel_, true); | 2281 SetSend(channel_, true); |
2285 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); | 2282 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2286 | 2283 |
2287 // Changing RTP header extensions will recreate the AudioSendStream. | 2284 // Changing RTP header extensions will recreate the AudioSendStream. |
2288 send_parameters_.extensions.push_back( | 2285 send_parameters_.extensions.push_back( |
2289 cricket::RtpHeaderExtension(kRtpAudioLevelHeaderExtension, 12)); | 2286 webrtc::RtpExtension(webrtc::RtpExtension::kAudioLevelUri, 12)); |
2290 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2287 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2291 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); | 2288 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2292 | 2289 |
2293 // Turn off sending. | 2290 // Turn off sending. |
2294 SetSend(channel_, false); | 2291 SetSend(channel_, false); |
2295 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | 2292 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
2296 | 2293 |
2297 // Changing RTP header extensions will recreate the AudioSendStream. | 2294 // Changing RTP header extensions will recreate the AudioSendStream. |
2298 send_parameters_.extensions.clear(); | 2295 send_parameters_.extensions.clear(); |
2299 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2296 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3347 channel_->SetRecvParameters(recv_parameters); | 3344 channel_->SetRecvParameters(recv_parameters); |
3348 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3345 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3349 for (uint32_t ssrc : ssrcs) { | 3346 for (uint32_t ssrc : ssrcs) { |
3350 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3347 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3351 EXPECT_NE(nullptr, s); | 3348 EXPECT_NE(nullptr, s); |
3352 const auto& s_exts = s->GetConfig().rtp.extensions; | 3349 const auto& s_exts = s->GetConfig().rtp.extensions; |
3353 EXPECT_EQ(capabilities.header_extensions.size(), s_exts.size()); | 3350 EXPECT_EQ(capabilities.header_extensions.size(), s_exts.size()); |
3354 for (const auto& e_ext : capabilities.header_extensions) { | 3351 for (const auto& e_ext : capabilities.header_extensions) { |
3355 for (const auto& s_ext : s_exts) { | 3352 for (const auto& s_ext : s_exts) { |
3356 if (e_ext.id == s_ext.id) { | 3353 if (e_ext.id == s_ext.id) { |
3357 EXPECT_EQ(e_ext.uri, s_ext.name); | 3354 EXPECT_EQ(e_ext.uri, s_ext.uri); |
3358 } | 3355 } |
3359 } | 3356 } |
3360 } | 3357 } |
3361 } | 3358 } |
3362 | 3359 |
3363 // Disable receive extensions. | 3360 // Disable receive extensions. |
3364 channel_->SetRecvParameters(cricket::AudioRecvParameters()); | 3361 channel_->SetRecvParameters(cricket::AudioRecvParameters()); |
3365 for (uint32_t ssrc : ssrcs) { | 3362 for (uint32_t ssrc : ssrcs) { |
3366 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3363 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3367 EXPECT_NE(nullptr, s); | 3364 EXPECT_NE(nullptr, s); |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3644 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { | 3641 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { |
3645 cricket::WebRtcVoiceEngine engine(nullptr); | 3642 cricket::WebRtcVoiceEngine engine(nullptr); |
3646 std::unique_ptr<webrtc::Call> call( | 3643 std::unique_ptr<webrtc::Call> call( |
3647 webrtc::Call::Create(webrtc::Call::Config())); | 3644 webrtc::Call::Create(webrtc::Call::Config())); |
3648 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), | 3645 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), |
3649 cricket::AudioOptions(), call.get()); | 3646 cricket::AudioOptions(), call.get()); |
3650 cricket::AudioRecvParameters parameters; | 3647 cricket::AudioRecvParameters parameters; |
3651 parameters.codecs = engine.codecs(); | 3648 parameters.codecs = engine.codecs(); |
3652 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3649 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3653 } | 3650 } |
OLD | NEW |