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 cricket::VideoSendParameters parameters; | 285 cricket::VideoSendParameters parameters; |
286 parameters.codecs.push_back(kVp8Codec); | 286 parameters.codecs.push_back(kVp8Codec); |
287 | 287 |
288 std::unique_ptr<VideoMediaChannel> channel( | 288 std::unique_ptr<VideoMediaChannel> channel( |
289 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); | 289 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); |
290 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); | 290 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); |
291 | 291 |
292 // Set capturer. | 292 // Set capturer. |
293 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 293 channel->SetSource(kSsrc, &capturer); |
294 | 294 |
295 // Add CVO extension. | 295 // Add CVO extension. |
296 const int id = 1; | 296 const int id = 1; |
297 parameters.extensions.push_back( | 297 parameters.extensions.push_back( |
298 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); | 298 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); |
299 EXPECT_TRUE(channel->SetSendParameters(parameters)); | 299 EXPECT_TRUE(channel->SetSendParameters(parameters)); |
300 | 300 |
301 // Verify capturer has turned off applying rotation. | 301 // Verify capturer has turned off applying rotation. |
302 EXPECT_FALSE(capturer.GetApplyRotation()); | 302 EXPECT_FALSE(capturer.GetApplyRotation()); |
303 | 303 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 std::unique_ptr<VideoMediaChannel> channel( | 338 std::unique_ptr<VideoMediaChannel> channel( |
339 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); | 339 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); |
340 | 340 |
341 EXPECT_TRUE( | 341 EXPECT_TRUE( |
342 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 342 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
343 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(1)); | 343 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(1)); |
344 ASSERT_EQ(1u, encoder_factory.encoders().size()); | 344 ASSERT_EQ(1u, encoder_factory.encoders().size()); |
345 EXPECT_TRUE(channel->SetSend(true)); | 345 EXPECT_TRUE(channel->SetSend(true)); |
346 | 346 |
347 cricket::FakeVideoCapturer capturer; | 347 cricket::FakeVideoCapturer capturer; |
348 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 348 channel->SetSource(kSsrc, &capturer); |
349 EXPECT_EQ(cricket::CS_RUNNING, | 349 EXPECT_EQ(cricket::CS_RUNNING, |
350 capturer.Start(capturer.GetSupportedFormats()->front())); | 350 capturer.Start(capturer.GetSupportedFormats()->front())); |
351 EXPECT_TRUE(capturer.CaptureFrame()); | 351 EXPECT_TRUE(capturer.CaptureFrame()); |
352 // Sending one frame will have reallocated the encoder since input size | 352 // Sending one frame will have reallocated the encoder since input size |
353 // changes from a small default to the actual frame width/height. Wait for | 353 // changes from a small default to the actual frame width/height. Wait for |
354 // that to happen then for the frame to be sent. | 354 // that to happen then for the frame to be sent. |
355 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); | 355 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); |
356 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, | 356 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, |
357 kTimeout); | 357 kTimeout); |
358 | 358 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 | 427 |
428 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); | 428 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); |
429 call_.reset(fake_call); | 429 call_.reset(fake_call); |
430 std::unique_ptr<VideoMediaChannel> channel( | 430 std::unique_ptr<VideoMediaChannel> channel( |
431 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 431 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
432 | 432 |
433 EXPECT_TRUE( | 433 EXPECT_TRUE( |
434 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 434 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
435 | 435 |
436 FakeVideoCapturer capturer; | 436 FakeVideoCapturer capturer; |
437 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 437 channel->SetSource(kSsrc, &capturer); |
438 capturer.Start(cricket::VideoFormat(1280, 720, | 438 capturer.Start(cricket::VideoFormat(1280, 720, |
439 cricket::VideoFormat::FpsToInterval(60), | 439 cricket::VideoFormat::FpsToInterval(60), |
440 cricket::FOURCC_I420)); | 440 cricket::FOURCC_I420)); |
441 channel->SetSend(true); | 441 channel->SetSend(true); |
442 | 442 |
443 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; | 443 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
444 | 444 |
445 EXPECT_TRUE(capturer.CaptureFrame()); | 445 EXPECT_TRUE(capturer.CaptureFrame()); |
446 int64_t last_timestamp = stream->GetLastTimestamp(); | 446 int64_t last_timestamp = stream->GetLastTimestamp(); |
447 for (int i = 0; i < 10; i++) { | 447 for (int i = 0; i < 10; i++) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 call_.reset(fake_call); | 489 call_.reset(fake_call); |
490 std::unique_ptr<VideoMediaChannel> channel( | 490 std::unique_ptr<VideoMediaChannel> channel( |
491 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 491 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
492 | 492 |
493 EXPECT_TRUE( | 493 EXPECT_TRUE( |
494 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 494 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
495 channel->SetSend(true); | 495 channel->SetSend(true); |
496 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; | 496 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
497 | 497 |
498 FakeVideoCapturer capturer1; | 498 FakeVideoCapturer capturer1; |
499 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); | 499 channel->SetSource(kSsrc, &capturer1); |
500 | 500 |
501 cricket::CapturedFrame frame; | 501 cricket::CapturedFrame frame; |
502 frame.width = 1280; | 502 frame.width = 1280; |
503 frame.height = 720; | 503 frame.height = 720; |
504 frame.fourcc = cricket::FOURCC_I420; | 504 frame.fourcc = cricket::FOURCC_I420; |
505 frame.data_size = frame.width * frame.height + | 505 frame.data_size = frame.width * frame.height + |
506 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); | 506 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); |
507 std::unique_ptr<char[]> data(new char[frame.data_size]); | 507 std::unique_ptr<char[]> data(new char[frame.data_size]); |
508 frame.data = data.get(); | 508 frame.data = data.get(); |
509 memset(frame.data, 1, frame.data_size); | 509 memset(frame.data, 1, frame.data_size); |
510 const int kInitialTimestamp = 123456; | 510 const int kInitialTimestamp = 123456; |
511 frame.time_stamp = kInitialTimestamp; | 511 frame.time_stamp = kInitialTimestamp; |
512 | 512 |
513 // Deliver initial frame. | 513 // Deliver initial frame. |
514 capturer1.SignalCapturedFrame(&frame); | 514 capturer1.SignalCapturedFrame(&frame); |
515 // Deliver next frame 1 second later. | 515 // Deliver next frame 1 second later. |
516 frame.time_stamp += rtc::kNumNanosecsPerSec; | 516 frame.time_stamp += rtc::kNumNanosecsPerSec; |
517 rtc::Thread::Current()->SleepMs(1000); | 517 rtc::Thread::Current()->SleepMs(1000); |
518 capturer1.SignalCapturedFrame(&frame); | 518 capturer1.SignalCapturedFrame(&frame); |
519 | 519 |
520 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); | 520 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); |
521 // Reset input source, should still be continuous even though input-frame | 521 // Reset input source, should still be continuous even though input-frame |
522 // timestamp is less than before. | 522 // timestamp is less than before. |
523 FakeVideoCapturer capturer2; | 523 FakeVideoCapturer capturer2; |
524 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); | 524 channel->SetSource(kSsrc, &capturer2); |
525 | 525 |
526 rtc::Thread::Current()->SleepMs(1); | 526 rtc::Thread::Current()->SleepMs(1); |
527 // Deliver with a timestamp (10 seconds) before the previous initial one, | 527 // Deliver with a timestamp (10 seconds) before the previous initial one, |
528 // these should not be related at all anymore and it should still work fine. | 528 // these should not be related at all anymore and it should still work fine. |
529 frame.time_stamp = kInitialTimestamp - 10000; | 529 frame.time_stamp = kInitialTimestamp - 10000; |
530 capturer2.SignalCapturedFrame(&frame); | 530 capturer2.SignalCapturedFrame(&frame); |
531 | 531 |
532 // New timestamp should be at least 1ms in the future and not old. | 532 // New timestamp should be at least 1ms in the future and not old. |
533 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); | 533 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); |
534 | 534 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 std::unique_ptr<VideoMediaChannel> channel( | 574 std::unique_ptr<VideoMediaChannel> channel( |
575 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 575 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
576 | 576 |
577 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 577 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
578 | 578 |
579 EXPECT_TRUE( | 579 EXPECT_TRUE( |
580 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); | 580 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); |
581 EXPECT_TRUE(channel->SetSend(true)); | 581 EXPECT_TRUE(channel->SetSend(true)); |
582 | 582 |
583 cricket::FakeVideoCapturer capturer; | 583 cricket::FakeVideoCapturer capturer; |
584 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); | 584 channel->SetSource(ssrcs.front(), &capturer); |
585 EXPECT_EQ(cricket::CS_RUNNING, | 585 EXPECT_EQ(cricket::CS_RUNNING, |
586 capturer.Start(capturer.GetSupportedFormats()->front())); | 586 capturer.Start(capturer.GetSupportedFormats()->front())); |
587 EXPECT_TRUE(capturer.CaptureFrame()); | 587 EXPECT_TRUE(capturer.CaptureFrame()); |
588 | 588 |
589 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); | 589 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); |
590 | 590 |
591 // Verify that encoders are configured for simulcast through adapter | 591 // Verify that encoders are configured for simulcast through adapter |
592 // (increasing resolution and only configured to send one stream each). | 592 // (increasing resolution and only configured to send one stream each). |
593 int prev_width = -1; | 593 int prev_width = -1; |
594 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { | 594 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { |
595 ASSERT_TRUE(encoder_factory.encoders()[i]->WaitForInitEncode()); | 595 ASSERT_TRUE(encoder_factory.encoders()[i]->WaitForInitEncode()); |
596 webrtc::VideoCodec codec_settings = | 596 webrtc::VideoCodec codec_settings = |
597 encoder_factory.encoders()[i]->GetCodecSettings(); | 597 encoder_factory.encoders()[i]->GetCodecSettings(); |
598 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); | 598 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); |
599 EXPECT_GT(codec_settings.width, prev_width); | 599 EXPECT_GT(codec_settings.width, prev_width); |
600 prev_width = codec_settings.width; | 600 prev_width = codec_settings.width; |
601 } | 601 } |
602 | 602 |
603 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), NULL)); | 603 channel->SetSource(ssrcs.front(), NULL); |
604 | 604 |
605 channel.reset(); | 605 channel.reset(); |
606 ASSERT_EQ(0u, encoder_factory.encoders().size()); | 606 ASSERT_EQ(0u, encoder_factory.encoders().size()); |
607 } | 607 } |
608 | 608 |
609 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { | 609 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { |
610 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 610 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
611 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); | 611 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); |
612 std::vector<cricket::VideoCodec> codecs; | 612 std::vector<cricket::VideoCodec> codecs; |
613 codecs.push_back(kH264Codec); | 613 codecs.push_back(kH264Codec); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 656 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
657 | 657 |
658 EXPECT_TRUE( | 658 EXPECT_TRUE( |
659 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); | 659 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); |
660 EXPECT_TRUE(channel->SetSend(true)); | 660 EXPECT_TRUE(channel->SetSend(true)); |
661 | 661 |
662 // Send a fake frame, or else the media engine will configure the simulcast | 662 // Send a fake frame, or else the media engine will configure the simulcast |
663 // encoder adapter at a low-enough size that it'll only create a single | 663 // encoder adapter at a low-enough size that it'll only create a single |
664 // encoder layer. | 664 // encoder layer. |
665 cricket::FakeVideoCapturer capturer; | 665 cricket::FakeVideoCapturer capturer; |
666 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); | 666 channel->SetSource(ssrcs.front(), &capturer); |
667 EXPECT_EQ(cricket::CS_RUNNING, | 667 EXPECT_EQ(cricket::CS_RUNNING, |
668 capturer.Start(capturer.GetSupportedFormats()->front())); | 668 capturer.Start(capturer.GetSupportedFormats()->front())); |
669 EXPECT_TRUE(capturer.CaptureFrame()); | 669 EXPECT_TRUE(capturer.CaptureFrame()); |
670 | 670 |
671 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); | 671 ASSERT_TRUE(encoder_factory.WaitForCreatedVideoEncoders(2)); |
672 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); | 672 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); |
673 EXPECT_EQ(webrtc::kVideoCodecVP8, | 673 EXPECT_EQ(webrtc::kVideoCodecVP8, |
674 encoder_factory.encoders()[0]->GetCodecSettings().codecType); | 674 encoder_factory.encoders()[0]->GetCodecSettings().codecType); |
675 | 675 |
676 channel.reset(); | 676 channel.reset(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
712 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 712 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
713 | 713 |
714 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 714 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
715 EXPECT_TRUE( | 715 EXPECT_TRUE( |
716 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); | 716 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); |
717 | 717 |
718 // Send a frame of 720p. This should trigger a "real" encoder initialization. | 718 // Send a frame of 720p. This should trigger a "real" encoder initialization. |
719 cricket::VideoFormat format( | 719 cricket::VideoFormat format( |
720 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); | 720 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); |
721 cricket::FakeVideoCapturer capturer; | 721 cricket::FakeVideoCapturer capturer; |
722 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], &capturer)); | 722 channel->SetSource(ssrcs[0], &capturer); |
723 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); | 723 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); |
724 EXPECT_TRUE(capturer.CaptureFrame()); | 724 EXPECT_TRUE(capturer.CaptureFrame()); |
725 | 725 |
726 ASSERT_EQ(1u, encoder_factory.encoders().size()); | 726 ASSERT_EQ(1u, encoder_factory.encoders().size()); |
727 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; | 727 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; |
728 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); | 728 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); |
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() : WebRtcVideoChannel2Test() { | 1818 Vp9SettingsTest() : WebRtcVideoChannel2Test() { |
1821 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); | 1819 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); |
1822 } | 1820 } |
1823 virtual ~Vp9SettingsTest() {} | 1821 virtual ~Vp9SettingsTest() {} |
1824 | 1822 |
1825 protected: | 1823 protected: |
(...skipping 15 matching lines...) Expand all Loading... |
1841 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { | 1839 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { |
1842 cricket::VideoSendParameters parameters; | 1840 cricket::VideoSendParameters parameters; |
1843 parameters.codecs.push_back(kVp9Codec); | 1841 parameters.codecs.push_back(kVp9Codec); |
1844 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1842 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1845 | 1843 |
1846 FakeVideoSendStream* stream = SetUpSimulcast(false, false); | 1844 FakeVideoSendStream* stream = SetUpSimulcast(false, false); |
1847 | 1845 |
1848 cricket::FakeVideoCapturer capturer; | 1846 cricket::FakeVideoCapturer capturer; |
1849 EXPECT_EQ(cricket::CS_RUNNING, | 1847 EXPECT_EQ(cricket::CS_RUNNING, |
1850 capturer.Start(capturer.GetSupportedFormats()->front())); | 1848 capturer.Start(capturer.GetSupportedFormats()->front())); |
1851 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1849 channel_->SetSource(last_ssrc_, &capturer); |
1852 channel_->SetSend(true); | 1850 channel_->SetSend(true); |
1853 | 1851 |
1854 EXPECT_TRUE(capturer.CaptureFrame()); | 1852 EXPECT_TRUE(capturer.CaptureFrame()); |
1855 | 1853 |
1856 webrtc::VideoCodecVP9 vp9_settings; | 1854 webrtc::VideoCodecVP9 vp9_settings; |
1857 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; | 1855 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; |
1858 EXPECT_FALSE(vp9_settings.denoisingOn) | 1856 EXPECT_FALSE(vp9_settings.denoisingOn) |
1859 << "VP9 denoising should be off by default."; | 1857 << "VP9 denoising should be off by default."; |
1860 | 1858 |
1861 stream = SetDenoisingOption(last_ssrc_, &capturer, false); | 1859 stream = SetDenoisingOption(last_ssrc_, &capturer, false); |
(...skipping 20 matching lines...) Expand all Loading... |
1882 EXPECT_FALSE(vp9_settings.denoisingOn); | 1880 EXPECT_FALSE(vp9_settings.denoisingOn); |
1883 // Frame dropping always off for screen sharing. | 1881 // Frame dropping always off for screen sharing. |
1884 EXPECT_FALSE(vp9_settings.frameDroppingOn); | 1882 EXPECT_FALSE(vp9_settings.frameDroppingOn); |
1885 | 1883 |
1886 stream = SetDenoisingOption(last_ssrc_, &capturer, false); | 1884 stream = SetDenoisingOption(last_ssrc_, &capturer, false); |
1887 | 1885 |
1888 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; | 1886 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; |
1889 EXPECT_FALSE(vp9_settings.denoisingOn); | 1887 EXPECT_FALSE(vp9_settings.denoisingOn); |
1890 EXPECT_FALSE(vp9_settings.frameDroppingOn); | 1888 EXPECT_FALSE(vp9_settings.frameDroppingOn); |
1891 | 1889 |
1892 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1890 channel_->SetSource(last_ssrc_, NULL); |
1893 } | 1891 } |
1894 | 1892 |
1895 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) { | 1893 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) { |
1896 TestCpuAdaptation(true, false); | 1894 TestCpuAdaptation(true, false); |
1897 } | 1895 } |
1898 | 1896 |
1899 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) { | 1897 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) { |
1900 TestCpuAdaptation(false, false); | 1898 TestCpuAdaptation(false, false); |
1901 } | 1899 } |
1902 | 1900 |
1903 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) { | 1901 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) { |
1904 TestCpuAdaptation(true, true); | 1902 TestCpuAdaptation(true, true); |
1905 } | 1903 } |
1906 | 1904 |
1907 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) { | 1905 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) { |
1908 cricket::VideoCodec codec = kVp8Codec720p; | 1906 cricket::VideoCodec codec = kVp8Codec720p; |
1909 cricket::VideoSendParameters parameters; | 1907 cricket::VideoSendParameters parameters; |
1910 parameters.codecs.push_back(codec); | 1908 parameters.codecs.push_back(codec); |
1911 | 1909 |
1912 MediaConfig media_config = MediaConfig(); | 1910 MediaConfig media_config = MediaConfig(); |
1913 channel_.reset( | 1911 channel_.reset( |
1914 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 1912 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
1915 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1913 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1916 | 1914 |
1917 AddSendStream(); | 1915 AddSendStream(); |
1918 | 1916 |
1919 cricket::FakeVideoCapturer capturer; | 1917 cricket::FakeVideoCapturer capturer; |
1920 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1918 channel_->SetSource(last_ssrc_, &capturer); |
1921 ASSERT_EQ(cricket::CS_RUNNING, | 1919 ASSERT_EQ(cricket::CS_RUNNING, |
1922 capturer.Start(capturer.GetSupportedFormats()->front())); | 1920 capturer.Start(capturer.GetSupportedFormats()->front())); |
1923 ASSERT_TRUE(channel_->SetSend(true)); | 1921 ASSERT_TRUE(channel_->SetSend(true)); |
1924 | 1922 |
1925 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 1923 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
1926 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1924 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
1927 webrtc::LoadObserver* overuse_callback = | 1925 webrtc::LoadObserver* overuse_callback = |
1928 send_stream->GetConfig().overuse_callback; | 1926 send_stream->GetConfig().overuse_callback; |
1929 ASSERT_TRUE(overuse_callback != NULL); | 1927 ASSERT_TRUE(overuse_callback != NULL); |
1930 | 1928 |
(...skipping 29 matching lines...) Expand all Loading... |
1960 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); | 1958 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); |
1961 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); | 1959 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); |
1962 | 1960 |
1963 // Trigger underuse which should go back up in resolution. | 1961 // Trigger underuse which should go back up in resolution. |
1964 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 1962 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
1965 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); | 1963 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); |
1966 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); | 1964 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); |
1967 EXPECT_EQ(1284, send_stream->GetLastWidth()); | 1965 EXPECT_EQ(1284, send_stream->GetLastWidth()); |
1968 EXPECT_EQ(724, send_stream->GetLastHeight()); | 1966 EXPECT_EQ(724, send_stream->GetLastHeight()); |
1969 | 1967 |
1970 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1968 channel_->SetSource(last_ssrc_, NULL); |
1971 } | 1969 } |
1972 | 1970 |
1973 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, | 1971 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, |
1974 bool is_screenshare) { | 1972 bool is_screenshare) { |
1975 cricket::VideoCodec codec = kVp8Codec720p; | 1973 cricket::VideoCodec codec = kVp8Codec720p; |
1976 cricket::VideoSendParameters parameters; | 1974 cricket::VideoSendParameters parameters; |
1977 parameters.codecs.push_back(codec); | 1975 parameters.codecs.push_back(codec); |
1978 | 1976 |
1979 MediaConfig media_config = MediaConfig(); | 1977 MediaConfig media_config = MediaConfig(); |
1980 if (!enable_overuse) { | 1978 if (!enable_overuse) { |
1981 media_config.video.enable_cpu_overuse_detection = false; | 1979 media_config.video.enable_cpu_overuse_detection = false; |
1982 } | 1980 } |
1983 channel_.reset( | 1981 channel_.reset( |
1984 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 1982 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
1985 | 1983 |
1986 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1984 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1987 | 1985 |
1988 AddSendStream(); | 1986 AddSendStream(); |
1989 | 1987 |
1990 VideoOptions options; | 1988 VideoOptions options; |
1991 options.is_screencast = rtc::Optional<bool>(is_screenshare); | 1989 options.is_screencast = rtc::Optional<bool>(is_screenshare); |
1992 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); | 1990 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); |
1993 | 1991 |
1994 cricket::FakeVideoCapturer capturer; | 1992 cricket::FakeVideoCapturer capturer; |
1995 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1993 channel_->SetSource(last_ssrc_, &capturer); |
1996 EXPECT_EQ(cricket::CS_RUNNING, | 1994 EXPECT_EQ(cricket::CS_RUNNING, |
1997 capturer.Start(capturer.GetSupportedFormats()->front())); | 1995 capturer.Start(capturer.GetSupportedFormats()->front())); |
1998 | 1996 |
1999 EXPECT_TRUE(channel_->SetSend(true)); | 1997 EXPECT_TRUE(channel_->SetSend(true)); |
2000 | 1998 |
2001 // Trigger overuse. | 1999 // Trigger overuse. |
2002 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 2000 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
2003 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 2001 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
2004 webrtc::LoadObserver* overuse_callback = | 2002 webrtc::LoadObserver* overuse_callback = |
2005 send_stream->GetConfig().overuse_callback; | 2003 send_stream->GetConfig().overuse_callback; |
2006 | 2004 |
2007 if (!enable_overuse) { | 2005 if (!enable_overuse) { |
2008 ASSERT_TRUE(overuse_callback == NULL); | 2006 ASSERT_TRUE(overuse_callback == NULL); |
2009 | 2007 |
2010 EXPECT_TRUE(capturer.CaptureFrame()); | 2008 EXPECT_TRUE(capturer.CaptureFrame()); |
2011 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 2009 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
2012 | 2010 |
2013 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2011 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
2014 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2012 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
2015 | 2013 |
2016 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2014 channel_->SetSource(last_ssrc_, NULL); |
2017 return; | 2015 return; |
2018 } | 2016 } |
2019 | 2017 |
2020 ASSERT_TRUE(overuse_callback != NULL); | 2018 ASSERT_TRUE(overuse_callback != NULL); |
2021 EXPECT_TRUE(capturer.CaptureFrame()); | 2019 EXPECT_TRUE(capturer.CaptureFrame()); |
2022 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 2020 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
2023 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 2021 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
2024 | 2022 |
2025 EXPECT_TRUE(capturer.CaptureFrame()); | 2023 EXPECT_TRUE(capturer.CaptureFrame()); |
2026 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 2024 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
2027 | 2025 |
2028 if (is_screenshare) { | 2026 if (is_screenshare) { |
2029 // Do not adapt screen share. | 2027 // Do not adapt screen share. |
2030 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2028 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
2031 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2029 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
2032 } else { | 2030 } else { |
2033 EXPECT_LT(send_stream->GetLastWidth(), codec.width); | 2031 EXPECT_LT(send_stream->GetLastWidth(), codec.width); |
2034 EXPECT_LT(send_stream->GetLastHeight(), codec.height); | 2032 EXPECT_LT(send_stream->GetLastHeight(), codec.height); |
2035 } | 2033 } |
2036 | 2034 |
2037 // Trigger underuse which should go back to normal resolution. | 2035 // Trigger underuse which should go back to normal resolution. |
2038 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2036 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
2039 EXPECT_TRUE(capturer.CaptureFrame()); | 2037 EXPECT_TRUE(capturer.CaptureFrame()); |
2040 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); | 2038 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); |
2041 | 2039 |
2042 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2040 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
2043 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2041 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
2044 | 2042 |
2045 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2043 channel_->SetSource(last_ssrc_, NULL); |
2046 } | 2044 } |
2047 | 2045 |
2048 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { | 2046 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { |
2049 // Start at last timestamp to verify that wraparounds are estimated correctly. | 2047 // Start at last timestamp to verify that wraparounds are estimated correctly. |
2050 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; | 2048 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; |
2051 static const int64_t kInitialNtpTimeMs = 1247891230; | 2049 static const int64_t kInitialNtpTimeMs = 1247891230; |
2052 static const int kFrameOffsetMs = 20; | 2050 static const int kFrameOffsetMs = 20; |
2053 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2051 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
2054 | 2052 |
2055 FakeVideoReceiveStream* stream = AddRecvStream(); | 2053 FakeVideoReceiveStream* stream = AddRecvStream(); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2166 | 2164 |
2167 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { | 2165 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { |
2168 cricket::VideoSendParameters parameters; | 2166 cricket::VideoSendParameters parameters; |
2169 parameters.codecs.push_back(kVp8Codec720p); | 2167 parameters.codecs.push_back(kVp8Codec720p); |
2170 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2168 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2171 channel_->SetSend(true); | 2169 channel_->SetSend(true); |
2172 | 2170 |
2173 FakeVideoSendStream* stream = AddSendStream(); | 2171 FakeVideoSendStream* stream = AddSendStream(); |
2174 | 2172 |
2175 cricket::FakeVideoCapturer capturer; | 2173 cricket::FakeVideoCapturer capturer; |
2176 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2174 channel_->SetSource(last_ssrc_, &capturer); |
2177 EXPECT_EQ(cricket::CS_RUNNING, | 2175 EXPECT_EQ(cricket::CS_RUNNING, |
2178 capturer.Start(capturer.GetSupportedFormats()->front())); | 2176 capturer.Start(capturer.GetSupportedFormats()->front())); |
2179 EXPECT_TRUE(capturer.CaptureFrame()); | 2177 EXPECT_TRUE(capturer.CaptureFrame()); |
2180 | 2178 |
2181 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2179 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2182 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); | 2180 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); |
2183 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); | 2181 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); |
2184 | 2182 |
2185 parameters.codecs.clear(); | 2183 parameters.codecs.clear(); |
2186 parameters.codecs.push_back(kVp8Codec360p); | 2184 parameters.codecs.push_back(kVp8Codec360p); |
2187 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2185 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2188 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); | 2186 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); |
2189 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); | 2187 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); |
2190 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); | 2188 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); |
2191 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2189 channel_->SetSource(last_ssrc_, NULL); |
2192 } | 2190 } |
2193 | 2191 |
2194 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { | 2192 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { |
2195 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", | 2193 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", |
2196 200000); | 2194 200000); |
2197 } | 2195 } |
2198 | 2196 |
2199 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { | 2197 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { |
2200 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); | 2198 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); |
2201 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); | 2199 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2245 | 2243 |
2246 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { | 2244 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { |
2247 cricket::VideoSendParameters parameters; | 2245 cricket::VideoSendParameters parameters; |
2248 parameters.codecs.push_back(kVp8Codec720p); | 2246 parameters.codecs.push_back(kVp8Codec720p); |
2249 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2247 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2250 channel_->SetSend(true); | 2248 channel_->SetSend(true); |
2251 | 2249 |
2252 FakeVideoSendStream* stream = AddSendStream(); | 2250 FakeVideoSendStream* stream = AddSendStream(); |
2253 | 2251 |
2254 cricket::FakeVideoCapturer capturer; | 2252 cricket::FakeVideoCapturer capturer; |
2255 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2253 channel_->SetSource(last_ssrc_, &capturer); |
2256 EXPECT_EQ(cricket::CS_RUNNING, | 2254 EXPECT_EQ(cricket::CS_RUNNING, |
2257 capturer.Start(capturer.GetSupportedFormats()->front())); | 2255 capturer.Start(capturer.GetSupportedFormats()->front())); |
2258 | 2256 |
2259 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2257 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2260 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; | 2258 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; |
2261 EXPECT_GT(initial_max_bitrate_bps, 0); | 2259 EXPECT_GT(initial_max_bitrate_bps, 0); |
2262 | 2260 |
2263 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; | 2261 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; |
2264 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2262 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2265 // Insert a frame to update the encoder config. | 2263 // Insert a frame to update the encoder config. |
2266 EXPECT_TRUE(capturer.CaptureFrame()); | 2264 EXPECT_TRUE(capturer.CaptureFrame()); |
2267 streams = stream->GetVideoStreams(); | 2265 streams = stream->GetVideoStreams(); |
2268 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); | 2266 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); |
2269 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); | 2267 channel_->SetSource(last_ssrc_, nullptr); |
2270 } | 2268 } |
2271 | 2269 |
2272 TEST_F(WebRtcVideoChannel2Test, | 2270 TEST_F(WebRtcVideoChannel2Test, |
2273 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { | 2271 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { |
2274 cricket::VideoSendParameters parameters; | 2272 cricket::VideoSendParameters parameters; |
2275 parameters.codecs.push_back(kVp8Codec720p); | 2273 parameters.codecs.push_back(kVp8Codec720p); |
2276 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2274 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2277 channel_->SetSend(true); | 2275 channel_->SetSend(true); |
2278 | 2276 |
2279 FakeVideoSendStream* stream = AddSendStream( | 2277 FakeVideoSendStream* stream = AddSendStream( |
2280 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2278 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
2281 | 2279 |
2282 // Send a frame to make sure this scales up to >1 stream (simulcast). | 2280 // Send a frame to make sure this scales up to >1 stream (simulcast). |
2283 cricket::FakeVideoCapturer capturer; | 2281 cricket::FakeVideoCapturer capturer; |
2284 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); | 2282 channel_->SetSource(kSsrcs3[0], &capturer); |
2285 EXPECT_EQ(cricket::CS_RUNNING, | 2283 EXPECT_EQ(cricket::CS_RUNNING, |
2286 capturer.Start(capturer.GetSupportedFormats()->front())); | 2284 capturer.Start(capturer.GetSupportedFormats()->front())); |
2287 EXPECT_TRUE(capturer.CaptureFrame()); | 2285 EXPECT_TRUE(capturer.CaptureFrame()); |
2288 | 2286 |
2289 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2287 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2290 ASSERT_GT(streams.size(), 1u) | 2288 ASSERT_GT(streams.size(), 1u) |
2291 << "Without simulcast this test doesn't make sense."; | 2289 << "Without simulcast this test doesn't make sense."; |
2292 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); | 2290 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); |
2293 EXPECT_GT(initial_max_bitrate_bps, 0); | 2291 EXPECT_GT(initial_max_bitrate_bps, 0); |
2294 | 2292 |
2295 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; | 2293 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; |
2296 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2294 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2297 // Insert a frame to update the encoder config. | 2295 // Insert a frame to update the encoder config. |
2298 EXPECT_TRUE(capturer.CaptureFrame()); | 2296 EXPECT_TRUE(capturer.CaptureFrame()); |
2299 streams = stream->GetVideoStreams(); | 2297 streams = stream->GetVideoStreams(); |
2300 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); | 2298 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); |
2301 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); | 2299 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); |
2302 | 2300 |
2303 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); | 2301 channel_->SetSource(kSsrcs3[0], nullptr); |
2304 } | 2302 } |
2305 | 2303 |
2306 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { | 2304 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { |
2307 static const char* kMaxQuantization = "21"; | 2305 static const char* kMaxQuantization = "21"; |
2308 cricket::VideoSendParameters parameters; | 2306 cricket::VideoSendParameters parameters; |
2309 parameters.codecs.push_back(kVp8Codec); | 2307 parameters.codecs.push_back(kVp8Codec); |
2310 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; | 2308 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; |
2311 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2309 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2312 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), | 2310 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), |
2313 AddSendStream()->GetVideoStreams().back().max_qp); | 2311 AddSendStream()->GetVideoStreams().back().max_qp); |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2652 | 2650 |
2653 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { | 2651 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { |
2654 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2652 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
2655 | 2653 |
2656 // Capture format VGA. | 2654 // Capture format VGA. |
2657 cricket::FakeVideoCapturer video_capturer_vga; | 2655 cricket::FakeVideoCapturer video_capturer_vga; |
2658 const std::vector<cricket::VideoFormat>* formats = | 2656 const std::vector<cricket::VideoFormat>* formats = |
2659 video_capturer_vga.GetSupportedFormats(); | 2657 video_capturer_vga.GetSupportedFormats(); |
2660 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2658 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
2661 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2659 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
2662 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); | 2660 channel_->SetSource(kSsrcs3[0], &video_capturer_vga); |
2663 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2661 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
2664 | 2662 |
2665 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); | 2663 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); |
2666 cricket::VideoSendParameters parameters; | 2664 cricket::VideoSendParameters parameters; |
2667 parameters.codecs.push_back(send_codec); | 2665 parameters.codecs.push_back(send_codec); |
2668 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2666 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2669 EXPECT_TRUE(channel_->SetSend(true)); | 2667 EXPECT_TRUE(channel_->SetSend(true)); |
2670 | 2668 |
2671 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2669 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
2672 | 2670 |
(...skipping 17 matching lines...) Expand all Loading... |
2690 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2688 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
2691 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2689 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
2692 info.Clear(); | 2690 info.Clear(); |
2693 EXPECT_TRUE(channel_->GetStats(&info)); | 2691 EXPECT_TRUE(channel_->GetStats(&info)); |
2694 ASSERT_EQ(1U, info.senders.size()); | 2692 ASSERT_EQ(1U, info.senders.size()); |
2695 EXPECT_EQ(2, info.senders[0].adapt_changes); | 2693 EXPECT_EQ(2, info.senders[0].adapt_changes); |
2696 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, | 2694 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, |
2697 info.senders[0].adapt_reason); | 2695 info.senders[0].adapt_reason); |
2698 | 2696 |
2699 // No capturer (no adapter). Adapt changes from old adapter should be kept. | 2697 // No capturer (no adapter). Adapt changes from old adapter should be kept. |
2700 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2698 channel_->SetSource(kSsrcs3[0], NULL); |
2701 info.Clear(); | 2699 info.Clear(); |
2702 EXPECT_TRUE(channel_->GetStats(&info)); | 2700 EXPECT_TRUE(channel_->GetStats(&info)); |
2703 ASSERT_EQ(1U, info.senders.size()); | 2701 ASSERT_EQ(1U, info.senders.size()); |
2704 EXPECT_EQ(2, info.senders[0].adapt_changes); | 2702 EXPECT_EQ(2, info.senders[0].adapt_changes); |
2705 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, | 2703 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, |
2706 info.senders[0].adapt_reason); | 2704 info.senders[0].adapt_reason); |
2707 | 2705 |
2708 // Set new capturer, capture format HD. | 2706 // Set new capturer, capture format HD. |
2709 cricket::FakeVideoCapturer video_capturer_hd; | 2707 cricket::FakeVideoCapturer video_capturer_hd; |
2710 cricket::VideoFormat capture_format_hd = (*formats)[0]; | 2708 cricket::VideoFormat capture_format_hd = (*formats)[0]; |
2711 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); | 2709 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); |
2712 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); | 2710 channel_->SetSource(kSsrcs3[0], &video_capturer_hd); |
2713 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); | 2711 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); |
2714 | 2712 |
2715 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. | 2713 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. |
2716 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 2714 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
2717 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); | 2715 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); |
2718 info.Clear(); | 2716 info.Clear(); |
2719 EXPECT_TRUE(channel_->GetStats(&info)); | 2717 EXPECT_TRUE(channel_->GetStats(&info)); |
2720 ASSERT_EQ(1U, info.senders.size()); | 2718 ASSERT_EQ(1U, info.senders.size()); |
2721 EXPECT_EQ(3, info.senders[0].adapt_changes); | 2719 EXPECT_EQ(3, info.senders[0].adapt_changes); |
2722 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, | 2720 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, |
2723 info.senders[0].adapt_reason); | 2721 info.senders[0].adapt_reason); |
2724 | 2722 |
2725 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2723 channel_->SetSource(kSsrcs3[0], NULL); |
2726 } | 2724 } |
2727 | 2725 |
2728 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { | 2726 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { |
2729 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2727 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
2730 | 2728 |
2731 // Capture format VGA. | 2729 // Capture format VGA. |
2732 cricket::FakeVideoCapturer video_capturer_vga; | 2730 cricket::FakeVideoCapturer video_capturer_vga; |
2733 const std::vector<cricket::VideoFormat>* formats = | 2731 const std::vector<cricket::VideoFormat>* formats = |
2734 video_capturer_vga.GetSupportedFormats(); | 2732 video_capturer_vga.GetSupportedFormats(); |
2735 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2733 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
2736 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2734 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
2737 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); | 2735 channel_->SetSource(kSsrcs3[0], &video_capturer_vga); |
2738 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2736 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
2739 | 2737 |
2740 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); | 2738 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); |
2741 cricket::VideoSendParameters parameters; | 2739 cricket::VideoSendParameters parameters; |
2742 parameters.codecs.push_back(send_codec); | 2740 parameters.codecs.push_back(send_codec); |
2743 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2741 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2744 EXPECT_TRUE(channel_->SetSend(true)); | 2742 EXPECT_TRUE(channel_->SetSend(true)); |
2745 | 2743 |
2746 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2744 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
2747 | 2745 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2780 | 2778 |
2781 // Reset bandwidth limitation state -> adapt NONE. | 2779 // Reset bandwidth limitation state -> adapt NONE. |
2782 stats.bw_limited_resolution = false; | 2780 stats.bw_limited_resolution = false; |
2783 fake_call_->GetVideoSendStreams().front()->SetStats(stats); | 2781 fake_call_->GetVideoSendStreams().front()->SetStats(stats); |
2784 info.Clear(); | 2782 info.Clear(); |
2785 EXPECT_TRUE(channel_->GetStats(&info)); | 2783 EXPECT_TRUE(channel_->GetStats(&info)); |
2786 ASSERT_EQ(1U, info.senders.size()); | 2784 ASSERT_EQ(1U, info.senders.size()); |
2787 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, | 2785 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, |
2788 info.senders[0].adapt_reason); | 2786 info.senders[0].adapt_reason); |
2789 | 2787 |
2790 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2788 channel_->SetSource(kSsrcs3[0], NULL); |
2791 } | 2789 } |
2792 | 2790 |
2793 TEST_F(WebRtcVideoChannel2Test, | 2791 TEST_F(WebRtcVideoChannel2Test, |
2794 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { | 2792 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { |
2795 FakeVideoSendStream* stream = AddSendStream(); | 2793 FakeVideoSendStream* stream = AddSendStream(); |
2796 webrtc::VideoSendStream::Stats stats; | 2794 webrtc::VideoSendStream::Stats stats; |
2797 stats.bw_limited_resolution = true; | 2795 stats.bw_limited_resolution = true; |
2798 stream->SetStats(stats); | 2796 stream->SetStats(stats); |
2799 | 2797 |
2800 cricket::VideoMediaInfo info; | 2798 cricket::VideoMediaInfo info; |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3142 } | 3140 } |
3143 | 3141 |
3144 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { | 3142 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { |
3145 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); | 3143 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); |
3146 } | 3144 } |
3147 | 3145 |
3148 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { | 3146 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { |
3149 AddSendStream(); | 3147 AddSendStream(); |
3150 | 3148 |
3151 cricket::FakeVideoCapturer capturer; | 3149 cricket::FakeVideoCapturer capturer; |
3152 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 3150 channel_->SetSource(last_ssrc_, &capturer); |
3153 cricket::VideoFormat capture_format_hd = | 3151 cricket::VideoFormat capture_format_hd = |
3154 capturer.GetSupportedFormats()->front(); | 3152 capturer.GetSupportedFormats()->front(); |
3155 EXPECT_EQ(1280, capture_format_hd.width); | 3153 EXPECT_EQ(1280, capture_format_hd.width); |
3156 EXPECT_EQ(720, capture_format_hd.height); | 3154 EXPECT_EQ(720, capture_format_hd.height); |
3157 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); | 3155 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); |
3158 EXPECT_TRUE(channel_->SetSend(true)); | 3156 EXPECT_TRUE(channel_->SetSend(true)); |
3159 | 3157 |
3160 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); | 3158 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); |
3161 EXPECT_TRUE(default_encoder_bitrate > 1000); | 3159 EXPECT_TRUE(default_encoder_bitrate > 1000); |
3162 | 3160 |
3163 // TODO(skvlad): Resolve the inconsistency between the interpretation | 3161 // TODO(skvlad): Resolve the inconsistency between the interpretation |
3164 // of the global bitrate limit for audio and video: | 3162 // of the global bitrate limit for audio and video: |
3165 // - Audio: max_bandwidth_bps = 0 - fail the operation, | 3163 // - Audio: max_bandwidth_bps = 0 - fail the operation, |
3166 // max_bandwidth_bps = -1 - remove the bandwidth limit | 3164 // max_bandwidth_bps = -1 - remove the bandwidth limit |
3167 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, | 3165 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, |
3168 // max_bandwidth_bps = -1 - do not change the previously set | 3166 // max_bandwidth_bps = -1 - do not change the previously set |
3169 // limit. | 3167 // limit. |
3170 | 3168 |
3171 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); | 3169 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); |
3172 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); | 3170 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); |
3173 SetAndExpectMaxBitrate(capturer, 600, 800, 600); | 3171 SetAndExpectMaxBitrate(capturer, 600, 800, 600); |
3174 SetAndExpectMaxBitrate(capturer, 0, 800, 800); | 3172 SetAndExpectMaxBitrate(capturer, 0, 800, 800); |
3175 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); | 3173 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); |
3176 | 3174 |
3177 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 3175 channel_->SetSource(last_ssrc_, NULL); |
3178 } | 3176 } |
3179 | 3177 |
3180 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { | 3178 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { |
3181 webrtc::RtpParameters nonexistent_parameters = | 3179 webrtc::RtpParameters nonexistent_parameters = |
3182 channel_->GetRtpParameters(last_ssrc_); | 3180 channel_->GetRtpParameters(last_ssrc_); |
3183 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); | 3181 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); |
3184 | 3182 |
3185 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); | 3183 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); |
3186 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); | 3184 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); |
3187 } | 3185 } |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3278 | 3276 |
3279 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 3277 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
3280 RTC_DCHECK(num_configured_streams <= ssrcs.size()); | 3278 RTC_DCHECK(num_configured_streams <= ssrcs.size()); |
3281 ssrcs.resize(num_configured_streams); | 3279 ssrcs.resize(num_configured_streams); |
3282 | 3280 |
3283 FakeVideoSendStream* stream = | 3281 FakeVideoSendStream* stream = |
3284 AddSendStream(CreateSimStreamParams("cname", ssrcs)); | 3282 AddSendStream(CreateSimStreamParams("cname", ssrcs)); |
3285 // Send a full-size frame to trigger a stream reconfiguration to use all | 3283 // Send a full-size frame to trigger a stream reconfiguration to use all |
3286 // expected simulcast layers. | 3284 // expected simulcast layers. |
3287 cricket::FakeVideoCapturer capturer; | 3285 cricket::FakeVideoCapturer capturer; |
3288 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); | 3286 channel_->SetSource(ssrcs.front(), &capturer); |
3289 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( | 3287 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( |
3290 codec.width, codec.height, | 3288 codec.width, codec.height, |
3291 cricket::VideoFormat::FpsToInterval(30), | 3289 cricket::VideoFormat::FpsToInterval(30), |
3292 cricket::FOURCC_I420))); | 3290 cricket::FOURCC_I420))); |
3293 channel_->SetSend(true); | 3291 channel_->SetSend(true); |
3294 EXPECT_TRUE(capturer.CaptureFrame()); | 3292 EXPECT_TRUE(capturer.CaptureFrame()); |
3295 | 3293 |
3296 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); | 3294 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); |
3297 ASSERT_EQ(expected_num_streams, video_streams.size()); | 3295 ASSERT_EQ(expected_num_streams, video_streams.size()); |
3298 | 3296 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3335 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; | 3333 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; |
3336 } else { | 3334 } else { |
3337 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; | 3335 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; |
3338 } | 3336 } |
3339 } | 3337 } |
3340 cricket::VideoMediaInfo info; | 3338 cricket::VideoMediaInfo info; |
3341 ASSERT_TRUE(channel_->GetStats(&info)); | 3339 ASSERT_TRUE(channel_->GetStats(&info)); |
3342 ASSERT_EQ(1u, info.senders.size()); | 3340 ASSERT_EQ(1u, info.senders.size()); |
3343 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); | 3341 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); |
3344 | 3342 |
3345 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); | 3343 channel_->SetSource(ssrcs.front(), NULL); |
3346 } | 3344 } |
3347 | 3345 |
3348 FakeVideoSendStream* AddSendStream() { | 3346 FakeVideoSendStream* AddSendStream() { |
3349 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); | 3347 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); |
3350 } | 3348 } |
3351 | 3349 |
3352 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { | 3350 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { |
3353 size_t num_streams = | 3351 size_t num_streams = |
3354 fake_call_.GetVideoSendStreams().size(); | 3352 fake_call_.GetVideoSendStreams().size(); |
3355 EXPECT_TRUE(channel_->AddSendStream(sp)); | 3353 EXPECT_TRUE(channel_->AddSendStream(sp)); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3392 } | 3390 } |
3393 | 3391 |
3394 // Test that we normalize send codec format size in simulcast. | 3392 // Test that we normalize send codec format size in simulcast. |
3395 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { | 3393 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { |
3396 cricket::VideoCodec codec(kVp8Codec270p); | 3394 cricket::VideoCodec codec(kVp8Codec270p); |
3397 codec.width += 1; | 3395 codec.width += 1; |
3398 codec.height += 1; | 3396 codec.height += 1; |
3399 VerifySimulcastSettings(codec, 2, 2); | 3397 VerifySimulcastSettings(codec, 2, 2); |
3400 } | 3398 } |
3401 } // namespace cricket | 3399 } // namespace cricket |
OLD | NEW |