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