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