| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); | 234 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); |
| 235 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); | 235 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); |
| 236 | 236 |
| 237 // Add CVO extension. | 237 // Add CVO extension. |
| 238 const int id = 1; | 238 const int id = 1; |
| 239 parameters.extensions.push_back( | 239 parameters.extensions.push_back( |
| 240 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); | 240 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); |
| 241 EXPECT_TRUE(channel->SetSendParameters(parameters)); | 241 EXPECT_TRUE(channel->SetSendParameters(parameters)); |
| 242 | 242 |
| 243 // Set capturer. | 243 // Set capturer. |
| 244 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 244 channel->SetSource(kSsrc, &capturer); |
| 245 | 245 |
| 246 // Verify capturer has turned off applying rotation. | 246 // Verify capturer has turned off applying rotation. |
| 247 EXPECT_FALSE(capturer.GetApplyRotation()); | 247 EXPECT_FALSE(capturer.GetApplyRotation()); |
| 248 | 248 |
| 249 // Verify removing header extension turns on applying rotation. | 249 // Verify removing header extension turns on applying rotation. |
| 250 parameters.extensions.clear(); | 250 parameters.extensions.clear(); |
| 251 EXPECT_TRUE(channel->SetSendParameters(parameters)); | 251 EXPECT_TRUE(channel->SetSendParameters(parameters)); |
| 252 EXPECT_TRUE(capturer.GetApplyRotation()); | 252 EXPECT_TRUE(capturer.GetApplyRotation()); |
| 253 } | 253 } |
| 254 | 254 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 265 std::unique_ptr<VideoMediaChannel> channel( | 265 std::unique_ptr<VideoMediaChannel> channel( |
| 266 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); | 266 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); |
| 267 // Add CVO extension. | 267 // Add CVO extension. |
| 268 const int id = 1; | 268 const int id = 1; |
| 269 parameters.extensions.push_back( | 269 parameters.extensions.push_back( |
| 270 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); | 270 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); |
| 271 EXPECT_TRUE(channel->SetSendParameters(parameters)); | 271 EXPECT_TRUE(channel->SetSendParameters(parameters)); |
| 272 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); | 272 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); |
| 273 | 273 |
| 274 // Set capturer. | 274 // Set capturer. |
| 275 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 275 channel->SetSource(kSsrc, &capturer); |
| 276 | 276 |
| 277 // Verify capturer has turned off applying rotation. | 277 // Verify capturer has turned off applying rotation. |
| 278 EXPECT_FALSE(capturer.GetApplyRotation()); | 278 EXPECT_FALSE(capturer.GetApplyRotation()); |
| 279 } | 279 } |
| 280 | 280 |
| 281 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) { | 281 TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) { |
| 282 cricket::FakeVideoCapturer capturer; | 282 cricket::FakeVideoCapturer capturer; |
| 283 | 283 |
| 284 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 284 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 285 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); | 285 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); |
| 286 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); | 286 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); |
| 287 cricket::VideoSendParameters parameters; | 287 cricket::VideoSendParameters parameters; |
| 288 parameters.codecs.push_back(kVp8Codec); | 288 parameters.codecs.push_back(kVp8Codec); |
| 289 parameters.codecs.push_back(kVp9Codec); | 289 parameters.codecs.push_back(kVp9Codec); |
| 290 | 290 |
| 291 std::unique_ptr<VideoMediaChannel> channel( | 291 std::unique_ptr<VideoMediaChannel> channel( |
| 292 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); | 292 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); |
| 293 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); | 293 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc))); |
| 294 | 294 |
| 295 // Set capturer. | 295 // Set capturer. |
| 296 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 296 channel->SetSource(kSsrc, &capturer); |
| 297 | 297 |
| 298 // Verify capturer has turned on applying rotation. | 298 // Verify capturer has turned on applying rotation. |
| 299 EXPECT_TRUE(capturer.GetApplyRotation()); | 299 EXPECT_TRUE(capturer.GetApplyRotation()); |
| 300 | 300 |
| 301 // Add CVO extension. | 301 // Add CVO extension. |
| 302 const int id = 1; | 302 const int id = 1; |
| 303 parameters.extensions.push_back( | 303 parameters.extensions.push_back( |
| 304 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); | 304 cricket::RtpHeaderExtension(kRtpVideoRotationHeaderExtension, id)); |
| 305 // Also remove the first codec to trigger a codec change as well. | 305 // Also remove the first codec to trigger a codec change as well. |
| 306 parameters.codecs.erase(parameters.codecs.begin()); | 306 parameters.codecs.erase(parameters.codecs.begin()); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 | 345 |
| 346 std::unique_ptr<VideoMediaChannel> channel( | 346 std::unique_ptr<VideoMediaChannel> channel( |
| 347 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); | 347 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs)); |
| 348 | 348 |
| 349 EXPECT_TRUE( | 349 EXPECT_TRUE( |
| 350 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 350 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
| 351 ASSERT_EQ(1u, encoder_factory.encoders().size()); | 351 ASSERT_EQ(1u, encoder_factory.encoders().size()); |
| 352 EXPECT_TRUE(channel->SetSend(true)); | 352 EXPECT_TRUE(channel->SetSend(true)); |
| 353 | 353 |
| 354 cricket::FakeVideoCapturer capturer; | 354 cricket::FakeVideoCapturer capturer; |
| 355 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 355 channel->SetSource(kSsrc, &capturer); |
| 356 EXPECT_EQ(cricket::CS_RUNNING, | 356 EXPECT_EQ(cricket::CS_RUNNING, |
| 357 capturer.Start(capturer.GetSupportedFormats()->front())); | 357 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 358 EXPECT_TRUE(capturer.CaptureFrame()); | 358 EXPECT_TRUE(capturer.CaptureFrame()); |
| 359 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, | 359 EXPECT_TRUE_WAIT(encoder_factory.encoders()[0]->GetNumEncodedFrames() > 0, |
| 360 kTimeout); | 360 kTimeout); |
| 361 | 361 |
| 362 // Sending one frame will have reallocated the encoder since input size | 362 // Sending one frame will have reallocated the encoder since input size |
| 363 // changes from a small default to the actual frame width/height. | 363 // changes from a small default to the actual frame width/height. |
| 364 int num_created_encoders = encoder_factory.GetNumCreatedEncoders(); | 364 int num_created_encoders = encoder_factory.GetNumCreatedEncoders(); |
| 365 EXPECT_EQ(num_created_encoders, 2); | 365 EXPECT_EQ(num_created_encoders, 2); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 | 432 |
| 433 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); | 433 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); |
| 434 call_.reset(fake_call); | 434 call_.reset(fake_call); |
| 435 std::unique_ptr<VideoMediaChannel> channel( | 435 std::unique_ptr<VideoMediaChannel> channel( |
| 436 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 436 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
| 437 | 437 |
| 438 EXPECT_TRUE( | 438 EXPECT_TRUE( |
| 439 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 439 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
| 440 | 440 |
| 441 FakeVideoCapturer capturer; | 441 FakeVideoCapturer capturer; |
| 442 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 442 channel->SetSource(kSsrc, &capturer); |
| 443 capturer.Start(cricket::VideoFormat(1280, 720, | 443 capturer.Start(cricket::VideoFormat(1280, 720, |
| 444 cricket::VideoFormat::FpsToInterval(60), | 444 cricket::VideoFormat::FpsToInterval(60), |
| 445 cricket::FOURCC_I420)); | 445 cricket::FOURCC_I420)); |
| 446 channel->SetSend(true); | 446 channel->SetSend(true); |
| 447 | 447 |
| 448 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; | 448 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
| 449 | 449 |
| 450 EXPECT_TRUE(capturer.CaptureFrame()); | 450 EXPECT_TRUE(capturer.CaptureFrame()); |
| 451 int64_t last_timestamp = stream->GetLastTimestamp(); | 451 int64_t last_timestamp = stream->GetLastTimestamp(); |
| 452 for (int i = 0; i < 10; i++) { | 452 for (int i = 0; i < 10; i++) { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 call_.reset(fake_call); | 494 call_.reset(fake_call); |
| 495 std::unique_ptr<VideoMediaChannel> channel( | 495 std::unique_ptr<VideoMediaChannel> channel( |
| 496 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 496 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
| 497 | 497 |
| 498 EXPECT_TRUE( | 498 EXPECT_TRUE( |
| 499 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 499 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
| 500 channel->SetSend(true); | 500 channel->SetSend(true); |
| 501 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; | 501 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
| 502 | 502 |
| 503 FakeVideoCapturer capturer1; | 503 FakeVideoCapturer capturer1; |
| 504 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); | 504 channel->SetSource(kSsrc, &capturer1); |
| 505 | 505 |
| 506 cricket::CapturedFrame frame; | 506 cricket::CapturedFrame frame; |
| 507 frame.width = 1280; | 507 frame.width = 1280; |
| 508 frame.height = 720; | 508 frame.height = 720; |
| 509 frame.fourcc = cricket::FOURCC_I420; | 509 frame.fourcc = cricket::FOURCC_I420; |
| 510 frame.data_size = frame.width * frame.height + | 510 frame.data_size = frame.width * frame.height + |
| 511 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); | 511 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); |
| 512 std::unique_ptr<char[]> data(new char[frame.data_size]); | 512 std::unique_ptr<char[]> data(new char[frame.data_size]); |
| 513 frame.data = data.get(); | 513 frame.data = data.get(); |
| 514 memset(frame.data, 1, frame.data_size); | 514 memset(frame.data, 1, frame.data_size); |
| 515 const int kInitialTimestamp = 123456; | 515 const int kInitialTimestamp = 123456; |
| 516 frame.time_stamp = kInitialTimestamp; | 516 frame.time_stamp = kInitialTimestamp; |
| 517 | 517 |
| 518 // Deliver initial frame. | 518 // Deliver initial frame. |
| 519 capturer1.SignalCapturedFrame(&frame); | 519 capturer1.SignalCapturedFrame(&frame); |
| 520 // Deliver next frame 1 second later. | 520 // Deliver next frame 1 second later. |
| 521 frame.time_stamp += rtc::kNumNanosecsPerSec; | 521 frame.time_stamp += rtc::kNumNanosecsPerSec; |
| 522 rtc::Thread::Current()->SleepMs(1000); | 522 rtc::Thread::Current()->SleepMs(1000); |
| 523 capturer1.SignalCapturedFrame(&frame); | 523 capturer1.SignalCapturedFrame(&frame); |
| 524 | 524 |
| 525 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); | 525 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); |
| 526 // Reset input source, should still be continuous even though input-frame | 526 // Reset input source, should still be continuous even though input-frame |
| 527 // timestamp is less than before. | 527 // timestamp is less than before. |
| 528 FakeVideoCapturer capturer2; | 528 FakeVideoCapturer capturer2; |
| 529 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); | 529 channel->SetSource(kSsrc, &capturer2); |
| 530 | 530 |
| 531 rtc::Thread::Current()->SleepMs(1); | 531 rtc::Thread::Current()->SleepMs(1); |
| 532 // Deliver with a timestamp (10 seconds) before the previous initial one, | 532 // Deliver with a timestamp (10 seconds) before the previous initial one, |
| 533 // these should not be related at all anymore and it should still work fine. | 533 // these should not be related at all anymore and it should still work fine. |
| 534 frame.time_stamp = kInitialTimestamp - 10000; | 534 frame.time_stamp = kInitialTimestamp - 10000; |
| 535 capturer2.SignalCapturedFrame(&frame); | 535 capturer2.SignalCapturedFrame(&frame); |
| 536 | 536 |
| 537 // New timestamp should be at least 1ms in the future and not old. | 537 // New timestamp should be at least 1ms in the future and not old. |
| 538 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); | 538 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); |
| 539 | 539 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 std::unique_ptr<VideoMediaChannel> channel( | 579 std::unique_ptr<VideoMediaChannel> channel( |
| 580 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 580 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
| 581 | 581 |
| 582 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 582 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
| 583 | 583 |
| 584 EXPECT_TRUE( | 584 EXPECT_TRUE( |
| 585 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); | 585 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); |
| 586 EXPECT_TRUE(channel->SetSend(true)); | 586 EXPECT_TRUE(channel->SetSend(true)); |
| 587 | 587 |
| 588 cricket::FakeVideoCapturer capturer; | 588 cricket::FakeVideoCapturer capturer; |
| 589 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); | 589 channel->SetSource(ssrcs.front(), &capturer); |
| 590 EXPECT_EQ(cricket::CS_RUNNING, | 590 EXPECT_EQ(cricket::CS_RUNNING, |
| 591 capturer.Start(capturer.GetSupportedFormats()->front())); | 591 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 592 EXPECT_TRUE(capturer.CaptureFrame()); | 592 EXPECT_TRUE(capturer.CaptureFrame()); |
| 593 | 593 |
| 594 EXPECT_GT(encoder_factory.encoders().size(), 1u); | 594 EXPECT_GT(encoder_factory.encoders().size(), 1u); |
| 595 | 595 |
| 596 // Verify that encoders are configured for simulcast through adapter | 596 // Verify that encoders are configured for simulcast through adapter |
| 597 // (increasing resolution and only configured to send one stream each). | 597 // (increasing resolution and only configured to send one stream each). |
| 598 int prev_width = -1; | 598 int prev_width = -1; |
| 599 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { | 599 for (size_t i = 0; i < encoder_factory.encoders().size(); ++i) { |
| 600 webrtc::VideoCodec codec_settings = | 600 webrtc::VideoCodec codec_settings = |
| 601 encoder_factory.encoders()[i]->GetCodecSettings(); | 601 encoder_factory.encoders()[i]->GetCodecSettings(); |
| 602 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); | 602 EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams); |
| 603 EXPECT_GT(codec_settings.width, prev_width); | 603 EXPECT_GT(codec_settings.width, prev_width); |
| 604 prev_width = codec_settings.width; | 604 prev_width = codec_settings.width; |
| 605 } | 605 } |
| 606 | 606 |
| 607 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), NULL)); | 607 channel->SetSource(ssrcs.front(), NULL); |
| 608 | 608 |
| 609 channel.reset(); | 609 channel.reset(); |
| 610 ASSERT_EQ(0u, encoder_factory.encoders().size()); | 610 ASSERT_EQ(0u, encoder_factory.encoders().size()); |
| 611 } | 611 } |
| 612 | 612 |
| 613 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { | 613 TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) { |
| 614 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 614 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 615 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); | 615 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264, "H264"); |
| 616 std::vector<cricket::VideoCodec> codecs; | 616 std::vector<cricket::VideoCodec> codecs; |
| 617 codecs.push_back(kH264Codec); | 617 codecs.push_back(kH264Codec); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 660 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 660 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
| 661 | 661 |
| 662 EXPECT_TRUE( | 662 EXPECT_TRUE( |
| 663 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); | 663 channel->AddSendStream(CreateSimStreamParams("cname", ssrcs))); |
| 664 EXPECT_TRUE(channel->SetSend(true)); | 664 EXPECT_TRUE(channel->SetSend(true)); |
| 665 | 665 |
| 666 // Send a fake frame, or else the media engine will configure the simulcast | 666 // Send a fake frame, or else the media engine will configure the simulcast |
| 667 // encoder adapter at a low-enough size that it'll only create a single | 667 // encoder adapter at a low-enough size that it'll only create a single |
| 668 // encoder layer. | 668 // encoder layer. |
| 669 cricket::FakeVideoCapturer capturer; | 669 cricket::FakeVideoCapturer capturer; |
| 670 EXPECT_TRUE(channel->SetCapturer(ssrcs.front(), &capturer)); | 670 channel->SetSource(ssrcs.front(), &capturer); |
| 671 EXPECT_EQ(cricket::CS_RUNNING, | 671 EXPECT_EQ(cricket::CS_RUNNING, |
| 672 capturer.Start(capturer.GetSupportedFormats()->front())); | 672 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 673 EXPECT_TRUE(capturer.CaptureFrame()); | 673 EXPECT_TRUE(capturer.CaptureFrame()); |
| 674 | 674 |
| 675 ASSERT_GT(encoder_factory.encoders().size(), 1u); | 675 ASSERT_GT(encoder_factory.encoders().size(), 1u); |
| 676 EXPECT_EQ(webrtc::kVideoCodecVP8, | 676 EXPECT_EQ(webrtc::kVideoCodecVP8, |
| 677 encoder_factory.encoders()[0]->GetCodecSettings().codecType); | 677 encoder_factory.encoders()[0]->GetCodecSettings().codecType); |
| 678 | 678 |
| 679 channel.reset(); | 679 channel.reset(); |
| 680 // Make sure DestroyVideoEncoder was called on the factory. | 680 // Make sure DestroyVideoEncoder was called on the factory. |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 714 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 714 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
| 715 | 715 |
| 716 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 716 const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
| 717 EXPECT_TRUE( | 717 EXPECT_TRUE( |
| 718 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); | 718 channel->AddSendStream(cricket::CreateSimStreamParams("cname", ssrcs))); |
| 719 | 719 |
| 720 // Send a frame of 720p. This should trigger a "real" encoder initialization. | 720 // Send a frame of 720p. This should trigger a "real" encoder initialization. |
| 721 cricket::VideoFormat format( | 721 cricket::VideoFormat format( |
| 722 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); | 722 1280, 720, cricket::VideoFormat::FpsToInterval(30), cricket::FOURCC_I420); |
| 723 cricket::FakeVideoCapturer capturer; | 723 cricket::FakeVideoCapturer capturer; |
| 724 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], &capturer)); | 724 channel->SetSource(ssrcs[0], &capturer); |
| 725 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); | 725 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format)); |
| 726 EXPECT_TRUE(capturer.CaptureFrame()); | 726 EXPECT_TRUE(capturer.CaptureFrame()); |
| 727 | 727 |
| 728 ASSERT_EQ(1u, encoder_factory.encoders().size()); | 728 ASSERT_EQ(1u, encoder_factory.encoders().size()); |
| 729 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; | 729 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; |
| 730 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); | 730 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); |
| 731 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); | 731 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); |
| 732 EXPECT_TRUE(channel->SetCapturer(ssrcs[0], nullptr)); | 732 channel->SetSource(ssrcs[0], nullptr); |
| 733 } | 733 } |
| 734 | 734 |
| 735 // Test that external codecs are added to the end of the supported codec list. | 735 // Test that external codecs are added to the end of the supported codec list. |
| 736 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { | 736 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { |
| 737 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 737 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 738 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, | 738 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecUnknown, |
| 739 "FakeExternalCodec"); | 739 "FakeExternalCodec"); |
| 740 engine_.SetExternalEncoderFactory(&encoder_factory); | 740 engine_.SetExternalEncoderFactory(&encoder_factory); |
| 741 engine_.Init(); | 741 engine_.Init(); |
| 742 | 742 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 | 842 |
| 843 WEBRTC_BASE_TEST(AdaptResolution4x3); | 843 WEBRTC_BASE_TEST(AdaptResolution4x3); |
| 844 | 844 |
| 845 // TODO(juberti): Restore this test once we support sending 0 fps. | 845 // TODO(juberti): Restore this test once we support sending 0 fps. |
| 846 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames); | 846 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames); |
| 847 // TODO(juberti): Understand why we get decode errors on this test. | 847 // TODO(juberti): Understand why we get decode errors on this test. |
| 848 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate); | 848 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate); |
| 849 | 849 |
| 850 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames); | 850 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames); |
| 851 | 851 |
| 852 WEBRTC_BASE_TEST(MuteStream); | |
| 853 | |
| 854 WEBRTC_BASE_TEST(MultipleSendStreams); | 852 WEBRTC_BASE_TEST(MultipleSendStreams); |
| 855 | 853 |
| 856 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { | 854 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { |
| 857 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0)); | 855 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30, 0)); |
| 858 } | 856 } |
| 859 | 857 |
| 860 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { | 858 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { |
| 861 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0)); | 859 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30, 0)); |
| 862 } | 860 } |
| 863 | 861 |
| (...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1531 channel_->SetSend(false); | 1529 channel_->SetSend(false); |
| 1532 | 1530 |
| 1533 FakeVideoSendStream* stream = AddSendStream(); | 1531 FakeVideoSendStream* stream = AddSendStream(); |
| 1534 | 1532 |
| 1535 // No frames entered, using default dimensions. | 1533 // No frames entered, using default dimensions. |
| 1536 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 1534 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
| 1537 EXPECT_EQ(176u, streams[0].width); | 1535 EXPECT_EQ(176u, streams[0].width); |
| 1538 EXPECT_EQ(144u, streams[0].height); | 1536 EXPECT_EQ(144u, streams[0].height); |
| 1539 | 1537 |
| 1540 cricket::FakeVideoCapturer capturer; | 1538 cricket::FakeVideoCapturer capturer; |
| 1541 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1539 channel_->SetSource(last_ssrc_, &capturer); |
| 1542 EXPECT_EQ(cricket::CS_RUNNING, | 1540 EXPECT_EQ(cricket::CS_RUNNING, |
| 1543 capturer.Start(capturer.GetSupportedFormats()->front())); | 1541 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 1544 EXPECT_TRUE(capturer.CaptureFrame()); | 1542 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1545 | 1543 |
| 1546 // Frame entered, should be reconfigured to new dimensions. | 1544 // Frame entered, should be reconfigured to new dimensions. |
| 1547 streams = stream->GetVideoStreams(); | 1545 streams = stream->GetVideoStreams(); |
| 1548 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); | 1546 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); |
| 1549 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); | 1547 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); |
| 1550 // No frames should have been actually put in there though. | 1548 // No frames should have been actually put in there though. |
| 1551 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames()); | 1549 EXPECT_EQ(0, stream->GetNumberOfSwappedFrames()); |
| 1552 | 1550 |
| 1553 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1551 channel_->SetSource(last_ssrc_, NULL); |
| 1554 } | 1552 } |
| 1555 | 1553 |
| 1556 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { | 1554 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { |
| 1557 static const int kScreenshareMinBitrateKbps = 800; | 1555 static const int kScreenshareMinBitrateKbps = 800; |
| 1558 cricket::VideoCodec codec = kVp8Codec360p; | 1556 cricket::VideoCodec codec = kVp8Codec360p; |
| 1559 cricket::VideoSendParameters parameters; | 1557 cricket::VideoSendParameters parameters; |
| 1560 parameters.codecs.push_back(codec); | 1558 parameters.codecs.push_back(codec); |
| 1561 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1559 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
| 1562 AddSendStream(); | 1560 AddSendStream(); |
| 1563 | 1561 |
| 1564 VideoOptions min_bitrate_options; | 1562 VideoOptions min_bitrate_options; |
| 1565 min_bitrate_options.screencast_min_bitrate_kbps = | 1563 min_bitrate_options.screencast_min_bitrate_kbps = |
| 1566 rtc::Optional<int>(kScreenshareMinBitrateKbps); | 1564 rtc::Optional<int>(kScreenshareMinBitrateKbps); |
| 1567 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options); | 1565 channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options); |
| 1568 | 1566 |
| 1569 cricket::FakeVideoCapturer capturer; | 1567 cricket::FakeVideoCapturer capturer; |
| 1570 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1568 channel_->SetSource(last_ssrc_, &capturer); |
| 1571 cricket::VideoFormat capture_format_hd = | 1569 cricket::VideoFormat capture_format_hd = |
| 1572 capturer.GetSupportedFormats()->front(); | 1570 capturer.GetSupportedFormats()->front(); |
| 1573 EXPECT_EQ(1280, capture_format_hd.width); | 1571 EXPECT_EQ(1280, capture_format_hd.width); |
| 1574 EXPECT_EQ(720, capture_format_hd.height); | 1572 EXPECT_EQ(720, capture_format_hd.height); |
| 1575 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); | 1573 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); |
| 1576 | 1574 |
| 1577 EXPECT_TRUE(channel_->SetSend(true)); | 1575 EXPECT_TRUE(channel_->SetSend(true)); |
| 1578 | 1576 |
| 1579 EXPECT_TRUE(capturer.CaptureFrame()); | 1577 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1580 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 1578 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
| 1581 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1579 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
| 1582 | 1580 |
| 1583 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 1581 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
| 1584 | 1582 |
| 1585 // Verify non-screencast settings. | 1583 // Verify non-screencast settings. |
| 1586 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); | 1584 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); |
| 1587 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, | 1585 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, |
| 1588 encoder_config.content_type); | 1586 encoder_config.content_type); |
| 1589 EXPECT_EQ(codec.width, encoder_config.streams.front().width); | 1587 EXPECT_EQ(codec.width, encoder_config.streams.front().width); |
| 1590 EXPECT_EQ(codec.height, encoder_config.streams.front().height); | 1588 EXPECT_EQ(codec.height, encoder_config.streams.front().height); |
| 1591 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) | 1589 EXPECT_EQ(0, encoder_config.min_transmit_bitrate_bps) |
| 1592 << "Non-screenshare shouldn't use min-transmit bitrate."; | 1590 << "Non-screenshare shouldn't use min-transmit bitrate."; |
| 1593 | 1591 |
| 1594 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); | 1592 channel_->SetSource(last_ssrc_, nullptr); |
| 1595 // Removing a capturer triggers a black frame to be sent. | 1593 // Removing a capturer triggers a black frame to be sent. |
| 1596 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 1594 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
| 1597 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1595 channel_->SetSource(last_ssrc_, &capturer); |
| 1598 VideoOptions screencast_options; | 1596 VideoOptions screencast_options; |
| 1599 screencast_options.is_screencast = rtc::Optional<bool>(true); | 1597 screencast_options.is_screencast = rtc::Optional<bool>(true); |
| 1600 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options)); | 1598 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &screencast_options)); |
| 1601 EXPECT_TRUE(capturer.CaptureFrame()); | 1599 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1602 // Send stream not recreated after option change. | 1600 // Send stream not recreated after option change. |
| 1603 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); | 1601 ASSERT_EQ(send_stream, fake_call_->GetVideoSendStreams().front()); |
| 1604 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); | 1602 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); |
| 1605 | 1603 |
| 1606 // Verify screencast settings. | 1604 // Verify screencast settings. |
| 1607 encoder_config = send_stream->GetEncoderConfig(); | 1605 encoder_config = send_stream->GetEncoderConfig(); |
| 1608 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, | 1606 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, |
| 1609 encoder_config.content_type); | 1607 encoder_config.content_type); |
| 1610 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, | 1608 EXPECT_EQ(kScreenshareMinBitrateKbps * 1000, |
| 1611 encoder_config.min_transmit_bitrate_bps); | 1609 encoder_config.min_transmit_bitrate_bps); |
| 1612 | 1610 |
| 1613 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); | 1611 EXPECT_EQ(capture_format_hd.width, encoder_config.streams.front().width); |
| 1614 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); | 1612 EXPECT_EQ(capture_format_hd.height, encoder_config.streams.front().height); |
| 1615 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); | 1613 EXPECT_TRUE(encoder_config.streams[0].temporal_layer_thresholds_bps.empty()); |
| 1616 | 1614 |
| 1617 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1615 channel_->SetSource(last_ssrc_, NULL); |
| 1618 } | 1616 } |
| 1619 | 1617 |
| 1620 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { | 1618 TEST_F(WebRtcVideoChannel2Test, NoRecreateStreamForScreencast) { |
| 1621 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 1619 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
| 1622 ASSERT_TRUE( | 1620 ASSERT_TRUE( |
| 1623 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 1621 channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
| 1624 EXPECT_TRUE(channel_->SetSend(true)); | 1622 EXPECT_TRUE(channel_->SetSend(true)); |
| 1625 | 1623 |
| 1626 cricket::FakeVideoCapturer capturer; | 1624 cricket::FakeVideoCapturer capturer; |
| 1627 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &capturer)); | 1625 channel_->SetSource(kSsrc, &capturer); |
| 1628 EXPECT_EQ(cricket::CS_RUNNING, | 1626 EXPECT_EQ(cricket::CS_RUNNING, |
| 1629 capturer.Start(capturer.GetSupportedFormats()->front())); | 1627 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 1630 EXPECT_TRUE(capturer.CaptureFrame()); | 1628 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1631 | 1629 |
| 1632 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); | 1630 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); |
| 1633 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); | 1631 FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front(); |
| 1634 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); | 1632 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); |
| 1635 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, | 1633 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, |
| 1636 encoder_config.content_type); | 1634 encoder_config.content_type); |
| 1637 | 1635 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1658 | 1656 |
| 1659 EXPECT_TRUE(capturer.CaptureFrame()); | 1657 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1660 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); | 1658 ASSERT_EQ(1, fake_call_->GetNumCreatedSendStreams()); |
| 1661 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); | 1659 ASSERT_EQ(stream, fake_call_->GetVideoSendStreams().front()); |
| 1662 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); | 1660 EXPECT_EQ(3, stream->GetNumberOfSwappedFrames()); |
| 1663 | 1661 |
| 1664 encoder_config = stream->GetEncoderConfig(); | 1662 encoder_config = stream->GetEncoderConfig(); |
| 1665 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, | 1663 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo, |
| 1666 encoder_config.content_type); | 1664 encoder_config.content_type); |
| 1667 | 1665 |
| 1668 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); | 1666 channel_->SetSource(kSsrc, NULL); |
| 1669 } | 1667 } |
| 1670 | 1668 |
| 1671 TEST_F(WebRtcVideoChannel2Test, | 1669 TEST_F(WebRtcVideoChannel2Test, |
| 1672 ConferenceModeScreencastConfiguresTemporalLayer) { | 1670 ConferenceModeScreencastConfiguresTemporalLayer) { |
| 1673 static const int kConferenceScreencastTemporalBitrateBps = | 1671 static const int kConferenceScreencastTemporalBitrateBps = |
| 1674 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; | 1672 ScreenshareLayerConfig::GetDefault().tl0_bitrate_kbps * 1000; |
| 1675 send_parameters_.conference_mode = true; | 1673 send_parameters_.conference_mode = true; |
| 1676 channel_->SetSendParameters(send_parameters_); | 1674 channel_->SetSendParameters(send_parameters_); |
| 1677 | 1675 |
| 1678 AddSendStream(); | 1676 AddSendStream(); |
| 1679 VideoOptions options; | 1677 VideoOptions options; |
| 1680 options.is_screencast = rtc::Optional<bool>(true); | 1678 options.is_screencast = rtc::Optional<bool>(true); |
| 1681 channel_->SetVideoSend(last_ssrc_, true, &options); | 1679 channel_->SetVideoSend(last_ssrc_, true, &options); |
| 1682 cricket::FakeVideoCapturer capturer; | 1680 cricket::FakeVideoCapturer capturer; |
| 1683 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1681 channel_->SetSource(last_ssrc_, &capturer); |
| 1684 cricket::VideoFormat capture_format_hd = | 1682 cricket::VideoFormat capture_format_hd = |
| 1685 capturer.GetSupportedFormats()->front(); | 1683 capturer.GetSupportedFormats()->front(); |
| 1686 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); | 1684 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); |
| 1687 | 1685 |
| 1688 EXPECT_TRUE(channel_->SetSend(true)); | 1686 EXPECT_TRUE(channel_->SetSend(true)); |
| 1689 | 1687 |
| 1690 EXPECT_TRUE(capturer.CaptureFrame()); | 1688 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1691 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 1689 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
| 1692 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1690 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
| 1693 | 1691 |
| 1694 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); | 1692 webrtc::VideoEncoderConfig encoder_config = send_stream->GetEncoderConfig(); |
| 1695 | 1693 |
| 1696 // Verify screencast settings. | 1694 // Verify screencast settings. |
| 1697 encoder_config = send_stream->GetEncoderConfig(); | 1695 encoder_config = send_stream->GetEncoderConfig(); |
| 1698 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, | 1696 EXPECT_EQ(webrtc::VideoEncoderConfig::ContentType::kScreen, |
| 1699 encoder_config.content_type); | 1697 encoder_config.content_type); |
| 1700 ASSERT_EQ(1u, encoder_config.streams.size()); | 1698 ASSERT_EQ(1u, encoder_config.streams.size()); |
| 1701 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); | 1699 ASSERT_EQ(1u, encoder_config.streams[0].temporal_layer_thresholds_bps.size()); |
| 1702 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, | 1700 EXPECT_EQ(kConferenceScreencastTemporalBitrateBps, |
| 1703 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); | 1701 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); |
| 1704 | 1702 |
| 1705 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1703 channel_->SetSource(last_ssrc_, NULL); |
| 1706 } | 1704 } |
| 1707 | 1705 |
| 1708 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { | 1706 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { |
| 1709 FakeVideoSendStream* stream = AddSendStream(); | 1707 FakeVideoSendStream* stream = AddSendStream(); |
| 1710 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); | 1708 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); |
| 1711 } | 1709 } |
| 1712 | 1710 |
| 1713 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { | 1711 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) { |
| 1714 MediaConfig media_config = MediaConfig(); | 1712 MediaConfig media_config = MediaConfig(); |
| 1715 media_config.video.suspend_below_min_bitrate = true; | 1713 media_config.video.suspend_below_min_bitrate = true; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1745 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1743 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 1746 | 1744 |
| 1747 // Single-stream settings should apply with RTX as well (verifies that we | 1745 // Single-stream settings should apply with RTX as well (verifies that we |
| 1748 // check number of regular SSRCs and not StreamParams::ssrcs which contains | 1746 // check number of regular SSRCs and not StreamParams::ssrcs which contains |
| 1749 // both RTX and regular SSRCs). | 1747 // both RTX and regular SSRCs). |
| 1750 FakeVideoSendStream* stream = SetUpSimulcast(false, true); | 1748 FakeVideoSendStream* stream = SetUpSimulcast(false, true); |
| 1751 | 1749 |
| 1752 cricket::FakeVideoCapturer capturer; | 1750 cricket::FakeVideoCapturer capturer; |
| 1753 EXPECT_EQ(cricket::CS_RUNNING, | 1751 EXPECT_EQ(cricket::CS_RUNNING, |
| 1754 capturer.Start(capturer.GetSupportedFormats()->front())); | 1752 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 1755 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1753 channel_->SetSource(last_ssrc_, &capturer); |
| 1756 channel_->SetSend(true); | 1754 channel_->SetSend(true); |
| 1757 | 1755 |
| 1758 EXPECT_TRUE(capturer.CaptureFrame()); | 1756 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1759 | 1757 |
| 1760 webrtc::VideoCodecVP8 vp8_settings; | 1758 webrtc::VideoCodecVP8 vp8_settings; |
| 1761 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1759 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
| 1762 EXPECT_TRUE(vp8_settings.denoisingOn) | 1760 EXPECT_TRUE(vp8_settings.denoisingOn) |
| 1763 << "VP8 denoising should be on by default."; | 1761 << "VP8 denoising should be on by default."; |
| 1764 | 1762 |
| 1765 stream = SetDenoisingOption(last_ssrc_, &capturer, false); | 1763 stream = SetDenoisingOption(last_ssrc_, &capturer, false); |
| 1766 | 1764 |
| 1767 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1765 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
| 1768 EXPECT_FALSE(vp8_settings.denoisingOn); | 1766 EXPECT_FALSE(vp8_settings.denoisingOn); |
| 1769 EXPECT_TRUE(vp8_settings.automaticResizeOn); | 1767 EXPECT_TRUE(vp8_settings.automaticResizeOn); |
| 1770 EXPECT_TRUE(vp8_settings.frameDroppingOn); | 1768 EXPECT_TRUE(vp8_settings.frameDroppingOn); |
| 1771 | 1769 |
| 1772 stream = SetDenoisingOption(last_ssrc_, &capturer, true); | 1770 stream = SetDenoisingOption(last_ssrc_, &capturer, true); |
| 1773 | 1771 |
| 1774 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1772 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
| 1775 EXPECT_TRUE(vp8_settings.denoisingOn); | 1773 EXPECT_TRUE(vp8_settings.denoisingOn); |
| 1776 EXPECT_TRUE(vp8_settings.automaticResizeOn); | 1774 EXPECT_TRUE(vp8_settings.automaticResizeOn); |
| 1777 EXPECT_TRUE(vp8_settings.frameDroppingOn); | 1775 EXPECT_TRUE(vp8_settings.frameDroppingOn); |
| 1778 | 1776 |
| 1779 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1777 channel_->SetSource(last_ssrc_, NULL); |
| 1780 stream = SetUpSimulcast(true, false); | 1778 stream = SetUpSimulcast(true, false); |
| 1781 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1779 channel_->SetSource(last_ssrc_, &capturer); |
| 1782 channel_->SetSend(true); | 1780 channel_->SetSend(true); |
| 1783 EXPECT_TRUE(capturer.CaptureFrame()); | 1781 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1784 | 1782 |
| 1785 EXPECT_EQ(3, stream->GetVideoStreams().size()); | 1783 EXPECT_EQ(3, stream->GetVideoStreams().size()); |
| 1786 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1784 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
| 1787 // Autmatic resize off when using simulcast. | 1785 // Autmatic resize off when using simulcast. |
| 1788 EXPECT_FALSE(vp8_settings.automaticResizeOn); | 1786 EXPECT_FALSE(vp8_settings.automaticResizeOn); |
| 1789 EXPECT_TRUE(vp8_settings.frameDroppingOn); | 1787 EXPECT_TRUE(vp8_settings.frameDroppingOn); |
| 1790 | 1788 |
| 1791 // In screen-share mode, denoising is forced off and simulcast disabled. | 1789 // In screen-share mode, denoising is forced off and simulcast disabled. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1802 EXPECT_FALSE(vp8_settings.automaticResizeOn); | 1800 EXPECT_FALSE(vp8_settings.automaticResizeOn); |
| 1803 EXPECT_FALSE(vp8_settings.frameDroppingOn); | 1801 EXPECT_FALSE(vp8_settings.frameDroppingOn); |
| 1804 | 1802 |
| 1805 stream = SetDenoisingOption(last_ssrc_, &capturer, true); | 1803 stream = SetDenoisingOption(last_ssrc_, &capturer, true); |
| 1806 | 1804 |
| 1807 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1805 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
| 1808 EXPECT_FALSE(vp8_settings.denoisingOn); | 1806 EXPECT_FALSE(vp8_settings.denoisingOn); |
| 1809 EXPECT_FALSE(vp8_settings.automaticResizeOn); | 1807 EXPECT_FALSE(vp8_settings.automaticResizeOn); |
| 1810 EXPECT_FALSE(vp8_settings.frameDroppingOn); | 1808 EXPECT_FALSE(vp8_settings.frameDroppingOn); |
| 1811 | 1809 |
| 1812 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1810 channel_->SetSource(last_ssrc_, NULL); |
| 1813 } | 1811 } |
| 1814 | 1812 |
| 1815 // Test that setting the same options doesn't result in the encoder being | 1813 // Test that setting the same options doesn't result in the encoder being |
| 1816 // reconfigured. | 1814 // reconfigured. |
| 1817 TEST_F(WebRtcVideoChannel2Test, SetIdenticalOptionsDoesntReconfigureEncoder) { | 1815 TEST_F(WebRtcVideoChannel2Test, SetIdenticalOptionsDoesntReconfigureEncoder) { |
| 1818 VideoOptions options; | 1816 VideoOptions options; |
| 1819 cricket::FakeVideoCapturer capturer; | 1817 cricket::FakeVideoCapturer capturer; |
| 1820 | 1818 |
| 1821 FakeVideoSendStream* send_stream = AddSendStream(); | 1819 FakeVideoSendStream* send_stream = AddSendStream(); |
| 1822 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1820 channel_->SetSource(last_ssrc_, &capturer); |
| 1823 EXPECT_EQ(cricket::CS_RUNNING, | 1821 EXPECT_EQ(cricket::CS_RUNNING, |
| 1824 capturer.Start(capturer.GetSupportedFormats()->front())); | 1822 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 1825 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); | 1823 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); |
| 1826 EXPECT_TRUE(capturer.CaptureFrame()); | 1824 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1827 // Expect 2 reconfigurations at this point, from the initial configuration | 1825 // Expect 2 reconfigurations at this point, from the initial configuration |
| 1828 // and from the dimensions of the first frame. | 1826 // and from the dimensions of the first frame. |
| 1829 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations()); | 1827 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations()); |
| 1830 | 1828 |
| 1831 // Set the options one more time and expect no additional reconfigurations. | 1829 // Set the options one more time and expect no additional reconfigurations. |
| 1832 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); | 1830 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); |
| 1833 EXPECT_TRUE(capturer.CaptureFrame()); | 1831 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1834 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations()); | 1832 EXPECT_EQ(2, send_stream->num_encoder_reconfigurations()); |
| 1835 | 1833 |
| 1836 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); | 1834 channel_->SetSource(last_ssrc_, nullptr); |
| 1837 } | 1835 } |
| 1838 | 1836 |
| 1839 class Vp9SettingsTest : public WebRtcVideoChannel2Test { | 1837 class Vp9SettingsTest : public WebRtcVideoChannel2Test { |
| 1840 public: | 1838 public: |
| 1841 Vp9SettingsTest() : Vp9SettingsTest("") {} | 1839 Vp9SettingsTest() : Vp9SettingsTest("") {} |
| 1842 explicit Vp9SettingsTest(const char* field_trials) | 1840 explicit Vp9SettingsTest(const char* field_trials) |
| 1843 : WebRtcVideoChannel2Test(field_trials) { | 1841 : WebRtcVideoChannel2Test(field_trials) { |
| 1844 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); | 1842 encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); |
| 1845 } | 1843 } |
| 1846 virtual ~Vp9SettingsTest() {} | 1844 virtual ~Vp9SettingsTest() {} |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1864 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { | 1862 TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) { |
| 1865 cricket::VideoSendParameters parameters; | 1863 cricket::VideoSendParameters parameters; |
| 1866 parameters.codecs.push_back(kVp9Codec); | 1864 parameters.codecs.push_back(kVp9Codec); |
| 1867 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1865 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 1868 | 1866 |
| 1869 FakeVideoSendStream* stream = SetUpSimulcast(false, false); | 1867 FakeVideoSendStream* stream = SetUpSimulcast(false, false); |
| 1870 | 1868 |
| 1871 cricket::FakeVideoCapturer capturer; | 1869 cricket::FakeVideoCapturer capturer; |
| 1872 EXPECT_EQ(cricket::CS_RUNNING, | 1870 EXPECT_EQ(cricket::CS_RUNNING, |
| 1873 capturer.Start(capturer.GetSupportedFormats()->front())); | 1871 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 1874 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1872 channel_->SetSource(last_ssrc_, &capturer); |
| 1875 channel_->SetSend(true); | 1873 channel_->SetSend(true); |
| 1876 | 1874 |
| 1877 EXPECT_TRUE(capturer.CaptureFrame()); | 1875 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1878 | 1876 |
| 1879 webrtc::VideoCodecVP9 vp9_settings; | 1877 webrtc::VideoCodecVP9 vp9_settings; |
| 1880 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; | 1878 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; |
| 1881 EXPECT_FALSE(vp9_settings.denoisingOn) | 1879 EXPECT_FALSE(vp9_settings.denoisingOn) |
| 1882 << "VP9 denoising should be off by default."; | 1880 << "VP9 denoising should be off by default."; |
| 1883 | 1881 |
| 1884 stream = SetDenoisingOption(last_ssrc_, &capturer, false); | 1882 stream = SetDenoisingOption(last_ssrc_, &capturer, false); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1905 EXPECT_FALSE(vp9_settings.denoisingOn); | 1903 EXPECT_FALSE(vp9_settings.denoisingOn); |
| 1906 // Frame dropping always off for screen sharing. | 1904 // Frame dropping always off for screen sharing. |
| 1907 EXPECT_FALSE(vp9_settings.frameDroppingOn); | 1905 EXPECT_FALSE(vp9_settings.frameDroppingOn); |
| 1908 | 1906 |
| 1909 stream = SetDenoisingOption(last_ssrc_, &capturer, false); | 1907 stream = SetDenoisingOption(last_ssrc_, &capturer, false); |
| 1910 | 1908 |
| 1911 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; | 1909 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; |
| 1912 EXPECT_FALSE(vp9_settings.denoisingOn); | 1910 EXPECT_FALSE(vp9_settings.denoisingOn); |
| 1913 EXPECT_FALSE(vp9_settings.frameDroppingOn); | 1911 EXPECT_FALSE(vp9_settings.frameDroppingOn); |
| 1914 | 1912 |
| 1915 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1913 channel_->SetSource(last_ssrc_, NULL); |
| 1916 } | 1914 } |
| 1917 | 1915 |
| 1918 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest { | 1916 class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest { |
| 1919 public: | 1917 public: |
| 1920 Vp9SettingsTestWithFieldTrial(const char* field_trials) | 1918 Vp9SettingsTestWithFieldTrial(const char* field_trials) |
| 1921 : Vp9SettingsTest(field_trials) {} | 1919 : Vp9SettingsTest(field_trials) {} |
| 1922 | 1920 |
| 1923 protected: | 1921 protected: |
| 1924 void VerifySettings(int num_spatial_layers, int num_temporal_layers) { | 1922 void VerifySettings(int num_spatial_layers, int num_temporal_layers) { |
| 1925 cricket::VideoSendParameters parameters; | 1923 cricket::VideoSendParameters parameters; |
| 1926 parameters.codecs.push_back(kVp9Codec); | 1924 parameters.codecs.push_back(kVp9Codec); |
| 1927 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1925 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 1928 | 1926 |
| 1929 FakeVideoSendStream* stream = SetUpSimulcast(false, false); | 1927 FakeVideoSendStream* stream = SetUpSimulcast(false, false); |
| 1930 | 1928 |
| 1931 cricket::FakeVideoCapturer capturer; | 1929 cricket::FakeVideoCapturer capturer; |
| 1932 EXPECT_EQ(cricket::CS_RUNNING, | 1930 EXPECT_EQ(cricket::CS_RUNNING, |
| 1933 capturer.Start(capturer.GetSupportedFormats()->front())); | 1931 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 1934 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 1932 channel_->SetSource(last_ssrc_, &capturer); |
| 1935 channel_->SetSend(true); | 1933 channel_->SetSend(true); |
| 1936 | 1934 |
| 1937 EXPECT_TRUE(capturer.CaptureFrame()); | 1935 EXPECT_TRUE(capturer.CaptureFrame()); |
| 1938 | 1936 |
| 1939 webrtc::VideoCodecVP9 vp9_settings; | 1937 webrtc::VideoCodecVP9 vp9_settings; |
| 1940 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; | 1938 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; |
| 1941 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers); | 1939 EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers); |
| 1942 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers); | 1940 EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers); |
| 1943 | 1941 |
| 1944 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1942 channel_->SetSource(last_ssrc_, NULL); |
| 1945 } | 1943 } |
| 1946 }; | 1944 }; |
| 1947 | 1945 |
| 1948 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial { | 1946 class Vp9SettingsTestWithNoFlag : public Vp9SettingsTestWithFieldTrial { |
| 1949 public: | 1947 public: |
| 1950 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {} | 1948 Vp9SettingsTestWithNoFlag() : Vp9SettingsTestWithFieldTrial("") {} |
| 1951 }; | 1949 }; |
| 1952 | 1950 |
| 1953 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) { | 1951 TEST_F(Vp9SettingsTestWithNoFlag, VerifySettings) { |
| 1954 const int kNumSpatialLayers = 1; | 1952 const int kNumSpatialLayers = 1; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1999 parameters.codecs.push_back(codec); | 1997 parameters.codecs.push_back(codec); |
| 2000 | 1998 |
| 2001 MediaConfig media_config = MediaConfig(); | 1999 MediaConfig media_config = MediaConfig(); |
| 2002 channel_.reset( | 2000 channel_.reset( |
| 2003 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 2001 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
| 2004 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2002 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 2005 | 2003 |
| 2006 AddSendStream(); | 2004 AddSendStream(); |
| 2007 | 2005 |
| 2008 cricket::FakeVideoCapturer capturer; | 2006 cricket::FakeVideoCapturer capturer; |
| 2009 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2007 channel_->SetSource(last_ssrc_, &capturer); |
| 2010 ASSERT_EQ(cricket::CS_RUNNING, | 2008 ASSERT_EQ(cricket::CS_RUNNING, |
| 2011 capturer.Start(capturer.GetSupportedFormats()->front())); | 2009 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 2012 ASSERT_TRUE(channel_->SetSend(true)); | 2010 ASSERT_TRUE(channel_->SetSend(true)); |
| 2013 | 2011 |
| 2014 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 2012 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
| 2015 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 2013 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
| 2016 webrtc::LoadObserver* overuse_callback = | 2014 webrtc::LoadObserver* overuse_callback = |
| 2017 send_stream->GetConfig().overuse_callback; | 2015 send_stream->GetConfig().overuse_callback; |
| 2018 ASSERT_TRUE(overuse_callback != NULL); | 2016 ASSERT_TRUE(overuse_callback != NULL); |
| 2019 | 2017 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2057 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); | 2055 EXPECT_EQ(1284 * 3 / 4, send_stream->GetLastWidth()); |
| 2058 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); | 2056 EXPECT_EQ(724 * 3 / 4, send_stream->GetLastHeight()); |
| 2059 | 2057 |
| 2060 // Trigger underuse which should go back up in resolution. | 2058 // Trigger underuse which should go back up in resolution. |
| 2061 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2059 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
| 2062 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); | 2060 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); |
| 2063 EXPECT_EQ(7, send_stream->GetNumberOfSwappedFrames()); | 2061 EXPECT_EQ(7, send_stream->GetNumberOfSwappedFrames()); |
| 2064 EXPECT_EQ(1284, send_stream->GetLastWidth()); | 2062 EXPECT_EQ(1284, send_stream->GetLastWidth()); |
| 2065 EXPECT_EQ(724, send_stream->GetLastHeight()); | 2063 EXPECT_EQ(724, send_stream->GetLastHeight()); |
| 2066 | 2064 |
| 2067 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2065 channel_->SetSource(last_ssrc_, NULL); |
| 2068 } | 2066 } |
| 2069 | 2067 |
| 2070 TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) { | 2068 TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) { |
| 2071 cricket::VideoCodec codec = kVp8Codec720p; | 2069 cricket::VideoCodec codec = kVp8Codec720p; |
| 2072 cricket::VideoSendParameters parameters; | 2070 cricket::VideoSendParameters parameters; |
| 2073 parameters.codecs.push_back(codec); | 2071 parameters.codecs.push_back(codec); |
| 2074 | 2072 |
| 2075 MediaConfig media_config = MediaConfig(); | 2073 MediaConfig media_config = MediaConfig(); |
| 2076 channel_.reset( | 2074 channel_.reset( |
| 2077 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 2075 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
| 2078 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2076 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 2079 | 2077 |
| 2080 AddSendStream(); | 2078 AddSendStream(); |
| 2081 | 2079 |
| 2082 cricket::FakeVideoCapturer capturer; | 2080 cricket::FakeVideoCapturer capturer; |
| 2083 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2081 channel_->SetSource(last_ssrc_, &capturer); |
| 2084 ASSERT_EQ(cricket::CS_RUNNING, | 2082 ASSERT_EQ(cricket::CS_RUNNING, |
| 2085 capturer.Start(capturer.GetSupportedFormats()->front())); | 2083 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 2086 ASSERT_TRUE(channel_->SetSend(true)); | 2084 ASSERT_TRUE(channel_->SetSend(true)); |
| 2087 cricket::VideoOptions camera_options; | 2085 cricket::VideoOptions camera_options; |
| 2088 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options); | 2086 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options); |
| 2089 | 2087 |
| 2090 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 2088 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
| 2091 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 2089 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
| 2092 webrtc::LoadObserver* overuse_callback = | 2090 webrtc::LoadObserver* overuse_callback = |
| 2093 send_stream->GetConfig().overuse_callback; | 2091 send_stream->GetConfig().overuse_callback; |
| 2094 ASSERT_TRUE(overuse_callback != NULL); | 2092 ASSERT_TRUE(overuse_callback != NULL); |
| 2095 | 2093 |
| 2096 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); | 2094 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); |
| 2097 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 2095 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
| 2098 EXPECT_EQ(1280, send_stream->GetLastWidth()); | 2096 EXPECT_EQ(1280, send_stream->GetLastWidth()); |
| 2099 EXPECT_EQ(720, send_stream->GetLastHeight()); | 2097 EXPECT_EQ(720, send_stream->GetLastHeight()); |
| 2100 | 2098 |
| 2101 // Trigger overuse. | 2099 // Trigger overuse. |
| 2102 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 2100 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
| 2103 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); | 2101 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); |
| 2104 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 2102 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
| 2105 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); | 2103 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); |
| 2106 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); | 2104 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); |
| 2107 | 2105 |
| 2108 // Switch to screen share. Expect no CPU adaptation. | 2106 // Switch to screen share. Expect no CPU adaptation. |
| 2109 cricket::FakeVideoCapturer screen_share(true); | 2107 cricket::FakeVideoCapturer screen_share(true); |
| 2110 ASSERT_EQ(cricket::CS_RUNNING, | 2108 ASSERT_EQ(cricket::CS_RUNNING, |
| 2111 screen_share.Start(screen_share.GetSupportedFormats()->front())); | 2109 screen_share.Start(screen_share.GetSupportedFormats()->front())); |
| 2112 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &screen_share)); | 2110 channel_->SetSource(last_ssrc_, &screen_share); |
| 2113 cricket::VideoOptions screenshare_options; | 2111 cricket::VideoOptions screenshare_options; |
| 2114 screenshare_options.is_screencast = rtc::Optional<bool>(true); | 2112 screenshare_options.is_screencast = rtc::Optional<bool>(true); |
| 2115 channel_->SetVideoSend(last_ssrc_, true /* enable */, &screenshare_options); | 2113 channel_->SetVideoSend(last_ssrc_, true /* enable */, &screenshare_options); |
| 2116 EXPECT_TRUE(screen_share.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); | 2114 EXPECT_TRUE(screen_share.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); |
| 2117 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); | 2115 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); |
| 2118 EXPECT_EQ(1284, send_stream->GetLastWidth()); | 2116 EXPECT_EQ(1284, send_stream->GetLastWidth()); |
| 2119 EXPECT_EQ(724, send_stream->GetLastHeight()); | 2117 EXPECT_EQ(724, send_stream->GetLastHeight()); |
| 2120 | 2118 |
| 2121 // Switch back to the normal capturer. Expect the frame to be CPU adapted. | 2119 // Switch back to the normal capturer. Expect the frame to be CPU adapted. |
| 2122 ASSERT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2120 channel_->SetSource(last_ssrc_, &capturer); |
| 2123 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options); | 2121 channel_->SetVideoSend(last_ssrc_, true /* enable */, &camera_options); |
| 2124 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); | 2122 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); |
| 2125 EXPECT_EQ(4, send_stream->GetNumberOfSwappedFrames()); | 2123 EXPECT_EQ(4, send_stream->GetNumberOfSwappedFrames()); |
| 2126 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); | 2124 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); |
| 2127 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); | 2125 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); |
| 2128 | 2126 |
| 2129 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2127 channel_->SetSource(last_ssrc_, NULL); |
| 2130 } | 2128 } |
| 2131 | 2129 |
| 2132 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, | 2130 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, |
| 2133 bool is_screenshare) { | 2131 bool is_screenshare) { |
| 2134 cricket::VideoCodec codec = kVp8Codec720p; | 2132 cricket::VideoCodec codec = kVp8Codec720p; |
| 2135 cricket::VideoSendParameters parameters; | 2133 cricket::VideoSendParameters parameters; |
| 2136 parameters.codecs.push_back(codec); | 2134 parameters.codecs.push_back(codec); |
| 2137 | 2135 |
| 2138 MediaConfig media_config = MediaConfig(); | 2136 MediaConfig media_config = MediaConfig(); |
| 2139 if (!enable_overuse) { | 2137 if (!enable_overuse) { |
| 2140 media_config.video.enable_cpu_overuse_detection = false; | 2138 media_config.video.enable_cpu_overuse_detection = false; |
| 2141 } | 2139 } |
| 2142 channel_.reset( | 2140 channel_.reset( |
| 2143 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 2141 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
| 2144 | 2142 |
| 2145 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2143 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
| 2146 | 2144 |
| 2147 AddSendStream(); | 2145 AddSendStream(); |
| 2148 | 2146 |
| 2149 VideoOptions options; | 2147 VideoOptions options; |
| 2150 options.is_screencast = rtc::Optional<bool>(is_screenshare); | 2148 options.is_screencast = rtc::Optional<bool>(is_screenshare); |
| 2151 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); | 2149 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options)); |
| 2152 | 2150 |
| 2153 cricket::FakeVideoCapturer capturer; | 2151 cricket::FakeVideoCapturer capturer; |
| 2154 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2152 channel_->SetSource(last_ssrc_, &capturer); |
| 2155 EXPECT_EQ(cricket::CS_RUNNING, | 2153 EXPECT_EQ(cricket::CS_RUNNING, |
| 2156 capturer.Start(capturer.GetSupportedFormats()->front())); | 2154 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 2157 | 2155 |
| 2158 EXPECT_TRUE(channel_->SetSend(true)); | 2156 EXPECT_TRUE(channel_->SetSend(true)); |
| 2159 | 2157 |
| 2160 // Trigger overuse. | 2158 // Trigger overuse. |
| 2161 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 2159 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
| 2162 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 2160 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
| 2163 webrtc::LoadObserver* overuse_callback = | 2161 webrtc::LoadObserver* overuse_callback = |
| 2164 send_stream->GetConfig().overuse_callback; | 2162 send_stream->GetConfig().overuse_callback; |
| 2165 | 2163 |
| 2166 if (!enable_overuse) { | 2164 if (!enable_overuse) { |
| 2167 ASSERT_TRUE(overuse_callback == NULL); | 2165 ASSERT_TRUE(overuse_callback == NULL); |
| 2168 | 2166 |
| 2169 EXPECT_TRUE(capturer.CaptureFrame()); | 2167 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2170 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 2168 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
| 2171 | 2169 |
| 2172 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2170 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
| 2173 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2171 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
| 2174 | 2172 |
| 2175 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2173 channel_->SetSource(last_ssrc_, NULL); |
| 2176 return; | 2174 return; |
| 2177 } | 2175 } |
| 2178 | 2176 |
| 2179 ASSERT_TRUE(overuse_callback != NULL); | 2177 ASSERT_TRUE(overuse_callback != NULL); |
| 2180 EXPECT_TRUE(capturer.CaptureFrame()); | 2178 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2181 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 2179 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
| 2182 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 2180 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
| 2183 | 2181 |
| 2184 EXPECT_TRUE(capturer.CaptureFrame()); | 2182 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2185 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 2183 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
| 2186 | 2184 |
| 2187 if (is_screenshare) { | 2185 if (is_screenshare) { |
| 2188 // Do not adapt screen share. | 2186 // Do not adapt screen share. |
| 2189 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2187 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
| 2190 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2188 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
| 2191 } else { | 2189 } else { |
| 2192 EXPECT_LT(send_stream->GetLastWidth(), codec.width); | 2190 EXPECT_LT(send_stream->GetLastWidth(), codec.width); |
| 2193 EXPECT_LT(send_stream->GetLastHeight(), codec.height); | 2191 EXPECT_LT(send_stream->GetLastHeight(), codec.height); |
| 2194 } | 2192 } |
| 2195 | 2193 |
| 2196 // Trigger underuse which should go back to normal resolution. | 2194 // Trigger underuse which should go back to normal resolution. |
| 2197 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2195 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
| 2198 EXPECT_TRUE(capturer.CaptureFrame()); | 2196 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2199 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); | 2197 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); |
| 2200 | 2198 |
| 2201 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2199 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
| 2202 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2200 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
| 2203 | 2201 |
| 2204 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2202 channel_->SetSource(last_ssrc_, NULL); |
| 2205 } | 2203 } |
| 2206 | 2204 |
| 2207 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { | 2205 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { |
| 2208 // Start at last timestamp to verify that wraparounds are estimated correctly. | 2206 // Start at last timestamp to verify that wraparounds are estimated correctly. |
| 2209 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; | 2207 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; |
| 2210 static const int64_t kInitialNtpTimeMs = 1247891230; | 2208 static const int64_t kInitialNtpTimeMs = 1247891230; |
| 2211 static const int kFrameOffsetMs = 20; | 2209 static const int kFrameOffsetMs = 20; |
| 2212 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2210 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
| 2213 | 2211 |
| 2214 FakeVideoReceiveStream* stream = AddRecvStream(); | 2212 FakeVideoReceiveStream* stream = AddRecvStream(); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2325 | 2323 |
| 2326 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { | 2324 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { |
| 2327 cricket::VideoSendParameters parameters; | 2325 cricket::VideoSendParameters parameters; |
| 2328 parameters.codecs.push_back(kVp8Codec720p); | 2326 parameters.codecs.push_back(kVp8Codec720p); |
| 2329 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2327 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 2330 channel_->SetSend(true); | 2328 channel_->SetSend(true); |
| 2331 | 2329 |
| 2332 FakeVideoSendStream* stream = AddSendStream(); | 2330 FakeVideoSendStream* stream = AddSendStream(); |
| 2333 | 2331 |
| 2334 cricket::FakeVideoCapturer capturer; | 2332 cricket::FakeVideoCapturer capturer; |
| 2335 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2333 channel_->SetSource(last_ssrc_, &capturer); |
| 2336 EXPECT_EQ(cricket::CS_RUNNING, | 2334 EXPECT_EQ(cricket::CS_RUNNING, |
| 2337 capturer.Start(capturer.GetSupportedFormats()->front())); | 2335 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 2338 EXPECT_TRUE(capturer.CaptureFrame()); | 2336 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2339 | 2337 |
| 2340 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2338 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
| 2341 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); | 2339 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); |
| 2342 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); | 2340 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); |
| 2343 | 2341 |
| 2344 parameters.codecs.clear(); | 2342 parameters.codecs.clear(); |
| 2345 parameters.codecs.push_back(kVp8Codec360p); | 2343 parameters.codecs.push_back(kVp8Codec360p); |
| 2346 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2344 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 2347 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); | 2345 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); |
| 2348 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); | 2346 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); |
| 2349 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); | 2347 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); |
| 2350 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 2348 channel_->SetSource(last_ssrc_, NULL); |
| 2351 } | 2349 } |
| 2352 | 2350 |
| 2353 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { | 2351 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { |
| 2354 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", | 2352 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", |
| 2355 200000); | 2353 200000); |
| 2356 } | 2354 } |
| 2357 | 2355 |
| 2358 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { | 2356 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { |
| 2359 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); | 2357 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); |
| 2360 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); | 2358 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2404 | 2402 |
| 2405 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { | 2403 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { |
| 2406 cricket::VideoSendParameters parameters; | 2404 cricket::VideoSendParameters parameters; |
| 2407 parameters.codecs.push_back(kVp8Codec720p); | 2405 parameters.codecs.push_back(kVp8Codec720p); |
| 2408 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2406 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 2409 channel_->SetSend(true); | 2407 channel_->SetSend(true); |
| 2410 | 2408 |
| 2411 FakeVideoSendStream* stream = AddSendStream(); | 2409 FakeVideoSendStream* stream = AddSendStream(); |
| 2412 | 2410 |
| 2413 cricket::FakeVideoCapturer capturer; | 2411 cricket::FakeVideoCapturer capturer; |
| 2414 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 2412 channel_->SetSource(last_ssrc_, &capturer); |
| 2415 EXPECT_EQ(cricket::CS_RUNNING, | 2413 EXPECT_EQ(cricket::CS_RUNNING, |
| 2416 capturer.Start(capturer.GetSupportedFormats()->front())); | 2414 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 2417 | 2415 |
| 2418 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2416 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
| 2419 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; | 2417 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; |
| 2420 EXPECT_GT(initial_max_bitrate_bps, 0); | 2418 EXPECT_GT(initial_max_bitrate_bps, 0); |
| 2421 | 2419 |
| 2422 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; | 2420 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; |
| 2423 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2421 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
| 2424 // Insert a frame to update the encoder config. | 2422 // Insert a frame to update the encoder config. |
| 2425 EXPECT_TRUE(capturer.CaptureFrame()); | 2423 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2426 streams = stream->GetVideoStreams(); | 2424 streams = stream->GetVideoStreams(); |
| 2427 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); | 2425 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); |
| 2428 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); | 2426 channel_->SetSource(last_ssrc_, nullptr); |
| 2429 } | 2427 } |
| 2430 | 2428 |
| 2431 TEST_F(WebRtcVideoChannel2Test, | 2429 TEST_F(WebRtcVideoChannel2Test, |
| 2432 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { | 2430 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { |
| 2433 cricket::VideoSendParameters parameters; | 2431 cricket::VideoSendParameters parameters; |
| 2434 parameters.codecs.push_back(kVp8Codec720p); | 2432 parameters.codecs.push_back(kVp8Codec720p); |
| 2435 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2433 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
| 2436 channel_->SetSend(true); | 2434 channel_->SetSend(true); |
| 2437 | 2435 |
| 2438 FakeVideoSendStream* stream = AddSendStream( | 2436 FakeVideoSendStream* stream = AddSendStream( |
| 2439 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2437 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
| 2440 | 2438 |
| 2441 // Send a frame to make sure this scales up to >1 stream (simulcast). | 2439 // Send a frame to make sure this scales up to >1 stream (simulcast). |
| 2442 cricket::FakeVideoCapturer capturer; | 2440 cricket::FakeVideoCapturer capturer; |
| 2443 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &capturer)); | 2441 channel_->SetSource(kSsrcs3[0], &capturer); |
| 2444 EXPECT_EQ(cricket::CS_RUNNING, | 2442 EXPECT_EQ(cricket::CS_RUNNING, |
| 2445 capturer.Start(capturer.GetSupportedFormats()->front())); | 2443 capturer.Start(capturer.GetSupportedFormats()->front())); |
| 2446 EXPECT_TRUE(capturer.CaptureFrame()); | 2444 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2447 | 2445 |
| 2448 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2446 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
| 2449 ASSERT_GT(streams.size(), 1u) | 2447 ASSERT_GT(streams.size(), 1u) |
| 2450 << "Without simulcast this test doesn't make sense."; | 2448 << "Without simulcast this test doesn't make sense."; |
| 2451 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); | 2449 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); |
| 2452 EXPECT_GT(initial_max_bitrate_bps, 0); | 2450 EXPECT_GT(initial_max_bitrate_bps, 0); |
| 2453 | 2451 |
| 2454 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; | 2452 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; |
| 2455 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2453 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
| 2456 // Insert a frame to update the encoder config. | 2454 // Insert a frame to update the encoder config. |
| 2457 EXPECT_TRUE(capturer.CaptureFrame()); | 2455 EXPECT_TRUE(capturer.CaptureFrame()); |
| 2458 streams = stream->GetVideoStreams(); | 2456 streams = stream->GetVideoStreams(); |
| 2459 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); | 2457 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); |
| 2460 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); | 2458 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); |
| 2461 | 2459 |
| 2462 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); | 2460 channel_->SetSource(kSsrcs3[0], nullptr); |
| 2463 } | 2461 } |
| 2464 | 2462 |
| 2465 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { | 2463 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) { |
| 2466 static const char* kMaxQuantization = "21"; | 2464 static const char* kMaxQuantization = "21"; |
| 2467 cricket::VideoSendParameters parameters; | 2465 cricket::VideoSendParameters parameters; |
| 2468 parameters.codecs.push_back(kVp8Codec); | 2466 parameters.codecs.push_back(kVp8Codec); |
| 2469 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; | 2467 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; |
| 2470 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2468 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
| 2471 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), | 2469 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), |
| 2472 AddSendStream()->GetVideoStreams().back().max_qp); | 2470 AddSendStream()->GetVideoStreams().back().max_qp); |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2822 | 2820 |
| 2823 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { | 2821 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) { |
| 2824 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2822 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
| 2825 | 2823 |
| 2826 // Capture format VGA. | 2824 // Capture format VGA. |
| 2827 cricket::FakeVideoCapturer video_capturer_vga; | 2825 cricket::FakeVideoCapturer video_capturer_vga; |
| 2828 const std::vector<cricket::VideoFormat>* formats = | 2826 const std::vector<cricket::VideoFormat>* formats = |
| 2829 video_capturer_vga.GetSupportedFormats(); | 2827 video_capturer_vga.GetSupportedFormats(); |
| 2830 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2828 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
| 2831 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2829 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
| 2832 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); | 2830 channel_->SetSource(kSsrcs3[0], &video_capturer_vga); |
| 2833 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2831 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
| 2834 | 2832 |
| 2835 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); | 2833 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); |
| 2836 cricket::VideoSendParameters parameters; | 2834 cricket::VideoSendParameters parameters; |
| 2837 parameters.codecs.push_back(send_codec); | 2835 parameters.codecs.push_back(send_codec); |
| 2838 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2836 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
| 2839 EXPECT_TRUE(channel_->SetSend(true)); | 2837 EXPECT_TRUE(channel_->SetSend(true)); |
| 2840 | 2838 |
| 2841 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2839 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
| 2842 | 2840 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2859 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2857 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
| 2860 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2858 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
| 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(2, info.senders[0].adapt_changes); | 2862 EXPECT_EQ(2, info.senders[0].adapt_changes); |
| 2865 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, | 2863 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, |
| 2866 info.senders[0].adapt_reason); | 2864 info.senders[0].adapt_reason); |
| 2867 | 2865 |
| 2868 // No capturer (no adapter). Adapt changes from old adapter should be kept. | 2866 // No capturer (no adapter). Adapt changes from old adapter should be kept. |
| 2869 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2867 channel_->SetSource(kSsrcs3[0], NULL); |
| 2870 info.Clear(); | 2868 info.Clear(); |
| 2871 EXPECT_TRUE(channel_->GetStats(&info)); | 2869 EXPECT_TRUE(channel_->GetStats(&info)); |
| 2872 ASSERT_EQ(1U, info.senders.size()); | 2870 ASSERT_EQ(1U, info.senders.size()); |
| 2873 EXPECT_EQ(2, info.senders[0].adapt_changes); | 2871 EXPECT_EQ(2, info.senders[0].adapt_changes); |
| 2874 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, | 2872 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, |
| 2875 info.senders[0].adapt_reason); | 2873 info.senders[0].adapt_reason); |
| 2876 | 2874 |
| 2877 // Set new capturer, capture format HD. | 2875 // Set new capturer, capture format HD. |
| 2878 cricket::FakeVideoCapturer video_capturer_hd; | 2876 cricket::FakeVideoCapturer video_capturer_hd; |
| 2879 cricket::VideoFormat capture_format_hd = (*formats)[0]; | 2877 cricket::VideoFormat capture_format_hd = (*formats)[0]; |
| 2880 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); | 2878 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_hd.Start(capture_format_hd)); |
| 2881 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_hd)); | 2879 channel_->SetSource(kSsrcs3[0], &video_capturer_hd); |
| 2882 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); | 2880 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); |
| 2883 | 2881 |
| 2884 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. | 2882 // Trigger overuse, HD -> adapt (OnCpuResolutionRequest downgrade) -> HD/2. |
| 2885 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 2883 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
| 2886 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); | 2884 EXPECT_TRUE(video_capturer_hd.CaptureFrame()); |
| 2887 info.Clear(); | 2885 info.Clear(); |
| 2888 EXPECT_TRUE(channel_->GetStats(&info)); | 2886 EXPECT_TRUE(channel_->GetStats(&info)); |
| 2889 ASSERT_EQ(1U, info.senders.size()); | 2887 ASSERT_EQ(1U, info.senders.size()); |
| 2890 EXPECT_EQ(3, info.senders[0].adapt_changes); | 2888 EXPECT_EQ(3, info.senders[0].adapt_changes); |
| 2891 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_CPU, info.senders[0].adapt_reason); | 2889 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_CPU, info.senders[0].adapt_reason); |
| 2892 | 2890 |
| 2893 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2891 channel_->SetSource(kSsrcs3[0], NULL); |
| 2894 } | 2892 } |
| 2895 | 2893 |
| 2896 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { | 2894 TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) { |
| 2897 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2895 AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
| 2898 | 2896 |
| 2899 // Capture format VGA. | 2897 // Capture format VGA. |
| 2900 cricket::FakeVideoCapturer video_capturer_vga; | 2898 cricket::FakeVideoCapturer video_capturer_vga; |
| 2901 const std::vector<cricket::VideoFormat>* formats = | 2899 const std::vector<cricket::VideoFormat>* formats = |
| 2902 video_capturer_vga.GetSupportedFormats(); | 2900 video_capturer_vga.GetSupportedFormats(); |
| 2903 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2901 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
| 2904 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2902 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
| 2905 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga)); | 2903 channel_->SetSource(kSsrcs3[0], &video_capturer_vga); |
| 2906 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2904 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
| 2907 | 2905 |
| 2908 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); | 2906 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0); |
| 2909 cricket::VideoSendParameters parameters; | 2907 cricket::VideoSendParameters parameters; |
| 2910 parameters.codecs.push_back(send_codec); | 2908 parameters.codecs.push_back(send_codec); |
| 2911 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2909 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
| 2912 EXPECT_TRUE(channel_->SetSend(true)); | 2910 EXPECT_TRUE(channel_->SetSend(true)); |
| 2913 | 2911 |
| 2914 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2912 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
| 2915 | 2913 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2947 | 2945 |
| 2948 // Reset bandwidth limitation state -> adapt NONE. | 2946 // Reset bandwidth limitation state -> adapt NONE. |
| 2949 stats.bw_limited_resolution = false; | 2947 stats.bw_limited_resolution = false; |
| 2950 fake_call_->GetVideoSendStreams().front()->SetStats(stats); | 2948 fake_call_->GetVideoSendStreams().front()->SetStats(stats); |
| 2951 info.Clear(); | 2949 info.Clear(); |
| 2952 EXPECT_TRUE(channel_->GetStats(&info)); | 2950 EXPECT_TRUE(channel_->GetStats(&info)); |
| 2953 ASSERT_EQ(1U, info.senders.size()); | 2951 ASSERT_EQ(1U, info.senders.size()); |
| 2954 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, | 2952 EXPECT_EQ(WebRtcVideoChannel2::ADAPTREASON_NONE, |
| 2955 info.senders[0].adapt_reason); | 2953 info.senders[0].adapt_reason); |
| 2956 | 2954 |
| 2957 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL)); | 2955 channel_->SetSource(kSsrcs3[0], NULL); |
| 2958 } | 2956 } |
| 2959 | 2957 |
| 2960 TEST_F(WebRtcVideoChannel2Test, | 2958 TEST_F(WebRtcVideoChannel2Test, |
| 2961 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { | 2959 GetStatsTranslatesBandwidthLimitedResolutionCorrectly) { |
| 2962 FakeVideoSendStream* stream = AddSendStream(); | 2960 FakeVideoSendStream* stream = AddSendStream(); |
| 2963 webrtc::VideoSendStream::Stats stats; | 2961 webrtc::VideoSendStream::Stats stats; |
| 2964 stats.bw_limited_resolution = true; | 2962 stats.bw_limited_resolution = true; |
| 2965 stream->SetStats(stats); | 2963 stream->SetStats(stats); |
| 2966 | 2964 |
| 2967 cricket::VideoMediaInfo info; | 2965 cricket::VideoMediaInfo info; |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3309 } | 3307 } |
| 3310 | 3308 |
| 3311 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { | 3309 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { |
| 3312 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); | 3310 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); |
| 3313 } | 3311 } |
| 3314 | 3312 |
| 3315 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { | 3313 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { |
| 3316 AddSendStream(); | 3314 AddSendStream(); |
| 3317 | 3315 |
| 3318 cricket::FakeVideoCapturer capturer; | 3316 cricket::FakeVideoCapturer capturer; |
| 3319 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); | 3317 channel_->SetSource(last_ssrc_, &capturer); |
| 3320 cricket::VideoFormat capture_format_hd = | 3318 cricket::VideoFormat capture_format_hd = |
| 3321 capturer.GetSupportedFormats()->front(); | 3319 capturer.GetSupportedFormats()->front(); |
| 3322 EXPECT_EQ(1280, capture_format_hd.width); | 3320 EXPECT_EQ(1280, capture_format_hd.width); |
| 3323 EXPECT_EQ(720, capture_format_hd.height); | 3321 EXPECT_EQ(720, capture_format_hd.height); |
| 3324 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); | 3322 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); |
| 3325 EXPECT_TRUE(channel_->SetSend(true)); | 3323 EXPECT_TRUE(channel_->SetSend(true)); |
| 3326 | 3324 |
| 3327 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); | 3325 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); |
| 3328 EXPECT_TRUE(default_encoder_bitrate > 1000); | 3326 EXPECT_TRUE(default_encoder_bitrate > 1000); |
| 3329 | 3327 |
| 3330 // TODO(skvlad): Resolve the inconsistency between the interpretation | 3328 // TODO(skvlad): Resolve the inconsistency between the interpretation |
| 3331 // of the global bitrate limit for audio and video: | 3329 // of the global bitrate limit for audio and video: |
| 3332 // - Audio: max_bandwidth_bps = 0 - fail the operation, | 3330 // - Audio: max_bandwidth_bps = 0 - fail the operation, |
| 3333 // max_bandwidth_bps = -1 - remove the bandwidth limit | 3331 // max_bandwidth_bps = -1 - remove the bandwidth limit |
| 3334 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, | 3332 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, |
| 3335 // max_bandwidth_bps = -1 - do not change the previously set | 3333 // max_bandwidth_bps = -1 - do not change the previously set |
| 3336 // limit. | 3334 // limit. |
| 3337 | 3335 |
| 3338 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); | 3336 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); |
| 3339 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); | 3337 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); |
| 3340 SetAndExpectMaxBitrate(capturer, 600, 800, 600); | 3338 SetAndExpectMaxBitrate(capturer, 600, 800, 600); |
| 3341 SetAndExpectMaxBitrate(capturer, 0, 800, 800); | 3339 SetAndExpectMaxBitrate(capturer, 0, 800, 800); |
| 3342 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); | 3340 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate); |
| 3343 | 3341 |
| 3344 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 3342 channel_->SetSource(last_ssrc_, NULL); |
| 3345 } | 3343 } |
| 3346 | 3344 |
| 3347 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { | 3345 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { |
| 3348 webrtc::RtpParameters nonexistent_parameters = | 3346 webrtc::RtpParameters nonexistent_parameters = |
| 3349 channel_->GetRtpParameters(last_ssrc_); | 3347 channel_->GetRtpParameters(last_ssrc_); |
| 3350 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); | 3348 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); |
| 3351 | 3349 |
| 3352 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); | 3350 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); |
| 3353 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); | 3351 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); |
| 3354 } | 3352 } |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3468 | 3466 |
| 3469 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 3467 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
| 3470 RTC_DCHECK(num_configured_streams <= ssrcs.size()); | 3468 RTC_DCHECK(num_configured_streams <= ssrcs.size()); |
| 3471 ssrcs.resize(num_configured_streams); | 3469 ssrcs.resize(num_configured_streams); |
| 3472 | 3470 |
| 3473 FakeVideoSendStream* stream = | 3471 FakeVideoSendStream* stream = |
| 3474 AddSendStream(CreateSimStreamParams("cname", ssrcs)); | 3472 AddSendStream(CreateSimStreamParams("cname", ssrcs)); |
| 3475 // Send a full-size frame to trigger a stream reconfiguration to use all | 3473 // Send a full-size frame to trigger a stream reconfiguration to use all |
| 3476 // expected simulcast layers. | 3474 // expected simulcast layers. |
| 3477 cricket::FakeVideoCapturer capturer; | 3475 cricket::FakeVideoCapturer capturer; |
| 3478 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), &capturer)); | 3476 channel_->SetSource(ssrcs.front(), &capturer); |
| 3479 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( | 3477 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( |
| 3480 codec.width, codec.height, | 3478 codec.width, codec.height, |
| 3481 cricket::VideoFormat::FpsToInterval(30), | 3479 cricket::VideoFormat::FpsToInterval(30), |
| 3482 cricket::FOURCC_I420))); | 3480 cricket::FOURCC_I420))); |
| 3483 channel_->SetSend(true); | 3481 channel_->SetSend(true); |
| 3484 EXPECT_TRUE(capturer.CaptureFrame()); | 3482 EXPECT_TRUE(capturer.CaptureFrame()); |
| 3485 | 3483 |
| 3486 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); | 3484 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); |
| 3487 ASSERT_EQ(expected_num_streams, video_streams.size()); | 3485 ASSERT_EQ(expected_num_streams, video_streams.size()); |
| 3488 | 3486 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3525 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; | 3523 total_max_bitrate_bps += video_streams[i].max_bitrate_bps; |
| 3526 } else { | 3524 } else { |
| 3527 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; | 3525 total_max_bitrate_bps += video_streams[i].target_bitrate_bps; |
| 3528 } | 3526 } |
| 3529 } | 3527 } |
| 3530 cricket::VideoMediaInfo info; | 3528 cricket::VideoMediaInfo info; |
| 3531 ASSERT_TRUE(channel_->GetStats(&info)); | 3529 ASSERT_TRUE(channel_->GetStats(&info)); |
| 3532 ASSERT_EQ(1u, info.senders.size()); | 3530 ASSERT_EQ(1u, info.senders.size()); |
| 3533 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); | 3531 EXPECT_EQ(total_max_bitrate_bps, info.senders[0].preferred_bitrate); |
| 3534 | 3532 |
| 3535 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); | 3533 channel_->SetSource(ssrcs.front(), NULL); |
| 3536 } | 3534 } |
| 3537 | 3535 |
| 3538 FakeVideoSendStream* AddSendStream() { | 3536 FakeVideoSendStream* AddSendStream() { |
| 3539 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); | 3537 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); |
| 3540 } | 3538 } |
| 3541 | 3539 |
| 3542 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { | 3540 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { |
| 3543 size_t num_streams = | 3541 size_t num_streams = |
| 3544 fake_call_.GetVideoSendStreams().size(); | 3542 fake_call_.GetVideoSendStreams().size(); |
| 3545 EXPECT_TRUE(channel_->AddSendStream(sp)); | 3543 EXPECT_TRUE(channel_->AddSendStream(sp)); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3582 } | 3580 } |
| 3583 | 3581 |
| 3584 // Test that we normalize send codec format size in simulcast. | 3582 // Test that we normalize send codec format size in simulcast. |
| 3585 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { | 3583 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { |
| 3586 cricket::VideoCodec codec(kVp8Codec270p); | 3584 cricket::VideoCodec codec(kVp8Codec270p); |
| 3587 codec.width += 1; | 3585 codec.width += 1; |
| 3588 codec.height += 1; | 3586 codec.height += 1; |
| 3589 VerifySimulcastSettings(codec, 2, 2); | 3587 VerifySimulcastSettings(codec, 2, 2); |
| 3590 } | 3588 } |
| 3591 } // namespace cricket | 3589 } // namespace cricket |
| OLD | NEW |