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

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

Powered by Google App Engine
This is Rietveld 408576698