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

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

Issue 1766653002: Replace SetCapturer and SetCaptureDevice by SetSource. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Delete GetVideoCapturer(!) and address other nits. 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
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_TRUE(encoder_factory.WaitForCreatedVideoEncoders(1)); 350 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(1));
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 // Sending one frame will have reallocated the encoder since input size 359 // Sending one frame will have reallocated the encoder since input size
360 // changes from a small default to the actual frame width/height. Wait for 360 // changes from a small default to the actual frame width/height. Wait for
361 // that to happen then for the frame to be sent. 361 // that to happen then for the frame to be sent.
362 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); 362 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2));
363 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, 363 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0,
364 kTimeout); 364 kTimeout);
365 365
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 434
435 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); 435 FakeCall* fake_call = new FakeCall(webrtc::Call::Config());
436 call_.reset(fake_call); 436 call_.reset(fake_call);
437 std::unique_ptr<VideoMediaChannel> channel( 437 std::unique_ptr<VideoMediaChannel> channel(
438 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 438 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
439 439
440 EXPECT_TRUE( 440 EXPECT_TRUE(
441 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 441 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
442 442
443 FakeVideoCapturer capturer; 443 FakeVideoCapturer capturer;
444 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); 444 channel->SetSource(kSsrc, &capturer);
445 capturer.Start(cricket::VideoFormat(1280, 720, 445 capturer.Start(cricket::VideoFormat(1280, 720,
446 cricket::VideoFormat::FpsToInterval(60), 446 cricket::VideoFormat::FpsToInterval(60),
447 cricket::FOURCC_I420)); 447 cricket::FOURCC_I420));
448 channel->SetSend(true); 448 channel->SetSend(true);
449 449
450 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 450 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
451 451
452 EXPECT_TRUE(capturer.CaptureFrame()); 452 EXPECT_TRUE(capturer.CaptureFrame());
453 int64_t last_timestamp = stream->GetLastTimestamp(); 453 int64_t last_timestamp = stream->GetLastTimestamp();
454 for (int i = 0; i < 10; i++) { 454 for (int i = 0; i < 10; i++) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 call_.reset(fake_call); 496 call_.reset(fake_call);
497 std::unique_ptr<VideoMediaChannel> channel( 497 std::unique_ptr<VideoMediaChannel> channel(
498 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 498 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
499 499
500 EXPECT_TRUE( 500 EXPECT_TRUE(
501 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 501 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
502 channel->SetSend(true); 502 channel->SetSend(true);
503 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 503 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
504 504
505 FakeVideoCapturer capturer1; 505 FakeVideoCapturer capturer1;
506 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); 506 channel->SetSource(kSsrc, &capturer1);
507 507
508 cricket::CapturedFrame frame; 508 cricket::CapturedFrame frame;
509 frame.width = 1280; 509 frame.width = 1280;
510 frame.height = 720; 510 frame.height = 720;
511 frame.fourcc = cricket::FOURCC_I420; 511 frame.fourcc = cricket::FOURCC_I420;
512 frame.data_size = frame.width * frame.height + 512 frame.data_size = frame.width * frame.height +
513 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); 513 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2);
514 std::unique_ptr<char[]> data(new char[frame.data_size]); 514 std::unique_ptr<char[]> data(new char[frame.data_size]);
515 frame.data = data.get(); 515 frame.data = data.get();
516 memset(frame.data, 1, frame.data_size); 516 memset(frame.data, 1, frame.data_size);
517 const int kInitialTimestamp = 123456; 517 const int kInitialTimestamp = 123456;
518 frame.time_stamp = kInitialTimestamp; 518 frame.time_stamp = kInitialTimestamp;
519 519
520 // Deliver initial frame. 520 // Deliver initial frame.
521 capturer1.SignalCapturedFrame(&frame); 521 capturer1.SignalCapturedFrame(&frame);
522 // Deliver next frame 1 second later. 522 // Deliver next frame 1 second later.
523 frame.time_stamp += rtc::kNumNanosecsPerSec; 523 frame.time_stamp += rtc::kNumNanosecsPerSec;
524 rtc::Thread::Current()->SleepMs(1000); 524 rtc::Thread::Current()->SleepMs(1000);
525 capturer1.SignalCapturedFrame(&frame); 525 capturer1.SignalCapturedFrame(&frame);
526 526
527 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); 527 int64_t capturer1_last_timestamp = stream->GetLastTimestamp();
528 // Reset input source, should still be continuous even though input-frame 528 // Reset input source, should still be continuous even though input-frame
529 // timestamp is less than before. 529 // timestamp is less than before.
530 FakeVideoCapturer capturer2; 530 FakeVideoCapturer capturer2;
531 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); 531 channel->SetSource(kSsrc, &capturer2);
532 532
533 rtc::Thread::Current()->SleepMs(1); 533 rtc::Thread::Current()->SleepMs(1);
534 // Deliver with a timestamp (10 seconds) before the previous initial one, 534 // Deliver with a timestamp (10 seconds) before the previous initial one,
535 // these should not be related at all anymore and it should still work fine. 535 // these should not be related at all anymore and it should still work fine.
536 frame.time_stamp = kInitialTimestamp - 10000; 536 frame.time_stamp = kInitialTimestamp - 10000;
537 capturer2.SignalCapturedFrame(&frame); 537 capturer2.SignalCapturedFrame(&frame);
538 538
539 // New timestamp should be at least 1ms in the future and not old. 539 // New timestamp should be at least 1ms in the future and not old.
540 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); 540 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp);
541 541
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 std::unique_ptr<VideoMediaChannel> channel( 581 std::unique_ptr<VideoMediaChannel> channel(
582 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 582 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
583 583
584 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 584 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
585 585
586 EXPECT_TRUE( 586 EXPECT_TRUE(
587 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 587 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
588 EXPECT_TRUE(channel->SetSend(true)); 588 EXPECT_TRUE(channel->SetSend(true));
589 589
590 cricket::FakeVideoCapturer capturer; 590 cricket::FakeVideoCapturer capturer;
591 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 591 channel->SetSource(ssrcs.front(), &capturer);
592 EXPECT_EQ(cricket::CS_RUNNING, 592 EXPECT_EQ(cricket::CS_RUNNING,
593 capturer.Start(capturer.GetSupportedFormats()->front())); 593 capturer.Start(capturer.GetSupportedFormats()->front()));
594 EXPECT_TRUE(capturer.CaptureFrame()); 594 EXPECT_TRUE(capturer.CaptureFrame());
595 595
596 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); 596 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2));
597 597
598 // Verify that encoders are configured for simulcast through adapter 598 // Verify that encoders are configured for simulcast through adapter
599 // (increasing resolution and only configured to send one stream each). 599 // (increasing resolution and only configured to send one stream each).
600 int prev_width = -1; 600 int prev_width = -1;
601 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { 601 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) {
602 ASSERT_TRUE(encoder_factory.encoders()[i]->WaitForInitEncode()); 602 ASSERT_TRUE(encoder_factory.encoders()[i]->WaitForInitEncode());
603 webrtc::VideoCodec codec_settings = 603 webrtc::VideoCodec codec_settings =
604 encoder_factory.encoders()[i]->GetCodecSettings(); 604 encoder_factory.encoders()[i]->GetCodecSettings();
605 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); 605 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams);
606 EXPECT_GT(codec_settings.width, prev_width); 606 EXPECT_GT(codec_settings.width, prev_width);
607 prev_width = codec_settings.width; 607 prev_width = codec_settings.width;
608 } 608 }
609 609
610 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), NULL)); 610 channel->SetSource(ssrcs.front(), NULL);
611 611
612 channel.reset(); 612 channel.reset();
613 ASSERT_EQ(0u, encoder_factory.encoders().size()); 613 ASSERT_EQ(0u, encoder_factory.encoders().size());
614 } 614 }
615 615
616 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { 616 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) {
617 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 617 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
618 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); 618 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264");
619 std::vector<cricket::VideoCodec> codecs; 619 std::vector<cricket::VideoCodec> codecs;
620 codecs.push_back(kH264Codec); 620 codecs.push_back(kH264Codec);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 663 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
664 664
665 EXPECT_TRUE( 665 EXPECT_TRUE(
666 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); 666 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs)));
667 EXPECT_TRUE(channel->SetSend(true)); 667 EXPECT_TRUE(channel->SetSend(true));
668 668
669 // Send a fake frame, or else the media engine will configure the simulcast 669 // Send a fake frame, or else the media engine will configure the simulcast
670 // encoder adapter at a low-enough size that it'll only create a single 670 // encoder adapter at a low-enough size that it'll only create a single
671 // encoder layer. 671 // encoder layer.
672 cricket::FakeVideoCapturer capturer; 672 cricket::FakeVideoCapturer capturer;
673 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); 673 channel->SetSource(ssrcs.front(), &capturer);
674 EXPECT_EQ(cricket::CS_RUNNING, 674 EXPECT_EQ(cricket::CS_RUNNING,
675 capturer.Start(capturer.GetSupportedFormats()->front())); 675 capturer.Start(capturer.GetSupportedFormats()->front()));
676 EXPECT_TRUE(capturer.CaptureFrame()); 676 EXPECT_TRUE(capturer.CaptureFrame());
677 677
678 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); 678 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2));
679 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); 679 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode());
680 EXPECT_EQ(webrtc::kVideoCodecVP8, 680 EXPECT_EQ(webrtc::kVideoCodecVP8,
681 encoder_factory.encoders()[0]->GetCodecSettings().codecType); 681 encoder_factory.encoders()[0]->GetCodecSettings().codecType);
682 682
683 channel.reset(); 683 channel.reset();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 719 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
720 720
721 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 721 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
722 EXPECT_TRUE( 722 EXPECT_TRUE(
723 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); 723 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs)));
724 724
725 // Send a frame of 720p. This should trigger a "real" encoder initialization. 725 // Send a frame of 720p. This should trigger a "real" encoder initialization.
726 cricket::VideoFormat format( 726 cricket::VideoFormat format(
727 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); 727 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420);
728 cricket::FakeVideoCapturer capturer; 728 cricket::FakeVideoCapturer capturer;
729 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], &capturer)); 729 channel->SetSource(ssrcs[0], &capturer);
730 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); 730 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
731 EXPECT_TRUE(capturer.CaptureFrame()); 731 EXPECT_TRUE(capturer.CaptureFrame());
732 732
733 ASSERT_EQ(1u, encoder_factory.encoders().size()); 733 ASSERT_EQ(1u, encoder_factory.encoders().size());
734 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; 734 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0];
735 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); 735 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode());
736 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); 736 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType);
737 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); 737 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams);
738 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], nullptr)); 738 channel->SetSource(ssrcs[0], nullptr);
739 } 739 }
740 740
741 // Test that external codecs are added to the end of the supported codec list. 741 // Test that external codecs are added to the end of the supported codec list.
742 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { 742 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) {
743 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 743 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
744 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, 744 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown,
745 "FakeExternalCodec"); 745 "FakeExternalCodec");
746 engine_.SetExternalEncoderFactory(&encoder_factory); 746 engine_.SetExternalEncoderFactory(&encoder_factory);
747 engine_.Init(); 747 engine_.Init();
748 748
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 848
849 WEBRTC_BASE_TEST(AdaptResolution4x3); 849 WEBRTC_BASE_TEST(AdaptResolution4x3);
850 850
851 // TODO(juberti): Restore this test once we support sending 0 fps. 851 // TODO(juberti): Restore this test once we support sending 0 fps.
852 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames); 852 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames);
853 // TODO(juberti): Understand why we get decode errors on this test. 853 // TODO(juberti): Understand why we get decode errors on this test.
854 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate); 854 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate);
855 855
856 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames); 856 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames);
857 857
858 WEBRTC_BASE_TEST(MuteStream);
859
860 WEBRTC_BASE_TEST(MultipleSendStreams); 858 WEBRTC_BASE_TEST(MultipleSendStreams);
861 859
862 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { 860 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) {
863 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0)); 861 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0));
864 } 862 }
865 863
866 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { 864 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) {
867 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0)); 865 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0));
868 } 866 }
869 867
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
1541 channel_->SetSend(false); 1539 channel_->SetSend(false);
1542 1540
1543 FakeVideoSendStream* stream = AddSendStream(); 1541 FakeVideoSendStream* stream = AddSendStream();
1544 1542
1545 // No frames entered, using default dimensions. 1543 // No frames entered, using default dimensions.
1546 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 1544 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
1547 EXPECT_EQ(176u, streams[0].width); 1545 EXPECT_EQ(176u, streams[0].width);
1548 EXPECT_EQ(144u, streams[0].height); 1546 EXPECT_EQ(144u, streams[0].height);
1549 1547
1550 cricket::FakeVideoCapturer capturer; 1548 cricket::FakeVideoCapturer capturer;
1551 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1549 channel_->SetSource(last_ssrc_, &capturer);
1552 EXPECT_EQ(cricket::CS_RUNNING, 1550 EXPECT_EQ(cricket::CS_RUNNING,
1553 capturer.Start(capturer.GetSupportedFormats()->front())); 1551 capturer.Start(capturer.GetSupportedFormats()->front()));
1554 EXPECT_TRUE(capturer.CaptureFrame()); 1552 EXPECT_TRUE(capturer.CaptureFrame());
1555 1553
1556 // Frame entered, should be reconfigured to new dimensions. 1554 // Frame entered, should be reconfigured to new dimensions.
1557 streams = stream->GetVideoStreams(); 1555 streams = stream->GetVideoStreams();
1558 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 1556 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
1559 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 1557 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
1560 // No frames should have been actually put in there though. 1558 // No frames should have been actually put in there though.
1561 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames()); 1559 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames());
1562 1560
1563 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1561 channel_->SetSource(last_ssrc_, NULL);
1564 } 1562 }
1565 1563
1566 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { 1564 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) {
1567 static const int kScreenshareMinBitrateKbps = 800; 1565 static const int kScreenshareMinBitrateKbps = 800;
1568 cricket::VideoCodec codec = kVp8Codec360p; 1566 cricket::VideoCodec codec = kVp8Codec360p;
1569 cricket::VideoSendParameters parameters; 1567 cricket::VideoSendParameters parameters;
1570 parameters.codecs.push_back(codec); 1568 parameters.codecs.push_back(codec);
1571 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 1569 EXPECT_TRUE(channel_->SetSendParameters(parameters));
1572 AddSendStream(); 1570 AddSendStream();
1573 1571
1574 VideoOptions min_bitrate_options; 1572 VideoOptions min_bitrate_options;
1575 min_bitrate_options.screencast_min_bitrate_kbps = 1573 min_bitrate_options.screencast_min_bitrate_kbps =
1576 rtc::Optional<int>(kScreenshareMinBitrateKbps); 1574 rtc::Optional<int>(kScreenshareMinBitrateKbps);
1577 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options); 1575 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options);
1578 1576
1579 cricket::FakeVideoCapturer capturer; 1577 cricket::FakeVideoCapturer capturer;
1580 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1578 channel_->SetSource(last_ssrc_, &capturer);
1581 cricket::VideoFormat capture_format_hd = 1579 cricket::VideoFormat capture_format_hd =
1582 capturer.GetSupportedFormats()->front(); 1580 capturer.GetSupportedFormats()->front();
1583 EXPECT_EQ(1280, capture_format_hd.width); 1581 EXPECT_EQ(1280, capture_format_hd.width);
1584 EXPECT_EQ(720, capture_format_hd.height); 1582 EXPECT_EQ(720, capture_format_hd.height);
1585 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1583 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1586 1584
1587 EXPECT_TRUE(channel_->SetSend(true)); 1585 EXPECT_TRUE(channel_->SetSend(true));
1588 1586
1589 EXPECT_TRUE(capturer.CaptureFrame()); 1587 EXPECT_TRUE(capturer.CaptureFrame());
1590 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1588 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1591 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1589 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1592 1590
1593 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 1591 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
1594 1592
1595 // Verify non-screencast settings. 1593 // Verify non-screencast settings.
1596 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1594 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1597 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1595 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1598 encoder_config.content_type); 1596 encoder_config.content_type);
1599 EXPECT_EQ(codec.width, encoder_config.streams.front().width); 1597 EXPECT_EQ(codec.width, encoder_config.streams.front().width);
1600 EXPECT_EQ(codec.height, encoder_config.streams.front().height); 1598 EXPECT_EQ(codec.height, encoder_config.streams.front().height);
1601 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) 1599 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps)
1602 << "Non-screenshare shouldn't use min-transmit bitrate."; 1600 << "Non-screenshare shouldn't use min-transmit bitrate.";
1603 1601
1604 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 1602 channel_->SetSource(last_ssrc_, nullptr);
1605 // Removing a capturer triggers a black frame to be sent. 1603 // Removing a capturer triggers a black frame to be sent.
1606 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 1604 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
1607 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1605 channel_->SetSource(last_ssrc_, &capturer);
1608 VideoOptions screencast_options; 1606 VideoOptions screencast_options;
1609 screencast_options.is_screencast = rtc::Optional<bool>(true); 1607 screencast_options.is_screencast = rtc::Optional<bool>(true);
1610 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options)); 1608 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options));
1611 EXPECT_TRUE(capturer.CaptureFrame()); 1609 EXPECT_TRUE(capturer.CaptureFrame());
1612 // Send stream not recreated after option change. 1610 // Send stream not recreated after option change.
1613 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); 1611 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front());
1614 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 1612 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
1615 1613
1616 // Verify screencast settings. 1614 // Verify screencast settings.
1617 encoder_config = send_stream->GetEncoderConfig(); 1615 encoder_config = send_stream->GetEncoderConfig();
1618 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1616 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1619 encoder_config.content_type); 1617 encoder_config.content_type);
1620 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, 1618 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000,
1621 encoder_config.min_transmit_bitrate_bps); 1619 encoder_config.min_transmit_bitrate_bps);
1622 1620
1623 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); 1621 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width);
1624 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); 1622 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height);
1625 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); 1623 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty());
1626 1624
1627 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1625 channel_->SetSource(last_ssrc_, NULL);
1628 } 1626 }
1629 1627
1630 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { 1628 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) {
1631 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 1629 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
1632 ASSERT_TRUE( 1630 ASSERT_TRUE(
1633 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 1631 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
1634 EXPECT_TRUE(channel_->SetSend(true)); 1632 EXPECT_TRUE(channel_->SetSend(true));
1635 1633
1636 cricket::FakeVideoCapturer capturer; 1634 cricket::FakeVideoCapturer capturer;
1637 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &capturer)); 1635 channel_->SetSource(kSsrc, &capturer);
1638 EXPECT_EQ(cricket::CS_RUNNING, 1636 EXPECT_EQ(cricket::CS_RUNNING,
1639 capturer.Start(capturer.GetSupportedFormats()->front())); 1637 capturer.Start(capturer.GetSupportedFormats()->front()));
1640 EXPECT_TRUE(capturer.CaptureFrame()); 1638 EXPECT_TRUE(capturer.CaptureFrame());
1641 1639
1642 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1640 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1643 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); 1641 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front();
1644 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); 1642 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig();
1645 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1643 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1646 encoder_config.content_type); 1644 encoder_config.content_type);
1647 1645
(...skipping 20 matching lines...) Expand all
1668 1666
1669 EXPECT_TRUE(capturer.CaptureFrame()); 1667 EXPECT_TRUE(capturer.CaptureFrame());
1670 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); 1668 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams());
1671 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); 1669 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front());
1672 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); 1670 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames());
1673 1671
1674 encoder_config = stream->GetEncoderConfig(); 1672 encoder_config = stream->GetEncoderConfig();
1675 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, 1673 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo,
1676 encoder_config.content_type); 1674 encoder_config.content_type);
1677 1675
1678 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); 1676 channel_->SetSource(kSsrc, NULL);
1679 } 1677 }
1680 1678
1681 TEST_F(WebRtcVideoChannel2Test, 1679 TEST_F(WebRtcVideoChannel2Test,
1682 ConferenceModeScreencastConfiguresTemporalLayer) { 1680 ConferenceModeScreencastConfiguresTemporalLayer) {
1683 static const int kConferenceScreencastTemporalBitrateBps = 1681 static const int kConferenceScreencastTemporalBitrateBps =
1684 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; 1682 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000;
1685 send_parameters_.conference_mode = true; 1683 send_parameters_.conference_mode = true;
1686 channel_->SetSendParameters(send_parameters_); 1684 channel_->SetSendParameters(send_parameters_);
1687 1685
1688 AddSendStream(); 1686 AddSendStream();
1689 VideoOptions options; 1687 VideoOptions options;
1690 options.is_screencast = rtc::Optional<bool>(true); 1688 options.is_screencast = rtc::Optional<bool>(true);
1691 channel_->SetVideoSend(last_ssrc_, true, &options); 1689 channel_->SetVideoSend(last_ssrc_, true, &options);
1692 cricket::FakeVideoCapturer capturer; 1690 cricket::FakeVideoCapturer capturer;
1693 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1691 channel_->SetSource(last_ssrc_, &capturer);
1694 cricket::VideoFormat capture_format_hd = 1692 cricket::VideoFormat capture_format_hd =
1695 capturer.GetSupportedFormats()->front(); 1693 capturer.GetSupportedFormats()->front();
1696 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 1694 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
1697 1695
1698 EXPECT_TRUE(channel_->SetSend(true)); 1696 EXPECT_TRUE(channel_->SetSend(true));
1699 1697
1700 EXPECT_TRUE(capturer.CaptureFrame()); 1698 EXPECT_TRUE(capturer.CaptureFrame());
1701 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1699 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
1702 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1700 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
1703 1701
1704 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); 1702 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig();
1705 1703
1706 // Verify screencast settings. 1704 // Verify screencast settings.
1707 encoder_config = send_stream->GetEncoderConfig(); 1705 encoder_config = send_stream->GetEncoderConfig();
1708 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, 1706 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen,
1709 encoder_config.content_type); 1707 encoder_config.content_type);
1710 ASSERT_EQ(1u, encoder_config.streams.size()); 1708 ASSERT_EQ(1u, encoder_config.streams.size());
1711 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); 1709 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size());
1712 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, 1710 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps,
1713 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); 1711 encoder_config.streams[0].temporal_layer_thresholds_bps[0]);
1714 1712
1715 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1713 channel_->SetSource(last_ssrc_, NULL);
1716 } 1714 }
1717 1715
1718 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { 1716 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) {
1719 FakeVideoSendStream* stream = AddSendStream(); 1717 FakeVideoSendStream* stream = AddSendStream();
1720 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); 1718 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate);
1721 } 1719 }
1722 1720
1723 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { 1721 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) {
1724 MediaConfig media_config = MediaConfig(); 1722 MediaConfig media_config = MediaConfig();
1725 media_config.video.suspend_below_min_bitrate = true; 1723 media_config.video.suspend_below_min_bitrate = true;
(...skipping 29 matching lines...) Expand all
1755 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1753 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1756 1754
1757 // Single-stream settings should apply with RTX as well (verifies that we 1755 // Single-stream settings should apply with RTX as well (verifies that we
1758 // check number of regular SSRCs and not StreamParams::ssrcs which contains 1756 // check number of regular SSRCs and not StreamParams::ssrcs which contains
1759 // both RTX and regular SSRCs). 1757 // both RTX and regular SSRCs).
1760 FakeVideoSendStream* stream = SetUpSimulcast(false, true); 1758 FakeVideoSendStream* stream = SetUpSimulcast(false, true);
1761 1759
1762 cricket::FakeVideoCapturer capturer; 1760 cricket::FakeVideoCapturer capturer;
1763 EXPECT_EQ(cricket::CS_RUNNING, 1761 EXPECT_EQ(cricket::CS_RUNNING,
1764 capturer.Start(capturer.GetSupportedFormats()->front())); 1762 capturer.Start(capturer.GetSupportedFormats()->front()));
1765 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1763 channel_->SetSource(last_ssrc_, &capturer);
1766 channel_->SetSend(true); 1764 channel_->SetSend(true);
1767 1765
1768 EXPECT_TRUE(capturer.CaptureFrame()); 1766 EXPECT_TRUE(capturer.CaptureFrame());
1769 1767
1770 webrtc::VideoCodecVP8 vp8_settings; 1768 webrtc::VideoCodecVP8 vp8_settings;
1771 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1769 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1772 EXPECT_TRUE(vp8_settings.denoisingOn) 1770 EXPECT_TRUE(vp8_settings.denoisingOn)
1773 << "VP8 denoising should be on by default."; 1771 << "VP8 denoising should be on by default.";
1774 1772
1775 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1773 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
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_FALSE(vp8_settings.denoisingOn); 1776 EXPECT_FALSE(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 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1780 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1783 1781
1784 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1782 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1785 EXPECT_TRUE(vp8_settings.denoisingOn); 1783 EXPECT_TRUE(vp8_settings.denoisingOn);
1786 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1784 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1787 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1785 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1788 1786
1789 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1787 channel_->SetSource(last_ssrc_, NULL);
1790 stream = SetUpSimulcast(true, false); 1788 stream = SetUpSimulcast(true, false);
1791 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1789 channel_->SetSource(last_ssrc_, &capturer);
1792 channel_->SetSend(true); 1790 channel_->SetSend(true);
1793 EXPECT_TRUE(capturer.CaptureFrame()); 1791 EXPECT_TRUE(capturer.CaptureFrame());
1794 1792
1795 EXPECT_EQ(3, stream->GetVideoStreams().size()); 1793 EXPECT_EQ(3, stream->GetVideoStreams().size());
1796 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1794 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1797 // Autmatic resize off when using simulcast. 1795 // Autmatic resize off when using simulcast.
1798 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1796 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1799 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1797 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1800 1798
1801 // In screen-share mode, denoising is forced off and simulcast disabled. 1799 // In screen-share mode, denoising is forced off and simulcast disabled.
(...skipping 10 matching lines...) Expand all
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 stream = SetDenoisingOption(last_ssrc_, &capturer, true); 1813 stream = SetDenoisingOption(last_ssrc_, &capturer, true);
1816 1814
1817 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1815 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1818 EXPECT_FALSE(vp8_settings.denoisingOn); 1816 EXPECT_FALSE(vp8_settings.denoisingOn);
1819 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1817 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1820 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1818 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1821 1819
1822 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1820 channel_->SetSource(last_ssrc_, NULL);
1823 } 1821 }
1824 1822
1825 class Vp9SettingsTest : public WebRtcVideoChannel2Test { 1823 class Vp9SettingsTest : public WebRtcVideoChannel2Test {
1826 public: 1824 public:
1827 Vp9SettingsTest() : Vp9SettingsTest("") {} 1825 Vp9SettingsTest() : Vp9SettingsTest("") {}
1828 explicit Vp9SettingsTest(const char* field_trials) 1826 explicit Vp9SettingsTest(const char* field_trials)
1829 : WebRtcVideoChannel2Test(field_trials) { 1827 : WebRtcVideoChannel2Test(field_trials) {
1830 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); 1828 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9");
1831 } 1829 }
1832 virtual ~Vp9SettingsTest() {} 1830 virtual ~Vp9SettingsTest() {}
(...skipping 17 matching lines...) Expand all
1850 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { 1848 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) {
1851 cricket::VideoSendParameters parameters; 1849 cricket::VideoSendParameters parameters;
1852 parameters.codecs.push_back(kVp9Codec); 1850 parameters.codecs.push_back(kVp9Codec);
1853 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1851 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1854 1852
1855 FakeVideoSendStream* stream = SetUpSimulcast(false, false); 1853 FakeVideoSendStream* stream = SetUpSimulcast(false, false);
1856 1854
1857 cricket::FakeVideoCapturer capturer; 1855 cricket::FakeVideoCapturer capturer;
1858 EXPECT_EQ(cricket::CS_RUNNING, 1856 EXPECT_EQ(cricket::CS_RUNNING,
1859 capturer.Start(capturer.GetSupportedFormats()->front())); 1857 capturer.Start(capturer.GetSupportedFormats()->front()));
1860 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1858 channel_->SetSource(last_ssrc_, &capturer);
1861 channel_->SetSend(true); 1859 channel_->SetSend(true);
1862 1860
1863 EXPECT_TRUE(capturer.CaptureFrame()); 1861 EXPECT_TRUE(capturer.CaptureFrame());
1864 1862
1865 webrtc::VideoCodecVP9 vp9_settings; 1863 webrtc::VideoCodecVP9 vp9_settings;
1866 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1864 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1867 EXPECT_FALSE(vp9_settings.denoisingOn) 1865 EXPECT_FALSE(vp9_settings.denoisingOn)
1868 << "VP9 denoising should be off by default."; 1866 << "VP9 denoising should be off by default.";
1869 1867
1870 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1868 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
(...skipping 20 matching lines...) Expand all
1891 EXPECT_FALSE(vp9_settings.denoisingOn); 1889 EXPECT_FALSE(vp9_settings.denoisingOn);
1892 // Frame dropping always off for screen sharing. 1890 // Frame dropping always off for screen sharing.
1893 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1891 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1894 1892
1895 stream = SetDenoisingOption(last_ssrc_, &capturer, false); 1893 stream = SetDenoisingOption(last_ssrc_, &capturer, false);
1896 1894
1897 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1895 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1898 EXPECT_FALSE(vp9_settings.denoisingOn); 1896 EXPECT_FALSE(vp9_settings.denoisingOn);
1899 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1897 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1900 1898
1901 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1899 channel_->SetSource(last_ssrc_, NULL);
1902 } 1900 }
1903 1901
1904 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest { 1902 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest {
1905 public: 1903 public:
1906 Vp9SettingsTestWithFieldTrial(const char* field_trials) 1904 Vp9SettingsTestWithFieldTrial(const char* field_trials)
1907 : Vp9SettingsTest(field_trials) {} 1905 : Vp9SettingsTest(field_trials) {}
1908 1906
1909 protected: 1907 protected:
1910 void VerifySettings(int num_spatial_layers, int num_temporal_layers) { 1908 void VerifySettings(int num_spatial_layers, int num_temporal_layers) {
1911 cricket::VideoSendParameters parameters; 1909 cricket::VideoSendParameters parameters;
1912 parameters.codecs.push_back(kVp9Codec); 1910 parameters.codecs.push_back(kVp9Codec);
1913 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1911 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1914 1912
1915 FakeVideoSendStream* stream = SetUpSimulcast(false, false); 1913 FakeVideoSendStream* stream = SetUpSimulcast(false, false);
1916 1914
1917 cricket::FakeVideoCapturer capturer; 1915 cricket::FakeVideoCapturer capturer;
1918 EXPECT_EQ(cricket::CS_RUNNING, 1916 EXPECT_EQ(cricket::CS_RUNNING,
1919 capturer.Start(capturer.GetSupportedFormats()->front())); 1917 capturer.Start(capturer.GetSupportedFormats()->front()));
1920 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1918 channel_->SetSource(last_ssrc_, &capturer);
1921 channel_->SetSend(true); 1919 channel_->SetSend(true);
1922 1920
1923 EXPECT_TRUE(capturer.CaptureFrame()); 1921 EXPECT_TRUE(capturer.CaptureFrame());
1924 1922
1925 webrtc::VideoCodecVP9 vp9_settings; 1923 webrtc::VideoCodecVP9 vp9_settings;
1926 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1924 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1927 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers); 1925 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers);
1928 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers); 1926 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers);
1929 1927
1930 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1928 channel_->SetSource(last_ssrc_, NULL);
1931 } 1929 }
1932 }; 1930 };
1933 1931
1934 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial { 1932 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial {
1935 public: 1933 public:
1936 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {} 1934 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {}
1937 }; 1935 };
1938 1936
1939 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) { 1937 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) {
1940 const int kNumSpatialLayers = 1; 1938 const int kNumSpatialLayers = 1;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1985 parameters.codecs.push_back(codec); 1983 parameters.codecs.push_back(codec);
1986 1984
1987 MediaConfig media_config = MediaConfig(); 1985 MediaConfig media_config = MediaConfig();
1988 channel_.reset( 1986 channel_.reset(
1989 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 1987 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
1990 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 1988 ASSERT_TRUE(channel_->SetSendParameters(parameters));
1991 1989
1992 AddSendStream(); 1990 AddSendStream();
1993 1991
1994 cricket::FakeVideoCapturer capturer; 1992 cricket::FakeVideoCapturer capturer;
1995 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1993 channel_->SetSource(last_ssrc_, &capturer);
1996 ASSERT_EQ(cricket::CS_RUNNING, 1994 ASSERT_EQ(cricket::CS_RUNNING,
1997 capturer.Start(capturer.GetSupportedFormats()->front())); 1995 capturer.Start(capturer.GetSupportedFormats()->front()));
1998 ASSERT_TRUE(channel_->SetSend(true)); 1996 ASSERT_TRUE(channel_->SetSend(true));
1999 1997
2000 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 1998 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2001 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 1999 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2002 webrtc::LoadObserver* overuse_callback = 2000 webrtc::LoadObserver* overuse_callback =
2003 send_stream->GetConfig().overuse_callback; 2001 send_stream->GetConfig().overuse_callback;
2004 ASSERT_TRUE(overuse_callback != NULL); 2002 ASSERT_TRUE(overuse_callback != NULL);
2005 2003
(...skipping 29 matching lines...) Expand all
2035 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); 2033 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth());
2036 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); 2034 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight());
2037 2035
2038 // Trigger underuse which should go back up in resolution. 2036 // Trigger underuse which should go back up in resolution.
2039 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2037 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2040 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); 2038 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420));
2041 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); 2039 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames());
2042 EXPECT_EQ(1284, send_stream->GetLastWidth()); 2040 EXPECT_EQ(1284, send_stream->GetLastWidth());
2043 EXPECT_EQ(724, send_stream->GetLastHeight()); 2041 EXPECT_EQ(724, send_stream->GetLastHeight());
2044 2042
2045 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2043 channel_->SetSource(last_ssrc_, NULL);
2046 } 2044 }
2047 2045
2048 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, 2046 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse,
2049 bool is_screenshare) { 2047 bool is_screenshare) {
2050 cricket::VideoCodec codec = kVp8Codec720p; 2048 cricket::VideoCodec codec = kVp8Codec720p;
2051 cricket::VideoSendParameters parameters; 2049 cricket::VideoSendParameters parameters;
2052 parameters.codecs.push_back(codec); 2050 parameters.codecs.push_back(codec);
2053 2051
2054 MediaConfig media_config = MediaConfig(); 2052 MediaConfig media_config = MediaConfig();
2055 if (!enable_overuse) { 2053 if (!enable_overuse) {
2056 media_config.video.enable_cpu_overuse_detection = false; 2054 media_config.video.enable_cpu_overuse_detection = false;
2057 } 2055 }
2058 channel_.reset( 2056 channel_.reset(
2059 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 2057 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
2060 2058
2061 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2059 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2062 2060
2063 AddSendStream(); 2061 AddSendStream();
2064 2062
2065 VideoOptions options; 2063 VideoOptions options;
2066 options.is_screencast = rtc::Optional<bool>(is_screenshare); 2064 options.is_screencast = rtc::Optional<bool>(is_screenshare);
2067 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); 2065 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options));
2068 2066
2069 cricket::FakeVideoCapturer capturer; 2067 cricket::FakeVideoCapturer capturer;
2070 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2068 channel_->SetSource(last_ssrc_, &capturer);
2071 EXPECT_EQ(cricket::CS_RUNNING, 2069 EXPECT_EQ(cricket::CS_RUNNING,
2072 capturer.Start(capturer.GetSupportedFormats()->front())); 2070 capturer.Start(capturer.GetSupportedFormats()->front()));
2073 2071
2074 EXPECT_TRUE(channel_->SetSend(true)); 2072 EXPECT_TRUE(channel_->SetSend(true));
2075 2073
2076 // Trigger overuse. 2074 // Trigger overuse.
2077 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); 2075 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
2078 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); 2076 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
2079 webrtc::LoadObserver* overuse_callback = 2077 webrtc::LoadObserver* overuse_callback =
2080 send_stream->GetConfig().overuse_callback; 2078 send_stream->GetConfig().overuse_callback;
2081 2079
2082 if (!enable_overuse) { 2080 if (!enable_overuse) {
2083 ASSERT_TRUE(overuse_callback == NULL); 2081 ASSERT_TRUE(overuse_callback == NULL);
2084 2082
2085 EXPECT_TRUE(capturer.CaptureFrame()); 2083 EXPECT_TRUE(capturer.CaptureFrame());
2086 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2084 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2087 2085
2088 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2086 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2089 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2087 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2090 2088
2091 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2089 channel_->SetSource(last_ssrc_, NULL);
2092 return; 2090 return;
2093 } 2091 }
2094 2092
2095 ASSERT_TRUE(overuse_callback != NULL); 2093 ASSERT_TRUE(overuse_callback != NULL);
2096 EXPECT_TRUE(capturer.CaptureFrame()); 2094 EXPECT_TRUE(capturer.CaptureFrame());
2097 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); 2095 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames());
2098 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2096 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2099 2097
2100 EXPECT_TRUE(capturer.CaptureFrame()); 2098 EXPECT_TRUE(capturer.CaptureFrame());
2101 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); 2099 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames());
2102 2100
2103 if (is_screenshare) { 2101 if (is_screenshare) {
2104 // Do not adapt screen share. 2102 // Do not adapt screen share.
2105 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2103 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2106 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2104 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2107 } else { 2105 } else {
2108 EXPECT_LT(send_stream->GetLastWidth(), codec.width); 2106 EXPECT_LT(send_stream->GetLastWidth(), codec.width);
2109 EXPECT_LT(send_stream->GetLastHeight(), codec.height); 2107 EXPECT_LT(send_stream->GetLastHeight(), codec.height);
2110 } 2108 }
2111 2109
2112 // Trigger underuse which should go back to normal resolution. 2110 // Trigger underuse which should go back to normal resolution.
2113 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2111 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2114 EXPECT_TRUE(capturer.CaptureFrame()); 2112 EXPECT_TRUE(capturer.CaptureFrame());
2115 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); 2113 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames());
2116 2114
2117 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); 2115 EXPECT_EQ(codec.width, send_stream->GetLastWidth());
2118 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); 2116 EXPECT_EQ(codec.height, send_stream->GetLastHeight());
2119 2117
2120 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2118 channel_->SetSource(last_ssrc_, NULL);
2121 } 2119 }
2122 2120
2123 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { 2121 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) {
2124 // Start at last timestamp to verify that wraparounds are estimated correctly. 2122 // Start at last timestamp to verify that wraparounds are estimated correctly.
2125 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; 2123 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu;
2126 static const int64_t kInitialNtpTimeMs = 1247891230; 2124 static const int64_t kInitialNtpTimeMs = 1247891230;
2127 static const int kFrameOffsetMs = 20; 2125 static const int kFrameOffsetMs = 20;
2128 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2126 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2129 2127
2130 FakeVideoReceiveStream* stream = AddRecvStream(); 2128 FakeVideoReceiveStream* stream = AddRecvStream();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
2241 2239
2242 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { 2240 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) {
2243 cricket::VideoSendParameters parameters; 2241 cricket::VideoSendParameters parameters;
2244 parameters.codecs.push_back(kVp8Codec720p); 2242 parameters.codecs.push_back(kVp8Codec720p);
2245 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2243 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2246 channel_->SetSend(true); 2244 channel_->SetSend(true);
2247 2245
2248 FakeVideoSendStream* stream = AddSendStream(); 2246 FakeVideoSendStream* stream = AddSendStream();
2249 2247
2250 cricket::FakeVideoCapturer capturer; 2248 cricket::FakeVideoCapturer capturer;
2251 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2249 channel_->SetSource(last_ssrc_, &capturer);
2252 EXPECT_EQ(cricket::CS_RUNNING, 2250 EXPECT_EQ(cricket::CS_RUNNING,
2253 capturer.Start(capturer.GetSupportedFormats()->front())); 2251 capturer.Start(capturer.GetSupportedFormats()->front()));
2254 EXPECT_TRUE(capturer.CaptureFrame()); 2252 EXPECT_TRUE(capturer.CaptureFrame());
2255 2253
2256 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2254 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2257 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); 2255 EXPECT_EQ(kVp8Codec720p.width, streams[0].width);
2258 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); 2256 EXPECT_EQ(kVp8Codec720p.height, streams[0].height);
2259 2257
2260 parameters.codecs.clear(); 2258 parameters.codecs.clear();
2261 parameters.codecs.push_back(kVp8Codec360p); 2259 parameters.codecs.push_back(kVp8Codec360p);
2262 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2260 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2263 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); 2261 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams();
2264 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); 2262 EXPECT_EQ(kVp8Codec360p.width, streams[0].width);
2265 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); 2263 EXPECT_EQ(kVp8Codec360p.height, streams[0].height);
2266 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2264 channel_->SetSource(last_ssrc_, NULL);
2267 } 2265 }
2268 2266
2269 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { 2267 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) {
2270 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", 2268 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200",
2271 200000); 2269 200000);
2272 } 2270 }
2273 2271
2274 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { 2272 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) {
2275 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); 2273 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000);
2276 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); 2274 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2320 2318
2321 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { 2319 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
2322 cricket::VideoSendParameters parameters; 2320 cricket::VideoSendParameters parameters;
2323 parameters.codecs.push_back(kVp8Codec720p); 2321 parameters.codecs.push_back(kVp8Codec720p);
2324 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2322 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2325 channel_->SetSend(true); 2323 channel_->SetSend(true);
2326 2324
2327 FakeVideoSendStream* stream = AddSendStream(); 2325 FakeVideoSendStream* stream = AddSendStream();
2328 2326
2329 cricket::FakeVideoCapturer capturer; 2327 cricket::FakeVideoCapturer capturer;
2330 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2328 channel_->SetSource(last_ssrc_, &capturer);
2331 EXPECT_EQ(cricket::CS_RUNNING, 2329 EXPECT_EQ(cricket::CS_RUNNING,
2332 capturer.Start(capturer.GetSupportedFormats()->front())); 2330 capturer.Start(capturer.GetSupportedFormats()->front()));
2333 2331
2334 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2332 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2335 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; 2333 int initial_max_bitrate_bps = streams[0].max_bitrate_bps;
2336 EXPECT_GT(initial_max_bitrate_bps, 0); 2334 EXPECT_GT(initial_max_bitrate_bps, 0);
2337 2335
2338 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2336 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2339 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2337 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2340 // Insert a frame to update the encoder config. 2338 // Insert a frame to update the encoder config.
2341 EXPECT_TRUE(capturer.CaptureFrame()); 2339 EXPECT_TRUE(capturer.CaptureFrame());
2342 streams = stream->GetVideoStreams(); 2340 streams = stream->GetVideoStreams();
2343 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); 2341 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps);
2344 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 2342 channel_->SetSource(last_ssrc_, nullptr);
2345 } 2343 }
2346 2344
2347 TEST_F(WebRtcVideoChannel2Test, 2345 TEST_F(WebRtcVideoChannel2Test,
2348 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { 2346 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) {
2349 cricket::VideoSendParameters parameters; 2347 cricket::VideoSendParameters parameters;
2350 parameters.codecs.push_back(kVp8Codec720p); 2348 parameters.codecs.push_back(kVp8Codec720p);
2351 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2349 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2352 channel_->SetSend(true); 2350 channel_->SetSend(true);
2353 2351
2354 FakeVideoSendStream* stream = AddSendStream( 2352 FakeVideoSendStream* stream = AddSendStream(
2355 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2353 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2356 2354
2357 // Send a frame to make sure this scales up to >1 stream (simulcast). 2355 // Send a frame to make sure this scales up to >1 stream (simulcast).
2358 cricket::FakeVideoCapturer capturer; 2356 cricket::FakeVideoCapturer capturer;
2359 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); 2357 channel_->SetSource(kSsrcs3[0], &capturer);
2360 EXPECT_EQ(cricket::CS_RUNNING, 2358 EXPECT_EQ(cricket::CS_RUNNING,
2361 capturer.Start(capturer.GetSupportedFormats()->front())); 2359 capturer.Start(capturer.GetSupportedFormats()->front()));
2362 EXPECT_TRUE(capturer.CaptureFrame()); 2360 EXPECT_TRUE(capturer.CaptureFrame());
2363 2361
2364 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2362 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2365 ASSERT_GT(streams.size(), 1u) 2363 ASSERT_GT(streams.size(), 1u)
2366 << "Without simulcast this test doesn't make sense."; 2364 << "Without simulcast this test doesn't make sense.";
2367 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2365 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2368 EXPECT_GT(initial_max_bitrate_bps, 0); 2366 EXPECT_GT(initial_max_bitrate_bps, 0);
2369 2367
2370 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2368 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2;
2371 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2369 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2372 // Insert a frame to update the encoder config. 2370 // Insert a frame to update the encoder config.
2373 EXPECT_TRUE(capturer.CaptureFrame()); 2371 EXPECT_TRUE(capturer.CaptureFrame());
2374 streams = stream->GetVideoStreams(); 2372 streams = stream->GetVideoStreams();
2375 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2373 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2376 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); 2374 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps);
2377 2375
2378 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); 2376 channel_->SetSource(kSsrcs3[0], nullptr);
2379 } 2377 }
2380 2378
2381 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { 2379 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) {
2382 static const char* kMaxQuantization = "21"; 2380 static const char* kMaxQuantization = "21";
2383 cricket::VideoSendParameters parameters; 2381 cricket::VideoSendParameters parameters;
2384 parameters.codecs.push_back(kVp8Codec); 2382 parameters.codecs.push_back(kVp8Codec);
2385 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; 2383 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization;
2386 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2384 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2387 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), 2385 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)),
2388 AddSendStream()->GetVideoStreams().back().max_qp); 2386 AddSendStream()->GetVideoStreams().back().max_qp);
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
2729 2727
2730 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { 2728 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) {
2731 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2729 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2732 2730
2733 // Capture format VGA. 2731 // Capture format VGA.
2734 cricket::FakeVideoCapturer video_capturer_vga; 2732 cricket::FakeVideoCapturer video_capturer_vga;
2735 const std::vector<cricket::VideoFormat>* formats = 2733 const std::vector<cricket::VideoFormat>* formats =
2736 video_capturer_vga.GetSupportedFormats(); 2734 video_capturer_vga.GetSupportedFormats();
2737 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2735 cricket::VideoFormat capture_format_vga = (*formats)[1];
2738 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2736 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2739 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2737 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2740 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2738 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2741 2739
2742 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2740 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2743 cricket::VideoSendParameters parameters; 2741 cricket::VideoSendParameters parameters;
2744 parameters.codecs.push_back(send_codec); 2742 parameters.codecs.push_back(send_codec);
2745 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2743 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2746 EXPECT_TRUE(channel_->SetSend(true)); 2744 EXPECT_TRUE(channel_->SetSend(true));
2747 2745
2748 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2746 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2749 2747
(...skipping 17 matching lines...) Expand all
2767 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); 2765 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
2768 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2766 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2769 info.Clear(); 2767 info.Clear();
2770 EXPECT_TRUE(channel_->GetStats(&info)); 2768 EXPECT_TRUE(channel_->GetStats(&info));
2771 ASSERT_EQ(1U, info.senders.size()); 2769 ASSERT_EQ(1U, info.senders.size());
2772 EXPECT_EQ(2, info.senders[0].adapt_changes); 2770 EXPECT_EQ(2, info.senders[0].adapt_changes);
2773 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2771 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2774 info.senders[0].adapt_reason); 2772 info.senders[0].adapt_reason);
2775 2773
2776 // No capturer (no adapter). Adapt changes from old adapter should be kept. 2774 // No capturer (no adapter). Adapt changes from old adapter should be kept.
2777 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2775 channel_->SetSource(kSsrcs3[0], NULL);
2778 info.Clear(); 2776 info.Clear();
2779 EXPECT_TRUE(channel_->GetStats(&info)); 2777 EXPECT_TRUE(channel_->GetStats(&info));
2780 ASSERT_EQ(1U, info.senders.size()); 2778 ASSERT_EQ(1U, info.senders.size());
2781 EXPECT_EQ(2, info.senders[0].adapt_changes); 2779 EXPECT_EQ(2, info.senders[0].adapt_changes);
2782 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2780 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2783 info.senders[0].adapt_reason); 2781 info.senders[0].adapt_reason);
2784 2782
2785 // Set new capturer, capture format HD. 2783 // Set new capturer, capture format HD.
2786 cricket::FakeVideoCapturer video_capturer_hd; 2784 cricket::FakeVideoCapturer video_capturer_hd;
2787 cricket::VideoFormat capture_format_hd = (*formats)[0]; 2785 cricket::VideoFormat capture_format_hd = (*formats)[0];
2788 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); 2786 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd));
2789 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); 2787 channel_->SetSource(kSsrcs3[0], &video_capturer_hd);
2790 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2788 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2791 2789
2792 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. 2790 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2.
2793 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); 2791 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
2794 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); 2792 EXPECT_TRUE(video_capturer_hd.CaptureFrame());
2795 info.Clear(); 2793 info.Clear();
2796 EXPECT_TRUE(channel_->GetStats(&info)); 2794 EXPECT_TRUE(channel_->GetStats(&info));
2797 ASSERT_EQ(1U, info.senders.size()); 2795 ASSERT_EQ(1U, info.senders.size());
2798 EXPECT_EQ(3, info.senders[0].adapt_changes); 2796 EXPECT_EQ(3, info.senders[0].adapt_changes);
2799 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, 2797 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU,
2800 info.senders[0].adapt_reason); 2798 info.senders[0].adapt_reason);
2801 2799
2802 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2800 channel_->SetSource(kSsrcs3[0], NULL);
2803 } 2801 }
2804 2802
2805 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { 2803 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) {
2806 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); 2804 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
2807 2805
2808 // Capture format VGA. 2806 // Capture format VGA.
2809 cricket::FakeVideoCapturer video_capturer_vga; 2807 cricket::FakeVideoCapturer video_capturer_vga;
2810 const std::vector<cricket::VideoFormat>* formats = 2808 const std::vector<cricket::VideoFormat>* formats =
2811 video_capturer_vga.GetSupportedFormats(); 2809 video_capturer_vga.GetSupportedFormats();
2812 cricket::VideoFormat capture_format_vga = (*formats)[1]; 2810 cricket::VideoFormat capture_format_vga = (*formats)[1];
2813 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); 2811 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
2814 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); 2812 channel_->SetSource(kSsrcs3[0], &video_capturer_vga);
2815 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); 2813 EXPECT_TRUE(video_capturer_vga.CaptureFrame());
2816 2814
2817 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); 2815 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
2818 cricket::VideoSendParameters parameters; 2816 cricket::VideoSendParameters parameters;
2819 parameters.codecs.push_back(send_codec); 2817 parameters.codecs.push_back(send_codec);
2820 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2818 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2821 EXPECT_TRUE(channel_->SetSend(true)); 2819 EXPECT_TRUE(channel_->SetSend(true));
2822 2820
2823 // Verify that the CpuOveruseObserver is registered and trigger downgrade. 2821 // Verify that the CpuOveruseObserver is registered and trigger downgrade.
2824 2822
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2857 2855
2858 // Reset bandwidth limitation state -> adapt NONE. 2856 // Reset bandwidth limitation state -> adapt NONE.
2859 stats.bw_limited_resolution = false; 2857 stats.bw_limited_resolution = false;
2860 fake_call_->GetVideoSendStreams().front()->SetStats(stats); 2858 fake_call_->GetVideoSendStreams().front()->SetStats(stats);
2861 info.Clear(); 2859 info.Clear();
2862 EXPECT_TRUE(channel_->GetStats(&info)); 2860 EXPECT_TRUE(channel_->GetStats(&info));
2863 ASSERT_EQ(1U, info.senders.size()); 2861 ASSERT_EQ(1U, info.senders.size());
2864 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, 2862 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
2865 info.senders[0].adapt_reason); 2863 info.senders[0].adapt_reason);
2866 2864
2867 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); 2865 channel_->SetSource(kSsrcs3[0], NULL);
2868 } 2866 }
2869 2867
2870 TEST_F(WebRtcVideoChannel2Test, 2868 TEST_F(WebRtcVideoChannel2Test,
2871 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { 2869 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) {
2872 FakeVideoSendStream* stream = AddSendStream(); 2870 FakeVideoSendStream* stream = AddSendStream();
2873 webrtc::VideoSendStream::Stats stats; 2871 webrtc::VideoSendStream::Stats stats;
2874 stats.bw_limited_resolution = true; 2872 stats.bw_limited_resolution = true;
2875 stream->SetStats(stats); 2873 stream->SetStats(stats);
2876 2874
2877 cricket::VideoMediaInfo info; 2875 cricket::VideoMediaInfo info;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
3219 } 3217 }
3220 3218
3221 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { 3219 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
3222 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); 3220 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false);
3223 } 3221 }
3224 3222
3225 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { 3223 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) {
3226 AddSendStream(); 3224 AddSendStream();
3227 3225
3228 cricket::FakeVideoCapturer capturer; 3226 cricket::FakeVideoCapturer capturer;
3229 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 3227 channel_->SetSource(last_ssrc_, &capturer);
3230 cricket::VideoFormat capture_format_hd = 3228 cricket::VideoFormat capture_format_hd =
3231 capturer.GetSupportedFormats()->front(); 3229 capturer.GetSupportedFormats()->front();
3232 EXPECT_EQ(1280, capture_format_hd.width); 3230 EXPECT_EQ(1280, capture_format_hd.width);
3233 EXPECT_EQ(720, capture_format_hd.height); 3231 EXPECT_EQ(720, capture_format_hd.height);
3234 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 3232 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
3235 EXPECT_TRUE(channel_->SetSend(true)); 3233 EXPECT_TRUE(channel_->SetSend(true));
3236 3234
3237 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); 3235 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer);
3238 EXPECT_TRUE(default_encoder_bitrate > 1000); 3236 EXPECT_TRUE(default_encoder_bitrate > 1000);
3239 3237
3240 // TODO(skvlad): Resolve the inconsistency between the interpretation 3238 // TODO(skvlad): Resolve the inconsistency between the interpretation
3241 // of the global bitrate limit for audio and video: 3239 // of the global bitrate limit for audio and video:
3242 // - Audio: max_bandwidth_bps = 0 - fail the operation, 3240 // - Audio: max_bandwidth_bps = 0 - fail the operation,
3243 // max_bandwidth_bps = -1 - remove the bandwidth limit 3241 // max_bandwidth_bps = -1 - remove the bandwidth limit
3244 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, 3242 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit,
3245 // max_bandwidth_bps = -1 - do not change the previously set 3243 // max_bandwidth_bps = -1 - do not change the previously set
3246 // limit. 3244 // limit.
3247 3245
3248 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); 3246 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000);
3249 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); 3247 SetAndExpectMaxBitrate(capturer, 1000, 800, 800);
3250 SetAndExpectMaxBitrate(capturer, 600, 800, 600); 3248 SetAndExpectMaxBitrate(capturer, 600, 800, 600);
3251 SetAndExpectMaxBitrate(capturer, 0, 800, 800); 3249 SetAndExpectMaxBitrate(capturer, 0, 800, 800);
3252 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); 3250 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate);
3253 3251
3254 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 3252 channel_->SetSource(last_ssrc_, NULL);
3255 } 3253 }
3256 3254
3257 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { 3255 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) {
3258 webrtc::RtpParameters nonexistent_parameters = 3256 webrtc::RtpParameters nonexistent_parameters =
3259 channel_->GetRtpParameters(last_ssrc_); 3257 channel_->GetRtpParameters(last_ssrc_);
3260 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); 3258 EXPECT_EQ(0, nonexistent_parameters.encodings.size());
3261 3259
3262 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); 3260 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters());
3263 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); 3261 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters));
3264 } 3262 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3355 3353
3356 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); 3354 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
3357 RTC_DCHECK(num_configured_streams <= ssrcs.size()); 3355 RTC_DCHECK(num_configured_streams <= ssrcs.size());
3358 ssrcs.resize(num_configured_streams); 3356 ssrcs.resize(num_configured_streams);
3359 3357
3360 FakeVideoSendStream* stream = 3358 FakeVideoSendStream* stream =
3361 AddSendStream(CreateSimStreamParams("cname", ssrcs)); 3359 AddSendStream(CreateSimStreamParams("cname", ssrcs));
3362 // Send a full-size frame to trigger a stream reconfiguration to use all 3360 // Send a full-size frame to trigger a stream reconfiguration to use all
3363 // expected simulcast layers. 3361 // expected simulcast layers.
3364 cricket::FakeVideoCapturer capturer; 3362 cricket::FakeVideoCapturer capturer;
3365 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); 3363 channel_->SetSource(ssrcs.front(), &capturer);
3366 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( 3364 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat(
3367 codec.width, codec.height, 3365 codec.width, codec.height,
3368 cricket::VideoFormat::FpsToInterval(30), 3366 cricket::VideoFormat::FpsToInterval(30),
3369 cricket::FOURCC_I420))); 3367 cricket::FOURCC_I420)));
3370 channel_->SetSend(true); 3368 channel_->SetSend(true);
3371 EXPECT_TRUE(capturer.CaptureFrame()); 3369 EXPECT_TRUE(capturer.CaptureFrame());
3372 3370
3373 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); 3371 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams();
3374 ASSERT_EQ(expected_num_streams, video_streams.size()); 3372 ASSERT_EQ(expected_num_streams, video_streams.size());
3375 3373
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3412 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; 3410 total_max_bitrate_bps += video_streams[i].max_bitrate_bps;
3413 } else { 3411 } else {
3414 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; 3412 total_max_bitrate_bps += video_streams[i].target_bitrate_bps;
3415 } 3413 }
3416 } 3414 }
3417 cricket::VideoMediaInfo info; 3415 cricket::VideoMediaInfo info;
3418 ASSERT_TRUE(channel_->GetStats(&info)); 3416 ASSERT_TRUE(channel_->GetStats(&info));
3419 ASSERT_EQ(1u, info.senders.size()); 3417 ASSERT_EQ(1u, info.senders.size());
3420 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); 3418 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate);
3421 3419
3422 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); 3420 channel_->SetSource(ssrcs.front(), NULL);
3423 } 3421 }
3424 3422
3425 FakeVideoSendStream* AddSendStream() { 3423 FakeVideoSendStream* AddSendStream() {
3426 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); 3424 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++));
3427 } 3425 }
3428 3426
3429 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { 3427 FakeVideoSendStream* AddSendStream(const StreamParams& sp) {
3430 size_t num_streams = 3428 size_t num_streams =
3431 fake_call_.GetVideoSendStreams().size(); 3429 fake_call_.GetVideoSendStreams().size();
3432 EXPECT_TRUE(channel_->AddSendStream(sp)); 3430 EXPECT_TRUE(channel_->AddSendStream(sp));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3469 } 3467 }
3470 3468
3471 // Test that we normalize send codec format size in simulcast. 3469 // Test that we normalize send codec format size in simulcast.
3472 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3470 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3473 cricket::VideoCodec codec(kVp8Codec270p); 3471 cricket::VideoCodec codec(kVp8Codec270p);
3474 codec.width += 1; 3472 codec.width += 1;
3475 codec.height += 1; 3473 codec.height += 1;
3476 VerifySimulcastSettings(codec, 2, 2); 3474 VerifySimulcastSettings(codec, 2, 2);
3477 } 3475 }
3478 } // namespace cricket 3476 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698