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

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: Rebase. Created 4 years, 8 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 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 234 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
235 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 235 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
236 236
237 // Add CVO extension. 237 // Add CVO extension.
238 const int id = 1; 238 const int id = 1;
239 parameters.extensions.push_back( 239 parameters.extensions.push_back(
240 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 240 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
241 EXPECT_TRUE(channel->SetSendParameters(parameters)); 241 EXPECT_TRUE(channel->SetSendParameters(parameters));
242 242
243 // Set capturer. 243 // Set capturer.
244 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 244 channel->SetSource(kSsrc, &capturer);
245 245
246 // Verify capturer has turned off applying rotation. 246 // Verify capturer has turned off applying rotation.
247 EXPECT_FALSE(capturer.GetApplyRotation()); 247 EXPECT_FALSE(capturer.GetApplyRotation());
248 248
249 // Verify removing header extension turns on applying rotation. 249 // Verify removing header extension turns on applying rotation.
250 parameters.extensions.clear(); 250 parameters.extensions.clear();
251 EXPECT_TRUE(channel->SetSendParameters(parameters)); 251 EXPECT_TRUE(channel->SetSendParameters(parameters));
252 EXPECT_TRUE(capturer.GetApplyRotation()); 252 EXPECT_TRUE(capturer.GetApplyRotation());
253 } 253 }
254 254
(...skipping 10 matching lines...) Expand all
265 std::unique_ptr<VideoMediaChannel> channel( 265 std::unique_ptr<VideoMediaChannel> channel(
266 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 266 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
267 // Add CVO extension. 267 // Add CVO extension.
268 const int id = 1; 268 const int id = 1;
269 parameters.extensions.push_back( 269 parameters.extensions.push_back(
270 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 270 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
271 EXPECT_TRUE(channel->SetSendParameters(parameters)); 271 EXPECT_TRUE(channel->SetSendParameters(parameters));
272 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 272 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
273 273
274 // Set capturer. 274 // Set capturer.
275 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 275 channel->SetSource(kSsrc, &capturer);
276 276
277 // Verify capturer has turned off applying rotation. 277 // Verify capturer has turned off applying rotation.
278 EXPECT_FALSE(capturer.GetApplyRotation()); 278 EXPECT_FALSE(capturer.GetApplyRotation());
279 } 279 }
280 280
281 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) { 281 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) {
282 cricket::FakeVideoCapturer capturer; 282 cricket::FakeVideoCapturer capturer;
283 283
284 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 284 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
285 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); 285 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8");
286 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); 286 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9");
287 cricket::VideoSendParameters parameters; 287 cricket::VideoSendParameters parameters;
288 parameters.codecs.push_back(kVp8Codec); 288 parameters.codecs.push_back(kVp8Codec);
289 parameters.codecs.push_back(kVp9Codec); 289 parameters.codecs.push_back(kVp9Codec);
290 290
291 std::unique_ptr<VideoMediaChannel> channel( 291 std::unique_ptr<VideoMediaChannel> channel(
292 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 292 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
293 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 293 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
294 294
295 // Set capturer. 295 // Set capturer.
296 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 296 channel->SetSource(kSsrc, &capturer);
297 297
298 // Verify capturer has turned on applying rotation. 298 // Verify capturer has turned on applying rotation.
299 EXPECT_TRUE(capturer.GetApplyRotation()); 299 EXPECT_TRUE(capturer.GetApplyRotation());
300 300
301 // Add CVO extension. 301 // Add CVO extension.
302 const int id = 1; 302 const int id = 1;
303 parameters.extensions.push_back( 303 parameters.extensions.push_back(
304 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 304 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
305 // Also remove the first codec to trigger a codec change as well. 305 // Also remove the first codec to trigger a codec change as well.
306 parameters.codecs.erase(parameters.codecs.begin()); 306 parameters.codecs.erase(parameters.codecs.begin());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 345
346 std::unique_ptr<VideoMediaChannel> channel( 346 std::unique_ptr<VideoMediaChannel> channel(
347 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 347 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
348 348
349 EXPECT_TRUE( 349 EXPECT_TRUE(
350 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 350 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
351 ASSERT_EQ(1u, encoder_factory.encoders().size()); 351 ASSERT_EQ(1u, encoder_factory.encoders().size());
352 EXPECT_TRUE(channel->SetSend(true)); 352 EXPECT_TRUE(channel->SetSend(true));
353 353
354 cricket::FakeVideoCapturer capturer; 354 cricket::FakeVideoCapturer capturer;
355 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 355 channel->SetSource(kSsrc, &capturer);
356 EXPECT_EQ(cricket::CS_RUNNING, 356 EXPECT_EQ(cricket::CS_RUNNING,
357 capturer.Start(capturer.GetSupportedFormats()->front())); 357 capturer.Start(capturer.GetSupportedFormats()->front()));
358 EXPECT_TRUE(capturer.CaptureFrame()); 358 EXPECT_TRUE(capturer.CaptureFrame());
359 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, 359 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0,
360 kTimeout); 360 kTimeout);
361 361
362 // Sending one frame will have reallocated the encoder since input size 362 // Sending one frame will have reallocated the encoder since input size
363 // changes from a small default to the actual frame width/height. 363 // changes from a small default to the actual frame width/height.
364 int num_created_encoders = encoder_factory.GetNumCreatedEncoders(); 364 int num_created_encoders = encoder_factory.GetNumCreatedEncoders();
365 EXPECT_EQ(num_created_encoders, 2); 365 EXPECT_EQ(num_created_encoders, 2);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 432
433 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); 433 FakeCall* fake_call = new FakeCall(webrtc::Call::Config());
434 call_.reset(fake_call); 434 call_.reset(fake_call);
435 std::unique_ptr<VideoMediaChannel> channel( 435 std::unique_ptr<VideoMediaChannel> channel(
436 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 436 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
437 437
438 EXPECT_TRUE( 438 EXPECT_TRUE(
439 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 439 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
440 440
441 FakeVideoCapturer capturer; 441 FakeVideoCapturer capturer;
442 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 442 channel->SetSource(kSsrc, &capturer);
443 capturer.Start(cricket::VideoFormat(1280, 720, 443 capturer.Start(cricket::VideoFormat(1280, 720,
444 cricket::VideoFormat::FpsToInterval(60), 444 cricket::VideoFormat::FpsToInterval(60),
445 cricket::FOURCC_I420)); 445 cricket::FOURCC_I420));
446 channel->SetSend(true); 446 channel->SetSend(true);
447 447
448 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 448 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
449 449
450 EXPECT_TRUE(capturer.CaptureFrame()); 450 EXPECT_TRUE(capturer.CaptureFrame());
451 int64_t last_timestamp = stream->GetLastTimestamp(); 451 int64_t last_timestamp = stream->GetLastTimestamp();
452 for (int i = 0; i < 10; i++) { 452 for (int i = 0; i < 10; i++) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 call_.reset(fake_call); 494 call_.reset(fake_call);
495 std::unique_ptr<VideoMediaChannel> channel( 495 std::unique_ptr<VideoMediaChannel> channel(
496 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 496 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
497 497
498 EXPECT_TRUE( 498 EXPECT_TRUE(
499 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 499 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
500 channel->SetSend(true); 500 channel->SetSend(true);
501 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 501 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
502 502
503 FakeVideoCapturer capturer1; 503 FakeVideoCapturer capturer1;
504 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); 504 channel->SetSource(kSsrc, &capturer1);
505 505
506 cricket::CapturedFrame frame; 506 cricket::CapturedFrame frame;
507 frame.width = 1280; 507 frame.width = 1280;
508 frame.height = 720; 508 frame.height = 720;
509 frame.fourcc = cricket::FOURCC_I420; 509 frame.fourcc = cricket::FOURCC_I420;
510 frame.data_size = frame.width * frame.height + 510 frame.data_size = frame.width * frame.height +
511 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); 511 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2);
512 std::unique_ptr<char[]> data(new char[frame.data_size]); 512 std::unique_ptr<char[]> data(new char[frame.data_size]);
513 frame.data = data.get(); 513 frame.data = data.get();
514 memset(frame.data, 1, frame.data_size); 514 memset(frame.data, 1, frame.data_size);
515 const int kInitialTimestamp = 123456; 515 const int kInitialTimestamp = 123456;
516 frame.time_stamp = kInitialTimestamp; 516 frame.time_stamp = kInitialTimestamp;
517 517
518 // Deliver initial frame. 518 // Deliver initial frame.
519 capturer1.SignalCapturedFrame(&frame); 519 capturer1.SignalCapturedFrame(&frame);
520 // Deliver next frame 1 second later. 520 // Deliver next frame 1 second later.
521 frame.time_stamp += rtc::kNumNanosecsPerSec; 521 frame.time_stamp += rtc::kNumNanosecsPerSec;
522 rtc::Thread::Current()->SleepMs(1000); 522 rtc::Thread::Current()->SleepMs(1000);
523 capturer1.SignalCapturedFrame(&frame); 523 capturer1.SignalCapturedFrame(&frame);
524 524
525 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); 525 int64_t capturer1_last_timestamp = stream->GetLastTimestamp();
526 // Reset input source, should still be continuous even though input-frame 526 // Reset input source, should still be continuous even though input-frame
527 // timestamp is less than before. 527 // timestamp is less than before.
528 FakeVideoCapturer capturer2; 528 FakeVideoCapturer capturer2;
529 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); 529 channel->SetSource(kSsrc, &capturer2);
530 530
531 rtc::Thread::Current()->SleepMs(1); 531 rtc::Thread::Current()->SleepMs(1);
532 // Deliver with a timestamp (10 seconds) before the previous initial one, 532 // Deliver with a timestamp (10 seconds) before the previous initial one,
533 // these should not be related at all anymore and it should still work fine. 533 // these should not be related at all anymore and it should still work fine.
534 frame.time_stamp = kInitialTimestamp - 10000; 534 frame.time_stamp = kInitialTimestamp - 10000;
535 capturer2.SignalCapturedFrame(&frame); 535 capturer2.SignalCapturedFrame(&frame);
536 536
537 // New timestamp should be at least 1ms in the future and not old. 537 // New timestamp should be at least 1ms in the future and not old.
538 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); 538 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp);
539 539
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 std::unique_ptr<VideoMediaChannel> channel( 579 std::unique_ptr<VideoMediaChannel> channel(
580 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 580 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
581 581
582 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 582 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
583 583
584 EXPECT_TRUE( 584 EXPECT_TRUE(
585 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 585 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
586 EXPECT_TRUE(channel->SetSend(true)); 586 EXPECT_TRUE(channel->SetSend(true));
587 587
588 cricket::FakeVideoCapturer capturer; 588 cricket::FakeVideoCapturer capturer;
589 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 589 channel->SetSource(ssrcs.front(), &capturer);
590 EXPECT_EQ(cricket::CS_RUNNING, 590 EXPECT_EQ(cricket::CS_RUNNING,
591 capturer.Start(capturer.GetSupportedFormats()->front())); 591 capturer.Start(capturer.GetSupportedFormats()->front()));
592 EXPECT_TRUE(capturer.CaptureFrame()); 592 EXPECT_TRUE(capturer.CaptureFrame());
593 593
594 EXPECT_GT(encoder_factory.encoders().size(), 1u); 594 EXPECT_GT(encoder_factory.encoders().size(), 1u);
595 595
596 // Verify that encoders are configured for simulcast through adapter 596 // Verify that encoders are configured for simulcast through adapter
597 // (increasing resolution and only configured to send one stream each). 597 // (increasing resolution and only configured to send one stream each).
598 int prev_width = -1; 598 int prev_width = -1;
599 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { 599 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) {
600 webrtc::VideoCodec codec_settings = 600 webrtc::VideoCodec codec_settings =
601 encoder_factory.encoders()[i]->GetCodecSettings(); 601 encoder_factory.encoders()[i]->GetCodecSettings();
602 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); 602 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams);
603 EXPECT_GT(codec_settings.width, prev_width); 603 EXPECT_GT(codec_settings.width, prev_width);
604 prev_width = codec_settings.width; 604 prev_width = codec_settings.width;
605 } 605 }
606 606
607 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), NULL)); 607 channel->SetSource(ssrcs.front(), NULL);
608 608
609 channel.reset(); 609 channel.reset();
610 ASSERT_EQ(0u, encoder_factory.encoders().size()); 610 ASSERT_EQ(0u, encoder_factory.encoders().size());
611 } 611 }
612 612
613 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { 613 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) {
614 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 614 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
615 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); 615 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264");
616 std::vector<cricket::VideoCodec> codecs; 616 std::vector<cricket::VideoCodec> codecs;
617 codecs.push_back(kH264Codec); 617 codecs.push_back(kH264Codec);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 660 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
661 661
662 EXPECT_TRUE( 662 EXPECT_TRUE(
663 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 663 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
664 EXPECT_TRUE(channel->SetSend(true)); 664 EXPECT_TRUE(channel->SetSend(true));
665 665
666 // Send a fake frame, or else the media engine will configure the simulcast 666 // Send a fake frame, or else the media engine will configure the simulcast
667 // encoder adapter at a low-enough size that it'll only create a single 667 // encoder adapter at a low-enough size that it'll only create a single
668 // encoder layer. 668 // encoder layer.
669 cricket::FakeVideoCapturer capturer; 669 cricket::FakeVideoCapturer capturer;
670 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 670 channel->SetSource(ssrcs.front(), &capturer);
671 EXPECT_EQ(cricket::CS_RUNNING, 671 EXPECT_EQ(cricket::CS_RUNNING,
672 capturer.Start(capturer.GetSupportedFormats()->front())); 672 capturer.Start(capturer.GetSupportedFormats()->front()));
673 EXPECT_TRUE(capturer.CaptureFrame()); 673 EXPECT_TRUE(capturer.CaptureFrame());
674 674
675 ASSERT_GT(encoder_factory.encoders().size(), 1u); 675 ASSERT_GT(encoder_factory.encoders().size(), 1u);
676 EXPECT_EQ(webrtc::kVideoCodecVP8, 676 EXPECT_EQ(webrtc::kVideoCodecVP8,
677 encoder_factory.encoders()[0]->GetCodecSettings().codecType); 677 encoder_factory.encoders()[0]->GetCodecSettings().codecType);
678 678
679 channel.reset(); 679 channel.reset();
680 // Make sure DestroyVideoEncoder was called on the factory. 680 // Make sure DestroyVideoEncoder was called on the factory.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 714 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
715 715
716 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 716 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
717 EXPECT_TRUE( 717 EXPECT_TRUE(
718 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); 718 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs)));
719 719
720 // Send a frame of 720p. This should trigger a "real" encoder initialization. 720 // Send a frame of 720p. This should trigger a "real" encoder initialization.
721 cricket::VideoFormat format( 721 cricket::VideoFormat format(
722 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); 722 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420);
723 cricket::FakeVideoCapturer capturer; 723 cricket::FakeVideoCapturer capturer;
724 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], &capturer)); 724 channel->SetSource(ssrcs[0], &capturer);
725 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); 725 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
726 EXPECT_TRUE(capturer.CaptureFrame()); 726 EXPECT_TRUE(capturer.CaptureFrame());
727 727
728 ASSERT_EQ(1u, encoder_factory.encoders().size()); 728 ASSERT_EQ(1u, encoder_factory.encoders().size());
729 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; 729 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0];
730 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); 730 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType);
731 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); 731 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams);
732 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], nullptr)); 732 channel->SetSource(ssrcs[0], nullptr);
733 } 733 }
734 734
735 // Test that external codecs are added to the end of the supported codec list. 735 // Test that external codecs are added to the end of the supported codec list.
736 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { 736 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) {
737 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 737 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
738 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, 738 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown,
739 "FakeExternalCodec"); 739 "FakeExternalCodec");
740 engine_.SetExternalEncoderFactory(&encoder_factory); 740 engine_.SetExternalEncoderFactory(&encoder_factory);
741 engine_.Init(); 741 engine_.Init();
742 742
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 842
843 WEBRTC_BASE_TEST(AdaptResolution4x3); 843 WEBRTC_BASE_TEST(AdaptResolution4x3);
844 844
845 // TODO(juberti): Restore this test once we support sending 0 fps. 845 // TODO(juberti): Restore this test once we support sending 0 fps.
846 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames); 846 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames);
847 // TODO(juberti): Understand why we get decode errors on this test. 847 // TODO(juberti): Understand why we get decode errors on this test.
848 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate); 848 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate);
849 849
850 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames); 850 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames);
851 851
852 WEBRTC_BASE_TEST(MuteStream);
853
854 WEBRTC_BASE_TEST(MultipleSendStreams); 852 WEBRTC_BASE_TEST(MultipleSendStreams);
855 853
856 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { 854 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) {
857 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0)); 855 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0));
858 } 856 }
859 857
860 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { 858 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) {
861 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0)); 859 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0));
862 } 860 }
863 861
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
1531 channel_->SetSend(false); 1529 channel_->SetSend(false);
1532 1530
1533 FakeVideoSendStream* stream = AddSendStream(); 1531 FakeVideoSendStream* stream = AddSendStream();
1534 1532
1535 // No frames entered, using default dimensions. 1533 // No frames entered, using default dimensions.
1536 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 1534 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
1537 EXPECT_EQ(176u, streams[0].width); 1535 EXPECT_EQ(176u, streams[0].width);
1538 EXPECT_EQ(144u, streams[0].height); 1536 EXPECT_EQ(144u, streams[0].height);
1539 1537
1540 cricket::FakeVideoCapturer capturer; 1538 cricket::FakeVideoCapturer capturer;
1541 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1539 channel_->SetSource(last_ssrc_, &capturer);
1542 EXPECT_EQ(cricket::CS_RUNNING, 1540 EXPECT_EQ(cricket::CS_RUNNING,
1543 capturer.Start(capturer.GetSupportedFormats()->front())); 1541 capturer.Start(capturer.GetSupportedFormats()->front()));
1544 EXPECT_TRUE(capturer.CaptureFrame()); 1542 EXPECT_TRUE(capturer.CaptureFrame());
1545 1543
1546 // Frame entered, should be reconfigured to new dimensions. 1544 // Frame entered, should be reconfigured to new dimensions.
1547 streams = stream->GetVideoStreams(); 1545 streams = stream->GetVideoStreams();
1548 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 1546 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
1549 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 1547 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
1550 // No frames should have been actually put in there though. 1548 // No frames should have been actually put in there though.
1551 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames()); 1549 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames());
1552 1550
1553 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1551 channel_->SetSource(last_ssrc_, NULL);
1554 } 1552 }
1555 1553
1556 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { 1554 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) {
1557 static const int kScreenshareMinBitrateKbps = 800; 1555 static const int kScreenshareMinBitrateKbps = 800;
1558 cricket::VideoCodec codec = kVp8Codec360p; 1556 cricket::VideoCodec codec = kVp8Codec360p;
1559 cricket::VideoSendParameters parameters; 1557 cricket::VideoSendParameters parameters;
1560 parameters.codecs.push_back(codec); 1558 parameters.codecs.push_back(codec);
1561 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 1559 EXPECT_TRUE(channel_->SetSendParameters(parameters));
1562 AddSendStream(); 1560 AddSendStream();
1563 1561
1564 VideoOptions min_bitrate_options; 1562 VideoOptions min_bitrate_options;
1565 min_bitrate_options.screencast_min_bitrate_kbps = 1563 min_bitrate_options.screencast_min_bitrate_kbps =
1566 rtc::Optional<int>(kScreenshareMinBitrateKbps); 1564 rtc::Optional<int>(kScreenshareMinBitrateKbps);
1567 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options); 1565 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options);
1568 1566
1569 cricket::FakeVideoCapturer capturer; 1567 cricket::FakeVideoCapturer capturer;
1570 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1568 channel_->SetSource(last_ssrc_, &capturer);
1571 cricket::VideoFormat capture_format_hd = 1569 cricket::VideoFormat capture_format_hd =
1572 capturer.GetSupportedFormats()->front(); 1570 capturer.GetSupportedFormats()->front();
1573 EXPECT_EQ(1280, capture_format_hd.width); 1571 EXPECT_EQ(1280, capture_format_hd.width);
1574 EXPECT_EQ(720, capture_format_hd.height); 1572 EXPECT_EQ(720, capture_format_hd.height);
1575 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1573 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1576 1574
1577 EXPECT_TRUE(channel_->SetSend(true)); 1575 EXPECT_TRUE(channel_->SetSend(true));
1578 1576
1579 EXPECT_TRUE(capturer.CaptureFrame()); 1577 EXPECT_TRUE(capturer.CaptureFrame());
1580 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1578 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1581 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1579 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1582 1580
1583 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 1581 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
1584 1582
1585 // Verify non-screencast settings. 1583 // Verify non-screencast settings.
1586 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1584 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1587 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1585 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1588 encoder_config.content_type); 1586 encoder_config.content_type);
1589 EXPECT_EQ(codec.width, encoder_config.streams.front().width); 1587 EXPECT_EQ(codec.width, encoder_config.streams.front().width);
1590 EXPECT_EQ(codec.height, encoder_config.streams.front().height); 1588 EXPECT_EQ(codec.height, encoder_config.streams.front().height);
1591 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) 1589 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps)
1592 << "Non-screenshare shouldn't use min-transmit bitrate."; 1590 << "Non-screenshare shouldn't use min-transmit bitrate.";
1593 1591
1594 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 1592 channel_->SetSource(last_ssrc_, nullptr);
1595 // Removing a capturer triggers a black frame to be sent. 1593 // Removing a capturer triggers a black frame to be sent.
1596 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 1594 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
1597 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1595 channel_->SetSource(last_ssrc_, &capturer);
1598 VideoOptions screencast_options; 1596 VideoOptions screencast_options;
1599 screencast_options.is_screencast = rtc::Optional<bool>(true); 1597 screencast_options.is_screencast = rtc::Optional<bool>(true);
1600 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options)); 1598 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options));
1601 EXPECT_TRUE(capturer.CaptureFrame()); 1599 EXPECT_TRUE(capturer.CaptureFrame());
1602 // Send stream not recreated after option change. 1600 // Send stream not recreated after option change.
1603 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); 1601 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front());
1604 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 1602 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
1605 1603
1606 // Verify screencast settings. 1604 // Verify screencast settings.
1607 encoder_config = send_stream->GetEncoderConfig(); 1605 encoder_config = send_stream->GetEncoderConfig();
1608 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1606 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1609 encoder_config.content_type); 1607 encoder_config.content_type);
1610 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, 1608 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000,
1611 encoder_config.min_transmit_bitrate_bps); 1609 encoder_config.min_transmit_bitrate_bps);
1612 1610
1613 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); 1611 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width);
1614 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); 1612 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height);
1615 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); 1613 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty());
1616 1614
1617 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1615 channel_->SetSource(last_ssrc_, NULL);
1618 } 1616 }
1619 1617
1620 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { 1618 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) {
1621 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 1619 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
1622 ASSERT_TRUE( 1620 ASSERT_TRUE(
1623 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 1621 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
1624 EXPECT_TRUE(channel_->SetSend(true)); 1622 EXPECT_TRUE(channel_->SetSend(true));
1625 1623
1626 cricket::FakeVideoCapturer capturer; 1624 cricket::FakeVideoCapturer capturer;
1627 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &capturer)); 1625 channel_->SetSource(kSsrc, &capturer);
1628 EXPECT_EQ(cricket::CS_RUNNING, 1626 EXPECT_EQ(cricket::CS_RUNNING,
1629 capturer.Start(capturer.GetSupportedFormats()->front())); 1627 capturer.Start(capturer.GetSupportedFormats()->front()));
1630 EXPECT_TRUE(capturer.CaptureFrame()); 1628 EXPECT_TRUE(capturer.CaptureFrame());
1631 1629
1632 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1630 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1633 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); 1631 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front();
1634 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); 1632 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig();
1635 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1633 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1636 encoder_config.content_type); 1634 encoder_config.content_type);
1637 1635
(...skipping 20 matching lines...) Expand all
1658 1656
1659 EXPECT_TRUE(capturer.CaptureFrame()); 1657 EXPECT_TRUE(capturer.CaptureFrame());
1660 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1658 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1661 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); 1659 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front());
1662 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); 1660 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames());
1663 1661
1664 encoder_config = stream->GetEncoderConfig(); 1662 encoder_config = stream->GetEncoderConfig();
1665 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1663 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1666 encoder_config.content_type); 1664 encoder_config.content_type);
1667 1665
1668 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); 1666 channel_->SetSource(kSsrc, NULL);
1669 } 1667 }
1670 1668
1671 TEST_F(WebRtcVideoChannel2Test, 1669 TEST_F(WebRtcVideoChannel2Test,
1672 ConferenceModeScreencastConfiguresTemporalLayer) { 1670 ConferenceModeScreencastConfiguresTemporalLayer) {
1673 static const int kConferenceScreencastTemporalBitrateBps = 1671 static const int kConferenceScreencastTemporalBitrateBps =
1674 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; 1672 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000;
1675 send_parameters_.conference_mode = true; 1673 send_parameters_.conference_mode = true;
1676 channel_->SetSendParameters(send_parameters_); 1674 channel_->SetSendParameters(send_parameters_);
1677 1675
1678 AddSendStream(); 1676 AddSendStream();
1679 VideoOptions options; 1677 VideoOptions options;
1680 options.is_screencast = rtc::Optional<bool>(true); 1678 options.is_screencast = rtc::Optional<bool>(true);
1681 channel_->SetVideoSend(last_ssrc_, true, &options); 1679 channel_->SetVideoSend(last_ssrc_, true, &options);
1682 cricket::FakeVideoCapturer capturer; 1680 cricket::FakeVideoCapturer capturer;
1683 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1681 channel_->SetSource(last_ssrc_, &capturer);
1684 cricket::VideoFormat capture_format_hd = 1682 cricket::VideoFormat capture_format_hd =
1685 capturer.GetSupportedFormats()->front(); 1683 capturer.GetSupportedFormats()->front();
1686 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1684 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1687 1685
1688 EXPECT_TRUE(channel_->SetSend(true)); 1686 EXPECT_TRUE(channel_->SetSend(true));
1689 1687
1690 EXPECT_TRUE(capturer.CaptureFrame()); 1688 EXPECT_TRUE(capturer.CaptureFrame());
1691 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1689 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1692 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1690 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1693 1691
1694 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1692 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1695 1693
1696 // Verify screencast settings. 1694 // Verify screencast settings.
1697 encoder_config = send_stream->GetEncoderConfig(); 1695 encoder_config = send_stream->GetEncoderConfig();
1698 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1696 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1699 encoder_config.content_type); 1697 encoder_config.content_type);
1700 ASSERT_EQ(1u, encoder_config.streams.size()); 1698 ASSERT_EQ(1u, encoder_config.streams.size());
1701 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); 1699 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size());
1702 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, 1700 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps,
1703 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); 1701 encoder_config.streams[0].temporal_layer_thresholds_bps[0]);
1704 1702
1705 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1703 channel_->SetSource(last_ssrc_, NULL);
1706 } 1704 }
1707 1705
1708 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { 1706 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) {
1709 FakeVideoSendStream* stream = AddSendStream(); 1707 FakeVideoSendStream* stream = AddSendStream();
1710 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); 1708 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate);
1711 } 1709 }
1712 1710
1713 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { 1711 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) {
1714 MediaConfig media_config = MediaConfig(); 1712 MediaConfig media_config = MediaConfig();
1715 media_config.video.suspend_below_min_bitrate = true; 1713 media_config.video.suspend_below_min_bitrate = true;
(...skipping 29 matching lines...) Expand all
1745 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1743 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1746 1744
1747 // Single-stream settings should apply with RTX as well (verifies that we 1745 // Single-stream settings should apply with RTX as well (verifies that we
1748 // check number of regular SSRCs and not StreamParams::ssrcs which contains 1746 // check number of regular SSRCs and not StreamParams::ssrcs which contains
1749 // both RTX and regular SSRCs). 1747 // both RTX and regular SSRCs).
1750 FakeVideoSendStream* stream = SetUpSimulcast(false, true); 1748 FakeVideoSendStream* stream = SetUpSimulcast(false, true);
1751 1749
1752 cricket::FakeVideoCapturer capturer; 1750 cricket::FakeVideoCapturer capturer;
1753 EXPECT_EQ(cricket::CS_RUNNING, 1751 EXPECT_EQ(cricket::CS_RUNNING,
1754 capturer.Start(capturer.GetSupportedFormats()->front())); 1752 capturer.Start(capturer.GetSupportedFormats()->front()));
1755 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1753 channel_->SetSource(last_ssrc_, &capturer);
1756 channel_->SetSend(true); 1754 channel_->SetSend(true);
1757 1755
1758 EXPECT_TRUE(capturer.CaptureFrame()); 1756 EXPECT_TRUE(capturer.CaptureFrame());
1759 1757
1760 webrtc::VideoCodecVP8 vp8_settings; 1758 webrtc::VideoCodecVP8 vp8_settings;
1761 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1759 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1762 EXPECT_TRUE(vp8_settings.denoisingOn) 1760 EXPECT_TRUE(vp8_settings.denoisingOn)
1763 << "VP8 denoising should be on by default."; 1761 << "VP8 denoising should be on by default.";
1764 1762
1765 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1763 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
1766 1764
1767 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1765 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1768 EXPECT_FALSE(vp8_settings.denoisingOn); 1766 EXPECT_FALSE(vp8_settings.denoisingOn);
1769 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1767 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1770 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1768 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1771 1769
1772 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1770 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1773 1771
1774 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1772 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1775 EXPECT_TRUE(vp8_settings.denoisingOn); 1773 EXPECT_TRUE(vp8_settings.denoisingOn);
1776 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1774 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1777 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1775 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1778 1776
1779 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1777 channel_->SetSource(last_ssrc_, NULL);
1780 stream = SetUpSimulcast(true, false); 1778 stream = SetUpSimulcast(true, false);
1781 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1779 channel_->SetSource(last_ssrc_, &capturer);
1782 channel_->SetSend(true); 1780 channel_->SetSend(true);
1783 EXPECT_TRUE(capturer.CaptureFrame()); 1781 EXPECT_TRUE(capturer.CaptureFrame());
1784 1782
1785 EXPECT_EQ(3, stream->GetVideoStreams().size()); 1783 EXPECT_EQ(3, stream->GetVideoStreams().size());
1786 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1784 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1787 // Autmatic resize off when using simulcast. 1785 // Autmatic resize off when using simulcast.
1788 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1786 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1789 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1787 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1790 1788
1791 // In screen-share mode, denoising is forced off and simulcast disabled. 1789 // In screen-share mode, denoising is forced off and simulcast disabled.
(...skipping 10 matching lines...) Expand all
1802 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1800 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1803 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1801 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1804 1802
1805 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1803 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1806 1804
1807 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1805 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1808 EXPECT_FALSE(vp8_settings.denoisingOn); 1806 EXPECT_FALSE(vp8_settings.denoisingOn);
1809 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1807 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1810 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1808 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1811 1809
1812 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1810 channel_->SetSource(last_ssrc_, NULL);
1813 } 1811 }
1814 1812
1815 // Test that setting the same options doesn't result in the encoder being 1813 // Test that setting the same options doesn't result in the encoder being
1816 // reconfigured. 1814 // reconfigured.
1817 TEST_F(WebRtcVideoChannel2Test, SetIdenticalOptionsDoesntReconfigureEncoder) { 1815 TEST_F(WebRtcVideoChannel2Test, SetIdenticalOptionsDoesntReconfigureEncoder) {
1818 VideoOptions options; 1816 VideoOptions options;
1819 cricket::FakeVideoCapturer capturer; 1817 cricket::FakeVideoCapturer capturer;
1820 1818
1821 FakeVideoSendStream* send_stream = AddSendStream(); 1819 FakeVideoSendStream* send_stream = AddSendStream();
1822 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1820 channel_->SetSource(last_ssrc_, &capturer);
1823 EXPECT_EQ(cricket::CS_RUNNING, 1821 EXPECT_EQ(cricket::CS_RUNNING,
1824 capturer.Start(capturer.GetSupportedFormats()->front())); 1822 capturer.Start(capturer.GetSupportedFormats()->front()));
1825 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); 1823 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options));
1826 EXPECT_TRUE(capturer.CaptureFrame()); 1824 EXPECT_TRUE(capturer.CaptureFrame());
1827 // Expect 2 reconfigurations at this point, from the initial configuration 1825 // Expect 2 reconfigurations at this point, from the initial configuration
1828 // and from the dimensions of the first frame. 1826 // and from the dimensions of the first frame.
1829 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations()); 1827 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations());
1830 1828
1831 // Set the options one more time and expect no additional reconfigurations. 1829 // Set the options one more time and expect no additional reconfigurations.
1832 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); 1830 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options));
1833 EXPECT_TRUE(capturer.CaptureFrame()); 1831 EXPECT_TRUE(capturer.CaptureFrame());
1834 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations()); 1832 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations());
1835 1833
1836 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 1834 channel_->SetSource(last_ssrc_, nullptr);
1837 } 1835 }
1838 1836
1839 class Vp9SettingsTest : public WebRtcVideoChannel2Test { 1837 class Vp9SettingsTest : public WebRtcVideoChannel2Test {
1840 public: 1838 public:
1841 Vp9SettingsTest() : Vp9SettingsTest("") {} 1839 Vp9SettingsTest() : Vp9SettingsTest("") {}
1842 explicit Vp9SettingsTest(const char* field_trials) 1840 explicit Vp9SettingsTest(const char* field_trials)
1843 : WebRtcVideoChannel2Test(field_trials) { 1841 : WebRtcVideoChannel2Test(field_trials) {
1844 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); 1842 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9");
1845 } 1843 }
1846 virtual ~Vp9SettingsTest() {} 1844 virtual ~Vp9SettingsTest() {}
(...skipping 17 matching lines...) Expand all
1864 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { 1862 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) {
1865 cricket::VideoSendParameters parameters; 1863 cricket::VideoSendParameters parameters;
1866 parameters.codecs.push_back(kVp9Codec); 1864 parameters.codecs.push_back(kVp9Codec);
1867 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1865 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1868 1866
1869 FakeVideoSendStream* stream = SetUpSimulcast(false, false); 1867 FakeVideoSendStream* stream = SetUpSimulcast(false, false);
1870 1868
1871 cricket::FakeVideoCapturer capturer; 1869 cricket::FakeVideoCapturer capturer;
1872 EXPECT_EQ(cricket::CS_RUNNING, 1870 EXPECT_EQ(cricket::CS_RUNNING,
1873 capturer.Start(capturer.GetSupportedFormats()->front())); 1871 capturer.Start(capturer.GetSupportedFormats()->front()));
1874 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1872 channel_->SetSource(last_ssrc_, &capturer);
1875 channel_->SetSend(true); 1873 channel_->SetSend(true);
1876 1874
1877 EXPECT_TRUE(capturer.CaptureFrame()); 1875 EXPECT_TRUE(capturer.CaptureFrame());
1878 1876
1879 webrtc::VideoCodecVP9 vp9_settings; 1877 webrtc::VideoCodecVP9 vp9_settings;
1880 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1878 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1881 EXPECT_FALSE(vp9_settings.denoisingOn) 1879 EXPECT_FALSE(vp9_settings.denoisingOn)
1882 << "VP9 denoising should be off by default."; 1880 << "VP9 denoising should be off by default.";
1883 1881
1884 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1882 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
(...skipping 20 matching lines...) Expand all
1905 EXPECT_FALSE(vp9_settings.denoisingOn); 1903 EXPECT_FALSE(vp9_settings.denoisingOn);
1906 // Frame dropping always off for screen sharing. 1904 // Frame dropping always off for screen sharing.
1907 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1905 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1908 1906
1909 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1907 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
1910 1908
1911 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1909 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1912 EXPECT_FALSE(vp9_settings.denoisingOn); 1910 EXPECT_FALSE(vp9_settings.denoisingOn);
1913 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1911 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1914 1912
1915 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1913 channel_->SetSource(last_ssrc_, NULL);
1916 } 1914 }
1917 1915
1918 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest { 1916 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest {
1919 public: 1917 public:
1920 Vp9SettingsTestWithFieldTrial(const char* field_trials) 1918 Vp9SettingsTestWithFieldTrial(const char* field_trials)
1921 : Vp9SettingsTest(field_trials) {} 1919 : Vp9SettingsTest(field_trials) {}
1922 1920
1923 protected: 1921 protected:
1924 void VerifySettings(int num_spatial_layers, int num_temporal_layers) { 1922 void VerifySettings(int num_spatial_layers, int num_temporal_layers) {
1925 cricket::VideoSendParameters parameters; 1923 cricket::VideoSendParameters parameters;
1926 parameters.codecs.push_back(kVp9Codec); 1924 parameters.codecs.push_back(kVp9Codec);
1927 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1925 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1928 1926
1929 FakeVideoSendStream* stream = SetUpSimulcast(false, false); 1927 FakeVideoSendStream* stream = SetUpSimulcast(false, false);
1930 1928
1931 cricket::FakeVideoCapturer capturer; 1929 cricket::FakeVideoCapturer capturer;
1932 EXPECT_EQ(cricket::CS_RUNNING, 1930 EXPECT_EQ(cricket::CS_RUNNING,
1933 capturer.Start(capturer.GetSupportedFormats()->front())); 1931 capturer.Start(capturer.GetSupportedFormats()->front()));
1934 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1932 channel_->SetSource(last_ssrc_, &capturer);
1935 channel_->SetSend(true); 1933 channel_->SetSend(true);
1936 1934
1937 EXPECT_TRUE(capturer.CaptureFrame()); 1935 EXPECT_TRUE(capturer.CaptureFrame());
1938 1936
1939 webrtc::VideoCodecVP9 vp9_settings; 1937 webrtc::VideoCodecVP9 vp9_settings;
1940 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1938 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1941 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers); 1939 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers);
1942 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers); 1940 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers);
1943 1941
1944 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1942 channel_->SetSource(last_ssrc_, NULL);
1945 } 1943 }
1946 }; 1944 };
1947 1945
1948 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial { 1946 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial {
1949 public: 1947 public:
1950 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {} 1948 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {}
1951 }; 1949 };
1952 1950
1953 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) { 1951 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) {
1954 const int kNumSpatialLayers = 1; 1952 const int kNumSpatialLayers = 1;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1999 parameters.codecs.push_back(codec); 1997 parameters.codecs.push_back(codec);
2000 1998
2001 MediaConfig media_config = MediaConfig(); 1999 MediaConfig media_config = MediaConfig();
2002 channel_.reset( 2000 channel_.reset(
2003 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 2001 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
2004 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2002 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2005 2003
2006 AddSendStream(); 2004 AddSendStream();
2007 2005
2008 cricket::FakeVideoCapturer capturer; 2006 cricket::FakeVideoCapturer capturer;
2009 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2007 channel_->SetSource(last_ssrc_, &capturer);
2010 ASSERT_EQ(cricket::CS_RUNNING, 2008 ASSERT_EQ(cricket::CS_RUNNING,
2011 capturer.Start(capturer.GetSupportedFormats()->front())); 2009 capturer.Start(capturer.GetSupportedFormats()->front()));
2012 ASSERT_TRUE(channel_->SetSend(true)); 2010 ASSERT_TRUE(channel_->SetSend(true));
2013 2011
2014 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 2012 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2015 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 2013 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2016 webrtc::LoadObserver* overuse_callback = 2014 webrtc::LoadObserver* overuse_callback =
2017 send_stream->GetConfig().overuse_callback; 2015 send_stream->GetConfig().overuse_callback;
2018 ASSERT_TRUE(overuse_callback != NULL); 2016 ASSERT_TRUE(overuse_callback != NULL);
2019 2017
(...skipping 29 matching lines...) Expand all
2049 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); 2047 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth());
2050 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); 2048 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight());
2051 2049
2052 // Trigger underuse which should go back up in resolution. 2050 // Trigger underuse which should go back up in resolution.
2053 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2051 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2054 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); 2052 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420));
2055 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); 2053 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames());
2056 EXPECT_EQ(1284, send_stream->GetLastWidth()); 2054 EXPECT_EQ(1284, send_stream->GetLastWidth());
2057 EXPECT_EQ(724, send_stream->GetLastHeight()); 2055 EXPECT_EQ(724, send_stream->GetLastHeight());
2058 2056
2059 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2057 channel_->SetSource(last_ssrc_, NULL);
2060 } 2058 }
2061 2059
2062 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, 2060 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse,
2063 bool is_screenshare) { 2061 bool is_screenshare) {
2064 cricket::VideoCodec codec = kVp8Codec720p; 2062 cricket::VideoCodec codec = kVp8Codec720p;
2065 cricket::VideoSendParameters parameters; 2063 cricket::VideoSendParameters parameters;
2066 parameters.codecs.push_back(codec); 2064 parameters.codecs.push_back(codec);
2067 2065
2068 MediaConfig media_config = MediaConfig(); 2066 MediaConfig media_config = MediaConfig();
2069 if (!enable_overuse) { 2067 if (!enable_overuse) {
2070 media_config.video.enable_cpu_overuse_detection = false; 2068 media_config.video.enable_cpu_overuse_detection = false;
2071 } 2069 }
2072 channel_.reset( 2070 channel_.reset(
2073 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 2071 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
2074 2072
2075 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2073 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2076 2074
2077 AddSendStream(); 2075 AddSendStream();
2078 2076
2079 VideoOptions options; 2077 VideoOptions options;
2080 options.is_screencast = rtc::Optional<bool>(is_screenshare); 2078 options.is_screencast = rtc::Optional<bool>(is_screenshare);
2081 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); 2079 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options));
2082 2080
2083 cricket::FakeVideoCapturer capturer; 2081 cricket::FakeVideoCapturer capturer;
2084 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2082 channel_->SetSource(last_ssrc_, &capturer);
2085 EXPECT_EQ(cricket::CS_RUNNING, 2083 EXPECT_EQ(cricket::CS_RUNNING,
2086 capturer.Start(capturer.GetSupportedFormats()->front())); 2084 capturer.Start(capturer.GetSupportedFormats()->front()));
2087 2085
2088 EXPECT_TRUE(channel_->SetSend(true)); 2086 EXPECT_TRUE(channel_->SetSend(true));
2089 2087
2090 // Trigger overuse. 2088 // Trigger overuse.
2091 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 2089 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2092 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 2090 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2093 webrtc::LoadObserver* overuse_callback = 2091 webrtc::LoadObserver* overuse_callback =
2094 send_stream->GetConfig().overuse_callback; 2092 send_stream->GetConfig().overuse_callback;
2095 2093
2096 if (!enable_overuse) { 2094 if (!enable_overuse) {
2097 ASSERT_TRUE(overuse_callback == NULL); 2095 ASSERT_TRUE(overuse_callback == NULL);
2098 2096
2099 EXPECT_TRUE(capturer.CaptureFrame()); 2097 EXPECT_TRUE(capturer.CaptureFrame());
2100 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2098 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2101 2099
2102 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2100 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2103 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2101 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2104 2102
2105 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2103 channel_->SetSource(last_ssrc_, NULL);
2106 return; 2104 return;
2107 } 2105 }
2108 2106
2109 ASSERT_TRUE(overuse_callback != NULL); 2107 ASSERT_TRUE(overuse_callback != NULL);
2110 EXPECT_TRUE(capturer.CaptureFrame()); 2108 EXPECT_TRUE(capturer.CaptureFrame());
2111 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2109 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2112 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2110 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2113 2111
2114 EXPECT_TRUE(capturer.CaptureFrame()); 2112 EXPECT_TRUE(capturer.CaptureFrame());
2115 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 2113 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
2116 2114
2117 if (is_screenshare) { 2115 if (is_screenshare) {
2118 // Do not adapt screen share. 2116 // Do not adapt screen share.
2119 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2117 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2120 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2118 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2121 } else { 2119 } else {
2122 EXPECT_LT(send_stream->GetLastWidth(), codec.width); 2120 EXPECT_LT(send_stream->GetLastWidth(), codec.width);
2123 EXPECT_LT(send_stream->GetLastHeight(), codec.height); 2121 EXPECT_LT(send_stream->GetLastHeight(), codec.height);
2124 } 2122 }
2125 2123
2126 // Trigger underuse which should go back to normal resolution. 2124 // Trigger underuse which should go back to normal resolution.
2127 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2125 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2128 EXPECT_TRUE(capturer.CaptureFrame()); 2126 EXPECT_TRUE(capturer.CaptureFrame());
2129 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 2127 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
2130 2128
2131 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2129 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2132 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2130 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2133 2131
2134 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2132 channel_->SetSource(last_ssrc_, NULL);
2135 } 2133 }
2136 2134
2137 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { 2135 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) {
2138 // Start at last timestamp to verify that wraparounds are estimated correctly. 2136 // Start at last timestamp to verify that wraparounds are estimated correctly.
2139 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; 2137 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu;
2140 static const int64_t kInitialNtpTimeMs = 1247891230; 2138 static const int64_t kInitialNtpTimeMs = 1247891230;
2141 static const int kFrameOffsetMs = 20; 2139 static const int kFrameOffsetMs = 20;
2142 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2140 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2143 2141
2144 FakeVideoReceiveStream* stream = AddRecvStream(); 2142 FakeVideoReceiveStream* stream = AddRecvStream();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
2255 2253
2256 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { 2254 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) {
2257 cricket::VideoSendParameters parameters; 2255 cricket::VideoSendParameters parameters;
2258 parameters.codecs.push_back(kVp8Codec720p); 2256 parameters.codecs.push_back(kVp8Codec720p);
2259 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2257 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2260 channel_->SetSend(true); 2258 channel_->SetSend(true);
2261 2259
2262 FakeVideoSendStream* stream = AddSendStream(); 2260 FakeVideoSendStream* stream = AddSendStream();
2263 2261
2264 cricket::FakeVideoCapturer capturer; 2262 cricket::FakeVideoCapturer capturer;
2265 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2263 channel_->SetSource(last_ssrc_, &capturer);
2266 EXPECT_EQ(cricket::CS_RUNNING, 2264 EXPECT_EQ(cricket::CS_RUNNING,
2267 capturer.Start(capturer.GetSupportedFormats()->front())); 2265 capturer.Start(capturer.GetSupportedFormats()->front()));
2268 EXPECT_TRUE(capturer.CaptureFrame()); 2266 EXPECT_TRUE(capturer.CaptureFrame());
2269 2267
2270 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2268 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2271 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 2269 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
2272 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 2270 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
2273 2271
2274 parameters.codecs.clear(); 2272 parameters.codecs.clear();
2275 parameters.codecs.push_back(kVp8Codec360p); 2273 parameters.codecs.push_back(kVp8Codec360p);
2276 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2274 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2277 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); 2275 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams();
2278 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); 2276 EXPECT_EQ(kVp8Codec360p.width, streams[0].width);
2279 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); 2277 EXPECT_EQ(kVp8Codec360p.height, streams[0].height);
2280 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2278 channel_->SetSource(last_ssrc_, NULL);
2281 } 2279 }
2282 2280
2283 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { 2281 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) {
2284 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", 2282 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200",
2285 200000); 2283 200000);
2286 } 2284 }
2287 2285
2288 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { 2286 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) {
2289 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); 2287 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000);
2290 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); 2288 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2334 2332
2335 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { 2333 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
2336 cricket::VideoSendParameters parameters; 2334 cricket::VideoSendParameters parameters;
2337 parameters.codecs.push_back(kVp8Codec720p); 2335 parameters.codecs.push_back(kVp8Codec720p);
2338 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2336 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2339 channel_->SetSend(true); 2337 channel_->SetSend(true);
2340 2338
2341 FakeVideoSendStream* stream = AddSendStream(); 2339 FakeVideoSendStream* stream = AddSendStream();
2342 2340
2343 cricket::FakeVideoCapturer capturer; 2341 cricket::FakeVideoCapturer capturer;
2344 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2342 channel_->SetSource(last_ssrc_, &capturer);
2345 EXPECT_EQ(cricket::CS_RUNNING, 2343 EXPECT_EQ(cricket::CS_RUNNING,
2346 capturer.Start(capturer.GetSupportedFormats()->front())); 2344 capturer.Start(capturer.GetSupportedFormats()->front()));
2347 2345
2348 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2346 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2349 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; 2347 int initial_max_bitrate_bps = streams[0].max_bitrate_bps;
2350 EXPECT_GT(initial_max_bitrate_bps, 0); 2348 EXPECT_GT(initial_max_bitrate_bps, 0);
2351 2349
2352 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2350 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2353 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2351 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2354 // Insert a frame to update the encoder config. 2352 // Insert a frame to update the encoder config.
2355 EXPECT_TRUE(capturer.CaptureFrame()); 2353 EXPECT_TRUE(capturer.CaptureFrame());
2356 streams = stream->GetVideoStreams(); 2354 streams = stream->GetVideoStreams();
2357 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); 2355 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps);
2358 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 2356 channel_->SetSource(last_ssrc_, nullptr);
2359 } 2357 }
2360 2358
2361 TEST_F(WebRtcVideoChannel2Test, 2359 TEST_F(WebRtcVideoChannel2Test,
2362 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { 2360 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) {
2363 cricket::VideoSendParameters parameters; 2361 cricket::VideoSendParameters parameters;
2364 parameters.codecs.push_back(kVp8Codec720p); 2362 parameters.codecs.push_back(kVp8Codec720p);
2365 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2363 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2366 channel_->SetSend(true); 2364 channel_->SetSend(true);
2367 2365
2368 FakeVideoSendStream* stream = AddSendStream( 2366 FakeVideoSendStream* stream = AddSendStream(
2369 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2367 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2370 2368
2371 // Send a frame to make sure this scales up to >1 stream (simulcast). 2369 // Send a frame to make sure this scales up to >1 stream (simulcast).
2372 cricket::FakeVideoCapturer capturer; 2370 cricket::FakeVideoCapturer capturer;
2373 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); 2371 channel_->SetSource(kSsrcs3[0], &capturer);
2374 EXPECT_EQ(cricket::CS_RUNNING, 2372 EXPECT_EQ(cricket::CS_RUNNING,
2375 capturer.Start(capturer.GetSupportedFormats()->front())); 2373 capturer.Start(capturer.GetSupportedFormats()->front()));
2376 EXPECT_TRUE(capturer.CaptureFrame()); 2374 EXPECT_TRUE(capturer.CaptureFrame());
2377 2375
2378 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2376 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2379 ASSERT_GT(streams.size(), 1u) 2377 ASSERT_GT(streams.size(), 1u)
2380 << "Without simulcast this test doesn't make sense."; 2378 << "Without simulcast this test doesn't make sense.";
2381 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2379 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2382 EXPECT_GT(initial_max_bitrate_bps, 0); 2380 EXPECT_GT(initial_max_bitrate_bps, 0);
2383 2381
2384 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2382 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2385 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2383 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2386 // Insert a frame to update the encoder config. 2384 // Insert a frame to update the encoder config.
2387 EXPECT_TRUE(capturer.CaptureFrame()); 2385 EXPECT_TRUE(capturer.CaptureFrame());
2388 streams = stream->GetVideoStreams(); 2386 streams = stream->GetVideoStreams();
2389 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2387 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2390 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); 2388 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps);
2391 2389
2392 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); 2390 channel_->SetSource(kSsrcs3[0], nullptr);
2393 } 2391 }
2394 2392
2395 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { 2393 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) {
2396 static const char* kMaxQuantization = "21"; 2394 static const char* kMaxQuantization = "21";
2397 cricket::VideoSendParameters parameters; 2395 cricket::VideoSendParameters parameters;
2398 parameters.codecs.push_back(kVp8Codec); 2396 parameters.codecs.push_back(kVp8Codec);
2399 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; 2397 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization;
2400 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2398 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2401 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), 2399 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)),
2402 AddSendStream()->GetVideoStreams().back().max_qp); 2400 AddSendStream()->GetVideoStreams().back().max_qp);
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
2752 2750
2753 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { 2751 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) {
2754 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2752 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2755 2753
2756 // Capture format VGA. 2754 // Capture format VGA.
2757 cricket::FakeVideoCapturer video_capturer_vga; 2755 cricket::FakeVideoCapturer video_capturer_vga;
2758 const std::vector<cricket::VideoFormat>* formats = 2756 const std::vector<cricket::VideoFormat>* formats =
2759 video_capturer_vga.GetSupportedFormats(); 2757 video_capturer_vga.GetSupportedFormats();
2760 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2758 cricket::VideoFormat capture_format_vga = (*formats)[1];
2761 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2759 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2762 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2760 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2763 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2761 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2764 2762
2765 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2763 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2766 cricket::VideoSendParameters parameters; 2764 cricket::VideoSendParameters parameters;
2767 parameters.codecs.push_back(send_codec); 2765 parameters.codecs.push_back(send_codec);
2768 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2766 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2769 EXPECT_TRUE(channel_->SetSend(true)); 2767 EXPECT_TRUE(channel_->SetSend(true));
2770 2768
2771 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2769 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2772 2770
(...skipping 17 matching lines...) Expand all
2790 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2788 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2791 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2789 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2792 info.Clear(); 2790 info.Clear();
2793 EXPECT_TRUE(channel_->GetStats(&info)); 2791 EXPECT_TRUE(channel_->GetStats(&info));
2794 ASSERT_EQ(1U, info.senders.size()); 2792 ASSERT_EQ(1U, info.senders.size());
2795 EXPECT_EQ(2, info.senders[0].adapt_changes); 2793 EXPECT_EQ(2, info.senders[0].adapt_changes);
2796 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2794 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2797 info.senders[0].adapt_reason); 2795 info.senders[0].adapt_reason);
2798 2796
2799 // No capturer (no adapter). Adapt changes from old adapter should be kept. 2797 // No capturer (no adapter). Adapt changes from old adapter should be kept.
2800 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2798 channel_->SetSource(kSsrcs3[0], NULL);
2801 info.Clear(); 2799 info.Clear();
2802 EXPECT_TRUE(channel_->GetStats(&info)); 2800 EXPECT_TRUE(channel_->GetStats(&info));
2803 ASSERT_EQ(1U, info.senders.size()); 2801 ASSERT_EQ(1U, info.senders.size());
2804 EXPECT_EQ(2, info.senders[0].adapt_changes); 2802 EXPECT_EQ(2, info.senders[0].adapt_changes);
2805 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2803 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2806 info.senders[0].adapt_reason); 2804 info.senders[0].adapt_reason);
2807 2805
2808 // Set new capturer, capture format HD. 2806 // Set new capturer, capture format HD.
2809 cricket::FakeVideoCapturer video_capturer_hd; 2807 cricket::FakeVideoCapturer video_capturer_hd;
2810 cricket::VideoFormat capture_format_hd = (*formats)[0]; 2808 cricket::VideoFormat capture_format_hd = (*formats)[0];
2811 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); 2809 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd));
2812 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); 2810 channel_->SetSource(kSsrcs3[0], &video_capturer_hd);
2813 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2811 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2814 2812
2815 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. 2813 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2.
2816 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2814 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2817 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2815 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2818 info.Clear(); 2816 info.Clear();
2819 EXPECT_TRUE(channel_->GetStats(&info)); 2817 EXPECT_TRUE(channel_->GetStats(&info));
2820 ASSERT_EQ(1U, info.senders.size()); 2818 ASSERT_EQ(1U, info.senders.size());
2821 EXPECT_EQ(3, info.senders[0].adapt_changes); 2819 EXPECT_EQ(3, info.senders[0].adapt_changes);
2822 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, 2820 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU,
2823 info.senders[0].adapt_reason); 2821 info.senders[0].adapt_reason);
2824 2822
2825 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2823 channel_->SetSource(kSsrcs3[0], NULL);
2826 } 2824 }
2827 2825
2828 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { 2826 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) {
2829 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2827 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2830 2828
2831 // Capture format VGA. 2829 // Capture format VGA.
2832 cricket::FakeVideoCapturer video_capturer_vga; 2830 cricket::FakeVideoCapturer video_capturer_vga;
2833 const std::vector<cricket::VideoFormat>* formats = 2831 const std::vector<cricket::VideoFormat>* formats =
2834 video_capturer_vga.GetSupportedFormats(); 2832 video_capturer_vga.GetSupportedFormats();
2835 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2833 cricket::VideoFormat capture_format_vga = (*formats)[1];
2836 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2834 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2837 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2835 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2838 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2836 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2839 2837
2840 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2838 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2841 cricket::VideoSendParameters parameters; 2839 cricket::VideoSendParameters parameters;
2842 parameters.codecs.push_back(send_codec); 2840 parameters.codecs.push_back(send_codec);
2843 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2841 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2844 EXPECT_TRUE(channel_->SetSend(true)); 2842 EXPECT_TRUE(channel_->SetSend(true));
2845 2843
2846 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2844 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2847 2845
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2880 2878
2881 // Reset bandwidth limitation state -> adapt NONE. 2879 // Reset bandwidth limitation state -> adapt NONE.
2882 stats.bw_limited_resolution = false; 2880 stats.bw_limited_resolution = false;
2883 fake_call_->GetVideoSendStreams().front()->SetStats(stats); 2881 fake_call_->GetVideoSendStreams().front()->SetStats(stats);
2884 info.Clear(); 2882 info.Clear();
2885 EXPECT_TRUE(channel_->GetStats(&info)); 2883 EXPECT_TRUE(channel_->GetStats(&info));
2886 ASSERT_EQ(1U, info.senders.size()); 2884 ASSERT_EQ(1U, info.senders.size());
2887 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2885 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2888 info.senders[0].adapt_reason); 2886 info.senders[0].adapt_reason);
2889 2887
2890 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2888 channel_->SetSource(kSsrcs3[0], NULL);
2891 } 2889 }
2892 2890
2893 TEST_F(WebRtcVideoChannel2Test, 2891 TEST_F(WebRtcVideoChannel2Test,
2894 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { 2892 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) {
2895 FakeVideoSendStream* stream = AddSendStream(); 2893 FakeVideoSendStream* stream = AddSendStream();
2896 webrtc::VideoSendStream::Stats stats; 2894 webrtc::VideoSendStream::Stats stats;
2897 stats.bw_limited_resolution = true; 2895 stats.bw_limited_resolution = true;
2898 stream->SetStats(stats); 2896 stream->SetStats(stats);
2899 2897
2900 cricket::VideoMediaInfo info; 2898 cricket::VideoMediaInfo info;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
3242 } 3240 }
3243 3241
3244 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { 3242 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
3245 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); 3243 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false);
3246 } 3244 }
3247 3245
3248 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { 3246 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) {
3249 AddSendStream(); 3247 AddSendStream();
3250 3248
3251 cricket::FakeVideoCapturer capturer; 3249 cricket::FakeVideoCapturer capturer;
3252 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 3250 channel_->SetSource(last_ssrc_, &capturer);
3253 cricket::VideoFormat capture_format_hd = 3251 cricket::VideoFormat capture_format_hd =
3254 capturer.GetSupportedFormats()->front(); 3252 capturer.GetSupportedFormats()->front();
3255 EXPECT_EQ(1280, capture_format_hd.width); 3253 EXPECT_EQ(1280, capture_format_hd.width);
3256 EXPECT_EQ(720, capture_format_hd.height); 3254 EXPECT_EQ(720, capture_format_hd.height);
3257 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 3255 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
3258 EXPECT_TRUE(channel_->SetSend(true)); 3256 EXPECT_TRUE(channel_->SetSend(true));
3259 3257
3260 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); 3258 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer);
3261 EXPECT_TRUE(default_encoder_bitrate > 1000); 3259 EXPECT_TRUE(default_encoder_bitrate > 1000);
3262 3260
3263 // TODO(skvlad): Resolve the inconsistency between the interpretation 3261 // TODO(skvlad): Resolve the inconsistency between the interpretation
3264 // of the global bitrate limit for audio and video: 3262 // of the global bitrate limit for audio and video:
3265 // - Audio: max_bandwidth_bps = 0 - fail the operation, 3263 // - Audio: max_bandwidth_bps = 0 - fail the operation,
3266 // max_bandwidth_bps = -1 - remove the bandwidth limit 3264 // max_bandwidth_bps = -1 - remove the bandwidth limit
3267 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, 3265 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit,
3268 // max_bandwidth_bps = -1 - do not change the previously set 3266 // max_bandwidth_bps = -1 - do not change the previously set
3269 // limit. 3267 // limit.
3270 3268
3271 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); 3269 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000);
3272 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); 3270 SetAndExpectMaxBitrate(capturer, 1000, 800, 800);
3273 SetAndExpectMaxBitrate(capturer, 600, 800, 600); 3271 SetAndExpectMaxBitrate(capturer, 600, 800, 600);
3274 SetAndExpectMaxBitrate(capturer, 0, 800, 800); 3272 SetAndExpectMaxBitrate(capturer, 0, 800, 800);
3275 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); 3273 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate);
3276 3274
3277 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 3275 channel_->SetSource(last_ssrc_, NULL);
3278 } 3276 }
3279 3277
3280 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { 3278 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) {
3281 webrtc::RtpParameters nonexistent_parameters = 3279 webrtc::RtpParameters nonexistent_parameters =
3282 channel_->GetRtpParameters(last_ssrc_); 3280 channel_->GetRtpParameters(last_ssrc_);
3283 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); 3281 EXPECT_EQ(0, nonexistent_parameters.encodings.size());
3284 3282
3285 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); 3283 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters());
3286 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); 3284 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters));
3287 } 3285 }
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
3401 3399
3402 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 3400 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
3403 RTC_DCHECK(num_configured_streams <= ssrcs.size()); 3401 RTC_DCHECK(num_configured_streams <= ssrcs.size());
3404 ssrcs.resize(num_configured_streams); 3402 ssrcs.resize(num_configured_streams);
3405 3403
3406 FakeVideoSendStream* stream = 3404 FakeVideoSendStream* stream =
3407 AddSendStream(CreateSimStreamParams("cname", ssrcs)); 3405 AddSendStream(CreateSimStreamParams("cname", ssrcs));
3408 // Send a full-size frame to trigger a stream reconfiguration to use all 3406 // Send a full-size frame to trigger a stream reconfiguration to use all
3409 // expected simulcast layers. 3407 // expected simulcast layers.
3410 cricket::FakeVideoCapturer capturer; 3408 cricket::FakeVideoCapturer capturer;
3411 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); 3409 channel_->SetSource(ssrcs.front(), &capturer);
3412 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( 3410 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat(
3413 codec.width, codec.height, 3411 codec.width, codec.height,
3414 cricket::VideoFormat::FpsToInterval(30), 3412 cricket::VideoFormat::FpsToInterval(30),
3415 cricket::FOURCC_I420))); 3413 cricket::FOURCC_I420)));
3416 channel_->SetSend(true); 3414 channel_->SetSend(true);
3417 EXPECT_TRUE(capturer.CaptureFrame()); 3415 EXPECT_TRUE(capturer.CaptureFrame());
3418 3416
3419 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); 3417 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams();
3420 ASSERT_EQ(expected_num_streams, video_streams.size()); 3418 ASSERT_EQ(expected_num_streams, video_streams.size());
3421 3419
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3458 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; 3456 total_max_bitrate_bps += video_streams[i].max_bitrate_bps;
3459 } else { 3457 } else {
3460 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; 3458 total_max_bitrate_bps += video_streams[i].target_bitrate_bps;
3461 } 3459 }
3462 } 3460 }
3463 cricket::VideoMediaInfo info; 3461 cricket::VideoMediaInfo info;
3464 ASSERT_TRUE(channel_->GetStats(&info)); 3462 ASSERT_TRUE(channel_->GetStats(&info));
3465 ASSERT_EQ(1u, info.senders.size()); 3463 ASSERT_EQ(1u, info.senders.size());
3466 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); 3464 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate);
3467 3465
3468 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); 3466 channel_->SetSource(ssrcs.front(), NULL);
3469 } 3467 }
3470 3468
3471 FakeVideoSendStream* AddSendStream() { 3469 FakeVideoSendStream* AddSendStream() {
3472 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); 3470 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++));
3473 } 3471 }
3474 3472
3475 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { 3473 FakeVideoSendStream* AddSendStream(const StreamParams& sp) {
3476 size_t num_streams = 3474 size_t num_streams =
3477 fake_call_.GetVideoSendStreams().size(); 3475 fake_call_.GetVideoSendStreams().size();
3478 EXPECT_TRUE(channel_->AddSendStream(sp)); 3476 EXPECT_TRUE(channel_->AddSendStream(sp));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3515 } 3513 }
3516 3514
3517 // Test that we normalize send codec format size in simulcast. 3515 // Test that we normalize send codec format size in simulcast.
3518 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3516 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3519 cricket::VideoCodec codec(kVp8Codec270p); 3517 cricket::VideoCodec codec(kVp8Codec270p);
3520 codec.width += 1; 3518 codec.width += 1;
3521 codec.height += 1; 3519 codec.height += 1;
3522 VerifySimulcastSettings(codec, 2, 2); 3520 VerifySimulcastSettings(codec, 2, 2);
3523 } 3521 }
3524 } // namespace cricket 3522 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698