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

Side by Side Diff: webrtc/media/engine/webrtcvideoengine2_unittest.cc

Issue 1766653002: Replace SetCapturer and SetCaptureDevice by SetSource. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Work-in-progress, after applying 1790633002. Created 4 years, 9 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 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 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 233 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
234 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 234 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
235 235
236 // Add CVO extension. 236 // Add CVO extension.
237 const int id = 1; 237 const int id = 1;
238 parameters.extensions.push_back( 238 parameters.extensions.push_back(
239 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 239 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
240 EXPECT_TRUE(channel->SetSendParameters(parameters)); 240 EXPECT_TRUE(channel->SetSendParameters(parameters));
241 241
242 // Set capturer. 242 // Set capturer.
243 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 243 channel->SetSource(kSsrc, &capturer);
244 244
245 // Verify capturer has turned off applying rotation. 245 // Verify capturer has turned off applying rotation.
246 EXPECT_FALSE(capturer.GetApplyRotation()); 246 EXPECT_FALSE(capturer.GetApplyRotation());
247 247
248 // Verify removing header extension turns on applying rotation. 248 // Verify removing header extension turns on applying rotation.
249 parameters.extensions.clear(); 249 parameters.extensions.clear();
250 EXPECT_TRUE(channel->SetSendParameters(parameters)); 250 EXPECT_TRUE(channel->SetSendParameters(parameters));
251 EXPECT_TRUE(capturer.GetApplyRotation()); 251 EXPECT_TRUE(capturer.GetApplyRotation());
252 } 252 }
253 253
(...skipping 10 matching lines...) Expand all
264 std::unique_ptr<VideoMediaChannel> channel( 264 std::unique_ptr<VideoMediaChannel> channel(
265 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 265 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
266 // Add CVO extension. 266 // Add CVO extension.
267 const int id = 1; 267 const int id = 1;
268 parameters.extensions.push_back( 268 parameters.extensions.push_back(
269 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 269 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
270 EXPECT_TRUE(channel->SetSendParameters(parameters)); 270 EXPECT_TRUE(channel->SetSendParameters(parameters));
271 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 271 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
272 272
273 // Set capturer. 273 // Set capturer.
274 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 274 channel->SetSource(kSsrc, &capturer);
275 275
276 // Verify capturer has turned off applying rotation. 276 // Verify capturer has turned off applying rotation.
277 EXPECT_FALSE(capturer.GetApplyRotation()); 277 EXPECT_FALSE(capturer.GetApplyRotation());
278 } 278 }
279 279
280 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) { 280 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) {
281 cricket::FakeVideoCapturer capturer; 281 cricket::FakeVideoCapturer capturer;
282 282
283 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 283 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
284 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); 284 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8");
285 cricket::VideoSendParameters parameters; 285 cricket::VideoSendParameters parameters;
286 parameters.codecs.push_back(kVp8Codec); 286 parameters.codecs.push_back(kVp8Codec);
287 287
288 std::unique_ptr<VideoMediaChannel> channel( 288 std::unique_ptr<VideoMediaChannel> channel(
289 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 289 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
290 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 290 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
291 291
292 // Set capturer. 292 // Set capturer.
293 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 293 channel->SetSource(kSsrc, &capturer);
294 294
295 // Add CVO extension. 295 // Add CVO extension.
296 const int id = 1; 296 const int id = 1;
297 parameters.extensions.push_back( 297 parameters.extensions.push_back(
298 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 298 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
299 EXPECT_TRUE(channel->SetSendParameters(parameters)); 299 EXPECT_TRUE(channel->SetSendParameters(parameters));
300 300
301 // Verify capturer has turned off applying rotation. 301 // Verify capturer has turned off applying rotation.
302 EXPECT_FALSE(capturer.GetApplyRotation()); 302 EXPECT_FALSE(capturer.GetApplyRotation());
303 303
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 std::unique_ptr<VideoMediaChannel> channel( 338 std::unique_ptr<VideoMediaChannel> channel(
339 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 339 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
340 340
341 EXPECT_TRUE( 341 EXPECT_TRUE(
342 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 342 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
343 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(1)); 343 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(1));
344 ASSERT_EQ(1u, encoder_factory.encoders().size()); 344 ASSERT_EQ(1u, encoder_factory.encoders().size());
345 EXPECT_TRUE(channel->SetSend(true)); 345 EXPECT_TRUE(channel->SetSend(true));
346 346
347 cricket::FakeVideoCapturer capturer; 347 cricket::FakeVideoCapturer capturer;
348 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 348 channel->SetSource(kSsrc, &capturer);
349 EXPECT_EQ(cricket::CS_RUNNING, 349 EXPECT_EQ(cricket::CS_RUNNING,
350 capturer.Start(capturer.GetSupportedFormats()->front())); 350 capturer.Start(capturer.GetSupportedFormats()->front()));
351 EXPECT_TRUE(capturer.CaptureFrame()); 351 EXPECT_TRUE(capturer.CaptureFrame());
352 // Sending one frame will have reallocated the encoder since input size 352 // Sending one frame will have reallocated the encoder since input size
353 // changes from a small default to the actual frame width/height. Wait for 353 // changes from a small default to the actual frame width/height. Wait for
354 // that to happen then for the frame to be sent. 354 // that to happen then for the frame to be sent.
355 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); 355 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2));
356 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, 356 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0,
357 kTimeout); 357 kTimeout);
358 358
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 427
428 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); 428 FakeCall* fake_call = new FakeCall(webrtc::Call::Config());
429 call_.reset(fake_call); 429 call_.reset(fake_call);
430 std::unique_ptr<VideoMediaChannel> channel( 430 std::unique_ptr<VideoMediaChannel> channel(
431 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 431 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
432 432
433 EXPECT_TRUE( 433 EXPECT_TRUE(
434 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 434 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
435 435
436 FakeVideoCapturer capturer; 436 FakeVideoCapturer capturer;
437 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 437 channel->SetSource(kSsrc, &capturer);
438 capturer.Start(cricket::VideoFormat(1280, 720, 438 capturer.Start(cricket::VideoFormat(1280, 720,
439 cricket::VideoFormat::FpsToInterval(60), 439 cricket::VideoFormat::FpsToInterval(60),
440 cricket::FOURCC_I420)); 440 cricket::FOURCC_I420));
441 channel->SetSend(true); 441 channel->SetSend(true);
442 442
443 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 443 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
444 444
445 EXPECT_TRUE(capturer.CaptureFrame()); 445 EXPECT_TRUE(capturer.CaptureFrame());
446 int64_t last_timestamp = stream->GetLastTimestamp(); 446 int64_t last_timestamp = stream->GetLastTimestamp();
447 for (int i = 0; i < 10; i++) { 447 for (int i = 0; i < 10; i++) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 call_.reset(fake_call); 489 call_.reset(fake_call);
490 std::unique_ptr<VideoMediaChannel> channel( 490 std::unique_ptr<VideoMediaChannel> channel(
491 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 491 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
492 492
493 EXPECT_TRUE( 493 EXPECT_TRUE(
494 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 494 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
495 channel->SetSend(true); 495 channel->SetSend(true);
496 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 496 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
497 497
498 FakeVideoCapturer capturer1; 498 FakeVideoCapturer capturer1;
499 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); 499 channel->SetSource(kSsrc, &capturer1);
500 500
501 cricket::CapturedFrame frame; 501 cricket::CapturedFrame frame;
502 frame.width = 1280; 502 frame.width = 1280;
503 frame.height = 720; 503 frame.height = 720;
504 frame.fourcc = cricket::FOURCC_I420; 504 frame.fourcc = cricket::FOURCC_I420;
505 frame.data_size = frame.width * frame.height + 505 frame.data_size = frame.width * frame.height +
506 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); 506 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2);
507 std::unique_ptr<char[]> data(new char[frame.data_size]); 507 std::unique_ptr<char[]> data(new char[frame.data_size]);
508 frame.data = data.get(); 508 frame.data = data.get();
509 memset(frame.data, 1, frame.data_size); 509 memset(frame.data, 1, frame.data_size);
510 const int kInitialTimestamp = 123456; 510 const int kInitialTimestamp = 123456;
511 frame.time_stamp = kInitialTimestamp; 511 frame.time_stamp = kInitialTimestamp;
512 512
513 // Deliver initial frame. 513 // Deliver initial frame.
514 capturer1.SignalCapturedFrame(&frame); 514 capturer1.SignalCapturedFrame(&frame);
515 // Deliver next frame 1 second later. 515 // Deliver next frame 1 second later.
516 frame.time_stamp += rtc::kNumNanosecsPerSec; 516 frame.time_stamp += rtc::kNumNanosecsPerSec;
517 rtc::Thread::Current()->SleepMs(1000); 517 rtc::Thread::Current()->SleepMs(1000);
518 capturer1.SignalCapturedFrame(&frame); 518 capturer1.SignalCapturedFrame(&frame);
519 519
520 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); 520 int64_t capturer1_last_timestamp = stream->GetLastTimestamp();
521 // Reset input source, should still be continuous even though input-frame 521 // Reset input source, should still be continuous even though input-frame
522 // timestamp is less than before. 522 // timestamp is less than before.
523 FakeVideoCapturer capturer2; 523 FakeVideoCapturer capturer2;
524 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); 524 channel->SetSource(kSsrc, &capturer2);
525 525
526 rtc::Thread::Current()->SleepMs(1); 526 rtc::Thread::Current()->SleepMs(1);
527 // Deliver with a timestamp (10 seconds) before the previous initial one, 527 // Deliver with a timestamp (10 seconds) before the previous initial one,
528 // these should not be related at all anymore and it should still work fine. 528 // these should not be related at all anymore and it should still work fine.
529 frame.time_stamp = kInitialTimestamp - 10000; 529 frame.time_stamp = kInitialTimestamp - 10000;
530 capturer2.SignalCapturedFrame(&frame); 530 capturer2.SignalCapturedFrame(&frame);
531 531
532 // New timestamp should be at least 1ms in the future and not old. 532 // New timestamp should be at least 1ms in the future and not old.
533 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); 533 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp);
534 534
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 std::unique_ptr<VideoMediaChannel> channel( 574 std::unique_ptr<VideoMediaChannel> channel(
575 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 575 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
576 576
577 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 577 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
578 578
579 EXPECT_TRUE( 579 EXPECT_TRUE(
580 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 580 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
581 EXPECT_TRUE(channel->SetSend(true)); 581 EXPECT_TRUE(channel->SetSend(true));
582 582
583 cricket::FakeVideoCapturer capturer; 583 cricket::FakeVideoCapturer capturer;
584 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 584 channel->SetSource(ssrcs.front(), &capturer);
585 EXPECT_EQ(cricket::CS_RUNNING, 585 EXPECT_EQ(cricket::CS_RUNNING,
586 capturer.Start(capturer.GetSupportedFormats()->front())); 586 capturer.Start(capturer.GetSupportedFormats()->front()));
587 EXPECT_TRUE(capturer.CaptureFrame()); 587 EXPECT_TRUE(capturer.CaptureFrame());
588 588
589 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); 589 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2));
590 590
591 // Verify that encoders are configured for simulcast through adapter 591 // Verify that encoders are configured for simulcast through adapter
592 // (increasing resolution and only configured to send one stream each). 592 // (increasing resolution and only configured to send one stream each).
593 int prev_width = -1; 593 int prev_width = -1;
594 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { 594 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) {
595 ASSERT_TRUE(encoder_factory.encoders()[i]->WaitForInitEncode()); 595 ASSERT_TRUE(encoder_factory.encoders()[i]->WaitForInitEncode());
596 webrtc::VideoCodec codec_settings = 596 webrtc::VideoCodec codec_settings =
597 encoder_factory.encoders()[i]->GetCodecSettings(); 597 encoder_factory.encoders()[i]->GetCodecSettings();
598 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); 598 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams);
599 EXPECT_GT(codec_settings.width, prev_width); 599 EXPECT_GT(codec_settings.width, prev_width);
600 prev_width = codec_settings.width; 600 prev_width = codec_settings.width;
601 } 601 }
602 602
603 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), NULL)); 603 channel->SetSource(ssrcs.front(), NULL);
604 604
605 channel.reset(); 605 channel.reset();
606 ASSERT_EQ(0u, encoder_factory.encoders().size()); 606 ASSERT_EQ(0u, encoder_factory.encoders().size());
607 } 607 }
608 608
609 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { 609 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) {
610 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 610 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
611 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); 611 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264");
612 std::vector<cricket::VideoCodec> codecs; 612 std::vector<cricket::VideoCodec> codecs;
613 codecs.push_back(kH264Codec); 613 codecs.push_back(kH264Codec);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 656 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
657 657
658 EXPECT_TRUE( 658 EXPECT_TRUE(
659 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 659 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
660 EXPECT_TRUE(channel->SetSend(true)); 660 EXPECT_TRUE(channel->SetSend(true));
661 661
662 // Send a fake frame, or else the media engine will configure the simulcast 662 // Send a fake frame, or else the media engine will configure the simulcast
663 // encoder adapter at a low-enough size that it'll only create a single 663 // encoder adapter at a low-enough size that it'll only create a single
664 // encoder layer. 664 // encoder layer.
665 cricket::FakeVideoCapturer capturer; 665 cricket::FakeVideoCapturer capturer;
666 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 666 channel->SetSource(ssrcs.front(), &capturer);
667 EXPECT_EQ(cricket::CS_RUNNING, 667 EXPECT_EQ(cricket::CS_RUNNING,
668 capturer.Start(capturer.GetSupportedFormats()->front())); 668 capturer.Start(capturer.GetSupportedFormats()->front()));
669 EXPECT_TRUE(capturer.CaptureFrame()); 669 EXPECT_TRUE(capturer.CaptureFrame());
670 670
671 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); 671 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2));
672 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); 672 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode());
673 EXPECT_EQ(webrtc::kVideoCodecVP8, 673 EXPECT_EQ(webrtc::kVideoCodecVP8,
674 encoder_factory.encoders()[0]->GetCodecSettings().codecType); 674 encoder_factory.encoders()[0]->GetCodecSettings().codecType);
675 675
676 channel.reset(); 676 channel.reset();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 712 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
713 713
714 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 714 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
715 EXPECT_TRUE( 715 EXPECT_TRUE(
716 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); 716 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs)));
717 717
718 // Send a frame of 720p. This should trigger a "real" encoder initialization. 718 // Send a frame of 720p. This should trigger a "real" encoder initialization.
719 cricket::VideoFormat format( 719 cricket::VideoFormat format(
720 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); 720 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420);
721 cricket::FakeVideoCapturer capturer; 721 cricket::FakeVideoCapturer capturer;
722 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], &capturer)); 722 channel->SetSource(ssrcs[0], &capturer);
723 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); 723 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
724 EXPECT_TRUE(capturer.CaptureFrame()); 724 EXPECT_TRUE(capturer.CaptureFrame());
725 725
726 ASSERT_EQ(1u, encoder_factory.encoders().size()); 726 ASSERT_EQ(1u, encoder_factory.encoders().size());
727 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; 727 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0];
728 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); 728 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode());
729 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); 729 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType);
730 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); 730 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams);
731 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], nullptr)); 731 channel->SetSource(ssrcs[0], nullptr);
732 } 732 }
733 733
734 // Test that external codecs are added to the end of the supported codec list. 734 // Test that external codecs are added to the end of the supported codec list.
735 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { 735 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) {
736 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 736 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
737 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, 737 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown,
738 "FakeExternalCodec"); 738 "FakeExternalCodec");
739 engine_.SetExternalEncoderFactory(&encoder_factory); 739 engine_.SetExternalEncoderFactory(&encoder_factory);
740 engine_.Init(); 740 engine_.Init();
741 741
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 841
842 WEBRTC_BASE_TEST(AdaptResolution4x3); 842 WEBRTC_BASE_TEST(AdaptResolution4x3);
843 843
844 // TODO(juberti): Restore this test once we support sending 0 fps. 844 // TODO(juberti): Restore this test once we support sending 0 fps.
845 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames); 845 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames);
846 // TODO(juberti): Understand why we get decode errors on this test. 846 // TODO(juberti): Understand why we get decode errors on this test.
847 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate); 847 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate);
848 848
849 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames); 849 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames);
850 850
851 WEBRTC_BASE_TEST(MuteStream);
852
853 WEBRTC_BASE_TEST(MultipleSendStreams); 851 WEBRTC_BASE_TEST(MultipleSendStreams);
854 852
855 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { 853 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) {
856 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0)); 854 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0));
857 } 855 }
858 856
859 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { 857 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) {
860 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0)); 858 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0));
861 } 859 }
862 860
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
1534 channel_->SetSend(false); 1532 channel_->SetSend(false);
1535 1533
1536 FakeVideoSendStream* stream = AddSendStream(); 1534 FakeVideoSendStream* stream = AddSendStream();
1537 1535
1538 // No frames entered, using default dimensions. 1536 // No frames entered, using default dimensions.
1539 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 1537 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
1540 EXPECT_EQ(176u, streams[0].width); 1538 EXPECT_EQ(176u, streams[0].width);
1541 EXPECT_EQ(144u, streams[0].height); 1539 EXPECT_EQ(144u, streams[0].height);
1542 1540
1543 cricket::FakeVideoCapturer capturer; 1541 cricket::FakeVideoCapturer capturer;
1544 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1542 channel_->SetSource(last_ssrc_, &capturer);
1545 EXPECT_EQ(cricket::CS_RUNNING, 1543 EXPECT_EQ(cricket::CS_RUNNING,
1546 capturer.Start(capturer.GetSupportedFormats()->front())); 1544 capturer.Start(capturer.GetSupportedFormats()->front()));
1547 EXPECT_TRUE(capturer.CaptureFrame()); 1545 EXPECT_TRUE(capturer.CaptureFrame());
1548 1546
1549 // Frame entered, should be reconfigured to new dimensions. 1547 // Frame entered, should be reconfigured to new dimensions.
1550 streams = stream->GetVideoStreams(); 1548 streams = stream->GetVideoStreams();
1551 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 1549 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
1552 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 1550 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
1553 // No frames should have been actually put in there though. 1551 // No frames should have been actually put in there though.
1554 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames()); 1552 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames());
1555 1553
1556 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1554 channel_->SetSource(last_ssrc_, NULL);
1557 } 1555 }
1558 1556
1559 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { 1557 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) {
1560 static const int kScreenshareMinBitrateKbps = 800; 1558 static const int kScreenshareMinBitrateKbps = 800;
1561 cricket::VideoCodec codec = kVp8Codec360p; 1559 cricket::VideoCodec codec = kVp8Codec360p;
1562 cricket::VideoSendParameters parameters; 1560 cricket::VideoSendParameters parameters;
1563 parameters.codecs.push_back(codec); 1561 parameters.codecs.push_back(codec);
1564 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 1562 EXPECT_TRUE(channel_->SetSendParameters(parameters));
1565 AddSendStream(); 1563 AddSendStream();
1566 1564
1567 VideoOptions min_bitrate_options; 1565 VideoOptions min_bitrate_options;
1568 min_bitrate_options.screencast_min_bitrate_kbps = 1566 min_bitrate_options.screencast_min_bitrate_kbps =
1569 rtc::Optional<int>(kScreenshareMinBitrateKbps); 1567 rtc::Optional<int>(kScreenshareMinBitrateKbps);
1570 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options); 1568 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options);
1571 1569
1572 cricket::FakeVideoCapturer capturer; 1570 cricket::FakeVideoCapturer capturer;
1573 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1571 channel_->SetSource(last_ssrc_, &capturer);
1574 cricket::VideoFormat capture_format_hd = 1572 cricket::VideoFormat capture_format_hd =
1575 capturer.GetSupportedFormats()->front(); 1573 capturer.GetSupportedFormats()->front();
1576 EXPECT_EQ(1280, capture_format_hd.width); 1574 EXPECT_EQ(1280, capture_format_hd.width);
1577 EXPECT_EQ(720, capture_format_hd.height); 1575 EXPECT_EQ(720, capture_format_hd.height);
1578 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1576 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1579 1577
1580 EXPECT_TRUE(channel_->SetSend(true)); 1578 EXPECT_TRUE(channel_->SetSend(true));
1581 1579
1582 EXPECT_TRUE(capturer.CaptureFrame()); 1580 EXPECT_TRUE(capturer.CaptureFrame());
1583 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1581 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1584 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1582 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1585 1583
1586 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 1584 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
1587 1585
1588 // Verify non-screencast settings. 1586 // Verify non-screencast settings.
1589 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1587 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1590 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1588 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1591 encoder_config.content_type); 1589 encoder_config.content_type);
1592 EXPECT_EQ(codec.width, encoder_config.streams.front().width); 1590 EXPECT_EQ(codec.width, encoder_config.streams.front().width);
1593 EXPECT_EQ(codec.height, encoder_config.streams.front().height); 1591 EXPECT_EQ(codec.height, encoder_config.streams.front().height);
1594 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) 1592 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps)
1595 << "Non-screenshare shouldn't use min-transmit bitrate."; 1593 << "Non-screenshare shouldn't use min-transmit bitrate.";
1596 1594
1597 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 1595 channel_->SetSource(last_ssrc_, nullptr);
1598 // Removing a capturer triggers a black frame to be sent. 1596 // Removing a capturer triggers a black frame to be sent.
1599 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 1597 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
1600 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1598 channel_->SetSource(last_ssrc_, &capturer);
1601 VideoOptions screencast_options; 1599 VideoOptions screencast_options;
1602 screencast_options.is_screencast = rtc::Optional<bool>(true); 1600 screencast_options.is_screencast = rtc::Optional<bool>(true);
1603 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options)); 1601 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options));
1604 EXPECT_TRUE(capturer.CaptureFrame()); 1602 EXPECT_TRUE(capturer.CaptureFrame());
1605 // Send stream not recreated after option change. 1603 // Send stream not recreated after option change.
1606 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); 1604 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front());
1607 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 1605 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
1608 1606
1609 // Verify screencast settings. 1607 // Verify screencast settings.
1610 encoder_config = send_stream->GetEncoderConfig(); 1608 encoder_config = send_stream->GetEncoderConfig();
1611 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1609 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1612 encoder_config.content_type); 1610 encoder_config.content_type);
1613 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, 1611 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000,
1614 encoder_config.min_transmit_bitrate_bps); 1612 encoder_config.min_transmit_bitrate_bps);
1615 1613
1616 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); 1614 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width);
1617 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); 1615 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height);
1618 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); 1616 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty());
1619 1617
1620 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1618 channel_->SetSource(last_ssrc_, NULL);
1621 } 1619 }
1622 1620
1623 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { 1621 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) {
1624 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 1622 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
1625 ASSERT_TRUE( 1623 ASSERT_TRUE(
1626 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 1624 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
1627 EXPECT_TRUE(channel_->SetSend(true)); 1625 EXPECT_TRUE(channel_->SetSend(true));
1628 1626
1629 cricket::FakeVideoCapturer capturer; 1627 cricket::FakeVideoCapturer capturer;
1630 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &capturer)); 1628 channel_->SetSource(kSsrc, &capturer);
1631 EXPECT_EQ(cricket::CS_RUNNING, 1629 EXPECT_EQ(cricket::CS_RUNNING,
1632 capturer.Start(capturer.GetSupportedFormats()->front())); 1630 capturer.Start(capturer.GetSupportedFormats()->front()));
1633 EXPECT_TRUE(capturer.CaptureFrame()); 1631 EXPECT_TRUE(capturer.CaptureFrame());
1634 1632
1635 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1633 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1636 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); 1634 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front();
1637 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); 1635 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig();
1638 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1636 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1639 encoder_config.content_type); 1637 encoder_config.content_type);
1640 1638
(...skipping 20 matching lines...) Expand all
1661 1659
1662 EXPECT_TRUE(capturer.CaptureFrame()); 1660 EXPECT_TRUE(capturer.CaptureFrame());
1663 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1661 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1664 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); 1662 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front());
1665 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); 1663 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames());
1666 1664
1667 encoder_config = stream->GetEncoderConfig(); 1665 encoder_config = stream->GetEncoderConfig();
1668 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1666 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1669 encoder_config.content_type); 1667 encoder_config.content_type);
1670 1668
1671 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); 1669 channel_->SetSource(kSsrc, NULL);
1672 } 1670 }
1673 1671
1674 TEST_F(WebRtcVideoChannel2Test, 1672 TEST_F(WebRtcVideoChannel2Test,
1675 ConferenceModeScreencastConfiguresTemporalLayer) { 1673 ConferenceModeScreencastConfiguresTemporalLayer) {
1676 static const int kConferenceScreencastTemporalBitrateBps = 1674 static const int kConferenceScreencastTemporalBitrateBps =
1677 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; 1675 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000;
1678 send_parameters_.conference_mode = true; 1676 send_parameters_.conference_mode = true;
1679 channel_->SetSendParameters(send_parameters_); 1677 channel_->SetSendParameters(send_parameters_);
1680 1678
1681 AddSendStream(); 1679 AddSendStream();
1682 VideoOptions options; 1680 VideoOptions options;
1683 options.is_screencast = rtc::Optional<bool>(true); 1681 options.is_screencast = rtc::Optional<bool>(true);
1684 channel_->SetVideoSend(last_ssrc_, true, &options); 1682 channel_->SetVideoSend(last_ssrc_, true, &options);
1685 cricket::FakeVideoCapturer capturer; 1683 cricket::FakeVideoCapturer capturer;
1686 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1684 channel_->SetSource(last_ssrc_, &capturer);
1687 cricket::VideoFormat capture_format_hd = 1685 cricket::VideoFormat capture_format_hd =
1688 capturer.GetSupportedFormats()->front(); 1686 capturer.GetSupportedFormats()->front();
1689 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1687 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1690 1688
1691 EXPECT_TRUE(channel_->SetSend(true)); 1689 EXPECT_TRUE(channel_->SetSend(true));
1692 1690
1693 EXPECT_TRUE(capturer.CaptureFrame()); 1691 EXPECT_TRUE(capturer.CaptureFrame());
1694 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1692 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1695 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1693 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1696 1694
1697 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1695 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1698 1696
1699 // Verify screencast settings. 1697 // Verify screencast settings.
1700 encoder_config = send_stream->GetEncoderConfig(); 1698 encoder_config = send_stream->GetEncoderConfig();
1701 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1699 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1702 encoder_config.content_type); 1700 encoder_config.content_type);
1703 ASSERT_EQ(1u, encoder_config.streams.size()); 1701 ASSERT_EQ(1u, encoder_config.streams.size());
1704 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); 1702 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size());
1705 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, 1703 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps,
1706 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); 1704 encoder_config.streams[0].temporal_layer_thresholds_bps[0]);
1707 1705
1708 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1706 channel_->SetSource(last_ssrc_, NULL);
1709 } 1707 }
1710 1708
1711 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { 1709 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) {
1712 FakeVideoSendStream* stream = AddSendStream(); 1710 FakeVideoSendStream* stream = AddSendStream();
1713 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); 1711 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate);
1714 } 1712 }
1715 1713
1716 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { 1714 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) {
1717 MediaConfig media_config = MediaConfig(); 1715 MediaConfig media_config = MediaConfig();
1718 media_config.video.suspend_below_min_bitrate = true; 1716 media_config.video.suspend_below_min_bitrate = true;
(...skipping 29 matching lines...) Expand all
1748 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1746 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1749 1747
1750 // Single-stream settings should apply with RTX as well (verifies that we 1748 // Single-stream settings should apply with RTX as well (verifies that we
1751 // check number of regular SSRCs and not StreamParams::ssrcs which contains 1749 // check number of regular SSRCs and not StreamParams::ssrcs which contains
1752 // both RTX and regular SSRCs). 1750 // both RTX and regular SSRCs).
1753 FakeVideoSendStream* stream = SetUpSimulcast(false, true); 1751 FakeVideoSendStream* stream = SetUpSimulcast(false, true);
1754 1752
1755 cricket::FakeVideoCapturer capturer; 1753 cricket::FakeVideoCapturer capturer;
1756 EXPECT_EQ(cricket::CS_RUNNING, 1754 EXPECT_EQ(cricket::CS_RUNNING,
1757 capturer.Start(capturer.GetSupportedFormats()->front())); 1755 capturer.Start(capturer.GetSupportedFormats()->front()));
1758 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1756 channel_->SetSource(last_ssrc_, &capturer);
1759 channel_->SetSend(true); 1757 channel_->SetSend(true);
1760 1758
1761 EXPECT_TRUE(capturer.CaptureFrame()); 1759 EXPECT_TRUE(capturer.CaptureFrame());
1762 1760
1763 webrtc::VideoCodecVP8 vp8_settings; 1761 webrtc::VideoCodecVP8 vp8_settings;
1764 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1762 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1765 EXPECT_TRUE(vp8_settings.denoisingOn) 1763 EXPECT_TRUE(vp8_settings.denoisingOn)
1766 << "VP8 denoising should be on by default."; 1764 << "VP8 denoising should be on by default.";
1767 1765
1768 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1766 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
1769 1767
1770 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1768 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1771 EXPECT_FALSE(vp8_settings.denoisingOn); 1769 EXPECT_FALSE(vp8_settings.denoisingOn);
1772 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1770 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1773 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1771 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1774 1772
1775 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1773 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1776 1774
1777 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1775 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1778 EXPECT_TRUE(vp8_settings.denoisingOn); 1776 EXPECT_TRUE(vp8_settings.denoisingOn);
1779 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1777 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1780 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1778 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1781 1779
1782 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1780 channel_->SetSource(last_ssrc_, NULL);
1783 stream = SetUpSimulcast(true, false); 1781 stream = SetUpSimulcast(true, false);
1784 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1782 channel_->SetSource(last_ssrc_, &capturer);
1785 channel_->SetSend(true); 1783 channel_->SetSend(true);
1786 EXPECT_TRUE(capturer.CaptureFrame()); 1784 EXPECT_TRUE(capturer.CaptureFrame());
1787 1785
1788 EXPECT_EQ(3, stream->GetVideoStreams().size()); 1786 EXPECT_EQ(3, stream->GetVideoStreams().size());
1789 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1787 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1790 // Autmatic resize off when using simulcast. 1788 // Autmatic resize off when using simulcast.
1791 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1789 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1792 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1790 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1793 1791
1794 // In screen-share mode, denoising is forced off and simulcast disabled. 1792 // In screen-share mode, denoising is forced off and simulcast disabled.
(...skipping 10 matching lines...) Expand all
1805 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1803 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1806 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1804 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1807 1805
1808 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1806 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1809 1807
1810 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1808 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1811 EXPECT_FALSE(vp8_settings.denoisingOn); 1809 EXPECT_FALSE(vp8_settings.denoisingOn);
1812 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1810 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1813 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1811 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1814 1812
1815 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1813 channel_->SetSource(last_ssrc_, NULL);
1816 } 1814 }
1817 1815
1818 class Vp9SettingsTest : public WebRtcVideoChannel2Test { 1816 class Vp9SettingsTest : public WebRtcVideoChannel2Test {
1819 public: 1817 public:
1820 Vp9SettingsTest() : WebRtcVideoChannel2Test() { 1818 Vp9SettingsTest() : WebRtcVideoChannel2Test() {
1821 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); 1819 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9");
1822 } 1820 }
1823 virtual ~Vp9SettingsTest() {} 1821 virtual ~Vp9SettingsTest() {}
1824 1822
1825 protected: 1823 protected:
(...skipping 15 matching lines...) Expand all
1841 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { 1839 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) {
1842 cricket::VideoSendParameters parameters; 1840 cricket::VideoSendParameters parameters;
1843 parameters.codecs.push_back(kVp9Codec); 1841 parameters.codecs.push_back(kVp9Codec);
1844 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1842 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1845 1843
1846 FakeVideoSendStream* stream = SetUpSimulcast(false, false); 1844 FakeVideoSendStream* stream = SetUpSimulcast(false, false);
1847 1845
1848 cricket::FakeVideoCapturer capturer; 1846 cricket::FakeVideoCapturer capturer;
1849 EXPECT_EQ(cricket::CS_RUNNING, 1847 EXPECT_EQ(cricket::CS_RUNNING,
1850 capturer.Start(capturer.GetSupportedFormats()->front())); 1848 capturer.Start(capturer.GetSupportedFormats()->front()));
1851 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1849 channel_->SetSource(last_ssrc_, &capturer);
1852 channel_->SetSend(true); 1850 channel_->SetSend(true);
1853 1851
1854 EXPECT_TRUE(capturer.CaptureFrame()); 1852 EXPECT_TRUE(capturer.CaptureFrame());
1855 1853
1856 webrtc::VideoCodecVP9 vp9_settings; 1854 webrtc::VideoCodecVP9 vp9_settings;
1857 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1855 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1858 EXPECT_FALSE(vp9_settings.denoisingOn) 1856 EXPECT_FALSE(vp9_settings.denoisingOn)
1859 << "VP9 denoising should be off by default."; 1857 << "VP9 denoising should be off by default.";
1860 1858
1861 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1859 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
(...skipping 20 matching lines...) Expand all
1882 EXPECT_FALSE(vp9_settings.denoisingOn); 1880 EXPECT_FALSE(vp9_settings.denoisingOn);
1883 // Frame dropping always off for screen sharing. 1881 // Frame dropping always off for screen sharing.
1884 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1882 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1885 1883
1886 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1884 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
1887 1885
1888 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1886 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1889 EXPECT_FALSE(vp9_settings.denoisingOn); 1887 EXPECT_FALSE(vp9_settings.denoisingOn);
1890 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1888 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1891 1889
1892 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1890 channel_->SetSource(last_ssrc_, NULL);
1893 } 1891 }
1894 1892
1895 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) { 1893 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) {
1896 TestCpuAdaptation(true, false); 1894 TestCpuAdaptation(true, false);
1897 } 1895 }
1898 1896
1899 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) { 1897 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) {
1900 TestCpuAdaptation(false, false); 1898 TestCpuAdaptation(false, false);
1901 } 1899 }
1902 1900
1903 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) { 1901 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) {
1904 TestCpuAdaptation(true, true); 1902 TestCpuAdaptation(true, true);
1905 } 1903 }
1906 1904
1907 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) { 1905 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) {
1908 cricket::VideoCodec codec = kVp8Codec720p; 1906 cricket::VideoCodec codec = kVp8Codec720p;
1909 cricket::VideoSendParameters parameters; 1907 cricket::VideoSendParameters parameters;
1910 parameters.codecs.push_back(codec); 1908 parameters.codecs.push_back(codec);
1911 1909
1912 MediaConfig media_config = MediaConfig(); 1910 MediaConfig media_config = MediaConfig();
1913 channel_.reset( 1911 channel_.reset(
1914 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 1912 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
1915 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1913 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1916 1914
1917 AddSendStream(); 1915 AddSendStream();
1918 1916
1919 cricket::FakeVideoCapturer capturer; 1917 cricket::FakeVideoCapturer capturer;
1920 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1918 channel_->SetSource(last_ssrc_, &capturer);
1921 ASSERT_EQ(cricket::CS_RUNNING, 1919 ASSERT_EQ(cricket::CS_RUNNING,
1922 capturer.Start(capturer.GetSupportedFormats()->front())); 1920 capturer.Start(capturer.GetSupportedFormats()->front()));
1923 ASSERT_TRUE(channel_->SetSend(true)); 1921 ASSERT_TRUE(channel_->SetSend(true));
1924 1922
1925 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1923 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1926 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1924 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1927 webrtc::LoadObserver* overuse_callback = 1925 webrtc::LoadObserver* overuse_callback =
1928 send_stream->GetConfig().overuse_callback; 1926 send_stream->GetConfig().overuse_callback;
1929 ASSERT_TRUE(overuse_callback != NULL); 1927 ASSERT_TRUE(overuse_callback != NULL);
1930 1928
(...skipping 29 matching lines...) Expand all
1960 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); 1958 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth());
1961 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); 1959 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight());
1962 1960
1963 // Trigger underuse which should go back up in resolution. 1961 // Trigger underuse which should go back up in resolution.
1964 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 1962 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
1965 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); 1963 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420));
1966 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); 1964 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames());
1967 EXPECT_EQ(1284, send_stream->GetLastWidth()); 1965 EXPECT_EQ(1284, send_stream->GetLastWidth());
1968 EXPECT_EQ(724, send_stream->GetLastHeight()); 1966 EXPECT_EQ(724, send_stream->GetLastHeight());
1969 1967
1970 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1968 channel_->SetSource(last_ssrc_, NULL);
1971 } 1969 }
1972 1970
1973 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, 1971 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse,
1974 bool is_screenshare) { 1972 bool is_screenshare) {
1975 cricket::VideoCodec codec = kVp8Codec720p; 1973 cricket::VideoCodec codec = kVp8Codec720p;
1976 cricket::VideoSendParameters parameters; 1974 cricket::VideoSendParameters parameters;
1977 parameters.codecs.push_back(codec); 1975 parameters.codecs.push_back(codec);
1978 1976
1979 MediaConfig media_config = MediaConfig(); 1977 MediaConfig media_config = MediaConfig();
1980 if (!enable_overuse) { 1978 if (!enable_overuse) {
1981 media_config.video.enable_cpu_overuse_detection = false; 1979 media_config.video.enable_cpu_overuse_detection = false;
1982 } 1980 }
1983 channel_.reset( 1981 channel_.reset(
1984 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 1982 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
1985 1983
1986 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 1984 EXPECT_TRUE(channel_->SetSendParameters(parameters));
1987 1985
1988 AddSendStream(); 1986 AddSendStream();
1989 1987
1990 VideoOptions options; 1988 VideoOptions options;
1991 options.is_screencast = rtc::Optional<bool>(is_screenshare); 1989 options.is_screencast = rtc::Optional<bool>(is_screenshare);
1992 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); 1990 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options));
1993 1991
1994 cricket::FakeVideoCapturer capturer; 1992 cricket::FakeVideoCapturer capturer;
1995 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1993 channel_->SetSource(last_ssrc_, &capturer);
1996 EXPECT_EQ(cricket::CS_RUNNING, 1994 EXPECT_EQ(cricket::CS_RUNNING,
1997 capturer.Start(capturer.GetSupportedFormats()->front())); 1995 capturer.Start(capturer.GetSupportedFormats()->front()));
1998 1996
1999 EXPECT_TRUE(channel_->SetSend(true)); 1997 EXPECT_TRUE(channel_->SetSend(true));
2000 1998
2001 // Trigger overuse. 1999 // Trigger overuse.
2002 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 2000 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2003 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 2001 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2004 webrtc::LoadObserver* overuse_callback = 2002 webrtc::LoadObserver* overuse_callback =
2005 send_stream->GetConfig().overuse_callback; 2003 send_stream->GetConfig().overuse_callback;
2006 2004
2007 if (!enable_overuse) { 2005 if (!enable_overuse) {
2008 ASSERT_TRUE(overuse_callback == NULL); 2006 ASSERT_TRUE(overuse_callback == NULL);
2009 2007
2010 EXPECT_TRUE(capturer.CaptureFrame()); 2008 EXPECT_TRUE(capturer.CaptureFrame());
2011 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2009 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2012 2010
2013 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2011 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2014 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2012 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2015 2013
2016 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2014 channel_->SetSource(last_ssrc_, NULL);
2017 return; 2015 return;
2018 } 2016 }
2019 2017
2020 ASSERT_TRUE(overuse_callback != NULL); 2018 ASSERT_TRUE(overuse_callback != NULL);
2021 EXPECT_TRUE(capturer.CaptureFrame()); 2019 EXPECT_TRUE(capturer.CaptureFrame());
2022 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2020 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2023 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2021 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2024 2022
2025 EXPECT_TRUE(capturer.CaptureFrame()); 2023 EXPECT_TRUE(capturer.CaptureFrame());
2026 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 2024 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
2027 2025
2028 if (is_screenshare) { 2026 if (is_screenshare) {
2029 // Do not adapt screen share. 2027 // Do not adapt screen share.
2030 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2028 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2031 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2029 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2032 } else { 2030 } else {
2033 EXPECT_LT(send_stream->GetLastWidth(), codec.width); 2031 EXPECT_LT(send_stream->GetLastWidth(), codec.width);
2034 EXPECT_LT(send_stream->GetLastHeight(), codec.height); 2032 EXPECT_LT(send_stream->GetLastHeight(), codec.height);
2035 } 2033 }
2036 2034
2037 // Trigger underuse which should go back to normal resolution. 2035 // Trigger underuse which should go back to normal resolution.
2038 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2036 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2039 EXPECT_TRUE(capturer.CaptureFrame()); 2037 EXPECT_TRUE(capturer.CaptureFrame());
2040 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 2038 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
2041 2039
2042 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2040 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2043 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2041 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2044 2042
2045 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2043 channel_->SetSource(last_ssrc_, NULL);
2046 } 2044 }
2047 2045
2048 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { 2046 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) {
2049 // Start at last timestamp to verify that wraparounds are estimated correctly. 2047 // Start at last timestamp to verify that wraparounds are estimated correctly.
2050 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; 2048 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu;
2051 static const int64_t kInitialNtpTimeMs = 1247891230; 2049 static const int64_t kInitialNtpTimeMs = 1247891230;
2052 static const int kFrameOffsetMs = 20; 2050 static const int kFrameOffsetMs = 20;
2053 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2051 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2054 2052
2055 FakeVideoReceiveStream* stream = AddRecvStream(); 2053 FakeVideoReceiveStream* stream = AddRecvStream();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
2166 2164
2167 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { 2165 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) {
2168 cricket::VideoSendParameters parameters; 2166 cricket::VideoSendParameters parameters;
2169 parameters.codecs.push_back(kVp8Codec720p); 2167 parameters.codecs.push_back(kVp8Codec720p);
2170 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2168 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2171 channel_->SetSend(true); 2169 channel_->SetSend(true);
2172 2170
2173 FakeVideoSendStream* stream = AddSendStream(); 2171 FakeVideoSendStream* stream = AddSendStream();
2174 2172
2175 cricket::FakeVideoCapturer capturer; 2173 cricket::FakeVideoCapturer capturer;
2176 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2174 channel_->SetSource(last_ssrc_, &capturer);
2177 EXPECT_EQ(cricket::CS_RUNNING, 2175 EXPECT_EQ(cricket::CS_RUNNING,
2178 capturer.Start(capturer.GetSupportedFormats()->front())); 2176 capturer.Start(capturer.GetSupportedFormats()->front()));
2179 EXPECT_TRUE(capturer.CaptureFrame()); 2177 EXPECT_TRUE(capturer.CaptureFrame());
2180 2178
2181 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2179 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2182 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 2180 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
2183 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 2181 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
2184 2182
2185 parameters.codecs.clear(); 2183 parameters.codecs.clear();
2186 parameters.codecs.push_back(kVp8Codec360p); 2184 parameters.codecs.push_back(kVp8Codec360p);
2187 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2185 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2188 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); 2186 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams();
2189 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); 2187 EXPECT_EQ(kVp8Codec360p.width, streams[0].width);
2190 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); 2188 EXPECT_EQ(kVp8Codec360p.height, streams[0].height);
2191 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2189 channel_->SetSource(last_ssrc_, NULL);
2192 } 2190 }
2193 2191
2194 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { 2192 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) {
2195 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", 2193 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200",
2196 200000); 2194 200000);
2197 } 2195 }
2198 2196
2199 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { 2197 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) {
2200 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); 2198 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000);
2201 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); 2199 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2245 2243
2246 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { 2244 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
2247 cricket::VideoSendParameters parameters; 2245 cricket::VideoSendParameters parameters;
2248 parameters.codecs.push_back(kVp8Codec720p); 2246 parameters.codecs.push_back(kVp8Codec720p);
2249 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2247 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2250 channel_->SetSend(true); 2248 channel_->SetSend(true);
2251 2249
2252 FakeVideoSendStream* stream = AddSendStream(); 2250 FakeVideoSendStream* stream = AddSendStream();
2253 2251
2254 cricket::FakeVideoCapturer capturer; 2252 cricket::FakeVideoCapturer capturer;
2255 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2253 channel_->SetSource(last_ssrc_, &capturer);
2256 EXPECT_EQ(cricket::CS_RUNNING, 2254 EXPECT_EQ(cricket::CS_RUNNING,
2257 capturer.Start(capturer.GetSupportedFormats()->front())); 2255 capturer.Start(capturer.GetSupportedFormats()->front()));
2258 2256
2259 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2257 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2260 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; 2258 int initial_max_bitrate_bps = streams[0].max_bitrate_bps;
2261 EXPECT_GT(initial_max_bitrate_bps, 0); 2259 EXPECT_GT(initial_max_bitrate_bps, 0);
2262 2260
2263 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2261 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2264 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2262 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2265 // Insert a frame to update the encoder config. 2263 // Insert a frame to update the encoder config.
2266 EXPECT_TRUE(capturer.CaptureFrame()); 2264 EXPECT_TRUE(capturer.CaptureFrame());
2267 streams = stream->GetVideoStreams(); 2265 streams = stream->GetVideoStreams();
2268 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); 2266 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps);
2269 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 2267 channel_->SetSource(last_ssrc_, nullptr);
2270 } 2268 }
2271 2269
2272 TEST_F(WebRtcVideoChannel2Test, 2270 TEST_F(WebRtcVideoChannel2Test,
2273 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { 2271 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) {
2274 cricket::VideoSendParameters parameters; 2272 cricket::VideoSendParameters parameters;
2275 parameters.codecs.push_back(kVp8Codec720p); 2273 parameters.codecs.push_back(kVp8Codec720p);
2276 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2274 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2277 channel_->SetSend(true); 2275 channel_->SetSend(true);
2278 2276
2279 FakeVideoSendStream* stream = AddSendStream( 2277 FakeVideoSendStream* stream = AddSendStream(
2280 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2278 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2281 2279
2282 // Send a frame to make sure this scales up to >1 stream (simulcast). 2280 // Send a frame to make sure this scales up to >1 stream (simulcast).
2283 cricket::FakeVideoCapturer capturer; 2281 cricket::FakeVideoCapturer capturer;
2284 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); 2282 channel_->SetSource(kSsrcs3[0], &capturer);
2285 EXPECT_EQ(cricket::CS_RUNNING, 2283 EXPECT_EQ(cricket::CS_RUNNING,
2286 capturer.Start(capturer.GetSupportedFormats()->front())); 2284 capturer.Start(capturer.GetSupportedFormats()->front()));
2287 EXPECT_TRUE(capturer.CaptureFrame()); 2285 EXPECT_TRUE(capturer.CaptureFrame());
2288 2286
2289 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2287 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2290 ASSERT_GT(streams.size(), 1u) 2288 ASSERT_GT(streams.size(), 1u)
2291 << "Without simulcast this test doesn't make sense."; 2289 << "Without simulcast this test doesn't make sense.";
2292 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2290 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2293 EXPECT_GT(initial_max_bitrate_bps, 0); 2291 EXPECT_GT(initial_max_bitrate_bps, 0);
2294 2292
2295 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2293 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2296 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2294 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2297 // Insert a frame to update the encoder config. 2295 // Insert a frame to update the encoder config.
2298 EXPECT_TRUE(capturer.CaptureFrame()); 2296 EXPECT_TRUE(capturer.CaptureFrame());
2299 streams = stream->GetVideoStreams(); 2297 streams = stream->GetVideoStreams();
2300 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2298 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2301 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); 2299 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps);
2302 2300
2303 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); 2301 channel_->SetSource(kSsrcs3[0], nullptr);
2304 } 2302 }
2305 2303
2306 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { 2304 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) {
2307 static const char* kMaxQuantization = "21"; 2305 static const char* kMaxQuantization = "21";
2308 cricket::VideoSendParameters parameters; 2306 cricket::VideoSendParameters parameters;
2309 parameters.codecs.push_back(kVp8Codec); 2307 parameters.codecs.push_back(kVp8Codec);
2310 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; 2308 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization;
2311 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2309 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2312 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), 2310 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)),
2313 AddSendStream()->GetVideoStreams().back().max_qp); 2311 AddSendStream()->GetVideoStreams().back().max_qp);
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
2652 2650
2653 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { 2651 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) {
2654 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2652 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2655 2653
2656 // Capture format VGA. 2654 // Capture format VGA.
2657 cricket::FakeVideoCapturer video_capturer_vga; 2655 cricket::FakeVideoCapturer video_capturer_vga;
2658 const std::vector<cricket::VideoFormat>* formats = 2656 const std::vector<cricket::VideoFormat>* formats =
2659 video_capturer_vga.GetSupportedFormats(); 2657 video_capturer_vga.GetSupportedFormats();
2660 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2658 cricket::VideoFormat capture_format_vga = (*formats)[1];
2661 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2659 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2662 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2660 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2663 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2661 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2664 2662
2665 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2663 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2666 cricket::VideoSendParameters parameters; 2664 cricket::VideoSendParameters parameters;
2667 parameters.codecs.push_back(send_codec); 2665 parameters.codecs.push_back(send_codec);
2668 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2666 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2669 EXPECT_TRUE(channel_->SetSend(true)); 2667 EXPECT_TRUE(channel_->SetSend(true));
2670 2668
2671 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2669 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2672 2670
(...skipping 17 matching lines...) Expand all
2690 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2688 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2691 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2689 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2692 info.Clear(); 2690 info.Clear();
2693 EXPECT_TRUE(channel_->GetStats(&info)); 2691 EXPECT_TRUE(channel_->GetStats(&info));
2694 ASSERT_EQ(1U, info.senders.size()); 2692 ASSERT_EQ(1U, info.senders.size());
2695 EXPECT_EQ(2, info.senders[0].adapt_changes); 2693 EXPECT_EQ(2, info.senders[0].adapt_changes);
2696 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2694 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2697 info.senders[0].adapt_reason); 2695 info.senders[0].adapt_reason);
2698 2696
2699 // No capturer (no adapter). Adapt changes from old adapter should be kept. 2697 // No capturer (no adapter). Adapt changes from old adapter should be kept.
2700 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2698 channel_->SetSource(kSsrcs3[0], NULL);
2701 info.Clear(); 2699 info.Clear();
2702 EXPECT_TRUE(channel_->GetStats(&info)); 2700 EXPECT_TRUE(channel_->GetStats(&info));
2703 ASSERT_EQ(1U, info.senders.size()); 2701 ASSERT_EQ(1U, info.senders.size());
2704 EXPECT_EQ(2, info.senders[0].adapt_changes); 2702 EXPECT_EQ(2, info.senders[0].adapt_changes);
2705 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2703 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2706 info.senders[0].adapt_reason); 2704 info.senders[0].adapt_reason);
2707 2705
2708 // Set new capturer, capture format HD. 2706 // Set new capturer, capture format HD.
2709 cricket::FakeVideoCapturer video_capturer_hd; 2707 cricket::FakeVideoCapturer video_capturer_hd;
2710 cricket::VideoFormat capture_format_hd = (*formats)[0]; 2708 cricket::VideoFormat capture_format_hd = (*formats)[0];
2711 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); 2709 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd));
2712 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); 2710 channel_->SetSource(kSsrcs3[0], &video_capturer_hd);
2713 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2711 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2714 2712
2715 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. 2713 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2.
2716 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2714 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2717 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2715 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2718 info.Clear(); 2716 info.Clear();
2719 EXPECT_TRUE(channel_->GetStats(&info)); 2717 EXPECT_TRUE(channel_->GetStats(&info));
2720 ASSERT_EQ(1U, info.senders.size()); 2718 ASSERT_EQ(1U, info.senders.size());
2721 EXPECT_EQ(3, info.senders[0].adapt_changes); 2719 EXPECT_EQ(3, info.senders[0].adapt_changes);
2722 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, 2720 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU,
2723 info.senders[0].adapt_reason); 2721 info.senders[0].adapt_reason);
2724 2722
2725 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2723 channel_->SetSource(kSsrcs3[0], NULL);
2726 } 2724 }
2727 2725
2728 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { 2726 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) {
2729 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2727 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2730 2728
2731 // Capture format VGA. 2729 // Capture format VGA.
2732 cricket::FakeVideoCapturer video_capturer_vga; 2730 cricket::FakeVideoCapturer video_capturer_vga;
2733 const std::vector<cricket::VideoFormat>* formats = 2731 const std::vector<cricket::VideoFormat>* formats =
2734 video_capturer_vga.GetSupportedFormats(); 2732 video_capturer_vga.GetSupportedFormats();
2735 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2733 cricket::VideoFormat capture_format_vga = (*formats)[1];
2736 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2734 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2737 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2735 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2738 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2736 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2739 2737
2740 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2738 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2741 cricket::VideoSendParameters parameters; 2739 cricket::VideoSendParameters parameters;
2742 parameters.codecs.push_back(send_codec); 2740 parameters.codecs.push_back(send_codec);
2743 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2741 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2744 EXPECT_TRUE(channel_->SetSend(true)); 2742 EXPECT_TRUE(channel_->SetSend(true));
2745 2743
2746 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2744 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2747 2745
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2780 2778
2781 // Reset bandwidth limitation state -> adapt NONE. 2779 // Reset bandwidth limitation state -> adapt NONE.
2782 stats.bw_limited_resolution = false; 2780 stats.bw_limited_resolution = false;
2783 fake_call_->GetVideoSendStreams().front()->SetStats(stats); 2781 fake_call_->GetVideoSendStreams().front()->SetStats(stats);
2784 info.Clear(); 2782 info.Clear();
2785 EXPECT_TRUE(channel_->GetStats(&info)); 2783 EXPECT_TRUE(channel_->GetStats(&info));
2786 ASSERT_EQ(1U, info.senders.size()); 2784 ASSERT_EQ(1U, info.senders.size());
2787 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2785 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2788 info.senders[0].adapt_reason); 2786 info.senders[0].adapt_reason);
2789 2787
2790 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2788 channel_->SetSource(kSsrcs3[0], NULL);
2791 } 2789 }
2792 2790
2793 TEST_F(WebRtcVideoChannel2Test, 2791 TEST_F(WebRtcVideoChannel2Test,
2794 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { 2792 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) {
2795 FakeVideoSendStream* stream = AddSendStream(); 2793 FakeVideoSendStream* stream = AddSendStream();
2796 webrtc::VideoSendStream::Stats stats; 2794 webrtc::VideoSendStream::Stats stats;
2797 stats.bw_limited_resolution = true; 2795 stats.bw_limited_resolution = true;
2798 stream->SetStats(stats); 2796 stream->SetStats(stats);
2799 2797
2800 cricket::VideoMediaInfo info; 2798 cricket::VideoMediaInfo info;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
3142 } 3140 }
3143 3141
3144 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { 3142 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
3145 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); 3143 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false);
3146 } 3144 }
3147 3145
3148 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { 3146 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) {
3149 AddSendStream(); 3147 AddSendStream();
3150 3148
3151 cricket::FakeVideoCapturer capturer; 3149 cricket::FakeVideoCapturer capturer;
3152 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 3150 channel_->SetSource(last_ssrc_, &capturer);
3153 cricket::VideoFormat capture_format_hd = 3151 cricket::VideoFormat capture_format_hd =
3154 capturer.GetSupportedFormats()->front(); 3152 capturer.GetSupportedFormats()->front();
3155 EXPECT_EQ(1280, capture_format_hd.width); 3153 EXPECT_EQ(1280, capture_format_hd.width);
3156 EXPECT_EQ(720, capture_format_hd.height); 3154 EXPECT_EQ(720, capture_format_hd.height);
3157 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 3155 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
3158 EXPECT_TRUE(channel_->SetSend(true)); 3156 EXPECT_TRUE(channel_->SetSend(true));
3159 3157
3160 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); 3158 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer);
3161 EXPECT_TRUE(default_encoder_bitrate > 1000); 3159 EXPECT_TRUE(default_encoder_bitrate > 1000);
3162 3160
3163 // TODO(skvlad): Resolve the inconsistency between the interpretation 3161 // TODO(skvlad): Resolve the inconsistency between the interpretation
3164 // of the global bitrate limit for audio and video: 3162 // of the global bitrate limit for audio and video:
3165 // - Audio: max_bandwidth_bps = 0 - fail the operation, 3163 // - Audio: max_bandwidth_bps = 0 - fail the operation,
3166 // max_bandwidth_bps = -1 - remove the bandwidth limit 3164 // max_bandwidth_bps = -1 - remove the bandwidth limit
3167 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, 3165 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit,
3168 // max_bandwidth_bps = -1 - do not change the previously set 3166 // max_bandwidth_bps = -1 - do not change the previously set
3169 // limit. 3167 // limit.
3170 3168
3171 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); 3169 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000);
3172 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); 3170 SetAndExpectMaxBitrate(capturer, 1000, 800, 800);
3173 SetAndExpectMaxBitrate(capturer, 600, 800, 600); 3171 SetAndExpectMaxBitrate(capturer, 600, 800, 600);
3174 SetAndExpectMaxBitrate(capturer, 0, 800, 800); 3172 SetAndExpectMaxBitrate(capturer, 0, 800, 800);
3175 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); 3173 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate);
3176 3174
3177 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 3175 channel_->SetSource(last_ssrc_, NULL);
3178 } 3176 }
3179 3177
3180 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { 3178 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) {
3181 webrtc::RtpParameters nonexistent_parameters = 3179 webrtc::RtpParameters nonexistent_parameters =
3182 channel_->GetRtpParameters(last_ssrc_); 3180 channel_->GetRtpParameters(last_ssrc_);
3183 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); 3181 EXPECT_EQ(0, nonexistent_parameters.encodings.size());
3184 3182
3185 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); 3183 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters());
3186 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); 3184 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters));
3187 } 3185 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3278 3276
3279 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 3277 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
3280 RTC_DCHECK(num_configured_streams <= ssrcs.size()); 3278 RTC_DCHECK(num_configured_streams <= ssrcs.size());
3281 ssrcs.resize(num_configured_streams); 3279 ssrcs.resize(num_configured_streams);
3282 3280
3283 FakeVideoSendStream* stream = 3281 FakeVideoSendStream* stream =
3284 AddSendStream(CreateSimStreamParams("cname", ssrcs)); 3282 AddSendStream(CreateSimStreamParams("cname", ssrcs));
3285 // Send a full-size frame to trigger a stream reconfiguration to use all 3283 // Send a full-size frame to trigger a stream reconfiguration to use all
3286 // expected simulcast layers. 3284 // expected simulcast layers.
3287 cricket::FakeVideoCapturer capturer; 3285 cricket::FakeVideoCapturer capturer;
3288 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); 3286 channel_->SetSource(ssrcs.front(), &capturer);
3289 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( 3287 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat(
3290 codec.width, codec.height, 3288 codec.width, codec.height,
3291 cricket::VideoFormat::FpsToInterval(30), 3289 cricket::VideoFormat::FpsToInterval(30),
3292 cricket::FOURCC_I420))); 3290 cricket::FOURCC_I420)));
3293 channel_->SetSend(true); 3291 channel_->SetSend(true);
3294 EXPECT_TRUE(capturer.CaptureFrame()); 3292 EXPECT_TRUE(capturer.CaptureFrame());
3295 3293
3296 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); 3294 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams();
3297 ASSERT_EQ(expected_num_streams, video_streams.size()); 3295 ASSERT_EQ(expected_num_streams, video_streams.size());
3298 3296
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3335 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; 3333 total_max_bitrate_bps += video_streams[i].max_bitrate_bps;
3336 } else { 3334 } else {
3337 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; 3335 total_max_bitrate_bps += video_streams[i].target_bitrate_bps;
3338 } 3336 }
3339 } 3337 }
3340 cricket::VideoMediaInfo info; 3338 cricket::VideoMediaInfo info;
3341 ASSERT_TRUE(channel_->GetStats(&info)); 3339 ASSERT_TRUE(channel_->GetStats(&info));
3342 ASSERT_EQ(1u, info.senders.size()); 3340 ASSERT_EQ(1u, info.senders.size());
3343 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); 3341 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate);
3344 3342
3345 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); 3343 channel_->SetSource(ssrcs.front(), NULL);
3346 } 3344 }
3347 3345
3348 FakeVideoSendStream* AddSendStream() { 3346 FakeVideoSendStream* AddSendStream() {
3349 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); 3347 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++));
3350 } 3348 }
3351 3349
3352 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { 3350 FakeVideoSendStream* AddSendStream(const StreamParams& sp) {
3353 size_t num_streams = 3351 size_t num_streams =
3354 fake_call_.GetVideoSendStreams().size(); 3352 fake_call_.GetVideoSendStreams().size();
3355 EXPECT_TRUE(channel_->AddSendStream(sp)); 3353 EXPECT_TRUE(channel_->AddSendStream(sp));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3392 } 3390 }
3393 3391
3394 // Test that we normalize send codec format size in simulcast. 3392 // Test that we normalize send codec format size in simulcast.
3395 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3393 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3396 cricket::VideoCodec codec(kVp8Codec270p); 3394 cricket::VideoCodec codec(kVp8Codec270p);
3397 codec.width += 1; 3395 codec.width += 1;
3398 codec.height += 1; 3396 codec.height += 1;
3399 VerifySimulcastSettings(codec, 2, 2); 3397 VerifySimulcastSettings(codec, 2, 2);
3400 } 3398 }
3401 } // namespace cricket 3399 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698