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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 | 337 |
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_EQ(1u, encoder_factory.encoders().size()); | 343 ASSERT_EQ(1u, encoder_factory.encoders().size()); |
344 EXPECT_TRUE(channel->SetSend(true)); | 344 EXPECT_TRUE(channel->SetSend(true)); |
345 | 345 |
346 cricket::FakeVideoCapturer capturer; | 346 cricket::FakeVideoCapturer capturer; |
347 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 347 channel->SetSource(kSsrc, &capturer); |
348 EXPECT_EQ(cricket::CS_RUNNING, | 348 EXPECT_EQ(cricket::CS_RUNNING, |
349 capturer.Start(capturer.GetSupportedFormats()->front())); | 349 capturer.Start(capturer.GetSupportedFormats()->front())); |
350 EXPECT_TRUE(capturer.CaptureFrame()); | 350 EXPECT_TRUE(capturer.CaptureFrame()); |
351 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, | 351 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, |
352 kTimeout); | 352 kTimeout); |
353 | 353 |
354 // Sending one frame will have reallocated the encoder since input size | 354 // Sending one frame will have reallocated the encoder since input size |
355 // changes from a small default to the actual frame width/height. | 355 // changes from a small default to the actual frame width/height. |
356 int num_created_encoders = encoder_factory.GetNumCreatedEncoders(); | 356 int num_created_encoders = encoder_factory.GetNumCreatedEncoders(); |
357 EXPECT_EQ(num_created_encoders, 2); | 357 EXPECT_EQ(num_created_encoders, 2); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 | 424 |
425 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); | 425 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); |
426 call_.reset(fake_call); | 426 call_.reset(fake_call); |
427 std::unique_ptr<VideoMediaChannel> channel( | 427 std::unique_ptr<VideoMediaChannel> channel( |
428 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 428 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
429 | 429 |
430 EXPECT_TRUE( | 430 EXPECT_TRUE( |
431 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 431 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
432 | 432 |
433 FakeVideoCapturer capturer; | 433 FakeVideoCapturer capturer; |
434 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 434 channel->SetSource(kSsrc, &capturer); |
435 capturer.Start(cricket::VideoFormat(1280, 720, | 435 capturer.Start(cricket::VideoFormat(1280, 720, |
436 cricket::VideoFormat::FpsToInterval(60), | 436 cricket::VideoFormat::FpsToInterval(60), |
437 cricket::FOURCC_I420)); | 437 cricket::FOURCC_I420)); |
438 channel->SetSend(true); | 438 channel->SetSend(true); |
439 | 439 |
440 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; | 440 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
441 | 441 |
442 EXPECT_TRUE(capturer.CaptureFrame()); | 442 EXPECT_TRUE(capturer.CaptureFrame()); |
443 int64_t last_timestamp = stream->GetLastTimestamp(); | 443 int64_t last_timestamp = stream->GetLastTimestamp(); |
444 for (int i = 0; i < 10; i++) { | 444 for (int i = 0; i < 10; i++) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 call_.reset(fake_call); | 486 call_.reset(fake_call); |
487 std::unique_ptr<VideoMediaChannel> channel( | 487 std::unique_ptr<VideoMediaChannel> channel( |
488 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 488 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
489 | 489 |
490 EXPECT_TRUE( | 490 EXPECT_TRUE( |
491 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 491 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
492 channel->SetSend(true); | 492 channel->SetSend(true); |
493 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; | 493 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
494 | 494 |
495 FakeVideoCapturer capturer1; | 495 FakeVideoCapturer capturer1; |
496 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); | 496 channel->SetSource(kSsrc, &capturer1); |
497 | 497 |
498 cricket::CapturedFrame frame; | 498 cricket::CapturedFrame frame; |
499 frame.width = 1280; | 499 frame.width = 1280; |
500 frame.height = 720; | 500 frame.height = 720; |
501 frame.fourcc = cricket::FOURCC_I420; | 501 frame.fourcc = cricket::FOURCC_I420; |
502 frame.data_size = frame.width * frame.height + | 502 frame.data_size = frame.width * frame.height + |
503 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); | 503 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); |
504 std::unique_ptr<char[]> data(new char[frame.data_size]); | 504 std::unique_ptr<char[]> data(new char[frame.data_size]); |
505 frame.data = data.get(); | 505 frame.data = data.get(); |
506 memset(frame.data, 1, frame.data_size); | 506 memset(frame.data, 1, frame.data_size); |
507 const int kInitialTimestamp = 123456; | 507 const int kInitialTimestamp = 123456; |
508 frame.time_stamp = kInitialTimestamp; | 508 frame.time_stamp = kInitialTimestamp; |
509 | 509 |
510 // Deliver initial frame. | 510 // Deliver initial frame. |
511 capturer1.SignalCapturedFrame(&frame); | 511 capturer1.SignalCapturedFrame(&frame); |
512 // Deliver next frame 1 second later. | 512 // Deliver next frame 1 second later. |
513 frame.time_stamp += rtc::kNumNanosecsPerSec; | 513 frame.time_stamp += rtc::kNumNanosecsPerSec; |
514 rtc::Thread::Current()->SleepMs(1000); | 514 rtc::Thread::Current()->SleepMs(1000); |
515 capturer1.SignalCapturedFrame(&frame); | 515 capturer1.SignalCapturedFrame(&frame); |
516 | 516 |
517 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); | 517 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); |
518 // Reset input source, should still be continuous even though input-frame | 518 // Reset input source, should still be continuous even though input-frame |
519 // timestamp is less than before. | 519 // timestamp is less than before. |
520 FakeVideoCapturer capturer2; | 520 FakeVideoCapturer capturer2; |
521 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); | 521 channel->SetSource(kSsrc, &capturer2); |
522 | 522 |
523 rtc::Thread::Current()->SleepMs(1); | 523 rtc::Thread::Current()->SleepMs(1); |
524 // Deliver with a timestamp (10 seconds) before the previous initial one, | 524 // Deliver with a timestamp (10 seconds) before the previous initial one, |
525 // these should not be related at all anymore and it should still work fine. | 525 // these should not be related at all anymore and it should still work fine. |
526 frame.time_stamp = kInitialTimestamp - 10000; | 526 frame.time_stamp = kInitialTimestamp - 10000; |
527 capturer2.SignalCapturedFrame(&frame); | 527 capturer2.SignalCapturedFrame(&frame); |
528 | 528 |
529 // New timestamp should be at least 1ms in the future and not old. | 529 // New timestamp should be at least 1ms in the future and not old. |
530 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); | 530 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); |
531 | 531 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
571 std::unique_ptr<VideoMediaChannel> channel( | 571 std::unique_ptr<VideoMediaChannel> channel( |
572 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 572 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
573 | 573 |
574 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 574 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
575 | 575 |
576 EXPECT_TRUE( | 576 EXPECT_TRUE( |
577 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); | 577 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); |
578 EXPECT_TRUE(channel->SetSend(true)); | 578 EXPECT_TRUE(channel->SetSend(true)); |
579 | 579 |
580 cricket::FakeVideoCapturer capturer; | 580 cricket::FakeVideoCapturer capturer; |
581 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); | 581 channel->SetSource(ssrcs.front(), &capturer); |
582 EXPECT_EQ(cricket::CS_RUNNING, | 582 EXPECT_EQ(cricket::CS_RUNNING, |
583 capturer.Start(capturer.GetSupportedFormats()->front())); | 583 capturer.Start(capturer.GetSupportedFormats()->front())); |
584 EXPECT_TRUE(capturer.CaptureFrame()); | 584 EXPECT_TRUE(capturer.CaptureFrame()); |
585 | 585 |
586 EXPECT_GT(encoder_factory.encoders().size(), 1u); | 586 EXPECT_GT(encoder_factory.encoders().size(), 1u); |
587 | 587 |
588 // Verify that encoders are configured for simulcast through adapter | 588 // Verify that encoders are configured for simulcast through adapter |
589 // (increasing resolution and only configured to send one stream each). | 589 // (increasing resolution and only configured to send one stream each). |
590 int prev_width = -1; | 590 int prev_width = -1; |
591 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { | 591 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { |
592 webrtc::VideoCodec codec_settings = | 592 webrtc::VideoCodec codec_settings = |
593 encoder_factory.encoders()[i]->GetCodecSettings(); | 593 encoder_factory.encoders()[i]->GetCodecSettings(); |
594 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); | 594 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); |
595 EXPECT_GT(codec_settings.width, prev_width); | 595 EXPECT_GT(codec_settings.width, prev_width); |
596 prev_width = codec_settings.width; | 596 prev_width = codec_settings.width; |
597 } | 597 } |
598 | 598 |
599 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), NULL)); | 599 channel->SetSource(ssrcs.front(), NULL); |
600 | 600 |
601 channel.reset(); | 601 channel.reset(); |
602 ASSERT_EQ(0u, encoder_factory.encoders().size()); | 602 ASSERT_EQ(0u, encoder_factory.encoders().size()); |
603 } | 603 } |
604 | 604 |
605 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { | 605 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { |
606 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 606 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
607 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); | 607 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); |
608 std::vector<cricket::VideoCodec> codecs; | 608 std::vector<cricket::VideoCodec> codecs; |
609 codecs.push_back(kH264Codec); | 609 codecs.push_back(kH264Codec); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 652 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
653 | 653 |
654 EXPECT_TRUE( | 654 EXPECT_TRUE( |
655 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); | 655 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); |
656 EXPECT_TRUE(channel->SetSend(true)); | 656 EXPECT_TRUE(channel->SetSend(true)); |
657 | 657 |
658 // Send a fake frame, or else the media engine will configure the simulcast | 658 // Send a fake frame, or else the media engine will configure the simulcast |
659 // encoder adapter at a low-enough size that it'll only create a single | 659 // encoder adapter at a low-enough size that it'll only create a single |
660 // encoder layer. | 660 // encoder layer. |
661 cricket::FakeVideoCapturer capturer; | 661 cricket::FakeVideoCapturer capturer; |
662 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); | 662 channel->SetSource(ssrcs.front(), &capturer); |
663 EXPECT_EQ(cricket::CS_RUNNING, | 663 EXPECT_EQ(cricket::CS_RUNNING, |
664 capturer.Start(capturer.GetSupportedFormats()->front())); | 664 capturer.Start(capturer.GetSupportedFormats()->front())); |
665 EXPECT_TRUE(capturer.CaptureFrame()); | 665 EXPECT_TRUE(capturer.CaptureFrame()); |
666 | 666 |
667 ASSERT_GT(encoder_factory.encoders().size(), 1u); | 667 ASSERT_GT(encoder_factory.encoders().size(), 1u); |
668 EXPECT_EQ(webrtc::kVideoCodecVP8, | 668 EXPECT_EQ(webrtc::kVideoCodecVP8, |
669 encoder_factory.encoders()[0]->GetCodecSettings().codecType); | 669 encoder_factory.encoders()[0]->GetCodecSettings().codecType); |
670 | 670 |
671 channel.reset(); | 671 channel.reset(); |
672 // Make sure DestroyVideoEncoder was called on the factory. | 672 // Make sure DestroyVideoEncoder was called on the factory. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 706 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
707 | 707 |
708 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 708 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
709 EXPECT_TRUE( | 709 EXPECT_TRUE( |
710 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); | 710 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); |
711 | 711 |
712 // Send a frame of 720p. This should trigger a "real" encoder initialization. | 712 // Send a frame of 720p. This should trigger a "real" encoder initialization. |
713 cricket::VideoFormat format( | 713 cricket::VideoFormat format( |
714 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); | 714 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); |
715 cricket::FakeVideoCapturer capturer; | 715 cricket::FakeVideoCapturer capturer; |
716 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], &capturer)); | 716 channel->SetSource(ssrcs[0], &capturer); |
717 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); | 717 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); |
718 EXPECT_TRUE(capturer.CaptureFrame()); | 718 EXPECT_TRUE(capturer.CaptureFrame()); |
719 | 719 |
720 ASSERT_EQ(1u, encoder_factory.encoders().size()); | 720 ASSERT_EQ(1u, encoder_factory.encoders().size()); |
721 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; | 721 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; |
722 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); | 722 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); |
723 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); | 723 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); |
724 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], nullptr)); | 724 channel->SetSource(ssrcs[0], nullptr); |
725 } | 725 } |
726 | 726 |
727 // Test that external codecs are added to the end of the supported codec list. | 727 // Test that external codecs are added to the end of the supported codec list. |
728 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { | 728 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { |
729 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 729 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
730 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, | 730 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, |
731 "FakeExternalCodec"); | 731 "FakeExternalCodec"); |
732 engine_.SetExternalEncoderFactory(&encoder_factory); | 732 engine_.SetExternalEncoderFactory(&encoder_factory); |
733 engine_.Init(); | 733 engine_.Init(); |
734 | 734 |
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1489 cricket::VideoCodec codec = kVp8Codec360p; | 1489 cricket::VideoCodec codec = kVp8Codec360p; |
1490 cricket::VideoSendParameters parameters; | 1490 cricket::VideoSendParameters parameters; |
1491 parameters.codecs.push_back(codec); | 1491 parameters.codecs.push_back(codec); |
1492 parameters.options.screencast_min_bitrate_kbps = | 1492 parameters.options.screencast_min_bitrate_kbps = |
1493 rtc::Optional<int>(kScreenshareMinBitrateKbps); | 1493 rtc::Optional<int>(kScreenshareMinBitrateKbps); |
1494 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1494 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1495 | 1495 |
1496 AddSendStream(); | 1496 AddSendStream(); |
1497 | 1497 |
1498 cricket::FakeVideoCapturer capturer; | 1498 cricket::FakeVideoCapturer capturer; |
1499 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1499 channel_->SetSource(last_ssrc_, &capturer); |
1500 cricket::VideoFormat capture_format_hd = | 1500 cricket::VideoFormat capture_format_hd = |
1501 capturer.GetSupportedFormats()->front(); | 1501 capturer.GetSupportedFormats()->front(); |
1502 EXPECT_EQ(1280, capture_format_hd.width); | 1502 EXPECT_EQ(1280, capture_format_hd.width); |
1503 EXPECT_EQ(720, capture_format_hd.height); | 1503 EXPECT_EQ(720, capture_format_hd.height); |
1504 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); | 1504 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); |
1505 | 1505 |
1506 EXPECT_TRUE(channel_->SetSend(true)); | 1506 EXPECT_TRUE(channel_->SetSend(true)); |
1507 | 1507 |
1508 EXPECT_TRUE(capturer.CaptureFrame()); | 1508 EXPECT_TRUE(capturer.CaptureFrame()); |
1509 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 1509 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
1510 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1510 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
1511 | 1511 |
1512 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 1512 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
1513 | 1513 |
1514 // Verify non-screencast settings. | 1514 // Verify non-screencast settings. |
1515 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); | 1515 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); |
1516 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, | 1516 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, |
1517 encoder_config.content_type); | 1517 encoder_config.content_type); |
1518 EXPECT_EQ(codec.width, encoder_config.streams.front().width); | 1518 EXPECT_EQ(codec.width, encoder_config.streams.front().width); |
1519 EXPECT_EQ(codec.height, encoder_config.streams.front().height); | 1519 EXPECT_EQ(codec.height, encoder_config.streams.front().height); |
1520 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) | 1520 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) |
1521 << "Non-screenshare shouldn't use min-transmit bitrate."; | 1521 << "Non-screenshare shouldn't use min-transmit bitrate."; |
1522 | 1522 |
1523 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); | 1523 channel_->SetSource(last_ssrc_, nullptr); |
1524 // Removing a capturer triggers a black frame to be sent. | 1524 // Removing a capturer triggers a black frame to be sent. |
1525 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 1525 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
1526 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1526 channel_->SetSource(last_ssrc_, &capturer); |
1527 parameters.options.is_screencast = rtc::Optional<bool>(true); | 1527 parameters.options.is_screencast = rtc::Optional<bool>(true); |
1528 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1528 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1529 EXPECT_TRUE(capturer.CaptureFrame()); | 1529 EXPECT_TRUE(capturer.CaptureFrame()); |
1530 // Send stream not recreated after option change. | 1530 // Send stream not recreated after option change. |
1531 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); | 1531 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); |
1532 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); | 1532 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); |
1533 | 1533 |
1534 // Verify screencast settings. | 1534 // Verify screencast settings. |
1535 encoder_config = send_stream->GetEncoderConfig(); | 1535 encoder_config = send_stream->GetEncoderConfig(); |
1536 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, | 1536 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, |
1537 encoder_config.content_type); | 1537 encoder_config.content_type); |
1538 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, | 1538 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, |
1539 encoder_config.min_transmit_bitrate_bps); | 1539 encoder_config.min_transmit_bitrate_bps); |
1540 | 1540 |
1541 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); | 1541 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); |
1542 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); | 1542 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); |
1543 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); | 1543 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); |
1544 | 1544 |
1545 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1545 channel_->SetSource(last_ssrc_, NULL); |
1546 } | 1546 } |
1547 | 1547 |
1548 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { | 1548 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { |
1549 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 1549 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
1550 ASSERT_TRUE( | 1550 ASSERT_TRUE( |
1551 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 1551 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
1552 EXPECT_TRUE(channel_->SetSend(true)); | 1552 EXPECT_TRUE(channel_->SetSend(true)); |
1553 | 1553 |
1554 cricket::FakeVideoCapturer capturer; | 1554 cricket::FakeVideoCapturer capturer; |
1555 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &capturer)); | 1555 channel_->SetSource(kSsrc, &capturer); |
1556 EXPECT_EQ(cricket::CS_RUNNING, | 1556 EXPECT_EQ(cricket::CS_RUNNING, |
1557 capturer.Start(capturer.GetSupportedFormats()->front())); | 1557 capturer.Start(capturer.GetSupportedFormats()->front())); |
1558 EXPECT_TRUE(capturer.CaptureFrame()); | 1558 EXPECT_TRUE(capturer.CaptureFrame()); |
1559 | 1559 |
1560 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); | 1560 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); |
1561 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); | 1561 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); |
1562 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); | 1562 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); |
1563 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, | 1563 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, |
1564 encoder_config.content_type); | 1564 encoder_config.content_type); |
1565 | 1565 |
(...skipping 20 matching lines...) Expand all Loading... |
1586 | 1586 |
1587 EXPECT_TRUE(capturer.CaptureFrame()); | 1587 EXPECT_TRUE(capturer.CaptureFrame()); |
1588 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); | 1588 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); |
1589 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); | 1589 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); |
1590 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); | 1590 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); |
1591 | 1591 |
1592 encoder_config = stream->GetEncoderConfig(); | 1592 encoder_config = stream->GetEncoderConfig(); |
1593 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, | 1593 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, |
1594 encoder_config.content_type); | 1594 encoder_config.content_type); |
1595 | 1595 |
1596 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); | 1596 channel_->SetSource(kSsrc, NULL); |
1597 } | 1597 } |
1598 | 1598 |
1599 TEST_F(WebRtcVideoChannel2Test, | 1599 TEST_F(WebRtcVideoChannel2Test, |
1600 ConferenceModeScreencastConfiguresTemporalLayer) { | 1600 ConferenceModeScreencastConfiguresTemporalLayer) { |
1601 static const int kConferenceScreencastTemporalBitrateBps = | 1601 static const int kConferenceScreencastTemporalBitrateBps = |
1602 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; | 1602 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; |
1603 send_parameters_.conference_mode = true; | 1603 send_parameters_.conference_mode = true; |
1604 send_parameters_.options.is_screencast = rtc::Optional<bool>(true); | 1604 send_parameters_.options.is_screencast = rtc::Optional<bool>(true); |
1605 channel_->SetSendParameters(send_parameters_); | 1605 channel_->SetSendParameters(send_parameters_); |
1606 | 1606 |
1607 AddSendStream(); | 1607 AddSendStream(); |
1608 | 1608 |
1609 cricket::FakeVideoCapturer capturer; | 1609 cricket::FakeVideoCapturer capturer; |
1610 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1610 channel_->SetSource(last_ssrc_, &capturer); |
1611 cricket::VideoFormat capture_format_hd = | 1611 cricket::VideoFormat capture_format_hd = |
1612 capturer.GetSupportedFormats()->front(); | 1612 capturer.GetSupportedFormats()->front(); |
1613 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); | 1613 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); |
1614 | 1614 |
1615 EXPECT_TRUE(channel_->SetSend(true)); | 1615 EXPECT_TRUE(channel_->SetSend(true)); |
1616 | 1616 |
1617 EXPECT_TRUE(capturer.CaptureFrame()); | 1617 EXPECT_TRUE(capturer.CaptureFrame()); |
1618 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 1618 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
1619 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1619 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
1620 | 1620 |
1621 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); | 1621 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); |
1622 | 1622 |
1623 // Verify screencast settings. | 1623 // Verify screencast settings. |
1624 encoder_config = send_stream->GetEncoderConfig(); | 1624 encoder_config = send_stream->GetEncoderConfig(); |
1625 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, | 1625 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, |
1626 encoder_config.content_type); | 1626 encoder_config.content_type); |
1627 ASSERT_EQ(1u, encoder_config.streams.size()); | 1627 ASSERT_EQ(1u, encoder_config.streams.size()); |
1628 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); | 1628 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); |
1629 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, | 1629 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, |
1630 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); | 1630 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); |
1631 | 1631 |
1632 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1632 channel_->SetSource(last_ssrc_, NULL); |
1633 } | 1633 } |
1634 | 1634 |
1635 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { | 1635 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { |
1636 FakeVideoSendStream* stream = AddSendStream(); | 1636 FakeVideoSendStream* stream = AddSendStream(); |
1637 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); | 1637 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); |
1638 } | 1638 } |
1639 | 1639 |
1640 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { | 1640 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { |
1641 MediaConfig media_config = MediaConfig(); | 1641 MediaConfig media_config = MediaConfig(); |
1642 media_config.video.suspend_below_min_bitrate = true; | 1642 media_config.video.suspend_below_min_bitrate = true; |
(...skipping 29 matching lines...) Expand all Loading... |
1672 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1672 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1673 | 1673 |
1674 // Single-stream settings should apply with RTX as well (verifies that we | 1674 // Single-stream settings should apply with RTX as well (verifies that we |
1675 // check number of regular SSRCs and not StreamParams::ssrcs which contains | 1675 // check number of regular SSRCs and not StreamParams::ssrcs which contains |
1676 // both RTX and regular SSRCs). | 1676 // both RTX and regular SSRCs). |
1677 FakeVideoSendStream* stream = SetUpSimulcast(false, true); | 1677 FakeVideoSendStream* stream = SetUpSimulcast(false, true); |
1678 | 1678 |
1679 cricket::FakeVideoCapturer capturer; | 1679 cricket::FakeVideoCapturer capturer; |
1680 EXPECT_EQ(cricket::CS_RUNNING, | 1680 EXPECT_EQ(cricket::CS_RUNNING, |
1681 capturer.Start(capturer.GetSupportedFormats()->front())); | 1681 capturer.Start(capturer.GetSupportedFormats()->front())); |
1682 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1682 channel_->SetSource(last_ssrc_, &capturer); |
1683 channel_->SetSend(true); | 1683 channel_->SetSend(true); |
1684 | 1684 |
1685 EXPECT_TRUE(capturer.CaptureFrame()); | 1685 EXPECT_TRUE(capturer.CaptureFrame()); |
1686 | 1686 |
1687 webrtc::VideoCodecVP8 vp8_settings; | 1687 webrtc::VideoCodecVP8 vp8_settings; |
1688 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1688 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
1689 EXPECT_TRUE(vp8_settings.denoisingOn) | 1689 EXPECT_TRUE(vp8_settings.denoisingOn) |
1690 << "VP8 denoising should be on by default."; | 1690 << "VP8 denoising should be on by default."; |
1691 | 1691 |
1692 stream = SetDenoisingOption(parameters, &capturer, false); | 1692 stream = SetDenoisingOption(parameters, &capturer, false); |
1693 | 1693 |
1694 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1694 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
1695 EXPECT_FALSE(vp8_settings.denoisingOn); | 1695 EXPECT_FALSE(vp8_settings.denoisingOn); |
1696 EXPECT_TRUE(vp8_settings.automaticResizeOn); | 1696 EXPECT_TRUE(vp8_settings.automaticResizeOn); |
1697 EXPECT_TRUE(vp8_settings.frameDroppingOn); | 1697 EXPECT_TRUE(vp8_settings.frameDroppingOn); |
1698 | 1698 |
1699 stream = SetDenoisingOption(parameters, &capturer, true); | 1699 stream = SetDenoisingOption(parameters, &capturer, true); |
1700 | 1700 |
1701 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1701 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
1702 EXPECT_TRUE(vp8_settings.denoisingOn); | 1702 EXPECT_TRUE(vp8_settings.denoisingOn); |
1703 EXPECT_TRUE(vp8_settings.automaticResizeOn); | 1703 EXPECT_TRUE(vp8_settings.automaticResizeOn); |
1704 EXPECT_TRUE(vp8_settings.frameDroppingOn); | 1704 EXPECT_TRUE(vp8_settings.frameDroppingOn); |
1705 | 1705 |
1706 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1706 channel_->SetSource(last_ssrc_, NULL); |
1707 stream = SetUpSimulcast(true, false); | 1707 stream = SetUpSimulcast(true, false); |
1708 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1708 channel_->SetSource(last_ssrc_, &capturer); |
1709 channel_->SetSend(true); | 1709 channel_->SetSend(true); |
1710 EXPECT_TRUE(capturer.CaptureFrame()); | 1710 EXPECT_TRUE(capturer.CaptureFrame()); |
1711 | 1711 |
1712 EXPECT_EQ(3, stream->GetVideoStreams().size()); | 1712 EXPECT_EQ(3, stream->GetVideoStreams().size()); |
1713 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1713 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
1714 // Autmatic resize off when using simulcast. | 1714 // Autmatic resize off when using simulcast. |
1715 EXPECT_FALSE(vp8_settings.automaticResizeOn); | 1715 EXPECT_FALSE(vp8_settings.automaticResizeOn); |
1716 EXPECT_TRUE(vp8_settings.frameDroppingOn); | 1716 EXPECT_TRUE(vp8_settings.frameDroppingOn); |
1717 | 1717 |
1718 // In screen-share mode, denoising is forced off and simulcast disabled. | 1718 // In screen-share mode, denoising is forced off and simulcast disabled. |
1719 parameters.options.is_screencast = rtc::Optional<bool>(true); | 1719 parameters.options.is_screencast = rtc::Optional<bool>(true); |
1720 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1720 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1721 | 1721 |
1722 stream = SetDenoisingOption(parameters, &capturer, false); | 1722 stream = SetDenoisingOption(parameters, &capturer, false); |
1723 | 1723 |
1724 EXPECT_EQ(1, stream->GetVideoStreams().size()); | 1724 EXPECT_EQ(1, stream->GetVideoStreams().size()); |
1725 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1725 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
1726 EXPECT_FALSE(vp8_settings.denoisingOn); | 1726 EXPECT_FALSE(vp8_settings.denoisingOn); |
1727 // Resizing and frame dropping always off for screen sharing. | 1727 // Resizing and frame dropping always off for screen sharing. |
1728 EXPECT_FALSE(vp8_settings.automaticResizeOn); | 1728 EXPECT_FALSE(vp8_settings.automaticResizeOn); |
1729 EXPECT_FALSE(vp8_settings.frameDroppingOn); | 1729 EXPECT_FALSE(vp8_settings.frameDroppingOn); |
1730 | 1730 |
1731 stream = SetDenoisingOption(parameters, &capturer, true); | 1731 stream = SetDenoisingOption(parameters, &capturer, true); |
1732 | 1732 |
1733 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1733 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
1734 EXPECT_FALSE(vp8_settings.denoisingOn); | 1734 EXPECT_FALSE(vp8_settings.denoisingOn); |
1735 EXPECT_FALSE(vp8_settings.automaticResizeOn); | 1735 EXPECT_FALSE(vp8_settings.automaticResizeOn); |
1736 EXPECT_FALSE(vp8_settings.frameDroppingOn); | 1736 EXPECT_FALSE(vp8_settings.frameDroppingOn); |
1737 | 1737 |
1738 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1738 channel_->SetSource(last_ssrc_, NULL); |
1739 } | 1739 } |
1740 | 1740 |
1741 class Vp9SettingsTest : public WebRtcVideoChannel2Test { | 1741 class Vp9SettingsTest : public WebRtcVideoChannel2Test { |
1742 public: | 1742 public: |
1743 Vp9SettingsTest() : WebRtcVideoChannel2Test() { | 1743 Vp9SettingsTest() : WebRtcVideoChannel2Test() { |
1744 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); | 1744 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); |
1745 } | 1745 } |
1746 virtual ~Vp9SettingsTest() {} | 1746 virtual ~Vp9SettingsTest() {} |
1747 | 1747 |
1748 protected: | 1748 protected: |
(...skipping 15 matching lines...) Expand all Loading... |
1764 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { | 1764 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { |
1765 cricket::VideoSendParameters parameters; | 1765 cricket::VideoSendParameters parameters; |
1766 parameters.codecs.push_back(kVp9Codec); | 1766 parameters.codecs.push_back(kVp9Codec); |
1767 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1767 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1768 | 1768 |
1769 FakeVideoSendStream* stream = SetUpSimulcast(false, false); | 1769 FakeVideoSendStream* stream = SetUpSimulcast(false, false); |
1770 | 1770 |
1771 cricket::FakeVideoCapturer capturer; | 1771 cricket::FakeVideoCapturer capturer; |
1772 EXPECT_EQ(cricket::CS_RUNNING, | 1772 EXPECT_EQ(cricket::CS_RUNNING, |
1773 capturer.Start(capturer.GetSupportedFormats()->front())); | 1773 capturer.Start(capturer.GetSupportedFormats()->front())); |
1774 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1774 channel_->SetSource(last_ssrc_, &capturer); |
1775 channel_->SetSend(true); | 1775 channel_->SetSend(true); |
1776 | 1776 |
1777 EXPECT_TRUE(capturer.CaptureFrame()); | 1777 EXPECT_TRUE(capturer.CaptureFrame()); |
1778 | 1778 |
1779 webrtc::VideoCodecVP9 vp9_settings; | 1779 webrtc::VideoCodecVP9 vp9_settings; |
1780 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; | 1780 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; |
1781 EXPECT_FALSE(vp9_settings.denoisingOn) | 1781 EXPECT_FALSE(vp9_settings.denoisingOn) |
1782 << "VP9 denoising should be off by default."; | 1782 << "VP9 denoising should be off by default."; |
1783 | 1783 |
1784 stream = SetDenoisingOption(parameters, &capturer, false); | 1784 stream = SetDenoisingOption(parameters, &capturer, false); |
(...skipping 19 matching lines...) Expand all Loading... |
1804 EXPECT_FALSE(vp9_settings.denoisingOn); | 1804 EXPECT_FALSE(vp9_settings.denoisingOn); |
1805 // Frame dropping always off for screen sharing. | 1805 // Frame dropping always off for screen sharing. |
1806 EXPECT_FALSE(vp9_settings.frameDroppingOn); | 1806 EXPECT_FALSE(vp9_settings.frameDroppingOn); |
1807 | 1807 |
1808 stream = SetDenoisingOption(parameters, &capturer, false); | 1808 stream = SetDenoisingOption(parameters, &capturer, false); |
1809 | 1809 |
1810 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; | 1810 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; |
1811 EXPECT_FALSE(vp9_settings.denoisingOn); | 1811 EXPECT_FALSE(vp9_settings.denoisingOn); |
1812 EXPECT_FALSE(vp9_settings.frameDroppingOn); | 1812 EXPECT_FALSE(vp9_settings.frameDroppingOn); |
1813 | 1813 |
1814 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1814 channel_->SetSource(last_ssrc_, NULL); |
1815 } | 1815 } |
1816 | 1816 |
1817 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) { | 1817 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) { |
1818 TestCpuAdaptation(true, false); | 1818 TestCpuAdaptation(true, false); |
1819 } | 1819 } |
1820 | 1820 |
1821 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) { | 1821 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) { |
1822 TestCpuAdaptation(false, false); | 1822 TestCpuAdaptation(false, false); |
1823 } | 1823 } |
1824 | 1824 |
1825 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) { | 1825 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) { |
1826 TestCpuAdaptation(true, true); | 1826 TestCpuAdaptation(true, true); |
1827 } | 1827 } |
1828 | 1828 |
1829 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) { | 1829 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) { |
1830 cricket::VideoCodec codec = kVp8Codec720p; | 1830 cricket::VideoCodec codec = kVp8Codec720p; |
1831 cricket::VideoSendParameters parameters; | 1831 cricket::VideoSendParameters parameters; |
1832 parameters.codecs.push_back(codec); | 1832 parameters.codecs.push_back(codec); |
1833 | 1833 |
1834 MediaConfig media_config = MediaConfig(); | 1834 MediaConfig media_config = MediaConfig(); |
1835 channel_.reset( | 1835 channel_.reset( |
1836 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 1836 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
1837 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1837 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1838 | 1838 |
1839 AddSendStream(); | 1839 AddSendStream(); |
1840 | 1840 |
1841 cricket::FakeVideoCapturer capturer; | 1841 cricket::FakeVideoCapturer capturer; |
1842 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1842 channel_->SetSource(last_ssrc_, &capturer); |
1843 ASSERT_EQ(cricket::CS_RUNNING, | 1843 ASSERT_EQ(cricket::CS_RUNNING, |
1844 capturer.Start(capturer.GetSupportedFormats()->front())); | 1844 capturer.Start(capturer.GetSupportedFormats()->front())); |
1845 ASSERT_TRUE(channel_->SetSend(true)); | 1845 ASSERT_TRUE(channel_->SetSend(true)); |
1846 | 1846 |
1847 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 1847 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
1848 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1848 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
1849 webrtc::LoadObserver* overuse_callback = | 1849 webrtc::LoadObserver* overuse_callback = |
1850 send_stream->GetConfig().overuse_callback; | 1850 send_stream->GetConfig().overuse_callback; |
1851 ASSERT_TRUE(overuse_callback != NULL); | 1851 ASSERT_TRUE(overuse_callback != NULL); |
1852 | 1852 |
(...skipping 29 matching lines...) Expand all Loading... |
1882 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); | 1882 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); |
1883 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); | 1883 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); |
1884 | 1884 |
1885 // Trigger underuse which should go back up in resolution. | 1885 // Trigger underuse which should go back up in resolution. |
1886 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 1886 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
1887 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); | 1887 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); |
1888 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); | 1888 EXPECT_EQ(6, send_stream->GetNumberOfSwappedFrames()); |
1889 EXPECT_EQ(1284, send_stream->GetLastWidth()); | 1889 EXPECT_EQ(1284, send_stream->GetLastWidth()); |
1890 EXPECT_EQ(724, send_stream->GetLastHeight()); | 1890 EXPECT_EQ(724, send_stream->GetLastHeight()); |
1891 | 1891 |
1892 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1892 channel_->SetSource(last_ssrc_, NULL); |
1893 } | 1893 } |
1894 | 1894 |
1895 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, | 1895 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, |
1896 bool is_screenshare) { | 1896 bool is_screenshare) { |
1897 cricket::VideoCodec codec = kVp8Codec720p; | 1897 cricket::VideoCodec codec = kVp8Codec720p; |
1898 cricket::VideoSendParameters parameters; | 1898 cricket::VideoSendParameters parameters; |
1899 parameters.codecs.push_back(codec); | 1899 parameters.codecs.push_back(codec); |
1900 | 1900 |
1901 MediaConfig media_config = MediaConfig(); | 1901 MediaConfig media_config = MediaConfig(); |
1902 if (!enable_overuse) { | 1902 if (!enable_overuse) { |
1903 media_config.video.enable_cpu_overuse_detection = false; | 1903 media_config.video.enable_cpu_overuse_detection = false; |
1904 } | 1904 } |
1905 channel_.reset( | 1905 channel_.reset( |
1906 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 1906 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
1907 | 1907 |
1908 parameters.options.is_screencast = rtc::Optional<bool>(is_screenshare); | 1908 parameters.options.is_screencast = rtc::Optional<bool>(is_screenshare); |
1909 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1909 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1910 | 1910 |
1911 AddSendStream(); | 1911 AddSendStream(); |
1912 | 1912 |
1913 cricket::FakeVideoCapturer capturer; | 1913 cricket::FakeVideoCapturer capturer; |
1914 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1914 channel_->SetSource(last_ssrc_, &capturer); |
1915 EXPECT_EQ(cricket::CS_RUNNING, | 1915 EXPECT_EQ(cricket::CS_RUNNING, |
1916 capturer.Start(capturer.GetSupportedFormats()->front())); | 1916 capturer.Start(capturer.GetSupportedFormats()->front())); |
1917 | 1917 |
1918 EXPECT_TRUE(channel_->SetSend(true)); | 1918 EXPECT_TRUE(channel_->SetSend(true)); |
1919 | 1919 |
1920 // Trigger overuse. | 1920 // Trigger overuse. |
1921 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 1921 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
1922 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1922 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
1923 webrtc::LoadObserver* overuse_callback = | 1923 webrtc::LoadObserver* overuse_callback = |
1924 send_stream->GetConfig().overuse_callback; | 1924 send_stream->GetConfig().overuse_callback; |
1925 | 1925 |
1926 if (!enable_overuse) { | 1926 if (!enable_overuse) { |
1927 ASSERT_TRUE(overuse_callback == NULL); | 1927 ASSERT_TRUE(overuse_callback == NULL); |
1928 | 1928 |
1929 EXPECT_TRUE(capturer.CaptureFrame()); | 1929 EXPECT_TRUE(capturer.CaptureFrame()); |
1930 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 1930 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
1931 | 1931 |
1932 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 1932 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
1933 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 1933 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
1934 | 1934 |
1935 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1935 channel_->SetSource(last_ssrc_, NULL); |
1936 return; | 1936 return; |
1937 } | 1937 } |
1938 | 1938 |
1939 ASSERT_TRUE(overuse_callback != NULL); | 1939 ASSERT_TRUE(overuse_callback != NULL); |
1940 EXPECT_TRUE(capturer.CaptureFrame()); | 1940 EXPECT_TRUE(capturer.CaptureFrame()); |
1941 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 1941 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
1942 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 1942 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
1943 | 1943 |
1944 EXPECT_TRUE(capturer.CaptureFrame()); | 1944 EXPECT_TRUE(capturer.CaptureFrame()); |
1945 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 1945 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
1946 | 1946 |
1947 if (is_screenshare) { | 1947 if (is_screenshare) { |
1948 // Do not adapt screen share. | 1948 // Do not adapt screen share. |
1949 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 1949 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
1950 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 1950 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
1951 } else { | 1951 } else { |
1952 EXPECT_LT(send_stream->GetLastWidth(), codec.width); | 1952 EXPECT_LT(send_stream->GetLastWidth(), codec.width); |
1953 EXPECT_LT(send_stream->GetLastHeight(), codec.height); | 1953 EXPECT_LT(send_stream->GetLastHeight(), codec.height); |
1954 } | 1954 } |
1955 | 1955 |
1956 // Trigger underuse which should go back to normal resolution. | 1956 // Trigger underuse which should go back to normal resolution. |
1957 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 1957 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
1958 EXPECT_TRUE(capturer.CaptureFrame()); | 1958 EXPECT_TRUE(capturer.CaptureFrame()); |
1959 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); | 1959 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); |
1960 | 1960 |
1961 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 1961 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
1962 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 1962 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
1963 | 1963 |
1964 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1964 channel_->SetSource(last_ssrc_, NULL); |
1965 } | 1965 } |
1966 | 1966 |
1967 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { | 1967 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { |
1968 // Start at last timestamp to verify that wraparounds are estimated correctly. | 1968 // Start at last timestamp to verify that wraparounds are estimated correctly. |
1969 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; | 1969 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; |
1970 static const int64_t kInitialNtpTimeMs = 1247891230; | 1970 static const int64_t kInitialNtpTimeMs = 1247891230; |
1971 static const int kFrameOffsetMs = 20; | 1971 static const int kFrameOffsetMs = 20; |
1972 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 1972 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
1973 | 1973 |
1974 FakeVideoReceiveStream* stream = AddRecvStream(); | 1974 FakeVideoReceiveStream* stream = AddRecvStream(); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2085 | 2085 |
2086 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { | 2086 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { |
2087 cricket::VideoSendParameters parameters; | 2087 cricket::VideoSendParameters parameters; |
2088 parameters.codecs.push_back(kVp8Codec720p); | 2088 parameters.codecs.push_back(kVp8Codec720p); |
2089 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2089 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2090 channel_->SetSend(true); | 2090 channel_->SetSend(true); |
2091 | 2091 |
2092 FakeVideoSendStream* stream = AddSendStream(); | 2092 FakeVideoSendStream* stream = AddSendStream(); |
2093 | 2093 |
2094 cricket::FakeVideoCapturer capturer; | 2094 cricket::FakeVideoCapturer capturer; |
2095 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2095 channel_->SetSource(last_ssrc_, &capturer); |
2096 EXPECT_EQ(cricket::CS_RUNNING, | 2096 EXPECT_EQ(cricket::CS_RUNNING, |
2097 capturer.Start(capturer.GetSupportedFormats()->front())); | 2097 capturer.Start(capturer.GetSupportedFormats()->front())); |
2098 EXPECT_TRUE(capturer.CaptureFrame()); | 2098 EXPECT_TRUE(capturer.CaptureFrame()); |
2099 | 2099 |
2100 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2100 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2101 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); | 2101 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); |
2102 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); | 2102 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); |
2103 | 2103 |
2104 parameters.codecs.clear(); | 2104 parameters.codecs.clear(); |
2105 parameters.codecs.push_back(kVp8Codec360p); | 2105 parameters.codecs.push_back(kVp8Codec360p); |
2106 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2106 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2107 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); | 2107 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); |
2108 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); | 2108 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); |
2109 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); | 2109 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); |
2110 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2110 channel_->SetSource(last_ssrc_, NULL); |
2111 } | 2111 } |
2112 | 2112 |
2113 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { | 2113 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { |
2114 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", | 2114 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", |
2115 200000); | 2115 200000); |
2116 } | 2116 } |
2117 | 2117 |
2118 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { | 2118 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { |
2119 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); | 2119 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); |
2120 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); | 2120 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2164 | 2164 |
2165 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { | 2165 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { |
2166 cricket::VideoSendParameters parameters; | 2166 cricket::VideoSendParameters parameters; |
2167 parameters.codecs.push_back(kVp8Codec720p); | 2167 parameters.codecs.push_back(kVp8Codec720p); |
2168 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2168 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2169 channel_->SetSend(true); | 2169 channel_->SetSend(true); |
2170 | 2170 |
2171 FakeVideoSendStream* stream = AddSendStream(); | 2171 FakeVideoSendStream* stream = AddSendStream(); |
2172 | 2172 |
2173 cricket::FakeVideoCapturer capturer; | 2173 cricket::FakeVideoCapturer capturer; |
2174 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2174 channel_->SetSource(last_ssrc_, &capturer); |
2175 EXPECT_EQ(cricket::CS_RUNNING, | 2175 EXPECT_EQ(cricket::CS_RUNNING, |
2176 capturer.Start(capturer.GetSupportedFormats()->front())); | 2176 capturer.Start(capturer.GetSupportedFormats()->front())); |
2177 | 2177 |
2178 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2178 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2179 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; | 2179 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; |
2180 EXPECT_GT(initial_max_bitrate_bps, 0); | 2180 EXPECT_GT(initial_max_bitrate_bps, 0); |
2181 | 2181 |
2182 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; | 2182 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; |
2183 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2183 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2184 // Insert a frame to update the encoder config. | 2184 // Insert a frame to update the encoder config. |
2185 EXPECT_TRUE(capturer.CaptureFrame()); | 2185 EXPECT_TRUE(capturer.CaptureFrame()); |
2186 streams = stream->GetVideoStreams(); | 2186 streams = stream->GetVideoStreams(); |
2187 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); | 2187 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); |
2188 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); | 2188 channel_->SetSource(last_ssrc_, nullptr); |
2189 } | 2189 } |
2190 | 2190 |
2191 TEST_F(WebRtcVideoChannel2Test, | 2191 TEST_F(WebRtcVideoChannel2Test, |
2192 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { | 2192 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { |
2193 cricket::VideoSendParameters parameters; | 2193 cricket::VideoSendParameters parameters; |
2194 parameters.codecs.push_back(kVp8Codec720p); | 2194 parameters.codecs.push_back(kVp8Codec720p); |
2195 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2195 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2196 channel_->SetSend(true); | 2196 channel_->SetSend(true); |
2197 | 2197 |
2198 FakeVideoSendStream* stream = AddSendStream( | 2198 FakeVideoSendStream* stream = AddSendStream( |
2199 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2199 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
2200 | 2200 |
2201 // Send a frame to make sure this scales up to >1 stream (simulcast). | 2201 // Send a frame to make sure this scales up to >1 stream (simulcast). |
2202 cricket::FakeVideoCapturer capturer; | 2202 cricket::FakeVideoCapturer capturer; |
2203 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); | 2203 channel_->SetSource(kSsrcs3[0], &capturer); |
2204 EXPECT_EQ(cricket::CS_RUNNING, | 2204 EXPECT_EQ(cricket::CS_RUNNING, |
2205 capturer.Start(capturer.GetSupportedFormats()->front())); | 2205 capturer.Start(capturer.GetSupportedFormats()->front())); |
2206 EXPECT_TRUE(capturer.CaptureFrame()); | 2206 EXPECT_TRUE(capturer.CaptureFrame()); |
2207 | 2207 |
2208 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2208 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2209 ASSERT_GT(streams.size(), 1u) | 2209 ASSERT_GT(streams.size(), 1u) |
2210 << "Without simulcast this test doesn't make sense."; | 2210 << "Without simulcast this test doesn't make sense."; |
2211 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); | 2211 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); |
2212 EXPECT_GT(initial_max_bitrate_bps, 0); | 2212 EXPECT_GT(initial_max_bitrate_bps, 0); |
2213 | 2213 |
2214 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; | 2214 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; |
2215 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2215 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2216 // Insert a frame to update the encoder config. | 2216 // Insert a frame to update the encoder config. |
2217 EXPECT_TRUE(capturer.CaptureFrame()); | 2217 EXPECT_TRUE(capturer.CaptureFrame()); |
2218 streams = stream->GetVideoStreams(); | 2218 streams = stream->GetVideoStreams(); |
2219 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); | 2219 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); |
2220 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); | 2220 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); |
2221 | 2221 |
2222 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); | 2222 channel_->SetSource(kSsrcs3[0], nullptr); |
2223 } | 2223 } |
2224 | 2224 |
2225 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { | 2225 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { |
2226 static const char* kMaxQuantization = "21"; | 2226 static const char* kMaxQuantization = "21"; |
2227 cricket::VideoSendParameters parameters; | 2227 cricket::VideoSendParameters parameters; |
2228 parameters.codecs.push_back(kVp8Codec); | 2228 parameters.codecs.push_back(kVp8Codec); |
2229 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; | 2229 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; |
2230 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2230 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2231 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), | 2231 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), |
2232 AddSendStream()->GetVideoStreams().back().max_qp); | 2232 AddSendStream()->GetVideoStreams().back().max_qp); |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2571 | 2571 |
2572 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { | 2572 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { |
2573 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2573 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
2574 | 2574 |
2575 // Capture format VGA. | 2575 // Capture format VGA. |
2576 cricket::FakeVideoCapturer video_capturer_vga; | 2576 cricket::FakeVideoCapturer video_capturer_vga; |
2577 const std::vector<cricket::VideoFormat>* formats = | 2577 const std::vector<cricket::VideoFormat>* formats = |
2578 video_capturer_vga.GetSupportedFormats(); | 2578 video_capturer_vga.GetSupportedFormats(); |
2579 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2579 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
2580 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2580 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
2581 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); | 2581 channel_->SetSource(kSsrcs3[0], &video_capturer_vga); |
2582 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2582 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
2583 | 2583 |
2584 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); | 2584 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); |
2585 cricket::VideoSendParameters parameters; | 2585 cricket::VideoSendParameters parameters; |
2586 parameters.codecs.push_back(send_codec); | 2586 parameters.codecs.push_back(send_codec); |
2587 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2587 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2588 EXPECT_TRUE(channel_->SetSend(true)); | 2588 EXPECT_TRUE(channel_->SetSend(true)); |
2589 | 2589 |
2590 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2590 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
2591 | 2591 |
(...skipping 17 matching lines...) Expand all Loading... |
2609 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2609 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
2610 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2610 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
2611 info.Clear(); | 2611 info.Clear(); |
2612 EXPECT_TRUE(channel_->GetStats(&info)); | 2612 EXPECT_TRUE(channel_->GetStats(&info)); |
2613 ASSERT_EQ(1U, info.senders.size()); | 2613 ASSERT_EQ(1U, info.senders.size()); |
2614 EXPECT_EQ(2, info.senders[0].adapt_changes); | 2614 EXPECT_EQ(2, info.senders[0].adapt_changes); |
2615 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, | 2615 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, |
2616 info.senders[0].adapt_reason); | 2616 info.senders[0].adapt_reason); |
2617 | 2617 |
2618 // No capturer (no adapter). Adapt changes from old adapter should be kept. | 2618 // No capturer (no adapter). Adapt changes from old adapter should be kept. |
2619 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2619 channel_->SetSource(kSsrcs3[0], NULL); |
2620 info.Clear(); | 2620 info.Clear(); |
2621 EXPECT_TRUE(channel_->GetStats(&info)); | 2621 EXPECT_TRUE(channel_->GetStats(&info)); |
2622 ASSERT_EQ(1U, info.senders.size()); | 2622 ASSERT_EQ(1U, info.senders.size()); |
2623 EXPECT_EQ(2, info.senders[0].adapt_changes); | 2623 EXPECT_EQ(2, info.senders[0].adapt_changes); |
2624 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, | 2624 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, |
2625 info.senders[0].adapt_reason); | 2625 info.senders[0].adapt_reason); |
2626 | 2626 |
2627 // Set new capturer, capture format HD. | 2627 // Set new capturer, capture format HD. |
2628 cricket::FakeVideoCapturer video_capturer_hd; | 2628 cricket::FakeVideoCapturer video_capturer_hd; |
2629 cricket::VideoFormat capture_format_hd = (*formats)[0]; | 2629 cricket::VideoFormat capture_format_hd = (*formats)[0]; |
2630 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); | 2630 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); |
2631 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); | 2631 channel_->SetSource(kSsrcs3[0], &video_capturer_hd); |
2632 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); | 2632 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); |
2633 | 2633 |
2634 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. | 2634 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. |
2635 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 2635 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
2636 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); | 2636 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); |
2637 info.Clear(); | 2637 info.Clear(); |
2638 EXPECT_TRUE(channel_->GetStats(&info)); | 2638 EXPECT_TRUE(channel_->GetStats(&info)); |
2639 ASSERT_EQ(1U, info.senders.size()); | 2639 ASSERT_EQ(1U, info.senders.size()); |
2640 EXPECT_EQ(3, info.senders[0].adapt_changes); | 2640 EXPECT_EQ(3, info.senders[0].adapt_changes); |
2641 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, | 2641 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU, |
2642 info.senders[0].adapt_reason); | 2642 info.senders[0].adapt_reason); |
2643 | 2643 |
2644 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2644 channel_->SetSource(kSsrcs3[0], NULL); |
2645 } | 2645 } |
2646 | 2646 |
2647 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { | 2647 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { |
2648 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2648 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
2649 | 2649 |
2650 // Capture format VGA. | 2650 // Capture format VGA. |
2651 cricket::FakeVideoCapturer video_capturer_vga; | 2651 cricket::FakeVideoCapturer video_capturer_vga; |
2652 const std::vector<cricket::VideoFormat>* formats = | 2652 const std::vector<cricket::VideoFormat>* formats = |
2653 video_capturer_vga.GetSupportedFormats(); | 2653 video_capturer_vga.GetSupportedFormats(); |
2654 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2654 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
2655 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2655 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
2656 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); | 2656 channel_->SetSource(kSsrcs3[0], &video_capturer_vga); |
2657 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2657 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
2658 | 2658 |
2659 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); | 2659 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); |
2660 cricket::VideoSendParameters parameters; | 2660 cricket::VideoSendParameters parameters; |
2661 parameters.codecs.push_back(send_codec); | 2661 parameters.codecs.push_back(send_codec); |
2662 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2662 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2663 EXPECT_TRUE(channel_->SetSend(true)); | 2663 EXPECT_TRUE(channel_->SetSend(true)); |
2664 | 2664 |
2665 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2665 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
2666 | 2666 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2699 | 2699 |
2700 // Reset bandwidth limitation state -> adapt NONE. | 2700 // Reset bandwidth limitation state -> adapt NONE. |
2701 stats.bw_limited_resolution = false; | 2701 stats.bw_limited_resolution = false; |
2702 fake_call_->GetVideoSendStreams().front()->SetStats(stats); | 2702 fake_call_->GetVideoSendStreams().front()->SetStats(stats); |
2703 info.Clear(); | 2703 info.Clear(); |
2704 EXPECT_TRUE(channel_->GetStats(&info)); | 2704 EXPECT_TRUE(channel_->GetStats(&info)); |
2705 ASSERT_EQ(1U, info.senders.size()); | 2705 ASSERT_EQ(1U, info.senders.size()); |
2706 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, | 2706 EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE, |
2707 info.senders[0].adapt_reason); | 2707 info.senders[0].adapt_reason); |
2708 | 2708 |
2709 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2709 channel_->SetSource(kSsrcs3[0], NULL); |
2710 } | 2710 } |
2711 | 2711 |
2712 TEST_F(WebRtcVideoChannel2Test, | 2712 TEST_F(WebRtcVideoChannel2Test, |
2713 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { | 2713 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { |
2714 FakeVideoSendStream* stream = AddSendStream(); | 2714 FakeVideoSendStream* stream = AddSendStream(); |
2715 webrtc::VideoSendStream::Stats stats; | 2715 webrtc::VideoSendStream::Stats stats; |
2716 stats.bw_limited_resolution = true; | 2716 stats.bw_limited_resolution = true; |
2717 stream->SetStats(stats); | 2717 stream->SetStats(stats); |
2718 | 2718 |
2719 cricket::VideoMediaInfo info; | 2719 cricket::VideoMediaInfo info; |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3137 | 3137 |
3138 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 3138 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
3139 RTC_DCHECK(num_configured_streams <= ssrcs.size()); | 3139 RTC_DCHECK(num_configured_streams <= ssrcs.size()); |
3140 ssrcs.resize(num_configured_streams); | 3140 ssrcs.resize(num_configured_streams); |
3141 | 3141 |
3142 FakeVideoSendStream* stream = | 3142 FakeVideoSendStream* stream = |
3143 AddSendStream(CreateSimStreamParams("cname", ssrcs)); | 3143 AddSendStream(CreateSimStreamParams("cname", ssrcs)); |
3144 // Send a full-size frame to trigger a stream reconfiguration to use all | 3144 // Send a full-size frame to trigger a stream reconfiguration to use all |
3145 // expected simulcast layers. | 3145 // expected simulcast layers. |
3146 cricket::FakeVideoCapturer capturer; | 3146 cricket::FakeVideoCapturer capturer; |
3147 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); | 3147 channel_->SetSource(ssrcs.front(), &capturer); |
3148 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( | 3148 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( |
3149 codec.width, codec.height, | 3149 codec.width, codec.height, |
3150 cricket::VideoFormat::FpsToInterval(30), | 3150 cricket::VideoFormat::FpsToInterval(30), |
3151 cricket::FOURCC_I420))); | 3151 cricket::FOURCC_I420))); |
3152 channel_->SetSend(true); | 3152 channel_->SetSend(true); |
3153 EXPECT_TRUE(capturer.CaptureFrame()); | 3153 EXPECT_TRUE(capturer.CaptureFrame()); |
3154 | 3154 |
3155 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); | 3155 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); |
3156 ASSERT_EQ(expected_num_streams, video_streams.size()); | 3156 ASSERT_EQ(expected_num_streams, video_streams.size()); |
3157 | 3157 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3194 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; | 3194 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; |
3195 } else { | 3195 } else { |
3196 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; | 3196 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; |
3197 } | 3197 } |
3198 } | 3198 } |
3199 cricket::VideoMediaInfo info; | 3199 cricket::VideoMediaInfo info; |
3200 ASSERT_TRUE(channel_->GetStats(&info)); | 3200 ASSERT_TRUE(channel_->GetStats(&info)); |
3201 ASSERT_EQ(1u, info.senders.size()); | 3201 ASSERT_EQ(1u, info.senders.size()); |
3202 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); | 3202 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); |
3203 | 3203 |
3204 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); | 3204 channel_->SetSource(ssrcs.front(), NULL); |
3205 } | 3205 } |
3206 | 3206 |
3207 FakeVideoSendStream* AddSendStream() { | 3207 FakeVideoSendStream* AddSendStream() { |
3208 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); | 3208 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); |
3209 } | 3209 } |
3210 | 3210 |
3211 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { | 3211 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { |
3212 size_t num_streams = | 3212 size_t num_streams = |
3213 fake_call_.GetVideoSendStreams().size(); | 3213 fake_call_.GetVideoSendStreams().size(); |
3214 EXPECT_TRUE(channel_->AddSendStream(sp)); | 3214 EXPECT_TRUE(channel_->AddSendStream(sp)); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3251 } | 3251 } |
3252 | 3252 |
3253 // Test that we normalize send codec format size in simulcast. | 3253 // Test that we normalize send codec format size in simulcast. |
3254 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { | 3254 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { |
3255 cricket::VideoCodec codec(kVp8Codec270p); | 3255 cricket::VideoCodec codec(kVp8Codec270p); |
3256 codec.width += 1; | 3256 codec.width += 1; |
3257 codec.height += 1; | 3257 codec.height += 1; |
3258 VerifySimulcastSettings(codec, 2, 2); | 3258 VerifySimulcastSettings(codec, 2, 2); |
3259 } | 3259 } |
3260 } // namespace cricket | 3260 } // namespace cricket |
3261 | |
OLD | NEW |