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