Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: talk/media/webrtc/webrtcvoiceengine_unittest.cc

Issue 1500633002: Refactor handling of AudioOptions. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | talk/session/media/channelmanager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2008 Google Inc. 3 * Copyright 2008 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 } // namespace 73 } // namespace
74 74
75 class WebRtcVoiceEngineTestFake : public testing::Test { 75 class WebRtcVoiceEngineTestFake : public testing::Test {
76 public: 76 public:
77 WebRtcVoiceEngineTestFake() 77 WebRtcVoiceEngineTestFake()
78 : call_(webrtc::Call::Config()), 78 : call_(webrtc::Call::Config()),
79 engine_(new FakeVoEWrapper(&voe_)), 79 engine_(new FakeVoEWrapper(&voe_)),
80 channel_(nullptr) { 80 channel_(nullptr) {
81 send_parameters_.codecs.push_back(kPcmuCodec); 81 send_parameters_.codecs.push_back(kPcmuCodec);
82 recv_parameters_.codecs.push_back(kPcmuCodec); 82 recv_parameters_.codecs.push_back(kPcmuCodec);
83 options_adjust_agc_.adjust_agc_delta = rtc::Optional<int>(-10);
84 } 83 }
85 bool SetupEngine() { 84 bool SetupEngine() {
86 if (!engine_.Init(rtc::Thread::Current())) { 85 if (!engine_.Init(rtc::Thread::Current())) {
87 return false; 86 return false;
88 } 87 }
89 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); 88 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions());
90 return (channel_ != nullptr); 89 return (channel_ != nullptr);
91 } 90 }
92 bool SetupEngineWithRecvStream() { 91 bool SetupEngineWithRecvStream() {
93 if (!SetupEngine()) { 92 if (!SetupEngine()) {
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 EXPECT_EQ(info.decoding_cng, stats.decoding_cng); 390 EXPECT_EQ(info.decoding_cng, stats.decoding_cng);
392 EXPECT_EQ(info.decoding_plc_cng, stats.decoding_plc_cng); 391 EXPECT_EQ(info.decoding_plc_cng, stats.decoding_plc_cng);
393 EXPECT_EQ(info.capture_start_ntp_time_ms, stats.capture_start_ntp_time_ms); 392 EXPECT_EQ(info.capture_start_ntp_time_ms, stats.capture_start_ntp_time_ms);
394 } 393 }
395 394
396 protected: 395 protected:
397 cricket::FakeCall call_; 396 cricket::FakeCall call_;
398 cricket::FakeWebRtcVoiceEngine voe_; 397 cricket::FakeWebRtcVoiceEngine voe_;
399 cricket::WebRtcVoiceEngine engine_; 398 cricket::WebRtcVoiceEngine engine_;
400 cricket::VoiceMediaChannel* channel_; 399 cricket::VoiceMediaChannel* channel_;
401
402 cricket::AudioSendParameters send_parameters_; 400 cricket::AudioSendParameters send_parameters_;
403 cricket::AudioRecvParameters recv_parameters_; 401 cricket::AudioRecvParameters recv_parameters_;
404 cricket::AudioOptions options_adjust_agc_;
405 }; 402 };
406 403
407 // Tests that our stub library "works". 404 // Tests that our stub library "works".
408 TEST_F(WebRtcVoiceEngineTestFake, StartupShutdown) { 405 TEST_F(WebRtcVoiceEngineTestFake, StartupShutdown) {
409 EXPECT_FALSE(voe_.IsInited()); 406 EXPECT_FALSE(voe_.IsInited());
410 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); 407 EXPECT_TRUE(engine_.Init(rtc::Thread::Current()));
411 EXPECT_TRUE(voe_.IsInited()); 408 EXPECT_TRUE(voe_.IsInited());
412 engine_.Terminate(); 409 engine_.Terminate();
413 EXPECT_FALSE(voe_.IsInited()); 410 EXPECT_FALSE(voe_.IsInited());
414 } 411 }
(...skipping 1739 matching lines...) Expand 10 before | Expand all | Expand 10 after
2154 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); 2151 EXPECT_FALSE(voe_.GetPlayout(channel_num1));
2155 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); 2152 EXPECT_TRUE(voe_.GetPlayout(channel_num2));
2156 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); 2153 EXPECT_TRUE(voe_.GetPlayout(channel_num3));
2157 2154
2158 // Now remove the recv streams and verify that the send stream doesn't play. 2155 // Now remove the recv streams and verify that the send stream doesn't play.
2159 EXPECT_TRUE(channel_->RemoveRecvStream(3)); 2156 EXPECT_TRUE(channel_->RemoveRecvStream(3));
2160 EXPECT_TRUE(channel_->RemoveRecvStream(2)); 2157 EXPECT_TRUE(channel_->RemoveRecvStream(2));
2161 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); 2158 EXPECT_FALSE(voe_.GetPlayout(channel_num1));
2162 } 2159 }
2163 2160
2164 // Test that we can set the devices to use.
2165 TEST_F(WebRtcVoiceEngineTestFake, SetDevices) {
2166 EXPECT_TRUE(SetupEngineWithSendStream());
2167 int send_channel = voe_.GetLastChannel();
2168 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2)));
2169 int recv_channel = voe_.GetLastChannel();
2170 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2171
2172 cricket::Device default_dev(cricket::kFakeDefaultDeviceName,
2173 cricket::kFakeDefaultDeviceId);
2174 cricket::Device dev(cricket::kFakeDeviceName,
2175 cricket::kFakeDeviceId);
2176
2177 // Test SetDevices() while not sending or playing.
2178 EXPECT_TRUE(engine_.SetDevices(&default_dev, &default_dev));
2179
2180 // Test SetDevices() while sending and playing.
2181 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE));
2182 EXPECT_TRUE(channel_->SetPlayout(true));
2183 EXPECT_TRUE(voe_.GetSend(send_channel));
2184 EXPECT_TRUE(voe_.GetPlayout(recv_channel));
2185
2186 EXPECT_TRUE(engine_.SetDevices(&dev, &dev));
2187
2188 EXPECT_TRUE(voe_.GetSend(send_channel));
2189 EXPECT_TRUE(voe_.GetPlayout(recv_channel));
2190
2191 // Test that failure to open newly selected devices does not prevent opening
2192 // ones after that.
2193 voe_.set_playout_fail_channel(recv_channel);
2194 voe_.set_send_fail_channel(send_channel);
2195
2196 EXPECT_FALSE(engine_.SetDevices(&default_dev, &default_dev));
2197
2198 EXPECT_FALSE(voe_.GetSend(send_channel));
2199 EXPECT_FALSE(voe_.GetPlayout(recv_channel));
2200
2201 voe_.set_playout_fail_channel(-1);
2202 voe_.set_send_fail_channel(-1);
2203
2204 EXPECT_TRUE(engine_.SetDevices(&dev, &dev));
2205
2206 EXPECT_TRUE(voe_.GetSend(send_channel));
2207 EXPECT_TRUE(voe_.GetPlayout(recv_channel));
2208 }
2209
2210 // Test that we can set the devices to use even if we failed to
2211 // open the initial ones.
2212 TEST_F(WebRtcVoiceEngineTestFake, SetDevicesWithInitiallyBadDevices) {
2213 EXPECT_TRUE(SetupEngineWithSendStream());
2214 int send_channel = voe_.GetLastChannel();
2215 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2)));
2216 int recv_channel = voe_.GetLastChannel();
2217 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2218
2219 cricket::Device default_dev(cricket::kFakeDefaultDeviceName,
2220 cricket::kFakeDefaultDeviceId);
2221 cricket::Device dev(cricket::kFakeDeviceName,
2222 cricket::kFakeDeviceId);
2223
2224 // Test that failure to open devices selected before starting
2225 // send/play does not prevent opening newly selected ones after that.
2226 voe_.set_playout_fail_channel(recv_channel);
2227 voe_.set_send_fail_channel(send_channel);
2228
2229 EXPECT_TRUE(engine_.SetDevices(&default_dev, &default_dev));
2230
2231 EXPECT_FALSE(channel_->SetSend(cricket::SEND_MICROPHONE));
2232 EXPECT_FALSE(channel_->SetPlayout(true));
2233 EXPECT_FALSE(voe_.GetSend(send_channel));
2234 EXPECT_FALSE(voe_.GetPlayout(recv_channel));
2235
2236 voe_.set_playout_fail_channel(-1);
2237 voe_.set_send_fail_channel(-1);
2238
2239 EXPECT_TRUE(engine_.SetDevices(&dev, &dev));
2240
2241 EXPECT_TRUE(voe_.GetSend(send_channel));
2242 EXPECT_TRUE(voe_.GetPlayout(recv_channel));
2243 }
2244
2245 // Test that we can create a channel configured for Codian bridges, 2161 // Test that we can create a channel configured for Codian bridges,
2246 // and start sending on it. 2162 // and start sending on it.
2247 TEST_F(WebRtcVoiceEngineTestFake, CodianSend) { 2163 TEST_F(WebRtcVoiceEngineTestFake, CodianSend) {
2248 EXPECT_TRUE(SetupEngineWithSendStream()); 2164 EXPECT_TRUE(SetupEngineWithSendStream());
2165 cricket::AudioOptions options_adjust_agc;
2166 options_adjust_agc.adjust_agc_delta = rtc::Optional<int>(-10);
2249 int channel_num = voe_.GetLastChannel(); 2167 int channel_num = voe_.GetLastChannel();
2250 webrtc::AgcConfig agc_config; 2168 webrtc::AgcConfig agc_config;
2251 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2169 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2252 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2170 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2253 send_parameters_.options = options_adjust_agc_; 2171 send_parameters_.options = options_adjust_agc;
2254 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2172 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2255 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); 2173 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE));
2256 EXPECT_TRUE(voe_.GetSend(channel_num)); 2174 EXPECT_TRUE(voe_.GetSend(channel_num));
2257 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2175 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2258 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated 2176 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated
2259 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); 2177 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING));
2260 EXPECT_FALSE(voe_.GetSend(channel_num)); 2178 EXPECT_FALSE(voe_.GetSend(channel_num));
2261 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2179 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2262 EXPECT_EQ(0, agc_config.targetLeveldBOv); // level was restored
2263 } 2180 }
2264 2181
2265 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) { 2182 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) {
2266 EXPECT_TRUE(SetupEngineWithSendStream()); 2183 EXPECT_TRUE(SetupEngineWithSendStream());
2267 webrtc::AgcConfig agc_config; 2184 webrtc::AgcConfig agc_config;
2268 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2185 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2269 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2186 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2270 2187 send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3);
2271 cricket::AudioOptions options; 2188 send_parameters_.options.tx_agc_digital_compression_gain =
2272 options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3); 2189 rtc::Optional<uint16_t>(9);
2273 options.tx_agc_digital_compression_gain = rtc::Optional<uint16_t>(9); 2190 send_parameters_.options.tx_agc_limiter = rtc::Optional<bool>(true);
2274 options.tx_agc_limiter = rtc::Optional<bool>(true); 2191 send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true);
2275 options.auto_gain_control = rtc::Optional<bool>(true); 2192 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2276 EXPECT_TRUE(engine_.SetOptions(options));
2277
2278 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2193 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2279 EXPECT_EQ(3, agc_config.targetLeveldBOv); 2194 EXPECT_EQ(3, agc_config.targetLeveldBOv);
2280 EXPECT_EQ(9, agc_config.digitalCompressionGaindB); 2195 EXPECT_EQ(9, agc_config.digitalCompressionGaindB);
2281 EXPECT_TRUE(agc_config.limiterEnable); 2196 EXPECT_TRUE(agc_config.limiterEnable);
2282 2197
2283 // Check interaction with adjust_agc_delta. Both should be respected, for 2198 // Check interaction with adjust_agc_delta. Both should be respected, for
2284 // backwards compatibility. 2199 // backwards compatibility.
2285 options.adjust_agc_delta = rtc::Optional<int>(-10); 2200 send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10);
2286 EXPECT_TRUE(engine_.SetOptions(options)); 2201 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2287
2288 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2202 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2289 EXPECT_EQ(13, agc_config.targetLeveldBOv); 2203 EXPECT_EQ(13, agc_config.targetLeveldBOv);
2290 } 2204 }
2291 2205
2292 TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) { 2206 TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) {
2293 EXPECT_TRUE(SetupEngineWithSendStream()); 2207 EXPECT_TRUE(SetupEngineWithSendStream());
2294 cricket::AudioOptions options; 2208 send_parameters_.options.recording_sample_rate =
2295 options.recording_sample_rate = rtc::Optional<uint32_t>(48000); 2209 rtc::Optional<uint32_t>(48000);
2296 options.playout_sample_rate = rtc::Optional<uint32_t>(44100); 2210 send_parameters_.options.playout_sample_rate = rtc::Optional<uint32_t>(44100);
2297 EXPECT_TRUE(engine_.SetOptions(options)); 2211 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2298 2212
2299 unsigned int recording_sample_rate, playout_sample_rate; 2213 unsigned int recording_sample_rate, playout_sample_rate;
2300 EXPECT_EQ(0, voe_.RecordingSampleRate(&recording_sample_rate)); 2214 EXPECT_EQ(0, voe_.RecordingSampleRate(&recording_sample_rate));
2301 EXPECT_EQ(0, voe_.PlayoutSampleRate(&playout_sample_rate)); 2215 EXPECT_EQ(0, voe_.PlayoutSampleRate(&playout_sample_rate));
2302 EXPECT_EQ(48000u, recording_sample_rate); 2216 EXPECT_EQ(48000u, recording_sample_rate);
2303 EXPECT_EQ(44100u, playout_sample_rate); 2217 EXPECT_EQ(44100u, playout_sample_rate);
2304 } 2218 }
2305 2219
2306 // Test that we can set the outgoing SSRC properly. 2220 // Test that we can set the outgoing SSRC properly.
2307 // SSRC is set in SetupEngine by calling AddSendStream. 2221 // SSRC is set in SetupEngine by calling AddSendStream.
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
2631 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2545 EXPECT_TRUE(voe_.ec_metrics_enabled());
2632 EXPECT_FALSE(cng_enabled); 2546 EXPECT_FALSE(cng_enabled);
2633 EXPECT_TRUE(agc_enabled); 2547 EXPECT_TRUE(agc_enabled);
2634 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2548 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2635 EXPECT_TRUE(ns_enabled); 2549 EXPECT_TRUE(ns_enabled);
2636 EXPECT_TRUE(highpass_filter_enabled); 2550 EXPECT_TRUE(highpass_filter_enabled);
2637 EXPECT_FALSE(stereo_swapping_enabled); 2551 EXPECT_FALSE(stereo_swapping_enabled);
2638 EXPECT_TRUE(typing_detection_enabled); 2552 EXPECT_TRUE(typing_detection_enabled);
2639 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2553 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2640 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression); 2554 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
2555 EXPECT_EQ(50, voe_.GetNetEqCapacity());
2556 EXPECT_FALSE(voe_.GetNetEqFastAccelerate());
2641 2557
2642 // Nothing set, so all ignored. 2558 // Nothing set in AudioOptions, so everything should be as default.
2643 cricket::AudioOptions options; 2559 send_parameters_.options = cricket::AudioOptions();
2644 ASSERT_TRUE(engine_.SetOptions(options)); 2560 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2645 voe_.GetEcStatus(ec_enabled, ec_mode); 2561 voe_.GetEcStatus(ec_enabled, ec_mode);
2646 voe_.GetAecmMode(aecm_mode, cng_enabled); 2562 voe_.GetAecmMode(aecm_mode, cng_enabled);
2647 voe_.GetAgcStatus(agc_enabled, agc_mode); 2563 voe_.GetAgcStatus(agc_enabled, agc_mode);
2648 voe_.GetAgcConfig(agc_config); 2564 voe_.GetAgcConfig(agc_config);
2649 voe_.GetNsStatus(ns_enabled, ns_mode); 2565 voe_.GetNsStatus(ns_enabled, ns_mode);
2650 highpass_filter_enabled = voe_.IsHighPassFilterEnabled(); 2566 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2651 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2567 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2652 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2568 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2653 EXPECT_TRUE(ec_enabled); 2569 EXPECT_TRUE(ec_enabled);
2654 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2570 EXPECT_TRUE(voe_.ec_metrics_enabled());
2655 EXPECT_FALSE(cng_enabled); 2571 EXPECT_FALSE(cng_enabled);
2656 EXPECT_TRUE(agc_enabled); 2572 EXPECT_TRUE(agc_enabled);
2657 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2573 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2658 EXPECT_TRUE(ns_enabled); 2574 EXPECT_TRUE(ns_enabled);
2659 EXPECT_TRUE(highpass_filter_enabled); 2575 EXPECT_TRUE(highpass_filter_enabled);
2660 EXPECT_FALSE(stereo_swapping_enabled); 2576 EXPECT_FALSE(stereo_swapping_enabled);
2661 EXPECT_TRUE(typing_detection_enabled); 2577 EXPECT_TRUE(typing_detection_enabled);
2662 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2578 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2663 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression); 2579 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
2664 EXPECT_EQ(50, voe_.GetNetEqCapacity()); // From GetDefaultEngineOptions(). 2580 EXPECT_EQ(50, voe_.GetNetEqCapacity());
2665 EXPECT_FALSE( 2581 EXPECT_FALSE(voe_.GetNetEqFastAccelerate());
2666 voe_.GetNetEqFastAccelerate()); // From GetDefaultEngineOptions().
2667 2582
2668 // Turn echo cancellation off 2583 // Turn echo cancellation off
2669 options.echo_cancellation = rtc::Optional<bool>(false); 2584 send_parameters_.options.echo_cancellation = rtc::Optional<bool>(false);
2670 ASSERT_TRUE(engine_.SetOptions(options)); 2585 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2671 voe_.GetEcStatus(ec_enabled, ec_mode); 2586 voe_.GetEcStatus(ec_enabled, ec_mode);
2672 EXPECT_FALSE(ec_enabled); 2587 EXPECT_FALSE(ec_enabled);
2673 2588
2674 // Turn echo cancellation back on, with settings, and make sure 2589 // Turn echo cancellation back on, with settings, and make sure
2675 // nothing else changed. 2590 // nothing else changed.
2676 options.echo_cancellation = rtc::Optional<bool>(true); 2591 send_parameters_.options.echo_cancellation = rtc::Optional<bool>(true);
2677 ASSERT_TRUE(engine_.SetOptions(options)); 2592 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2678 voe_.GetEcStatus(ec_enabled, ec_mode); 2593 voe_.GetEcStatus(ec_enabled, ec_mode);
2679 voe_.GetAecmMode(aecm_mode, cng_enabled); 2594 voe_.GetAecmMode(aecm_mode, cng_enabled);
2680 voe_.GetAgcStatus(agc_enabled, agc_mode); 2595 voe_.GetAgcStatus(agc_enabled, agc_mode);
2681 voe_.GetAgcConfig(agc_config); 2596 voe_.GetAgcConfig(agc_config);
2682 voe_.GetNsStatus(ns_enabled, ns_mode); 2597 voe_.GetNsStatus(ns_enabled, ns_mode);
2683 highpass_filter_enabled = voe_.IsHighPassFilterEnabled(); 2598 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2684 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2599 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2685 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2600 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2686 EXPECT_TRUE(ec_enabled); 2601 EXPECT_TRUE(ec_enabled);
2687 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2602 EXPECT_TRUE(voe_.ec_metrics_enabled());
2688 EXPECT_TRUE(agc_enabled); 2603 EXPECT_TRUE(agc_enabled);
2689 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2604 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2690 EXPECT_TRUE(ns_enabled); 2605 EXPECT_TRUE(ns_enabled);
2691 EXPECT_TRUE(highpass_filter_enabled); 2606 EXPECT_TRUE(highpass_filter_enabled);
2692 EXPECT_FALSE(stereo_swapping_enabled); 2607 EXPECT_FALSE(stereo_swapping_enabled);
2693 EXPECT_TRUE(typing_detection_enabled); 2608 EXPECT_TRUE(typing_detection_enabled);
2694 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2609 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2695 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression); 2610 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
2696 2611
2697 // Turn on delay agnostic aec and make sure nothing change w.r.t. echo 2612 // Turn on delay agnostic aec and make sure nothing change w.r.t. echo
2698 // control. 2613 // control.
2699 options.delay_agnostic_aec = rtc::Optional<bool>(true); 2614 send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true);
2700 ASSERT_TRUE(engine_.SetOptions(options)); 2615 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2701 voe_.GetEcStatus(ec_enabled, ec_mode); 2616 voe_.GetEcStatus(ec_enabled, ec_mode);
2702 voe_.GetAecmMode(aecm_mode, cng_enabled); 2617 voe_.GetAecmMode(aecm_mode, cng_enabled);
2703 EXPECT_TRUE(ec_enabled); 2618 EXPECT_TRUE(ec_enabled);
2704 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2619 EXPECT_TRUE(voe_.ec_metrics_enabled());
2705 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2620 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2706 2621
2707 // Turn off echo cancellation and delay agnostic aec. 2622 // Turn off echo cancellation and delay agnostic aec.
2708 options.delay_agnostic_aec = rtc::Optional<bool>(false); 2623 send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(false);
2709 options.extended_filter_aec = rtc::Optional<bool>(false); 2624 send_parameters_.options.extended_filter_aec = rtc::Optional<bool>(false);
2710 options.echo_cancellation = rtc::Optional<bool>(false); 2625 send_parameters_.options.echo_cancellation = rtc::Optional<bool>(false);
2711 ASSERT_TRUE(engine_.SetOptions(options)); 2626 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2712 voe_.GetEcStatus(ec_enabled, ec_mode); 2627 voe_.GetEcStatus(ec_enabled, ec_mode);
2713 EXPECT_FALSE(ec_enabled); 2628 EXPECT_FALSE(ec_enabled);
2714 // Turning delay agnostic aec back on should also turn on echo cancellation. 2629 // Turning delay agnostic aec back on should also turn on echo cancellation.
2715 options.delay_agnostic_aec = rtc::Optional<bool>(true); 2630 send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true);
2716 ASSERT_TRUE(engine_.SetOptions(options)); 2631 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2717 voe_.GetEcStatus(ec_enabled, ec_mode); 2632 voe_.GetEcStatus(ec_enabled, ec_mode);
2718 EXPECT_TRUE(ec_enabled); 2633 EXPECT_TRUE(ec_enabled);
2719 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2634 EXPECT_TRUE(voe_.ec_metrics_enabled());
2720 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2635 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2721 2636
2722 // Turn off AGC 2637 // Turn off AGC
2723 options.auto_gain_control = rtc::Optional<bool>(false); 2638 send_parameters_.options.auto_gain_control = rtc::Optional<bool>(false);
2724 ASSERT_TRUE(engine_.SetOptions(options)); 2639 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2725 voe_.GetAgcStatus(agc_enabled, agc_mode); 2640 voe_.GetAgcStatus(agc_enabled, agc_mode);
2726 EXPECT_FALSE(agc_enabled); 2641 EXPECT_FALSE(agc_enabled);
2727 2642
2728 // Turn AGC back on 2643 // Turn AGC back on
2729 options.auto_gain_control = rtc::Optional<bool>(true); 2644 send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true);
2730 options.adjust_agc_delta = rtc::Optional<int>(); 2645 send_parameters_.options.adjust_agc_delta = rtc::Optional<int>();
2731 ASSERT_TRUE(engine_.SetOptions(options)); 2646 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2732 voe_.GetAgcStatus(agc_enabled, agc_mode); 2647 voe_.GetAgcStatus(agc_enabled, agc_mode);
2733 EXPECT_TRUE(agc_enabled); 2648 EXPECT_TRUE(agc_enabled);
2734 voe_.GetAgcConfig(agc_config); 2649 voe_.GetAgcConfig(agc_config);
2735 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2650 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2736 2651
2737 // Turn off other options (and stereo swapping on). 2652 // Turn off other options (and stereo swapping on).
2738 options.noise_suppression = rtc::Optional<bool>(false); 2653 send_parameters_.options.noise_suppression = rtc::Optional<bool>(false);
2739 options.highpass_filter = rtc::Optional<bool>(false); 2654 send_parameters_.options.highpass_filter = rtc::Optional<bool>(false);
2740 options.typing_detection = rtc::Optional<bool>(false); 2655 send_parameters_.options.typing_detection = rtc::Optional<bool>(false);
2741 options.stereo_swapping = rtc::Optional<bool>(true); 2656 send_parameters_.options.stereo_swapping = rtc::Optional<bool>(true);
2742 ASSERT_TRUE(engine_.SetOptions(options)); 2657 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2743 voe_.GetNsStatus(ns_enabled, ns_mode); 2658 voe_.GetNsStatus(ns_enabled, ns_mode);
2744 highpass_filter_enabled = voe_.IsHighPassFilterEnabled(); 2659 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2745 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2660 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2746 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2661 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2747 EXPECT_FALSE(ns_enabled); 2662 EXPECT_FALSE(ns_enabled);
2748 EXPECT_FALSE(highpass_filter_enabled); 2663 EXPECT_FALSE(highpass_filter_enabled);
2749 EXPECT_FALSE(typing_detection_enabled); 2664 EXPECT_FALSE(typing_detection_enabled);
2750 EXPECT_TRUE(stereo_swapping_enabled); 2665 EXPECT_TRUE(stereo_swapping_enabled);
2751 2666
2752 // Set options again to ensure it has no impact. 2667 // Set options again to ensure it has no impact.
2753 ASSERT_TRUE(engine_.SetOptions(options)); 2668 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2754 voe_.GetEcStatus(ec_enabled, ec_mode); 2669 voe_.GetEcStatus(ec_enabled, ec_mode);
2755 voe_.GetNsStatus(ns_enabled, ns_mode); 2670 voe_.GetNsStatus(ns_enabled, ns_mode);
2756 EXPECT_TRUE(ec_enabled); 2671 EXPECT_TRUE(ec_enabled);
2757 EXPECT_EQ(webrtc::kEcConference, ec_mode); 2672 EXPECT_EQ(webrtc::kEcConference, ec_mode);
2758 EXPECT_FALSE(ns_enabled); 2673 EXPECT_FALSE(ns_enabled);
2759 EXPECT_EQ(webrtc::kNsHighSuppression, ns_mode); 2674 EXPECT_EQ(webrtc::kNsHighSuppression, ns_mode);
2760 } 2675 }
2761 2676
2762 TEST_F(WebRtcVoiceEngineTestFake, DefaultOptions) { 2677 TEST_F(WebRtcVoiceEngineTestFake, DefaultOptions) {
2763 EXPECT_TRUE(SetupEngineWithSendStream()); 2678 EXPECT_TRUE(SetupEngineWithSendStream());
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2843 // unset AGC 2758 // unset AGC
2844 cricket::AudioSendParameters parameters_options_no_agc = send_parameters_; 2759 cricket::AudioSendParameters parameters_options_no_agc = send_parameters_;
2845 parameters_options_no_agc.options.auto_gain_control = 2760 parameters_options_no_agc.options.auto_gain_control =
2846 rtc::Optional<bool>(false); 2761 rtc::Optional<bool>(false);
2847 ASSERT_TRUE(channel2->SetSendParameters(parameters_options_no_agc)); 2762 ASSERT_TRUE(channel2->SetSendParameters(parameters_options_no_agc));
2848 expected_options.echo_cancellation = rtc::Optional<bool>(true); 2763 expected_options.echo_cancellation = rtc::Optional<bool>(true);
2849 expected_options.auto_gain_control = rtc::Optional<bool>(false); 2764 expected_options.auto_gain_control = rtc::Optional<bool>(false);
2850 expected_options.noise_suppression = rtc::Optional<bool>(true); 2765 expected_options.noise_suppression = rtc::Optional<bool>(true);
2851 EXPECT_EQ(expected_options, channel2->options()); 2766 EXPECT_EQ(expected_options, channel2->options());
2852 2767
2853 ASSERT_TRUE(engine_.SetOptions(parameters_options_all.options)); 2768 ASSERT_TRUE(channel_->SetSendParameters(parameters_options_all));
2854 bool ec_enabled; 2769 bool ec_enabled;
2855 webrtc::EcModes ec_mode; 2770 webrtc::EcModes ec_mode;
2856 bool agc_enabled; 2771 bool agc_enabled;
2857 webrtc::AgcModes agc_mode; 2772 webrtc::AgcModes agc_mode;
2858 bool ns_enabled; 2773 bool ns_enabled;
2859 webrtc::NsModes ns_mode; 2774 webrtc::NsModes ns_mode;
2860 voe_.GetEcStatus(ec_enabled, ec_mode); 2775 voe_.GetEcStatus(ec_enabled, ec_mode);
2861 voe_.GetAgcStatus(agc_enabled, agc_mode); 2776 voe_.GetAgcStatus(agc_enabled, agc_mode);
2862 voe_.GetNsStatus(ns_enabled, ns_mode); 2777 voe_.GetNsStatus(ns_enabled, ns_mode);
2863 EXPECT_TRUE(ec_enabled); 2778 EXPECT_TRUE(ec_enabled);
2864 EXPECT_TRUE(agc_enabled); 2779 EXPECT_TRUE(agc_enabled);
2865 EXPECT_TRUE(ns_enabled); 2780 EXPECT_TRUE(ns_enabled);
2866 2781
2867 channel1->SetSend(cricket::SEND_MICROPHONE); 2782 channel1->SetSend(cricket::SEND_MICROPHONE);
2868 voe_.GetEcStatus(ec_enabled, ec_mode); 2783 voe_.GetEcStatus(ec_enabled, ec_mode);
2869 voe_.GetAgcStatus(agc_enabled, agc_mode); 2784 voe_.GetAgcStatus(agc_enabled, agc_mode);
2870 voe_.GetNsStatus(ns_enabled, ns_mode); 2785 voe_.GetNsStatus(ns_enabled, ns_mode);
2871 EXPECT_TRUE(ec_enabled); 2786 EXPECT_TRUE(ec_enabled);
2872 EXPECT_TRUE(agc_enabled); 2787 EXPECT_TRUE(agc_enabled);
2873 EXPECT_FALSE(ns_enabled); 2788 EXPECT_FALSE(ns_enabled);
2874 2789
2875 channel1->SetSend(cricket::SEND_NOTHING);
2876 voe_.GetEcStatus(ec_enabled, ec_mode);
2877 voe_.GetAgcStatus(agc_enabled, agc_mode);
2878 voe_.GetNsStatus(ns_enabled, ns_mode);
2879 EXPECT_TRUE(ec_enabled);
2880 EXPECT_TRUE(agc_enabled);
2881 EXPECT_TRUE(ns_enabled);
2882
2883 channel2->SetSend(cricket::SEND_MICROPHONE); 2790 channel2->SetSend(cricket::SEND_MICROPHONE);
2884 voe_.GetEcStatus(ec_enabled, ec_mode); 2791 voe_.GetEcStatus(ec_enabled, ec_mode);
2885 voe_.GetAgcStatus(agc_enabled, agc_mode); 2792 voe_.GetAgcStatus(agc_enabled, agc_mode);
2886 voe_.GetNsStatus(ns_enabled, ns_mode); 2793 voe_.GetNsStatus(ns_enabled, ns_mode);
2887 EXPECT_TRUE(ec_enabled); 2794 EXPECT_TRUE(ec_enabled);
2888 EXPECT_FALSE(agc_enabled); 2795 EXPECT_FALSE(agc_enabled);
2889 EXPECT_TRUE(ns_enabled); 2796 EXPECT_TRUE(ns_enabled);
2890 2797
2891 channel2->SetSend(cricket::SEND_NOTHING);
2892 voe_.GetEcStatus(ec_enabled, ec_mode);
2893 voe_.GetAgcStatus(agc_enabled, agc_mode);
2894 voe_.GetNsStatus(ns_enabled, ns_mode);
2895 EXPECT_TRUE(ec_enabled);
2896 EXPECT_TRUE(agc_enabled);
2897 EXPECT_TRUE(ns_enabled);
2898
2899 // Make sure settings take effect while we are sending. 2798 // Make sure settings take effect while we are sending.
2900 ASSERT_TRUE(engine_.SetOptions(parameters_options_all.options)); 2799 ASSERT_TRUE(channel_->SetSendParameters(parameters_options_all));
2901 cricket::AudioSendParameters parameters_options_no_agc_nor_ns = 2800 cricket::AudioSendParameters parameters_options_no_agc_nor_ns =
2902 send_parameters_; 2801 send_parameters_;
2903 parameters_options_no_agc_nor_ns.options.auto_gain_control = 2802 parameters_options_no_agc_nor_ns.options.auto_gain_control =
2904 rtc::Optional<bool>(false); 2803 rtc::Optional<bool>(false);
2905 parameters_options_no_agc_nor_ns.options.noise_suppression = 2804 parameters_options_no_agc_nor_ns.options.noise_suppression =
2906 rtc::Optional<bool>(false); 2805 rtc::Optional<bool>(false);
2907 channel2->SetSend(cricket::SEND_MICROPHONE); 2806 channel2->SetSend(cricket::SEND_MICROPHONE);
2908 channel2->SetSendParameters(parameters_options_no_agc_nor_ns); 2807 channel2->SetSendParameters(parameters_options_no_agc_nor_ns);
2909 expected_options.echo_cancellation = rtc::Optional<bool>(true); 2808 expected_options.echo_cancellation = rtc::Optional<bool>(true);
2910 expected_options.auto_gain_control = rtc::Optional<bool>(false); 2809 expected_options.auto_gain_control = rtc::Optional<bool>(false);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
3065 2964
3066 TEST_F(WebRtcVoiceEngineTestFake, ConfigureCombinedBweForNewRecvStreams) { 2965 TEST_F(WebRtcVoiceEngineTestFake, ConfigureCombinedBweForNewRecvStreams) {
3067 // Test that adding receive streams after enabling combined bandwidth 2966 // Test that adding receive streams after enabling combined bandwidth
3068 // estimation will correctly configure each channel. 2967 // estimation will correctly configure each channel.
3069 EXPECT_TRUE(SetupEngineWithSendStream()); 2968 EXPECT_TRUE(SetupEngineWithSendStream());
3070 cricket::WebRtcVoiceMediaChannel* media_channel = 2969 cricket::WebRtcVoiceMediaChannel* media_channel =
3071 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); 2970 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_);
3072 send_parameters_.options.combined_audio_video_bwe = rtc::Optional<bool>(true); 2971 send_parameters_.options.combined_audio_video_bwe = rtc::Optional<bool>(true);
3073 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_)); 2972 EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_));
3074 2973
3075 static const uint32_t kSsrcs[] = {1, 2, 3, 4}; 2974 for (uint32_t ssrc : kSsrcs4) {
3076 for (unsigned int i = 0; i < arraysize(kSsrcs); ++i) {
3077 EXPECT_TRUE(media_channel->AddRecvStream( 2975 EXPECT_TRUE(media_channel->AddRecvStream(
3078 cricket::StreamParams::CreateLegacy(kSsrcs[i]))); 2976 cricket::StreamParams::CreateLegacy(ssrc)));
3079 EXPECT_NE(nullptr, call_.GetAudioReceiveStream(kSsrcs[i])); 2977 EXPECT_NE(nullptr, call_.GetAudioReceiveStream(ssrc));
3080 } 2978 }
3081 EXPECT_EQ(arraysize(kSsrcs), call_.GetAudioReceiveStreams().size()); 2979 EXPECT_EQ(arraysize(kSsrcs4), call_.GetAudioReceiveStreams().size());
3082 } 2980 }
3083 2981
3084 // TODO(solenberg): Remove, once recv streams are configured through Call. 2982 // TODO(solenberg): Remove, once recv streams are configured through Call.
3085 // (This is then covered by TestSetRecvRtpHeaderExtensions.) 2983 // (This is then covered by TestSetRecvRtpHeaderExtensions.)
3086 TEST_F(WebRtcVoiceEngineTestFake, ConfiguresAudioReceiveStreamRtpExtensions) { 2984 TEST_F(WebRtcVoiceEngineTestFake, ConfiguresAudioReceiveStreamRtpExtensions) {
3087 // Test that setting the header extensions results in the expected state 2985 // Test that setting the header extensions results in the expected state
3088 // changes on an associated Call. 2986 // changes on an associated Call.
3089 std::vector<uint32_t> ssrcs; 2987 std::vector<uint32_t> ssrcs;
3090 ssrcs.push_back(223); 2988 ssrcs.push_back(223);
3091 ssrcs.push_back(224); 2989 ssrcs.push_back(224);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
3200 // channel of |recv_ch|.This is not a common case, since, normally, only the 3098 // channel of |recv_ch|.This is not a common case, since, normally, only the
3201 // default channel can be associated. However, the default is not deletable. 3099 // default channel can be associated. However, the default is not deletable.
3202 // So we force the |recv_ch| to associate with a non-default channel. 3100 // So we force the |recv_ch| to associate with a non-default channel.
3203 EXPECT_EQ(0, voe_.AssociateSendChannel(recv_ch, send_ch)); 3101 EXPECT_EQ(0, voe_.AssociateSendChannel(recv_ch, send_ch));
3204 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), send_ch); 3102 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), send_ch);
3205 3103
3206 EXPECT_TRUE(channel_->RemoveSendStream(2)); 3104 EXPECT_TRUE(channel_->RemoveSendStream(2));
3207 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1); 3105 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1);
3208 } 3106 }
3209 3107
3210 // Tests for the actual WebRtc VoE library.
3211
3212 TEST(WebRtcVoiceEngineTest, TestDefaultOptionsBeforeInit) {
3213 cricket::WebRtcVoiceEngine engine;
3214 cricket::AudioOptions options = engine.GetOptions();
3215 // The default options should have at least a few things set. We purposefully
3216 // don't check the option values here, though.
3217 EXPECT_TRUE(options.echo_cancellation);
3218 EXPECT_TRUE(options.auto_gain_control);
3219 EXPECT_TRUE(options.noise_suppression);
3220 }
3221
3222 // Tests that the library initializes and shuts down properly. 3108 // Tests that the library initializes and shuts down properly.
3223 TEST(WebRtcVoiceEngineTest, StartupShutdown) { 3109 TEST(WebRtcVoiceEngineTest, StartupShutdown) {
3224 cricket::WebRtcVoiceEngine engine; 3110 cricket::WebRtcVoiceEngine engine;
3225 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); 3111 EXPECT_TRUE(engine.Init(rtc::Thread::Current()));
3226 rtc::scoped_ptr<webrtc::Call> call( 3112 rtc::scoped_ptr<webrtc::Call> call(
3227 webrtc::Call::Create(webrtc::Call::Config())); 3113 webrtc::Call::Create(webrtc::Call::Config()));
3228 cricket::VoiceMediaChannel* channel = 3114 cricket::VoiceMediaChannel* channel =
3229 engine.CreateChannel(call.get(), cricket::AudioOptions()); 3115 engine.CreateChannel(call.get(), cricket::AudioOptions());
3230 EXPECT_TRUE(channel != nullptr); 3116 EXPECT_TRUE(channel != nullptr);
3231 delete channel; 3117 delete channel;
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
3352 cricket::WebRtcVoiceEngine engine; 3238 cricket::WebRtcVoiceEngine engine;
3353 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); 3239 EXPECT_TRUE(engine.Init(rtc::Thread::Current()));
3354 rtc::scoped_ptr<webrtc::Call> call( 3240 rtc::scoped_ptr<webrtc::Call> call(
3355 webrtc::Call::Create(webrtc::Call::Config())); 3241 webrtc::Call::Create(webrtc::Call::Config()));
3356 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), 3242 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(),
3357 call.get()); 3243 call.get());
3358 cricket::AudioRecvParameters parameters; 3244 cricket::AudioRecvParameters parameters;
3359 parameters.codecs = engine.codecs(); 3245 parameters.codecs = engine.codecs();
3360 EXPECT_TRUE(channel.SetRecvParameters(parameters)); 3246 EXPECT_TRUE(channel.SetRecvParameters(parameters));
3361 } 3247 }
OLDNEW
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | talk/session/media/channelmanager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698