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

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: Comment tweaks, and one NULL replaced by nullptr. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 234 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
235 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 235 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
236 236
237 // Add CVO extension. 237 // Add CVO extension.
238 const int id = 1; 238 const int id = 1;
239 parameters.extensions.push_back( 239 parameters.extensions.push_back(
240 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 240 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
241 EXPECT_TRUE(channel->SetSendParameters(parameters)); 241 EXPECT_TRUE(channel->SetSendParameters(parameters));
242 242
243 // Set capturer. 243 // Set capturer.
244 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 244 channel->SetSource(kSsrc, &capturer);
245 245
246 // Verify capturer has turned off applying rotation. 246 // Verify capturer has turned off applying rotation.
247 EXPECT_FALSE(capturer.GetApplyRotation()); 247 EXPECT_FALSE(capturer.GetApplyRotation());
248 248
249 // Verify removing header extension turns on applying rotation. 249 // Verify removing header extension turns on applying rotation.
250 parameters.extensions.clear(); 250 parameters.extensions.clear();
251 EXPECT_TRUE(channel->SetSendParameters(parameters)); 251 EXPECT_TRUE(channel->SetSendParameters(parameters));
252 EXPECT_TRUE(capturer.GetApplyRotation()); 252 EXPECT_TRUE(capturer.GetApplyRotation());
253 } 253 }
254 254
(...skipping 10 matching lines...) Expand all
265 std::unique_ptr<VideoMediaChannel> channel( 265 std::unique_ptr<VideoMediaChannel> channel(
266 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 266 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
267 // Add CVO extension. 267 // Add CVO extension.
268 const int id = 1; 268 const int id = 1;
269 parameters.extensions.push_back( 269 parameters.extensions.push_back(
270 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 270 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
271 EXPECT_TRUE(channel->SetSendParameters(parameters)); 271 EXPECT_TRUE(channel->SetSendParameters(parameters));
272 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 272 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
273 273
274 // Set capturer. 274 // Set capturer.
275 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 275 channel->SetSource(kSsrc, &capturer);
276 276
277 // Verify capturer has turned off applying rotation. 277 // Verify capturer has turned off applying rotation.
278 EXPECT_FALSE(capturer.GetApplyRotation()); 278 EXPECT_FALSE(capturer.GetApplyRotation());
279 } 279 }
280 280
281 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) { 281 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) {
282 cricket::FakeVideoCapturer capturer; 282 cricket::FakeVideoCapturer capturer;
283 283
284 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 284 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
285 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); 285 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8");
286 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); 286 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9");
287 cricket::VideoSendParameters parameters; 287 cricket::VideoSendParameters parameters;
288 parameters.codecs.push_back(kVp8Codec); 288 parameters.codecs.push_back(kVp8Codec);
289 parameters.codecs.push_back(kVp9Codec); 289 parameters.codecs.push_back(kVp9Codec);
290 290
291 std::unique_ptr<VideoMediaChannel> channel( 291 std::unique_ptr<VideoMediaChannel> channel(
292 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 292 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
293 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); 293 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
294 294
295 // Set capturer. 295 // Set capturer.
296 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 296 channel->SetSource(kSsrc, &capturer);
297 297
298 // Verify capturer has turned on applying rotation. 298 // Verify capturer has turned on applying rotation.
299 EXPECT_TRUE(capturer.GetApplyRotation()); 299 EXPECT_TRUE(capturer.GetApplyRotation());
300 300
301 // Add CVO extension. 301 // Add CVO extension.
302 const int id = 1; 302 const int id = 1;
303 parameters.extensions.push_back( 303 parameters.extensions.push_back(
304 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); 304 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id));
305 // Also remove the first codec to trigger a codec change as well. 305 // Also remove the first codec to trigger a codec change as well.
306 parameters.codecs.erase(parameters.codecs.begin()); 306 parameters.codecs.erase(parameters.codecs.begin());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 345
346 std::unique_ptr<VideoMediaChannel> channel( 346 std::unique_ptr<VideoMediaChannel> channel(
347 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); 347 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
348 348
349 EXPECT_TRUE( 349 EXPECT_TRUE(
350 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 350 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
351 ASSERT_EQ(1u, encoder_factory.encoders().size()); 351 ASSERT_EQ(1u, encoder_factory.encoders().size());
352 EXPECT_TRUE(channel->SetSend(true)); 352 EXPECT_TRUE(channel->SetSend(true));
353 353
354 cricket::FakeVideoCapturer capturer; 354 cricket::FakeVideoCapturer capturer;
355 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 355 channel->SetSource(kSsrc, &capturer);
356 EXPECT_EQ(cricket::CS_RUNNING, 356 EXPECT_EQ(cricket::CS_RUNNING,
357 capturer.Start(capturer.GetSupportedFormats()->front())); 357 capturer.Start(capturer.GetSupportedFormats()->front()));
358 EXPECT_TRUE(capturer.CaptureFrame()); 358 EXPECT_TRUE(capturer.CaptureFrame());
359 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, 359 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0,
360 kTimeout); 360 kTimeout);
361 361
362 // Sending one frame will have reallocated the encoder since input size 362 // Sending one frame will have reallocated the encoder since input size
363 // changes from a small default to the actual frame width/height. 363 // changes from a small default to the actual frame width/height.
364 int num_created_encoders = encoder_factory.GetNumCreatedEncoders(); 364 int num_created_encoders = encoder_factory.GetNumCreatedEncoders();
365 EXPECT_EQ(num_created_encoders, 2); 365 EXPECT_EQ(num_created_encoders, 2);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 432
433 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); 433 FakeCall* fake_call = new FakeCall(webrtc::Call::Config());
434 call_.reset(fake_call); 434 call_.reset(fake_call);
435 std::unique_ptr<VideoMediaChannel> channel( 435 std::unique_ptr<VideoMediaChannel> channel(
436 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 436 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
437 437
438 EXPECT_TRUE( 438 EXPECT_TRUE(
439 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 439 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
440 440
441 FakeVideoCapturer capturer; 441 FakeVideoCapturer capturer;
442 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 442 channel->SetSource(kSsrc, &capturer);
443 capturer.Start(cricket::VideoFormat(1280, 720, 443 capturer.Start(cricket::VideoFormat(1280, 720,
444 cricket::VideoFormat::FpsToInterval(60), 444 cricket::VideoFormat::FpsToInterval(60),
445 cricket::FOURCC_I420)); 445 cricket::FOURCC_I420));
446 channel->SetSend(true); 446 channel->SetSend(true);
447 447
448 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 448 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
449 449
450 EXPECT_TRUE(capturer.CaptureFrame()); 450 EXPECT_TRUE(capturer.CaptureFrame());
451 int64_t last_timestamp = stream->GetLastTimestamp(); 451 int64_t last_timestamp = stream->GetLastTimestamp();
452 for (int i = 0; i < 10; i++) { 452 for (int i = 0; i < 10; i++) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 call_.reset(fake_call); 494 call_.reset(fake_call);
495 std::unique_ptr<VideoMediaChannel> channel( 495 std::unique_ptr<VideoMediaChannel> channel(
496 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 496 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
497 497
498 EXPECT_TRUE( 498 EXPECT_TRUE(
499 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 499 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
500 channel->SetSend(true); 500 channel->SetSend(true);
501 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 501 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
502 502
503 FakeVideoCapturer capturer1; 503 FakeVideoCapturer capturer1;
504 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); 504 channel->SetSource(kSsrc, &capturer1);
505 505
506 cricket::CapturedFrame frame; 506 cricket::CapturedFrame frame;
507 frame.width = 1280; 507 frame.width = 1280;
508 frame.height = 720; 508 frame.height = 720;
509 frame.fourcc = cricket::FOURCC_I420; 509 frame.fourcc = cricket::FOURCC_I420;
510 frame.data_size = frame.width * frame.height + 510 frame.data_size = frame.width * frame.height +
511 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); 511 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2);
512 std::unique_ptr<char[]> data(new char[frame.data_size]); 512 std::unique_ptr<char[]> data(new char[frame.data_size]);
513 frame.data = data.get(); 513 frame.data = data.get();
514 memset(frame.data, 1, frame.data_size); 514 memset(frame.data, 1, frame.data_size);
515 const int kInitialTimestamp = 123456; 515 const int kInitialTimestamp = 123456;
516 frame.time_stamp = kInitialTimestamp; 516 frame.time_stamp = kInitialTimestamp;
517 517
518 // Deliver initial frame. 518 // Deliver initial frame.
519 capturer1.SignalCapturedFrame(&frame); 519 capturer1.SignalCapturedFrame(&frame);
520 // Deliver next frame 1 second later. 520 // Deliver next frame 1 second later.
521 frame.time_stamp += rtc::kNumNanosecsPerSec; 521 frame.time_stamp += rtc::kNumNanosecsPerSec;
522 rtc::Thread::Current()->SleepMs(1000); 522 rtc::Thread::Current()->SleepMs(1000);
523 capturer1.SignalCapturedFrame(&frame); 523 capturer1.SignalCapturedFrame(&frame);
524 524
525 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); 525 int64_t capturer1_last_timestamp = stream->GetLastTimestamp();
526 // Reset input source, should still be continuous even though input-frame 526 // Reset input source, should still be continuous even though input-frame
527 // timestamp is less than before. 527 // timestamp is less than before.
528 FakeVideoCapturer capturer2; 528 FakeVideoCapturer capturer2;
529 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); 529 channel->SetSource(kSsrc, &capturer2);
530 530
531 rtc::Thread::Current()->SleepMs(1); 531 rtc::Thread::Current()->SleepMs(1);
532 // Deliver with a timestamp (10 seconds) before the previous initial one, 532 // Deliver with a timestamp (10 seconds) before the previous initial one,
533 // these should not be related at all anymore and it should still work fine. 533 // these should not be related at all anymore and it should still work fine.
534 frame.time_stamp = kInitialTimestamp - 10000; 534 frame.time_stamp = kInitialTimestamp - 10000;
535 capturer2.SignalCapturedFrame(&frame); 535 capturer2.SignalCapturedFrame(&frame);
536 536
537 // New timestamp should be at least 1ms in the future and not old. 537 // New timestamp should be at least 1ms in the future and not old.
538 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); 538 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp);
539 539
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 std::unique_ptr<VideoMediaChannel> channel( 579 std::unique_ptr<VideoMediaChannel> channel(
580 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 580 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
581 581
582 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 582 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
583 583
584 EXPECT_TRUE( 584 EXPECT_TRUE(
585 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 585 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
586 EXPECT_TRUE(channel->SetSend(true)); 586 EXPECT_TRUE(channel->SetSend(true));
587 587
588 cricket::FakeVideoCapturer capturer; 588 cricket::FakeVideoCapturer capturer;
589 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 589 channel->SetSource(ssrcs.front(), &capturer);
590 EXPECT_EQ(cricket::CS_RUNNING, 590 EXPECT_EQ(cricket::CS_RUNNING,
591 capturer.Start(capturer.GetSupportedFormats()->front())); 591 capturer.Start(capturer.GetSupportedFormats()->front()));
592 EXPECT_TRUE(capturer.CaptureFrame()); 592 EXPECT_TRUE(capturer.CaptureFrame());
593 593
594 EXPECT_GT(encoder_factory.encoders().size(), 1u); 594 EXPECT_GT(encoder_factory.encoders().size(), 1u);
595 595
596 // Verify that encoders are configured for simulcast through adapter 596 // Verify that encoders are configured for simulcast through adapter
597 // (increasing resolution and only configured to send one stream each). 597 // (increasing resolution and only configured to send one stream each).
598 int prev_width = -1; 598 int prev_width = -1;
599 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { 599 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) {
600 webrtc::VideoCodec codec_settings = 600 webrtc::VideoCodec codec_settings =
601 encoder_factory.encoders()[i]->GetCodecSettings(); 601 encoder_factory.encoders()[i]->GetCodecSettings();
602 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); 602 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams);
603 EXPECT_GT(codec_settings.width, prev_width); 603 EXPECT_GT(codec_settings.width, prev_width);
604 prev_width = codec_settings.width; 604 prev_width = codec_settings.width;
605 } 605 }
606 606
607 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), NULL)); 607 channel->SetSource(ssrcs.front(), NULL);
608 608
609 channel.reset(); 609 channel.reset();
610 ASSERT_EQ(0u, encoder_factory.encoders().size()); 610 ASSERT_EQ(0u, encoder_factory.encoders().size());
611 } 611 }
612 612
613 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { 613 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) {
614 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 614 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
615 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); 615 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264");
616 std::vector<cricket::VideoCodec> codecs; 616 std::vector<cricket::VideoCodec> codecs;
617 codecs.push_back(kH264Codec); 617 codecs.push_back(kH264Codec);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 660 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
661 661
662 EXPECT_TRUE( 662 EXPECT_TRUE(
663 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 663 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
664 EXPECT_TRUE(channel->SetSend(true)); 664 EXPECT_TRUE(channel->SetSend(true));
665 665
666 // Send a fake frame, or else the media engine will configure the simulcast 666 // Send a fake frame, or else the media engine will configure the simulcast
667 // encoder adapter at a low-enough size that it'll only create a single 667 // encoder adapter at a low-enough size that it'll only create a single
668 // encoder layer. 668 // encoder layer.
669 cricket::FakeVideoCapturer capturer; 669 cricket::FakeVideoCapturer capturer;
670 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 670 channel->SetSource(ssrcs.front(), &capturer);
671 EXPECT_EQ(cricket::CS_RUNNING, 671 EXPECT_EQ(cricket::CS_RUNNING,
672 capturer.Start(capturer.GetSupportedFormats()->front())); 672 capturer.Start(capturer.GetSupportedFormats()->front()));
673 EXPECT_TRUE(capturer.CaptureFrame()); 673 EXPECT_TRUE(capturer.CaptureFrame());
674 674
675 ASSERT_GT(encoder_factory.encoders().size(), 1u); 675 ASSERT_GT(encoder_factory.encoders().size(), 1u);
676 EXPECT_EQ(webrtc::kVideoCodecVP8, 676 EXPECT_EQ(webrtc::kVideoCodecVP8,
677 encoder_factory.encoders()[0]->GetCodecSettings().codecType); 677 encoder_factory.encoders()[0]->GetCodecSettings().codecType);
678 678
679 channel.reset(); 679 channel.reset();
680 // Make sure DestroyVideoEncoder was called on the factory. 680 // Make sure DestroyVideoEncoder was called on the factory.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 714 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
715 715
716 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 716 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
717 EXPECT_TRUE( 717 EXPECT_TRUE(
718 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); 718 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs)));
719 719
720 // Send a frame of 720p. This should trigger a "real" encoder initialization. 720 // Send a frame of 720p. This should trigger a "real" encoder initialization.
721 cricket::VideoFormat format( 721 cricket::VideoFormat format(
722 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); 722 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420);
723 cricket::FakeVideoCapturer capturer; 723 cricket::FakeVideoCapturer capturer;
724 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], &capturer)); 724 channel->SetSource(ssrcs[0], &capturer);
725 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); 725 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
726 EXPECT_TRUE(capturer.CaptureFrame()); 726 EXPECT_TRUE(capturer.CaptureFrame());
727 727
728 ASSERT_EQ(1u, encoder_factory.encoders().size()); 728 ASSERT_EQ(1u, encoder_factory.encoders().size());
729 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; 729 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0];
730 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); 730 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType);
731 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); 731 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams);
732 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], nullptr)); 732 channel->SetSource(ssrcs[0], nullptr);
733 } 733 }
734 734
735 // Test that external codecs are added to the end of the supported codec list. 735 // Test that external codecs are added to the end of the supported codec list.
736 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { 736 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) {
737 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 737 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
738 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, 738 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown,
739 "FakeExternalCodec"); 739 "FakeExternalCodec");
740 engine_.SetExternalEncoderFactory(&encoder_factory); 740 engine_.SetExternalEncoderFactory(&encoder_factory);
741 engine_.Init(); 741 engine_.Init();
742 742
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 842
843 WEBRTC_BASE_TEST(AdaptResolution4x3); 843 WEBRTC_BASE_TEST(AdaptResolution4x3);
844 844
845 // TODO(juberti): Restore this test once we support sending 0 fps. 845 // TODO(juberti): Restore this test once we support sending 0 fps.
846 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames); 846 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames);
847 // TODO(juberti): Understand why we get decode errors on this test. 847 // TODO(juberti): Understand why we get decode errors on this test.
848 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate); 848 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate);
849 849
850 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames); 850 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames);
851 851
852 WEBRTC_BASE_TEST(MuteStream);
853
854 WEBRTC_BASE_TEST(MultipleSendStreams); 852 WEBRTC_BASE_TEST(MultipleSendStreams);
855 853
856 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { 854 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) {
857 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0)); 855 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0));
858 } 856 }
859 857
860 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { 858 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) {
861 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0)); 859 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0));
862 } 860 }
863 861
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
1531 channel_->SetSend(false); 1529 channel_->SetSend(false);
1532 1530
1533 FakeVideoSendStream* stream = AddSendStream(); 1531 FakeVideoSendStream* stream = AddSendStream();
1534 1532
1535 // No frames entered, using default dimensions. 1533 // No frames entered, using default dimensions.
1536 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 1534 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
1537 EXPECT_EQ(176u, streams[0].width); 1535 EXPECT_EQ(176u, streams[0].width);
1538 EXPECT_EQ(144u, streams[0].height); 1536 EXPECT_EQ(144u, streams[0].height);
1539 1537
1540 cricket::FakeVideoCapturer capturer; 1538 cricket::FakeVideoCapturer capturer;
1541 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1539 channel_->SetSource(last_ssrc_, &capturer);
1542 EXPECT_EQ(cricket::CS_RUNNING, 1540 EXPECT_EQ(cricket::CS_RUNNING,
1543 capturer.Start(capturer.GetSupportedFormats()->front())); 1541 capturer.Start(capturer.GetSupportedFormats()->front()));
1544 EXPECT_TRUE(capturer.CaptureFrame()); 1542 EXPECT_TRUE(capturer.CaptureFrame());
1545 1543
1546 // Frame entered, should be reconfigured to new dimensions. 1544 // Frame entered, should be reconfigured to new dimensions.
1547 streams = stream->GetVideoStreams(); 1545 streams = stream->GetVideoStreams();
1548 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 1546 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
1549 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 1547 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
1550 // No frames should have been actually put in there though. 1548 // No frames should have been actually put in there though.
1551 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames()); 1549 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames());
1552 1550
1553 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1551 channel_->SetSource(last_ssrc_, NULL);
1554 } 1552 }
1555 1553
1556 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { 1554 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) {
1557 static const int kScreenshareMinBitrateKbps = 800; 1555 static const int kScreenshareMinBitrateKbps = 800;
1558 cricket::VideoCodec codec = kVp8Codec360p; 1556 cricket::VideoCodec codec = kVp8Codec360p;
1559 cricket::VideoSendParameters parameters; 1557 cricket::VideoSendParameters parameters;
1560 parameters.codecs.push_back(codec); 1558 parameters.codecs.push_back(codec);
1561 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 1559 EXPECT_TRUE(channel_->SetSendParameters(parameters));
1562 AddSendStream(); 1560 AddSendStream();
1563 1561
1564 VideoOptions min_bitrate_options; 1562 VideoOptions min_bitrate_options;
1565 min_bitrate_options.screencast_min_bitrate_kbps = 1563 min_bitrate_options.screencast_min_bitrate_kbps =
1566 rtc::Optional<int>(kScreenshareMinBitrateKbps); 1564 rtc::Optional<int>(kScreenshareMinBitrateKbps);
1567 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options); 1565 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options);
1568 1566
1569 cricket::FakeVideoCapturer capturer; 1567 cricket::FakeVideoCapturer capturer;
1570 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1568 channel_->SetSource(last_ssrc_, &capturer);
1571 cricket::VideoFormat capture_format_hd = 1569 cricket::VideoFormat capture_format_hd =
1572 capturer.GetSupportedFormats()->front(); 1570 capturer.GetSupportedFormats()->front();
1573 EXPECT_EQ(1280, capture_format_hd.width); 1571 EXPECT_EQ(1280, capture_format_hd.width);
1574 EXPECT_EQ(720, capture_format_hd.height); 1572 EXPECT_EQ(720, capture_format_hd.height);
1575 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1573 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1576 1574
1577 EXPECT_TRUE(channel_->SetSend(true)); 1575 EXPECT_TRUE(channel_->SetSend(true));
1578 1576
1579 EXPECT_TRUE(capturer.CaptureFrame()); 1577 EXPECT_TRUE(capturer.CaptureFrame());
1580 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1578 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1581 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1579 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1582 1580
1583 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 1581 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
1584 1582
1585 // Verify non-screencast settings. 1583 // Verify non-screencast settings.
1586 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1584 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1587 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1585 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1588 encoder_config.content_type); 1586 encoder_config.content_type);
1589 EXPECT_EQ(codec.width, encoder_config.streams.front().width); 1587 EXPECT_EQ(codec.width, encoder_config.streams.front().width);
1590 EXPECT_EQ(codec.height, encoder_config.streams.front().height); 1588 EXPECT_EQ(codec.height, encoder_config.streams.front().height);
1591 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) 1589 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps)
1592 << "Non-screenshare shouldn't use min-transmit bitrate."; 1590 << "Non-screenshare shouldn't use min-transmit bitrate.";
1593 1591
1594 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 1592 channel_->SetSource(last_ssrc_, nullptr);
1595 // Removing a capturer triggers a black frame to be sent. 1593 // Removing a capturer triggers a black frame to be sent.
1596 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 1594 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
1597 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1595 channel_->SetSource(last_ssrc_, &capturer);
1598 VideoOptions screencast_options; 1596 VideoOptions screencast_options;
1599 screencast_options.is_screencast = rtc::Optional<bool>(true); 1597 screencast_options.is_screencast = rtc::Optional<bool>(true);
1600 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options)); 1598 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options));
1601 EXPECT_TRUE(capturer.CaptureFrame()); 1599 EXPECT_TRUE(capturer.CaptureFrame());
1602 // Send stream not recreated after option change. 1600 // Send stream not recreated after option change.
1603 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); 1601 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front());
1604 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 1602 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
1605 1603
1606 // Verify screencast settings. 1604 // Verify screencast settings.
1607 encoder_config = send_stream->GetEncoderConfig(); 1605 encoder_config = send_stream->GetEncoderConfig();
1608 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1606 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1609 encoder_config.content_type); 1607 encoder_config.content_type);
1610 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, 1608 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000,
1611 encoder_config.min_transmit_bitrate_bps); 1609 encoder_config.min_transmit_bitrate_bps);
1612 1610
1613 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); 1611 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width);
1614 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); 1612 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height);
1615 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); 1613 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty());
1616 1614
1617 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1615 channel_->SetSource(last_ssrc_, NULL);
1618 } 1616 }
1619 1617
1620 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { 1618 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) {
1621 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 1619 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
1622 ASSERT_TRUE( 1620 ASSERT_TRUE(
1623 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 1621 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
1624 EXPECT_TRUE(channel_->SetSend(true)); 1622 EXPECT_TRUE(channel_->SetSend(true));
1625 1623
1626 cricket::FakeVideoCapturer capturer; 1624 cricket::FakeVideoCapturer capturer;
1627 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &capturer)); 1625 channel_->SetSource(kSsrc, &capturer);
1628 EXPECT_EQ(cricket::CS_RUNNING, 1626 EXPECT_EQ(cricket::CS_RUNNING,
1629 capturer.Start(capturer.GetSupportedFormats()->front())); 1627 capturer.Start(capturer.GetSupportedFormats()->front()));
1630 EXPECT_TRUE(capturer.CaptureFrame()); 1628 EXPECT_TRUE(capturer.CaptureFrame());
1631 1629
1632 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1630 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1633 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); 1631 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front();
1634 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); 1632 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig();
1635 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1633 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1636 encoder_config.content_type); 1634 encoder_config.content_type);
1637 1635
(...skipping 20 matching lines...) Expand all
1658 1656
1659 EXPECT_TRUE(capturer.CaptureFrame()); 1657 EXPECT_TRUE(capturer.CaptureFrame());
1660 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1658 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1661 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); 1659 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front());
1662 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); 1660 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames());
1663 1661
1664 encoder_config = stream->GetEncoderConfig(); 1662 encoder_config = stream->GetEncoderConfig();
1665 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1663 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1666 encoder_config.content_type); 1664 encoder_config.content_type);
1667 1665
1668 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); 1666 channel_->SetSource(kSsrc, NULL);
1669 } 1667 }
1670 1668
1671 TEST_F(WebRtcVideoChannel2Test, 1669 TEST_F(WebRtcVideoChannel2Test,
1672 ConferenceModeScreencastConfiguresTemporalLayer) { 1670 ConferenceModeScreencastConfiguresTemporalLayer) {
1673 static const int kConferenceScreencastTemporalBitrateBps = 1671 static const int kConferenceScreencastTemporalBitrateBps =
1674 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; 1672 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000;
1675 send_parameters_.conference_mode = true; 1673 send_parameters_.conference_mode = true;
1676 channel_->SetSendParameters(send_parameters_); 1674 channel_->SetSendParameters(send_parameters_);
1677 1675
1678 AddSendStream(); 1676 AddSendStream();
1679 VideoOptions options; 1677 VideoOptions options;
1680 options.is_screencast = rtc::Optional<bool>(true); 1678 options.is_screencast = rtc::Optional<bool>(true);
1681 channel_->SetVideoSend(last_ssrc_, true, &options); 1679 channel_->SetVideoSend(last_ssrc_, true, &options);
1682 cricket::FakeVideoCapturer capturer; 1680 cricket::FakeVideoCapturer capturer;
1683 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1681 channel_->SetSource(last_ssrc_, &capturer);
1684 cricket::VideoFormat capture_format_hd = 1682 cricket::VideoFormat capture_format_hd =
1685 capturer.GetSupportedFormats()->front(); 1683 capturer.GetSupportedFormats()->front();
1686 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1684 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1687 1685
1688 EXPECT_TRUE(channel_->SetSend(true)); 1686 EXPECT_TRUE(channel_->SetSend(true));
1689 1687
1690 EXPECT_TRUE(capturer.CaptureFrame()); 1688 EXPECT_TRUE(capturer.CaptureFrame());
1691 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1689 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1692 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1690 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1693 1691
1694 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1692 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1695 1693
1696 // Verify screencast settings. 1694 // Verify screencast settings.
1697 encoder_config = send_stream->GetEncoderConfig(); 1695 encoder_config = send_stream->GetEncoderConfig();
1698 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1696 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1699 encoder_config.content_type); 1697 encoder_config.content_type);
1700 ASSERT_EQ(1u, encoder_config.streams.size()); 1698 ASSERT_EQ(1u, encoder_config.streams.size());
1701 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); 1699 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size());
1702 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, 1700 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps,
1703 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); 1701 encoder_config.streams[0].temporal_layer_thresholds_bps[0]);
1704 1702
1705 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1703 channel_->SetSource(last_ssrc_, NULL);
1706 } 1704 }
1707 1705
1708 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { 1706 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) {
1709 FakeVideoSendStream* stream = AddSendStream(); 1707 FakeVideoSendStream* stream = AddSendStream();
1710 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); 1708 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate);
1711 } 1709 }
1712 1710
1713 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { 1711 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) {
1714 MediaConfig media_config = MediaConfig(); 1712 MediaConfig media_config = MediaConfig();
1715 media_config.video.suspend_below_min_bitrate = true; 1713 media_config.video.suspend_below_min_bitrate = true;
(...skipping 29 matching lines...) Expand all
1745 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1743 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1746 1744
1747 // Single-stream settings should apply with RTX as well (verifies that we 1745 // Single-stream settings should apply with RTX as well (verifies that we
1748 // check number of regular SSRCs and not StreamParams::ssrcs which contains 1746 // check number of regular SSRCs and not StreamParams::ssrcs which contains
1749 // both RTX and regular SSRCs). 1747 // both RTX and regular SSRCs).
1750 FakeVideoSendStream* stream = SetUpSimulcast(false, true); 1748 FakeVideoSendStream* stream = SetUpSimulcast(false, true);
1751 1749
1752 cricket::FakeVideoCapturer capturer; 1750 cricket::FakeVideoCapturer capturer;
1753 EXPECT_EQ(cricket::CS_RUNNING, 1751 EXPECT_EQ(cricket::CS_RUNNING,
1754 capturer.Start(capturer.GetSupportedFormats()->front())); 1752 capturer.Start(capturer.GetSupportedFormats()->front()));
1755 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1753 channel_->SetSource(last_ssrc_, &capturer);
1756 channel_->SetSend(true); 1754 channel_->SetSend(true);
1757 1755
1758 EXPECT_TRUE(capturer.CaptureFrame()); 1756 EXPECT_TRUE(capturer.CaptureFrame());
1759 1757
1760 webrtc::VideoCodecVP8 vp8_settings; 1758 webrtc::VideoCodecVP8 vp8_settings;
1761 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1759 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1762 EXPECT_TRUE(vp8_settings.denoisingOn) 1760 EXPECT_TRUE(vp8_settings.denoisingOn)
1763 << "VP8 denoising should be on by default."; 1761 << "VP8 denoising should be on by default.";
1764 1762
1765 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1763 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
1766 1764
1767 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1765 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1768 EXPECT_FALSE(vp8_settings.denoisingOn); 1766 EXPECT_FALSE(vp8_settings.denoisingOn);
1769 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1767 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1770 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1768 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1771 1769
1772 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1770 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1773 1771
1774 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1772 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1775 EXPECT_TRUE(vp8_settings.denoisingOn); 1773 EXPECT_TRUE(vp8_settings.denoisingOn);
1776 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1774 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1777 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1775 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1778 1776
1779 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1777 channel_->SetSource(last_ssrc_, NULL);
1780 stream = SetUpSimulcast(true, false); 1778 stream = SetUpSimulcast(true, false);
1781 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1779 channel_->SetSource(last_ssrc_, &capturer);
1782 channel_->SetSend(true); 1780 channel_->SetSend(true);
1783 EXPECT_TRUE(capturer.CaptureFrame()); 1781 EXPECT_TRUE(capturer.CaptureFrame());
1784 1782
1785 EXPECT_EQ(3, stream->GetVideoStreams().size()); 1783 EXPECT_EQ(3, stream->GetVideoStreams().size());
1786 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1784 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1787 // Autmatic resize off when using simulcast. 1785 // Autmatic resize off when using simulcast.
1788 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1786 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1789 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1787 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1790 1788
1791 // In screen-share mode, denoising is forced off and simulcast disabled. 1789 // In screen-share mode, denoising is forced off and simulcast disabled.
(...skipping 10 matching lines...) Expand all
1802 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1800 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1803 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1801 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1804 1802
1805 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1803 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1806 1804
1807 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1805 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1808 EXPECT_FALSE(vp8_settings.denoisingOn); 1806 EXPECT_FALSE(vp8_settings.denoisingOn);
1809 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1807 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1810 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1808 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1811 1809
1812 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1810 channel_->SetSource(last_ssrc_, NULL);
1813 } 1811 }
1814 1812
1815 class Vp9SettingsTest : public WebRtcVideoChannel2Test { 1813 class Vp9SettingsTest : public WebRtcVideoChannel2Test {
1816 public: 1814 public:
1817 Vp9SettingsTest() : Vp9SettingsTest("") {} 1815 Vp9SettingsTest() : Vp9SettingsTest("") {}
1818 explicit Vp9SettingsTest(const char* field_trials) 1816 explicit Vp9SettingsTest(const char* field_trials)
1819 : WebRtcVideoChannel2Test(field_trials) { 1817 : WebRtcVideoChannel2Test(field_trials) {
1820 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); 1818 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9");
1821 } 1819 }
1822 virtual ~Vp9SettingsTest() {} 1820 virtual ~Vp9SettingsTest() {}
(...skipping 17 matching lines...) Expand all
1840 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { 1838 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) {
1841 cricket::VideoSendParameters parameters; 1839 cricket::VideoSendParameters parameters;
1842 parameters.codecs.push_back(kVp9Codec); 1840 parameters.codecs.push_back(kVp9Codec);
1843 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1841 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1844 1842
1845 FakeVideoSendStream* stream = SetUpSimulcast(false, false); 1843 FakeVideoSendStream* stream = SetUpSimulcast(false, false);
1846 1844
1847 cricket::FakeVideoCapturer capturer; 1845 cricket::FakeVideoCapturer capturer;
1848 EXPECT_EQ(cricket::CS_RUNNING, 1846 EXPECT_EQ(cricket::CS_RUNNING,
1849 capturer.Start(capturer.GetSupportedFormats()->front())); 1847 capturer.Start(capturer.GetSupportedFormats()->front()));
1850 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1848 channel_->SetSource(last_ssrc_, &capturer);
1851 channel_->SetSend(true); 1849 channel_->SetSend(true);
1852 1850
1853 EXPECT_TRUE(capturer.CaptureFrame()); 1851 EXPECT_TRUE(capturer.CaptureFrame());
1854 1852
1855 webrtc::VideoCodecVP9 vp9_settings; 1853 webrtc::VideoCodecVP9 vp9_settings;
1856 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1854 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1857 EXPECT_FALSE(vp9_settings.denoisingOn) 1855 EXPECT_FALSE(vp9_settings.denoisingOn)
1858 << "VP9 denoising should be off by default."; 1856 << "VP9 denoising should be off by default.";
1859 1857
1860 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1858 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
(...skipping 20 matching lines...) Expand all
1881 EXPECT_FALSE(vp9_settings.denoisingOn); 1879 EXPECT_FALSE(vp9_settings.denoisingOn);
1882 // Frame dropping always off for screen sharing. 1880 // Frame dropping always off for screen sharing.
1883 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1881 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1884 1882
1885 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1883 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
1886 1884
1887 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1885 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1888 EXPECT_FALSE(vp9_settings.denoisingOn); 1886 EXPECT_FALSE(vp9_settings.denoisingOn);
1889 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1887 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1890 1888
1891 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1889 channel_->SetSource(last_ssrc_, NULL);
1892 } 1890 }
1893 1891
1894 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest { 1892 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest {
1895 public: 1893 public:
1896 Vp9SettingsTestWithFieldTrial(const char* field_trials) 1894 Vp9SettingsTestWithFieldTrial(const char* field_trials)
1897 : Vp9SettingsTest(field_trials) {} 1895 : Vp9SettingsTest(field_trials) {}
1898 1896
1899 protected: 1897 protected:
1900 void VerifySettings(int num_spatial_layers, int num_temporal_layers) { 1898 void VerifySettings(int num_spatial_layers, int num_temporal_layers) {
1901 cricket::VideoSendParameters parameters; 1899 cricket::VideoSendParameters parameters;
1902 parameters.codecs.push_back(kVp9Codec); 1900 parameters.codecs.push_back(kVp9Codec);
1903 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1901 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1904 1902
1905 FakeVideoSendStream* stream = SetUpSimulcast(false, false); 1903 FakeVideoSendStream* stream = SetUpSimulcast(false, false);
1906 1904
1907 cricket::FakeVideoCapturer capturer; 1905 cricket::FakeVideoCapturer capturer;
1908 EXPECT_EQ(cricket::CS_RUNNING, 1906 EXPECT_EQ(cricket::CS_RUNNING,
1909 capturer.Start(capturer.GetSupportedFormats()->front())); 1907 capturer.Start(capturer.GetSupportedFormats()->front()));
1910 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1908 channel_->SetSource(last_ssrc_, &capturer);
1911 channel_->SetSend(true); 1909 channel_->SetSend(true);
1912 1910
1913 EXPECT_TRUE(capturer.CaptureFrame()); 1911 EXPECT_TRUE(capturer.CaptureFrame());
1914 1912
1915 webrtc::VideoCodecVP9 vp9_settings; 1913 webrtc::VideoCodecVP9 vp9_settings;
1916 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1914 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1917 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers); 1915 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers);
1918 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers); 1916 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers);
1919 1917
1920 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1918 channel_->SetSource(last_ssrc_, NULL);
1921 } 1919 }
1922 }; 1920 };
1923 1921
1924 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial { 1922 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial {
1925 public: 1923 public:
1926 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {} 1924 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {}
1927 }; 1925 };
1928 1926
1929 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) { 1927 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) {
1930 const int kNumSpatialLayers = 1; 1928 const int kNumSpatialLayers = 1;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1975 parameters.codecs.push_back(codec); 1973 parameters.codecs.push_back(codec);
1976 1974
1977 MediaConfig media_config = MediaConfig(); 1975 MediaConfig media_config = MediaConfig();
1978 channel_.reset( 1976 channel_.reset(
1979 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 1977 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
1980 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1978 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1981 1979
1982 AddSendStream(); 1980 AddSendStream();
1983 1981
1984 cricket::FakeVideoCapturer capturer; 1982 cricket::FakeVideoCapturer capturer;
1985 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1983 channel_->SetSource(last_ssrc_, &capturer);
1986 ASSERT_EQ(cricket::CS_RUNNING, 1984 ASSERT_EQ(cricket::CS_RUNNING,
1987 capturer.Start(capturer.GetSupportedFormats()->front())); 1985 capturer.Start(capturer.GetSupportedFormats()->front()));
1988 ASSERT_TRUE(channel_->SetSend(true)); 1986 ASSERT_TRUE(channel_->SetSend(true));
1989 1987
1990 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1988 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1991 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1989 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1992 webrtc::LoadObserver* overuse_callback = 1990 webrtc::LoadObserver* overuse_callback =
1993 send_stream->GetConfig().overuse_callback; 1991 send_stream->GetConfig().overuse_callback;
1994 ASSERT_TRUE(overuse_callback != NULL); 1992 ASSERT_TRUE(overuse_callback != NULL);
1995 1993
(...skipping 29 matching lines...) Expand all
2025 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); 2023 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth());
2026 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); 2024 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight());
2027 2025
2028 // Trigger underuse which should go back up in resolution. 2026 // Trigger underuse which should go back up in resolution.
2029 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2027 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2030 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); 2028 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420));
2031 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); 2029 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames());
2032 EXPECT_EQ(1284, send_stream->GetLastWidth()); 2030 EXPECT_EQ(1284, send_stream->GetLastWidth());
2033 EXPECT_EQ(724, send_stream->GetLastHeight()); 2031 EXPECT_EQ(724, send_stream->GetLastHeight());
2034 2032
2035 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2033 channel_->SetSource(last_ssrc_, NULL);
2036 } 2034 }
2037 2035
2038 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, 2036 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse,
2039 bool is_screenshare) { 2037 bool is_screenshare) {
2040 cricket::VideoCodec codec = kVp8Codec720p; 2038 cricket::VideoCodec codec = kVp8Codec720p;
2041 cricket::VideoSendParameters parameters; 2039 cricket::VideoSendParameters parameters;
2042 parameters.codecs.push_back(codec); 2040 parameters.codecs.push_back(codec);
2043 2041
2044 MediaConfig media_config = MediaConfig(); 2042 MediaConfig media_config = MediaConfig();
2045 if (!enable_overuse) { 2043 if (!enable_overuse) {
2046 media_config.video.enable_cpu_overuse_detection = false; 2044 media_config.video.enable_cpu_overuse_detection = false;
2047 } 2045 }
2048 channel_.reset( 2046 channel_.reset(
2049 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 2047 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
2050 2048
2051 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2049 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2052 2050
2053 AddSendStream(); 2051 AddSendStream();
2054 2052
2055 VideoOptions options; 2053 VideoOptions options;
2056 options.is_screencast = rtc::Optional<bool>(is_screenshare); 2054 options.is_screencast = rtc::Optional<bool>(is_screenshare);
2057 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); 2055 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options));
2058 2056
2059 cricket::FakeVideoCapturer capturer; 2057 cricket::FakeVideoCapturer capturer;
2060 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2058 channel_->SetSource(last_ssrc_, &capturer);
2061 EXPECT_EQ(cricket::CS_RUNNING, 2059 EXPECT_EQ(cricket::CS_RUNNING,
2062 capturer.Start(capturer.GetSupportedFormats()->front())); 2060 capturer.Start(capturer.GetSupportedFormats()->front()));
2063 2061
2064 EXPECT_TRUE(channel_->SetSend(true)); 2062 EXPECT_TRUE(channel_->SetSend(true));
2065 2063
2066 // Trigger overuse. 2064 // Trigger overuse.
2067 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 2065 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2068 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 2066 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2069 webrtc::LoadObserver* overuse_callback = 2067 webrtc::LoadObserver* overuse_callback =
2070 send_stream->GetConfig().overuse_callback; 2068 send_stream->GetConfig().overuse_callback;
2071 2069
2072 if (!enable_overuse) { 2070 if (!enable_overuse) {
2073 ASSERT_TRUE(overuse_callback == NULL); 2071 ASSERT_TRUE(overuse_callback == NULL);
2074 2072
2075 EXPECT_TRUE(capturer.CaptureFrame()); 2073 EXPECT_TRUE(capturer.CaptureFrame());
2076 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2074 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2077 2075
2078 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2076 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2079 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2077 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2080 2078
2081 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2079 channel_->SetSource(last_ssrc_, NULL);
2082 return; 2080 return;
2083 } 2081 }
2084 2082
2085 ASSERT_TRUE(overuse_callback != NULL); 2083 ASSERT_TRUE(overuse_callback != NULL);
2086 EXPECT_TRUE(capturer.CaptureFrame()); 2084 EXPECT_TRUE(capturer.CaptureFrame());
2087 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2085 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2088 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2086 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2089 2087
2090 EXPECT_TRUE(capturer.CaptureFrame()); 2088 EXPECT_TRUE(capturer.CaptureFrame());
2091 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 2089 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
2092 2090
2093 if (is_screenshare) { 2091 if (is_screenshare) {
2094 // Do not adapt screen share. 2092 // Do not adapt screen share.
2095 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2093 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2096 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2094 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2097 } else { 2095 } else {
2098 EXPECT_LT(send_stream->GetLastWidth(), codec.width); 2096 EXPECT_LT(send_stream->GetLastWidth(), codec.width);
2099 EXPECT_LT(send_stream->GetLastHeight(), codec.height); 2097 EXPECT_LT(send_stream->GetLastHeight(), codec.height);
2100 } 2098 }
2101 2099
2102 // Trigger underuse which should go back to normal resolution. 2100 // Trigger underuse which should go back to normal resolution.
2103 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2101 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2104 EXPECT_TRUE(capturer.CaptureFrame()); 2102 EXPECT_TRUE(capturer.CaptureFrame());
2105 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 2103 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
2106 2104
2107 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2105 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2108 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2106 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2109 2107
2110 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2108 channel_->SetSource(last_ssrc_, NULL);
2111 } 2109 }
2112 2110
2113 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { 2111 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) {
2114 // Start at last timestamp to verify that wraparounds are estimated correctly. 2112 // Start at last timestamp to verify that wraparounds are estimated correctly.
2115 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; 2113 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu;
2116 static const int64_t kInitialNtpTimeMs = 1247891230; 2114 static const int64_t kInitialNtpTimeMs = 1247891230;
2117 static const int kFrameOffsetMs = 20; 2115 static const int kFrameOffsetMs = 20;
2118 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2116 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2119 2117
2120 FakeVideoReceiveStream* stream = AddRecvStream(); 2118 FakeVideoReceiveStream* stream = AddRecvStream();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
2231 2229
2232 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { 2230 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) {
2233 cricket::VideoSendParameters parameters; 2231 cricket::VideoSendParameters parameters;
2234 parameters.codecs.push_back(kVp8Codec720p); 2232 parameters.codecs.push_back(kVp8Codec720p);
2235 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2233 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2236 channel_->SetSend(true); 2234 channel_->SetSend(true);
2237 2235
2238 FakeVideoSendStream* stream = AddSendStream(); 2236 FakeVideoSendStream* stream = AddSendStream();
2239 2237
2240 cricket::FakeVideoCapturer capturer; 2238 cricket::FakeVideoCapturer capturer;
2241 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2239 channel_->SetSource(last_ssrc_, &capturer);
2242 EXPECT_EQ(cricket::CS_RUNNING, 2240 EXPECT_EQ(cricket::CS_RUNNING,
2243 capturer.Start(capturer.GetSupportedFormats()->front())); 2241 capturer.Start(capturer.GetSupportedFormats()->front()));
2244 EXPECT_TRUE(capturer.CaptureFrame()); 2242 EXPECT_TRUE(capturer.CaptureFrame());
2245 2243
2246 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2244 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2247 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 2245 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
2248 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 2246 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
2249 2247
2250 parameters.codecs.clear(); 2248 parameters.codecs.clear();
2251 parameters.codecs.push_back(kVp8Codec360p); 2249 parameters.codecs.push_back(kVp8Codec360p);
2252 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2250 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2253 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); 2251 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams();
2254 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); 2252 EXPECT_EQ(kVp8Codec360p.width, streams[0].width);
2255 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); 2253 EXPECT_EQ(kVp8Codec360p.height, streams[0].height);
2256 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2254 channel_->SetSource(last_ssrc_, NULL);
2257 } 2255 }
2258 2256
2259 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { 2257 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) {
2260 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", 2258 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200",
2261 200000); 2259 200000);
2262 } 2260 }
2263 2261
2264 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { 2262 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) {
2265 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); 2263 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000);
2266 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); 2264 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2310 2308
2311 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { 2309 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
2312 cricket::VideoSendParameters parameters; 2310 cricket::VideoSendParameters parameters;
2313 parameters.codecs.push_back(kVp8Codec720p); 2311 parameters.codecs.push_back(kVp8Codec720p);
2314 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2312 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2315 channel_->SetSend(true); 2313 channel_->SetSend(true);
2316 2314
2317 FakeVideoSendStream* stream = AddSendStream(); 2315 FakeVideoSendStream* stream = AddSendStream();
2318 2316
2319 cricket::FakeVideoCapturer capturer; 2317 cricket::FakeVideoCapturer capturer;
2320 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2318 channel_->SetSource(last_ssrc_, &capturer);
2321 EXPECT_EQ(cricket::CS_RUNNING, 2319 EXPECT_EQ(cricket::CS_RUNNING,
2322 capturer.Start(capturer.GetSupportedFormats()->front())); 2320 capturer.Start(capturer.GetSupportedFormats()->front()));
2323 2321
2324 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2322 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2325 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; 2323 int initial_max_bitrate_bps = streams[0].max_bitrate_bps;
2326 EXPECT_GT(initial_max_bitrate_bps, 0); 2324 EXPECT_GT(initial_max_bitrate_bps, 0);
2327 2325
2328 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2326 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2329 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2327 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2330 // Insert a frame to update the encoder config. 2328 // Insert a frame to update the encoder config.
2331 EXPECT_TRUE(capturer.CaptureFrame()); 2329 EXPECT_TRUE(capturer.CaptureFrame());
2332 streams = stream->GetVideoStreams(); 2330 streams = stream->GetVideoStreams();
2333 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); 2331 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps);
2334 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 2332 channel_->SetSource(last_ssrc_, nullptr);
2335 } 2333 }
2336 2334
2337 TEST_F(WebRtcVideoChannel2Test, 2335 TEST_F(WebRtcVideoChannel2Test,
2338 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { 2336 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) {
2339 cricket::VideoSendParameters parameters; 2337 cricket::VideoSendParameters parameters;
2340 parameters.codecs.push_back(kVp8Codec720p); 2338 parameters.codecs.push_back(kVp8Codec720p);
2341 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2339 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2342 channel_->SetSend(true); 2340 channel_->SetSend(true);
2343 2341
2344 FakeVideoSendStream* stream = AddSendStream( 2342 FakeVideoSendStream* stream = AddSendStream(
2345 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2343 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2346 2344
2347 // Send a frame to make sure this scales up to >1 stream (simulcast). 2345 // Send a frame to make sure this scales up to >1 stream (simulcast).
2348 cricket::FakeVideoCapturer capturer; 2346 cricket::FakeVideoCapturer capturer;
2349 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); 2347 channel_->SetSource(kSsrcs3[0], &capturer);
2350 EXPECT_EQ(cricket::CS_RUNNING, 2348 EXPECT_EQ(cricket::CS_RUNNING,
2351 capturer.Start(capturer.GetSupportedFormats()->front())); 2349 capturer.Start(capturer.GetSupportedFormats()->front()));
2352 EXPECT_TRUE(capturer.CaptureFrame()); 2350 EXPECT_TRUE(capturer.CaptureFrame());
2353 2351
2354 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2352 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2355 ASSERT_GT(streams.size(), 1u) 2353 ASSERT_GT(streams.size(), 1u)
2356 << "Without simulcast this test doesn't make sense."; 2354 << "Without simulcast this test doesn't make sense.";
2357 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2355 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2358 EXPECT_GT(initial_max_bitrate_bps, 0); 2356 EXPECT_GT(initial_max_bitrate_bps, 0);
2359 2357
2360 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2358 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2361 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2359 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2362 // Insert a frame to update the encoder config. 2360 // Insert a frame to update the encoder config.
2363 EXPECT_TRUE(capturer.CaptureFrame()); 2361 EXPECT_TRUE(capturer.CaptureFrame());
2364 streams = stream->GetVideoStreams(); 2362 streams = stream->GetVideoStreams();
2365 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2363 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2366 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); 2364 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps);
2367 2365
2368 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); 2366 channel_->SetSource(kSsrcs3[0], nullptr);
2369 } 2367 }
2370 2368
2371 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { 2369 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) {
2372 static const char* kMaxQuantization = "21"; 2370 static const char* kMaxQuantization = "21";
2373 cricket::VideoSendParameters parameters; 2371 cricket::VideoSendParameters parameters;
2374 parameters.codecs.push_back(kVp8Codec); 2372 parameters.codecs.push_back(kVp8Codec);
2375 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; 2373 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization;
2376 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2374 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2377 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), 2375 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)),
2378 AddSendStream()->GetVideoStreams().back().max_qp); 2376 AddSendStream()->GetVideoStreams().back().max_qp);
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
2728 2726
2729 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { 2727 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) {
2730 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2728 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2731 2729
2732 // Capture format VGA. 2730 // Capture format VGA.
2733 cricket::FakeVideoCapturer video_capturer_vga; 2731 cricket::FakeVideoCapturer video_capturer_vga;
2734 const std::vector<cricket::VideoFormat>* formats = 2732 const std::vector<cricket::VideoFormat>* formats =
2735 video_capturer_vga.GetSupportedFormats(); 2733 video_capturer_vga.GetSupportedFormats();
2736 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2734 cricket::VideoFormat capture_format_vga = (*formats)[1];
2737 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2735 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2738 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2736 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2739 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2737 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2740 2738
2741 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2739 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2742 cricket::VideoSendParameters parameters; 2740 cricket::VideoSendParameters parameters;
2743 parameters.codecs.push_back(send_codec); 2741 parameters.codecs.push_back(send_codec);
2744 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2742 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2745 EXPECT_TRUE(channel_->SetSend(true)); 2743 EXPECT_TRUE(channel_->SetSend(true));
2746 2744
2747 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2745 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2748 2746
(...skipping 17 matching lines...) Expand all
2766 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2764 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2767 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2765 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2768 info.Clear(); 2766 info.Clear();
2769 EXPECT_TRUE(channel_->GetStats(&info)); 2767 EXPECT_TRUE(channel_->GetStats(&info));
2770 ASSERT_EQ(1U, info.senders.size()); 2768 ASSERT_EQ(1U, info.senders.size());
2771 EXPECT_EQ(2, info.senders[0].adapt_changes); 2769 EXPECT_EQ(2, info.senders[0].adapt_changes);
2772 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2770 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2773 info.senders[0].adapt_reason); 2771 info.senders[0].adapt_reason);
2774 2772
2775 // No capturer (no adapter). Adapt changes from old adapter should be kept. 2773 // No capturer (no adapter). Adapt changes from old adapter should be kept.
2776 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2774 channel_->SetSource(kSsrcs3[0], NULL);
2777 info.Clear(); 2775 info.Clear();
2778 EXPECT_TRUE(channel_->GetStats(&info)); 2776 EXPECT_TRUE(channel_->GetStats(&info));
2779 ASSERT_EQ(1U, info.senders.size()); 2777 ASSERT_EQ(1U, info.senders.size());
2780 EXPECT_EQ(2, info.senders[0].adapt_changes); 2778 EXPECT_EQ(2, info.senders[0].adapt_changes);
2781 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2779 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2782 info.senders[0].adapt_reason); 2780 info.senders[0].adapt_reason);
2783 2781
2784 // Set new capturer, capture format HD. 2782 // Set new capturer, capture format HD.
2785 cricket::FakeVideoCapturer video_capturer_hd; 2783 cricket::FakeVideoCapturer video_capturer_hd;
2786 cricket::VideoFormat capture_format_hd = (*formats)[0]; 2784 cricket::VideoFormat capture_format_hd = (*formats)[0];
2787 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); 2785 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd));
2788 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); 2786 channel_->SetSource(kSsrcs3[0], &video_capturer_hd);
2789 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2787 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2790 2788
2791 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. 2789 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2.
2792 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2790 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2793 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2791 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2794 info.Clear(); 2792 info.Clear();
2795 EXPECT_TRUE(channel_->GetStats(&info)); 2793 EXPECT_TRUE(channel_->GetStats(&info));
2796 ASSERT_EQ(1U, info.senders.size()); 2794 ASSERT_EQ(1U, info.senders.size());
2797 EXPECT_EQ(3, info.senders[0].adapt_changes); 2795 EXPECT_EQ(3, info.senders[0].adapt_changes);
2798 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, 2796 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU,
2799 info.senders[0].adapt_reason); 2797 info.senders[0].adapt_reason);
2800 2798
2801 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2799 channel_->SetSource(kSsrcs3[0], NULL);
2802 } 2800 }
2803 2801
2804 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { 2802 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) {
2805 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2803 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2806 2804
2807 // Capture format VGA. 2805 // Capture format VGA.
2808 cricket::FakeVideoCapturer video_capturer_vga; 2806 cricket::FakeVideoCapturer video_capturer_vga;
2809 const std::vector<cricket::VideoFormat>* formats = 2807 const std::vector<cricket::VideoFormat>* formats =
2810 video_capturer_vga.GetSupportedFormats(); 2808 video_capturer_vga.GetSupportedFormats();
2811 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2809 cricket::VideoFormat capture_format_vga = (*formats)[1];
2812 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2810 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2813 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2811 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2814 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2812 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2815 2813
2816 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2814 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2817 cricket::VideoSendParameters parameters; 2815 cricket::VideoSendParameters parameters;
2818 parameters.codecs.push_back(send_codec); 2816 parameters.codecs.push_back(send_codec);
2819 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2817 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2820 EXPECT_TRUE(channel_->SetSend(true)); 2818 EXPECT_TRUE(channel_->SetSend(true));
2821 2819
2822 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2820 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2823 2821
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2856 2854
2857 // Reset bandwidth limitation state -> adapt NONE. 2855 // Reset bandwidth limitation state -> adapt NONE.
2858 stats.bw_limited_resolution = false; 2856 stats.bw_limited_resolution = false;
2859 fake_call_->GetVideoSendStreams().front()->SetStats(stats); 2857 fake_call_->GetVideoSendStreams().front()->SetStats(stats);
2860 info.Clear(); 2858 info.Clear();
2861 EXPECT_TRUE(channel_->GetStats(&info)); 2859 EXPECT_TRUE(channel_->GetStats(&info));
2862 ASSERT_EQ(1U, info.senders.size()); 2860 ASSERT_EQ(1U, info.senders.size());
2863 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2861 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2864 info.senders[0].adapt_reason); 2862 info.senders[0].adapt_reason);
2865 2863
2866 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2864 channel_->SetSource(kSsrcs3[0], NULL);
2867 } 2865 }
2868 2866
2869 TEST_F(WebRtcVideoChannel2Test, 2867 TEST_F(WebRtcVideoChannel2Test,
2870 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { 2868 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) {
2871 FakeVideoSendStream* stream = AddSendStream(); 2869 FakeVideoSendStream* stream = AddSendStream();
2872 webrtc::VideoSendStream::Stats stats; 2870 webrtc::VideoSendStream::Stats stats;
2873 stats.bw_limited_resolution = true; 2871 stats.bw_limited_resolution = true;
2874 stream->SetStats(stats); 2872 stream->SetStats(stats);
2875 2873
2876 cricket::VideoMediaInfo info; 2874 cricket::VideoMediaInfo info;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
3218 } 3216 }
3219 3217
3220 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { 3218 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
3221 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); 3219 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false);
3222 } 3220 }
3223 3221
3224 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { 3222 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) {
3225 AddSendStream(); 3223 AddSendStream();
3226 3224
3227 cricket::FakeVideoCapturer capturer; 3225 cricket::FakeVideoCapturer capturer;
3228 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 3226 channel_->SetSource(last_ssrc_, &capturer);
3229 cricket::VideoFormat capture_format_hd = 3227 cricket::VideoFormat capture_format_hd =
3230 capturer.GetSupportedFormats()->front(); 3228 capturer.GetSupportedFormats()->front();
3231 EXPECT_EQ(1280, capture_format_hd.width); 3229 EXPECT_EQ(1280, capture_format_hd.width);
3232 EXPECT_EQ(720, capture_format_hd.height); 3230 EXPECT_EQ(720, capture_format_hd.height);
3233 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 3231 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
3234 EXPECT_TRUE(channel_->SetSend(true)); 3232 EXPECT_TRUE(channel_->SetSend(true));
3235 3233
3236 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); 3234 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer);
3237 EXPECT_TRUE(default_encoder_bitrate > 1000); 3235 EXPECT_TRUE(default_encoder_bitrate > 1000);
3238 3236
3239 // TODO(skvlad): Resolve the inconsistency between the interpretation 3237 // TODO(skvlad): Resolve the inconsistency between the interpretation
3240 // of the global bitrate limit for audio and video: 3238 // of the global bitrate limit for audio and video:
3241 // - Audio: max_bandwidth_bps = 0 - fail the operation, 3239 // - Audio: max_bandwidth_bps = 0 - fail the operation,
3242 // max_bandwidth_bps = -1 - remove the bandwidth limit 3240 // max_bandwidth_bps = -1 - remove the bandwidth limit
3243 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, 3241 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit,
3244 // max_bandwidth_bps = -1 - do not change the previously set 3242 // max_bandwidth_bps = -1 - do not change the previously set
3245 // limit. 3243 // limit.
3246 3244
3247 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); 3245 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000);
3248 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); 3246 SetAndExpectMaxBitrate(capturer, 1000, 800, 800);
3249 SetAndExpectMaxBitrate(capturer, 600, 800, 600); 3247 SetAndExpectMaxBitrate(capturer, 600, 800, 600);
3250 SetAndExpectMaxBitrate(capturer, 0, 800, 800); 3248 SetAndExpectMaxBitrate(capturer, 0, 800, 800);
3251 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); 3249 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate);
3252 3250
3253 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 3251 channel_->SetSource(last_ssrc_, NULL);
3254 } 3252 }
3255 3253
3256 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { 3254 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) {
3257 webrtc::RtpParameters nonexistent_parameters = 3255 webrtc::RtpParameters nonexistent_parameters =
3258 channel_->GetRtpParameters(last_ssrc_); 3256 channel_->GetRtpParameters(last_ssrc_);
3259 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); 3257 EXPECT_EQ(0, nonexistent_parameters.encodings.size());
3260 3258
3261 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); 3259 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters());
3262 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); 3260 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters));
3263 } 3261 }
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
3377 3375
3378 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 3376 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
3379 RTC_DCHECK(num_configured_streams <= ssrcs.size()); 3377 RTC_DCHECK(num_configured_streams <= ssrcs.size());
3380 ssrcs.resize(num_configured_streams); 3378 ssrcs.resize(num_configured_streams);
3381 3379
3382 FakeVideoSendStream* stream = 3380 FakeVideoSendStream* stream =
3383 AddSendStream(CreateSimStreamParams("cname", ssrcs)); 3381 AddSendStream(CreateSimStreamParams("cname", ssrcs));
3384 // Send a full-size frame to trigger a stream reconfiguration to use all 3382 // Send a full-size frame to trigger a stream reconfiguration to use all
3385 // expected simulcast layers. 3383 // expected simulcast layers.
3386 cricket::FakeVideoCapturer capturer; 3384 cricket::FakeVideoCapturer capturer;
3387 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); 3385 channel_->SetSource(ssrcs.front(), &capturer);
3388 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( 3386 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat(
3389 codec.width, codec.height, 3387 codec.width, codec.height,
3390 cricket::VideoFormat::FpsToInterval(30), 3388 cricket::VideoFormat::FpsToInterval(30),
3391 cricket::FOURCC_I420))); 3389 cricket::FOURCC_I420)));
3392 channel_->SetSend(true); 3390 channel_->SetSend(true);
3393 EXPECT_TRUE(capturer.CaptureFrame()); 3391 EXPECT_TRUE(capturer.CaptureFrame());
3394 3392
3395 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); 3393 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams();
3396 ASSERT_EQ(expected_num_streams, video_streams.size()); 3394 ASSERT_EQ(expected_num_streams, video_streams.size());
3397 3395
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3434 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; 3432 total_max_bitrate_bps += video_streams[i].max_bitrate_bps;
3435 } else { 3433 } else {
3436 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; 3434 total_max_bitrate_bps += video_streams[i].target_bitrate_bps;
3437 } 3435 }
3438 } 3436 }
3439 cricket::VideoMediaInfo info; 3437 cricket::VideoMediaInfo info;
3440 ASSERT_TRUE(channel_->GetStats(&info)); 3438 ASSERT_TRUE(channel_->GetStats(&info));
3441 ASSERT_EQ(1u, info.senders.size()); 3439 ASSERT_EQ(1u, info.senders.size());
3442 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); 3440 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate);
3443 3441
3444 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); 3442 channel_->SetSource(ssrcs.front(), NULL);
3445 } 3443 }
3446 3444
3447 FakeVideoSendStream* AddSendStream() { 3445 FakeVideoSendStream* AddSendStream() {
3448 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); 3446 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++));
3449 } 3447 }
3450 3448
3451 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { 3449 FakeVideoSendStream* AddSendStream(const StreamParams& sp) {
3452 size_t num_streams = 3450 size_t num_streams =
3453 fake_call_.GetVideoSendStreams().size(); 3451 fake_call_.GetVideoSendStreams().size();
3454 EXPECT_TRUE(channel_->AddSendStream(sp)); 3452 EXPECT_TRUE(channel_->AddSendStream(sp));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3491 } 3489 }
3492 3490
3493 // Test that we normalize send codec format size in simulcast. 3491 // Test that we normalize send codec format size in simulcast.
3494 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3492 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3495 cricket::VideoCodec codec(kVp8Codec270p); 3493 cricket::VideoCodec codec(kVp8Codec270p);
3496 codec.width += 1; 3494 codec.width += 1;
3497 codec.height += 1; 3495 codec.height += 1;
3498 VerifySimulcastSettings(codec, 2, 2); 3496 VerifySimulcastSettings(codec, 2, 2);
3499 } 3497 }
3500 } // namespace cricket 3498 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698