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

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: Rebased, no longer any proxy object changes. 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
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | webrtc/pc/channel.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2057 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); 2055 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth());
2058 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); 2056 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight());
2059 2057
2060 // Trigger underuse which should go back up in resolution. 2058 // Trigger underuse which should go back up in resolution.
2061 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2059 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2062 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); 2060 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420));
2063 EXPECT_EQ(7, send_stream->GetNumberOfSwappedFrames()); 2061 EXPECT_EQ(7, send_stream->GetNumberOfSwappedFrames());
2064 EXPECT_EQ(1284, send_stream->GetLastWidth()); 2062 EXPECT_EQ(1284, send_stream->GetLastWidth());
2065 EXPECT_EQ(724, send_stream->GetLastHeight()); 2063 EXPECT_EQ(724, send_stream->GetLastHeight());
2066 2064
2067 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2065 channel_->SetSource(last_ssrc_, NULL);
2068 } 2066 }
2069 2067
2070 TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) { 2068 TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) {
2071 cricket::VideoCodec codec = kVp8Codec720p; 2069 cricket::VideoCodec codec = kVp8Codec720p;
2072 cricket::VideoSendParameters parameters; 2070 cricket::VideoSendParameters parameters;
2073 parameters.codecs.push_back(codec); 2071 parameters.codecs.push_back(codec);
2074 2072
2075 MediaConfig media_config = MediaConfig(); 2073 MediaConfig media_config = MediaConfig();
2076 channel_.reset( 2074 channel_.reset(
2077 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 2075 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
2078 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2076 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2079 2077
2080 AddSendStream(); 2078 AddSendStream();
2081 2079
2082 cricket::FakeVideoCapturer capturer; 2080 cricket::FakeVideoCapturer capturer;
2083 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2081 channel_->SetSource(last_ssrc_, &capturer);
2084 ASSERT_EQ(cricket::CS_RUNNING, 2082 ASSERT_EQ(cricket::CS_RUNNING,
2085 capturer.Start(capturer.GetSupportedFormats()->front())); 2083 capturer.Start(capturer.GetSupportedFormats()->front()));
2086 ASSERT_TRUE(channel_->SetSend(true)); 2084 ASSERT_TRUE(channel_->SetSend(true));
2087 cricket::VideoOptions camera_options; 2085 cricket::VideoOptions camera_options;
2088 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options); 2086 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options);
2089 2087
2090 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 2088 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2091 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 2089 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2092 webrtc::LoadObserver* overuse_callback = 2090 webrtc::LoadObserver* overuse_callback =
2093 send_stream->GetConfig().overuse_callback; 2091 send_stream->GetConfig().overuse_callback;
2094 ASSERT_TRUE(overuse_callback != NULL); 2092 ASSERT_TRUE(overuse_callback != NULL);
2095 2093
2096 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); 2094 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420));
2097 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2095 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2098 EXPECT_EQ(1280, send_stream->GetLastWidth()); 2096 EXPECT_EQ(1280, send_stream->GetLastWidth());
2099 EXPECT_EQ(720, send_stream->GetLastHeight()); 2097 EXPECT_EQ(720, send_stream->GetLastHeight());
2100 2098
2101 // Trigger overuse. 2099 // Trigger overuse.
2102 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2100 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2103 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); 2101 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420));
2104 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 2102 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
2105 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); 2103 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth());
2106 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); 2104 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight());
2107 2105
2108 // Switch to screen share. Expect no CPU adaptation. 2106 // Switch to screen share. Expect no CPU adaptation.
2109 cricket::FakeVideoCapturer screen_share(true); 2107 cricket::FakeVideoCapturer screen_share(true);
2110 ASSERT_EQ(cricket::CS_RUNNING, 2108 ASSERT_EQ(cricket::CS_RUNNING,
2111 screen_share.Start(screen_share.GetSupportedFormats()->front())); 2109 screen_share.Start(screen_share.GetSupportedFormats()->front()));
2112 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &screen_share)); 2110 channel_->SetSource(last_ssrc_, &screen_share);
2113 cricket::VideoOptions screenshare_options; 2111 cricket::VideoOptions screenshare_options;
2114 screenshare_options.is_screencast = rtc::Optional<bool>(true); 2112 screenshare_options.is_screencast = rtc::Optional<bool>(true);
2115 channel_->SetVideoSend(last_ssrc_, true /* enable */, &screenshare_options); 2113 channel_->SetVideoSend(last_ssrc_, true /* enable */, &screenshare_options);
2116 EXPECT_TRUE(screen_share.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); 2114 EXPECT_TRUE(screen_share.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420));
2117 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 2115 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
2118 EXPECT_EQ(1284, send_stream->GetLastWidth()); 2116 EXPECT_EQ(1284, send_stream->GetLastWidth());
2119 EXPECT_EQ(724, send_stream->GetLastHeight()); 2117 EXPECT_EQ(724, send_stream->GetLastHeight());
2120 2118
2121 // Switch back to the normal capturer. Expect the frame to be CPU adapted. 2119 // Switch back to the normal capturer. Expect the frame to be CPU adapted.
2122 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2120 channel_->SetSource(last_ssrc_, &capturer);
2123 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options); 2121 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options);
2124 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); 2122 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420));
2125 EXPECT_EQ(4, send_stream->GetNumberOfSwappedFrames()); 2123 EXPECT_EQ(4, send_stream->GetNumberOfSwappedFrames());
2126 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); 2124 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth());
2127 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); 2125 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight());
2128 2126
2129 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2127 channel_->SetSource(last_ssrc_, NULL);
2130 } 2128 }
2131 2129
2132 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, 2130 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse,
2133 bool is_screenshare) { 2131 bool is_screenshare) {
2134 cricket::VideoCodec codec = kVp8Codec720p; 2132 cricket::VideoCodec codec = kVp8Codec720p;
2135 cricket::VideoSendParameters parameters; 2133 cricket::VideoSendParameters parameters;
2136 parameters.codecs.push_back(codec); 2134 parameters.codecs.push_back(codec);
2137 2135
2138 MediaConfig media_config = MediaConfig(); 2136 MediaConfig media_config = MediaConfig();
2139 if (!enable_overuse) { 2137 if (!enable_overuse) {
2140 media_config.video.enable_cpu_overuse_detection = false; 2138 media_config.video.enable_cpu_overuse_detection = false;
2141 } 2139 }
2142 channel_.reset( 2140 channel_.reset(
2143 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 2141 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
2144 2142
2145 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2143 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2146 2144
2147 AddSendStream(); 2145 AddSendStream();
2148 2146
2149 VideoOptions options; 2147 VideoOptions options;
2150 options.is_screencast = rtc::Optional<bool>(is_screenshare); 2148 options.is_screencast = rtc::Optional<bool>(is_screenshare);
2151 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); 2149 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options));
2152 2150
2153 cricket::FakeVideoCapturer capturer; 2151 cricket::FakeVideoCapturer capturer;
2154 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2152 channel_->SetSource(last_ssrc_, &capturer);
2155 EXPECT_EQ(cricket::CS_RUNNING, 2153 EXPECT_EQ(cricket::CS_RUNNING,
2156 capturer.Start(capturer.GetSupportedFormats()->front())); 2154 capturer.Start(capturer.GetSupportedFormats()->front()));
2157 2155
2158 EXPECT_TRUE(channel_->SetSend(true)); 2156 EXPECT_TRUE(channel_->SetSend(true));
2159 2157
2160 // Trigger overuse. 2158 // Trigger overuse.
2161 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 2159 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2162 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 2160 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2163 webrtc::LoadObserver* overuse_callback = 2161 webrtc::LoadObserver* overuse_callback =
2164 send_stream->GetConfig().overuse_callback; 2162 send_stream->GetConfig().overuse_callback;
2165 2163
2166 if (!enable_overuse) { 2164 if (!enable_overuse) {
2167 ASSERT_TRUE(overuse_callback == NULL); 2165 ASSERT_TRUE(overuse_callback == NULL);
2168 2166
2169 EXPECT_TRUE(capturer.CaptureFrame()); 2167 EXPECT_TRUE(capturer.CaptureFrame());
2170 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2168 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2171 2169
2172 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2170 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2173 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2171 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2174 2172
2175 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2173 channel_->SetSource(last_ssrc_, NULL);
2176 return; 2174 return;
2177 } 2175 }
2178 2176
2179 ASSERT_TRUE(overuse_callback != NULL); 2177 ASSERT_TRUE(overuse_callback != NULL);
2180 EXPECT_TRUE(capturer.CaptureFrame()); 2178 EXPECT_TRUE(capturer.CaptureFrame());
2181 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2179 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2182 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2180 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2183 2181
2184 EXPECT_TRUE(capturer.CaptureFrame()); 2182 EXPECT_TRUE(capturer.CaptureFrame());
2185 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 2183 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
2186 2184
2187 if (is_screenshare) { 2185 if (is_screenshare) {
2188 // Do not adapt screen share. 2186 // Do not adapt screen share.
2189 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2187 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2190 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2188 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2191 } else { 2189 } else {
2192 EXPECT_LT(send_stream->GetLastWidth(), codec.width); 2190 EXPECT_LT(send_stream->GetLastWidth(), codec.width);
2193 EXPECT_LT(send_stream->GetLastHeight(), codec.height); 2191 EXPECT_LT(send_stream->GetLastHeight(), codec.height);
2194 } 2192 }
2195 2193
2196 // Trigger underuse which should go back to normal resolution. 2194 // Trigger underuse which should go back to normal resolution.
2197 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2195 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2198 EXPECT_TRUE(capturer.CaptureFrame()); 2196 EXPECT_TRUE(capturer.CaptureFrame());
2199 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 2197 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
2200 2198
2201 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2199 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2202 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2200 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2203 2201
2204 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2202 channel_->SetSource(last_ssrc_, NULL);
2205 } 2203 }
2206 2204
2207 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { 2205 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) {
2208 // Start at last timestamp to verify that wraparounds are estimated correctly. 2206 // Start at last timestamp to verify that wraparounds are estimated correctly.
2209 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; 2207 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu;
2210 static const int64_t kInitialNtpTimeMs = 1247891230; 2208 static const int64_t kInitialNtpTimeMs = 1247891230;
2211 static const int kFrameOffsetMs = 20; 2209 static const int kFrameOffsetMs = 20;
2212 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2210 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2213 2211
2214 FakeVideoReceiveStream* stream = AddRecvStream(); 2212 FakeVideoReceiveStream* stream = AddRecvStream();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
2325 2323
2326 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { 2324 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) {
2327 cricket::VideoSendParameters parameters; 2325 cricket::VideoSendParameters parameters;
2328 parameters.codecs.push_back(kVp8Codec720p); 2326 parameters.codecs.push_back(kVp8Codec720p);
2329 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2327 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2330 channel_->SetSend(true); 2328 channel_->SetSend(true);
2331 2329
2332 FakeVideoSendStream* stream = AddSendStream(); 2330 FakeVideoSendStream* stream = AddSendStream();
2333 2331
2334 cricket::FakeVideoCapturer capturer; 2332 cricket::FakeVideoCapturer capturer;
2335 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2333 channel_->SetSource(last_ssrc_, &capturer);
2336 EXPECT_EQ(cricket::CS_RUNNING, 2334 EXPECT_EQ(cricket::CS_RUNNING,
2337 capturer.Start(capturer.GetSupportedFormats()->front())); 2335 capturer.Start(capturer.GetSupportedFormats()->front()));
2338 EXPECT_TRUE(capturer.CaptureFrame()); 2336 EXPECT_TRUE(capturer.CaptureFrame());
2339 2337
2340 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2338 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2341 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 2339 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
2342 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 2340 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
2343 2341
2344 parameters.codecs.clear(); 2342 parameters.codecs.clear();
2345 parameters.codecs.push_back(kVp8Codec360p); 2343 parameters.codecs.push_back(kVp8Codec360p);
2346 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2344 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2347 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); 2345 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams();
2348 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); 2346 EXPECT_EQ(kVp8Codec360p.width, streams[0].width);
2349 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); 2347 EXPECT_EQ(kVp8Codec360p.height, streams[0].height);
2350 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2348 channel_->SetSource(last_ssrc_, NULL);
2351 } 2349 }
2352 2350
2353 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { 2351 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) {
2354 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", 2352 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200",
2355 200000); 2353 200000);
2356 } 2354 }
2357 2355
2358 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { 2356 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) {
2359 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); 2357 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000);
2360 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); 2358 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2404 2402
2405 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { 2403 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
2406 cricket::VideoSendParameters parameters; 2404 cricket::VideoSendParameters parameters;
2407 parameters.codecs.push_back(kVp8Codec720p); 2405 parameters.codecs.push_back(kVp8Codec720p);
2408 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2406 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2409 channel_->SetSend(true); 2407 channel_->SetSend(true);
2410 2408
2411 FakeVideoSendStream* stream = AddSendStream(); 2409 FakeVideoSendStream* stream = AddSendStream();
2412 2410
2413 cricket::FakeVideoCapturer capturer; 2411 cricket::FakeVideoCapturer capturer;
2414 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2412 channel_->SetSource(last_ssrc_, &capturer);
2415 EXPECT_EQ(cricket::CS_RUNNING, 2413 EXPECT_EQ(cricket::CS_RUNNING,
2416 capturer.Start(capturer.GetSupportedFormats()->front())); 2414 capturer.Start(capturer.GetSupportedFormats()->front()));
2417 2415
2418 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2416 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2419 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; 2417 int initial_max_bitrate_bps = streams[0].max_bitrate_bps;
2420 EXPECT_GT(initial_max_bitrate_bps, 0); 2418 EXPECT_GT(initial_max_bitrate_bps, 0);
2421 2419
2422 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2420 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2423 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2421 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2424 // Insert a frame to update the encoder config. 2422 // Insert a frame to update the encoder config.
2425 EXPECT_TRUE(capturer.CaptureFrame()); 2423 EXPECT_TRUE(capturer.CaptureFrame());
2426 streams = stream->GetVideoStreams(); 2424 streams = stream->GetVideoStreams();
2427 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); 2425 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps);
2428 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 2426 channel_->SetSource(last_ssrc_, nullptr);
2429 } 2427 }
2430 2428
2431 TEST_F(WebRtcVideoChannel2Test, 2429 TEST_F(WebRtcVideoChannel2Test,
2432 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { 2430 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) {
2433 cricket::VideoSendParameters parameters; 2431 cricket::VideoSendParameters parameters;
2434 parameters.codecs.push_back(kVp8Codec720p); 2432 parameters.codecs.push_back(kVp8Codec720p);
2435 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2433 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2436 channel_->SetSend(true); 2434 channel_->SetSend(true);
2437 2435
2438 FakeVideoSendStream* stream = AddSendStream( 2436 FakeVideoSendStream* stream = AddSendStream(
2439 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2437 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2440 2438
2441 // Send a frame to make sure this scales up to >1 stream (simulcast). 2439 // Send a frame to make sure this scales up to >1 stream (simulcast).
2442 cricket::FakeVideoCapturer capturer; 2440 cricket::FakeVideoCapturer capturer;
2443 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); 2441 channel_->SetSource(kSsrcs3[0], &capturer);
2444 EXPECT_EQ(cricket::CS_RUNNING, 2442 EXPECT_EQ(cricket::CS_RUNNING,
2445 capturer.Start(capturer.GetSupportedFormats()->front())); 2443 capturer.Start(capturer.GetSupportedFormats()->front()));
2446 EXPECT_TRUE(capturer.CaptureFrame()); 2444 EXPECT_TRUE(capturer.CaptureFrame());
2447 2445
2448 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2446 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2449 ASSERT_GT(streams.size(), 1u) 2447 ASSERT_GT(streams.size(), 1u)
2450 << "Without simulcast this test doesn't make sense."; 2448 << "Without simulcast this test doesn't make sense.";
2451 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2449 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2452 EXPECT_GT(initial_max_bitrate_bps, 0); 2450 EXPECT_GT(initial_max_bitrate_bps, 0);
2453 2451
2454 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2452 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2455 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2453 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2456 // Insert a frame to update the encoder config. 2454 // Insert a frame to update the encoder config.
2457 EXPECT_TRUE(capturer.CaptureFrame()); 2455 EXPECT_TRUE(capturer.CaptureFrame());
2458 streams = stream->GetVideoStreams(); 2456 streams = stream->GetVideoStreams();
2459 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2457 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2460 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); 2458 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps);
2461 2459
2462 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); 2460 channel_->SetSource(kSsrcs3[0], nullptr);
2463 } 2461 }
2464 2462
2465 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { 2463 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) {
2466 static const char* kMaxQuantization = "21"; 2464 static const char* kMaxQuantization = "21";
2467 cricket::VideoSendParameters parameters; 2465 cricket::VideoSendParameters parameters;
2468 parameters.codecs.push_back(kVp8Codec); 2466 parameters.codecs.push_back(kVp8Codec);
2469 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; 2467 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization;
2470 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2468 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2471 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), 2469 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)),
2472 AddSendStream()->GetVideoStreams().back().max_qp); 2470 AddSendStream()->GetVideoStreams().back().max_qp);
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
2822 2820
2823 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { 2821 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) {
2824 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2822 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2825 2823
2826 // Capture format VGA. 2824 // Capture format VGA.
2827 cricket::FakeVideoCapturer video_capturer_vga; 2825 cricket::FakeVideoCapturer video_capturer_vga;
2828 const std::vector<cricket::VideoFormat>* formats = 2826 const std::vector<cricket::VideoFormat>* formats =
2829 video_capturer_vga.GetSupportedFormats(); 2827 video_capturer_vga.GetSupportedFormats();
2830 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2828 cricket::VideoFormat capture_format_vga = (*formats)[1];
2831 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2829 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2832 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2830 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2833 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2831 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2834 2832
2835 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2833 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2836 cricket::VideoSendParameters parameters; 2834 cricket::VideoSendParameters parameters;
2837 parameters.codecs.push_back(send_codec); 2835 parameters.codecs.push_back(send_codec);
2838 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2836 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2839 EXPECT_TRUE(channel_->SetSend(true)); 2837 EXPECT_TRUE(channel_->SetSend(true));
2840 2838
2841 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2839 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2842 2840
(...skipping 16 matching lines...) Expand all
2859 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2857 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2860 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2858 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2861 info.Clear(); 2859 info.Clear();
2862 EXPECT_TRUE(channel_->GetStats(&info)); 2860 EXPECT_TRUE(channel_->GetStats(&info));
2863 ASSERT_EQ(1U, info.senders.size()); 2861 ASSERT_EQ(1U, info.senders.size());
2864 EXPECT_EQ(2, info.senders[0].adapt_changes); 2862 EXPECT_EQ(2, info.senders[0].adapt_changes);
2865 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, 2863 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE,
2866 info.senders[0].adapt_reason); 2864 info.senders[0].adapt_reason);
2867 2865
2868 // No capturer (no adapter). Adapt changes from old adapter should be kept. 2866 // No capturer (no adapter). Adapt changes from old adapter should be kept.
2869 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2867 channel_->SetSource(kSsrcs3[0], NULL);
2870 info.Clear(); 2868 info.Clear();
2871 EXPECT_TRUE(channel_->GetStats(&info)); 2869 EXPECT_TRUE(channel_->GetStats(&info));
2872 ASSERT_EQ(1U, info.senders.size()); 2870 ASSERT_EQ(1U, info.senders.size());
2873 EXPECT_EQ(2, info.senders[0].adapt_changes); 2871 EXPECT_EQ(2, info.senders[0].adapt_changes);
2874 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, 2872 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE,
2875 info.senders[0].adapt_reason); 2873 info.senders[0].adapt_reason);
2876 2874
2877 // Set new capturer, capture format HD. 2875 // Set new capturer, capture format HD.
2878 cricket::FakeVideoCapturer video_capturer_hd; 2876 cricket::FakeVideoCapturer video_capturer_hd;
2879 cricket::VideoFormat capture_format_hd = (*formats)[0]; 2877 cricket::VideoFormat capture_format_hd = (*formats)[0];
2880 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); 2878 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd));
2881 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); 2879 channel_->SetSource(kSsrcs3[0], &video_capturer_hd);
2882 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2880 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2883 2881
2884 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. 2882 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2.
2885 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2883 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2886 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2884 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2887 info.Clear(); 2885 info.Clear();
2888 EXPECT_TRUE(channel_->GetStats(&info)); 2886 EXPECT_TRUE(channel_->GetStats(&info));
2889 ASSERT_EQ(1U, info.senders.size()); 2887 ASSERT_EQ(1U, info.senders.size());
2890 EXPECT_EQ(3, info.senders[0].adapt_changes); 2888 EXPECT_EQ(3, info.senders[0].adapt_changes);
2891 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_CPU, info.senders[0].adapt_reason); 2889 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_CPU, info.senders[0].adapt_reason);
2892 2890
2893 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2891 channel_->SetSource(kSsrcs3[0], NULL);
2894 } 2892 }
2895 2893
2896 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { 2894 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) {
2897 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2895 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2898 2896
2899 // Capture format VGA. 2897 // Capture format VGA.
2900 cricket::FakeVideoCapturer video_capturer_vga; 2898 cricket::FakeVideoCapturer video_capturer_vga;
2901 const std::vector<cricket::VideoFormat>* formats = 2899 const std::vector<cricket::VideoFormat>* formats =
2902 video_capturer_vga.GetSupportedFormats(); 2900 video_capturer_vga.GetSupportedFormats();
2903 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2901 cricket::VideoFormat capture_format_vga = (*formats)[1];
2904 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2902 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2905 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2903 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2906 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2904 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2907 2905
2908 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2906 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2909 cricket::VideoSendParameters parameters; 2907 cricket::VideoSendParameters parameters;
2910 parameters.codecs.push_back(send_codec); 2908 parameters.codecs.push_back(send_codec);
2911 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2909 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2912 EXPECT_TRUE(channel_->SetSend(true)); 2910 EXPECT_TRUE(channel_->SetSend(true));
2913 2911
2914 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2912 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2915 2913
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2947 2945
2948 // Reset bandwidth limitation state -> adapt NONE. 2946 // Reset bandwidth limitation state -> adapt NONE.
2949 stats.bw_limited_resolution = false; 2947 stats.bw_limited_resolution = false;
2950 fake_call_->GetVideoSendStreams().front()->SetStats(stats); 2948 fake_call_->GetVideoSendStreams().front()->SetStats(stats);
2951 info.Clear(); 2949 info.Clear();
2952 EXPECT_TRUE(channel_->GetStats(&info)); 2950 EXPECT_TRUE(channel_->GetStats(&info));
2953 ASSERT_EQ(1U, info.senders.size()); 2951 ASSERT_EQ(1U, info.senders.size());
2954 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, 2952 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE,
2955 info.senders[0].adapt_reason); 2953 info.senders[0].adapt_reason);
2956 2954
2957 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2955 channel_->SetSource(kSsrcs3[0], NULL);
2958 } 2956 }
2959 2957
2960 TEST_F(WebRtcVideoChannel2Test, 2958 TEST_F(WebRtcVideoChannel2Test,
2961 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { 2959 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) {
2962 FakeVideoSendStream* stream = AddSendStream(); 2960 FakeVideoSendStream* stream = AddSendStream();
2963 webrtc::VideoSendStream::Stats stats; 2961 webrtc::VideoSendStream::Stats stats;
2964 stats.bw_limited_resolution = true; 2962 stats.bw_limited_resolution = true;
2965 stream->SetStats(stats); 2963 stream->SetStats(stats);
2966 2964
2967 cricket::VideoMediaInfo info; 2965 cricket::VideoMediaInfo info;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
3309 } 3307 }
3310 3308
3311 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { 3309 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
3312 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); 3310 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false);
3313 } 3311 }
3314 3312
3315 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { 3313 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) {
3316 AddSendStream(); 3314 AddSendStream();
3317 3315
3318 cricket::FakeVideoCapturer capturer; 3316 cricket::FakeVideoCapturer capturer;
3319 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 3317 channel_->SetSource(last_ssrc_, &capturer);
3320 cricket::VideoFormat capture_format_hd = 3318 cricket::VideoFormat capture_format_hd =
3321 capturer.GetSupportedFormats()->front(); 3319 capturer.GetSupportedFormats()->front();
3322 EXPECT_EQ(1280, capture_format_hd.width); 3320 EXPECT_EQ(1280, capture_format_hd.width);
3323 EXPECT_EQ(720, capture_format_hd.height); 3321 EXPECT_EQ(720, capture_format_hd.height);
3324 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 3322 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
3325 EXPECT_TRUE(channel_->SetSend(true)); 3323 EXPECT_TRUE(channel_->SetSend(true));
3326 3324
3327 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); 3325 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer);
3328 EXPECT_TRUE(default_encoder_bitrate > 1000); 3326 EXPECT_TRUE(default_encoder_bitrate > 1000);
3329 3327
3330 // TODO(skvlad): Resolve the inconsistency between the interpretation 3328 // TODO(skvlad): Resolve the inconsistency between the interpretation
3331 // of the global bitrate limit for audio and video: 3329 // of the global bitrate limit for audio and video:
3332 // - Audio: max_bandwidth_bps = 0 - fail the operation, 3330 // - Audio: max_bandwidth_bps = 0 - fail the operation,
3333 // max_bandwidth_bps = -1 - remove the bandwidth limit 3331 // max_bandwidth_bps = -1 - remove the bandwidth limit
3334 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, 3332 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit,
3335 // max_bandwidth_bps = -1 - do not change the previously set 3333 // max_bandwidth_bps = -1 - do not change the previously set
3336 // limit. 3334 // limit.
3337 3335
3338 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); 3336 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000);
3339 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); 3337 SetAndExpectMaxBitrate(capturer, 1000, 800, 800);
3340 SetAndExpectMaxBitrate(capturer, 600, 800, 600); 3338 SetAndExpectMaxBitrate(capturer, 600, 800, 600);
3341 SetAndExpectMaxBitrate(capturer, 0, 800, 800); 3339 SetAndExpectMaxBitrate(capturer, 0, 800, 800);
3342 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); 3340 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate);
3343 3341
3344 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 3342 channel_->SetSource(last_ssrc_, NULL);
3345 } 3343 }
3346 3344
3347 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { 3345 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) {
3348 webrtc::RtpParameters nonexistent_parameters = 3346 webrtc::RtpParameters nonexistent_parameters =
3349 channel_->GetRtpParameters(last_ssrc_); 3347 channel_->GetRtpParameters(last_ssrc_);
3350 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); 3348 EXPECT_EQ(0, nonexistent_parameters.encodings.size());
3351 3349
3352 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); 3350 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters());
3353 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); 3351 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters));
3354 } 3352 }
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
3468 3466
3469 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 3467 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
3470 RTC_DCHECK(num_configured_streams <= ssrcs.size()); 3468 RTC_DCHECK(num_configured_streams <= ssrcs.size());
3471 ssrcs.resize(num_configured_streams); 3469 ssrcs.resize(num_configured_streams);
3472 3470
3473 FakeVideoSendStream* stream = 3471 FakeVideoSendStream* stream =
3474 AddSendStream(CreateSimStreamParams("cname", ssrcs)); 3472 AddSendStream(CreateSimStreamParams("cname", ssrcs));
3475 // Send a full-size frame to trigger a stream reconfiguration to use all 3473 // Send a full-size frame to trigger a stream reconfiguration to use all
3476 // expected simulcast layers. 3474 // expected simulcast layers.
3477 cricket::FakeVideoCapturer capturer; 3475 cricket::FakeVideoCapturer capturer;
3478 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); 3476 channel_->SetSource(ssrcs.front(), &capturer);
3479 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( 3477 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat(
3480 codec.width, codec.height, 3478 codec.width, codec.height,
3481 cricket::VideoFormat::FpsToInterval(30), 3479 cricket::VideoFormat::FpsToInterval(30),
3482 cricket::FOURCC_I420))); 3480 cricket::FOURCC_I420)));
3483 channel_->SetSend(true); 3481 channel_->SetSend(true);
3484 EXPECT_TRUE(capturer.CaptureFrame()); 3482 EXPECT_TRUE(capturer.CaptureFrame());
3485 3483
3486 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); 3484 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams();
3487 ASSERT_EQ(expected_num_streams, video_streams.size()); 3485 ASSERT_EQ(expected_num_streams, video_streams.size());
3488 3486
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3525 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; 3523 total_max_bitrate_bps += video_streams[i].max_bitrate_bps;
3526 } else { 3524 } else {
3527 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; 3525 total_max_bitrate_bps += video_streams[i].target_bitrate_bps;
3528 } 3526 }
3529 } 3527 }
3530 cricket::VideoMediaInfo info; 3528 cricket::VideoMediaInfo info;
3531 ASSERT_TRUE(channel_->GetStats(&info)); 3529 ASSERT_TRUE(channel_->GetStats(&info));
3532 ASSERT_EQ(1u, info.senders.size()); 3530 ASSERT_EQ(1u, info.senders.size());
3533 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); 3531 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate);
3534 3532
3535 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); 3533 channel_->SetSource(ssrcs.front(), NULL);
3536 } 3534 }
3537 3535
3538 FakeVideoSendStream* AddSendStream() { 3536 FakeVideoSendStream* AddSendStream() {
3539 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); 3537 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++));
3540 } 3538 }
3541 3539
3542 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { 3540 FakeVideoSendStream* AddSendStream(const StreamParams& sp) {
3543 size_t num_streams = 3541 size_t num_streams =
3544 fake_call_.GetVideoSendStreams().size(); 3542 fake_call_.GetVideoSendStreams().size();
3545 EXPECT_TRUE(channel_->AddSendStream(sp)); 3543 EXPECT_TRUE(channel_->AddSendStream(sp));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3582 } 3580 }
3583 3581
3584 // Test that we normalize send codec format size in simulcast. 3582 // Test that we normalize send codec format size in simulcast.
3585 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3583 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3586 cricket::VideoCodec codec(kVp8Codec270p); 3584 cricket::VideoCodec codec(kVp8Codec270p);
3587 codec.width += 1; 3585 codec.width += 1;
3588 codec.height += 1; 3586 codec.height += 1;
3589 VerifySimulcastSettings(codec, 2, 2); 3587 VerifySimulcastSettings(codec, 2, 2);
3590 } 3588 }
3591 } // namespace cricket 3589 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | webrtc/pc/channel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698