Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(301)

Side by Side Diff: webrtc/call/call_perf_tests.cc

Issue 2383493005: Revert of Let ViEEncoder handle resolution changes. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/call/bitrate_estimator_tests.cc ('k') | webrtc/call/rampup_tests.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 receiver_call_->CreateAudioReceiveStream(audio_recv_config); 257 receiver_call_->CreateAudioReceiveStream(audio_recv_config);
258 CreateVideoStreams(); 258 CreateVideoStreams();
259 } else { 259 } else {
260 CreateVideoStreams(); 260 CreateVideoStreams();
261 audio_receive_stream = 261 audio_receive_stream =
262 receiver_call_->CreateAudioReceiveStream(audio_recv_config); 262 receiver_call_->CreateAudioReceiveStream(audio_recv_config);
263 } 263 }
264 EXPECT_EQ(1u, video_receive_streams_.size()); 264 EXPECT_EQ(1u, video_receive_streams_.size());
265 observer.set_receive_stream(video_receive_streams_[0]); 265 observer.set_receive_stream(video_receive_streams_[0]);
266 DriftingClock drifting_clock(clock_, video_ntp_speed); 266 DriftingClock drifting_clock(clock_, video_ntp_speed);
267 CreateFrameGeneratorCapturerWithDrift(&drifting_clock, video_rtp_speed, 267 CreateFrameGeneratorCapturerWithDrift(&drifting_clock, video_rtp_speed);
268 kDefaultFramerate, kDefaultWidth,
269 kDefaultHeight);
270 268
271 Start(); 269 Start();
272 270
273 fake_audio_device.Start(); 271 fake_audio_device.Start();
274 EXPECT_EQ(0, voe_base->StartPlayout(recv_channel_id)); 272 EXPECT_EQ(0, voe_base->StartPlayout(recv_channel_id));
275 EXPECT_EQ(0, voe_base->StartReceive(recv_channel_id)); 273 EXPECT_EQ(0, voe_base->StartReceive(recv_channel_id));
276 EXPECT_EQ(0, voe_base->StartSend(send_channel_id)); 274 EXPECT_EQ(0, voe_base->StartSend(send_channel_id));
277 275
278 EXPECT_TRUE(observer.Wait()) 276 EXPECT_TRUE(observer.Wait())
279 << "Timed out while waiting for audio and video to be synchronized."; 277 << "Timed out while waiting for audio and video to be synchronized.";
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 611
614 TEST_F(CallPerfTest, NoPadWithoutMinTransmitBitrate) { 612 TEST_F(CallPerfTest, NoPadWithoutMinTransmitBitrate) {
615 TestMinTransmitBitrate(false); 613 TestMinTransmitBitrate(false);
616 } 614 }
617 615
618 TEST_F(CallPerfTest, KeepsHighBitrateWhenReconfiguringSender) { 616 TEST_F(CallPerfTest, KeepsHighBitrateWhenReconfiguringSender) {
619 static const uint32_t kInitialBitrateKbps = 400; 617 static const uint32_t kInitialBitrateKbps = 400;
620 static const uint32_t kReconfigureThresholdKbps = 600; 618 static const uint32_t kReconfigureThresholdKbps = 600;
621 static const uint32_t kPermittedReconfiguredBitrateDiffKbps = 100; 619 static const uint32_t kPermittedReconfiguredBitrateDiffKbps = 100;
622 620
623 class VideoStreamFactory
624 : public VideoEncoderConfig::VideoStreamFactoryInterface {
625 public:
626 VideoStreamFactory() {}
627
628 private:
629 std::vector<VideoStream> CreateEncoderStreams(
630 int width,
631 int height,
632 const VideoEncoderConfig& encoder_config) override {
633 std::vector<VideoStream> streams =
634 test::CreateVideoStreams(width, height, encoder_config);
635 streams[0].min_bitrate_bps = 50000;
636 streams[0].target_bitrate_bps = streams[0].max_bitrate_bps = 2000000;
637 return streams;
638 }
639 };
640
641 class BitrateObserver : public test::EndToEndTest, public test::FakeEncoder { 621 class BitrateObserver : public test::EndToEndTest, public test::FakeEncoder {
642 public: 622 public:
643 BitrateObserver() 623 BitrateObserver()
644 : EndToEndTest(kDefaultTimeoutMs), 624 : EndToEndTest(kDefaultTimeoutMs),
645 FakeEncoder(Clock::GetRealTimeClock()), 625 FakeEncoder(Clock::GetRealTimeClock()),
646 time_to_reconfigure_(false, false), 626 time_to_reconfigure_(false, false),
647 encoder_inits_(0), 627 encoder_inits_(0),
648 last_set_bitrate_(0), 628 last_set_bitrate_(0),
649 send_stream_(nullptr) {} 629 send_stream_(nullptr) {}
650 630
651 int32_t InitEncode(const VideoCodec* config, 631 int32_t InitEncode(const VideoCodec* config,
652 int32_t number_of_cores, 632 int32_t number_of_cores,
653 size_t max_payload_size) override { 633 size_t max_payload_size) override {
654 ++encoder_inits_; 634 if (encoder_inits_ == 0) {
655 if (encoder_inits_ == 1) {
656 // First time initialization. Frame size is not known.
657 EXPECT_EQ(kInitialBitrateKbps, config->startBitrate) 635 EXPECT_EQ(kInitialBitrateKbps, config->startBitrate)
658 << "Encoder not initialized at expected bitrate."; 636 << "Encoder not initialized at expected bitrate.";
659 } else if (encoder_inits_ == 2) { 637 }
660 // First time initialization. Frame size is known. 638 ++encoder_inits_;
661 EXPECT_EQ(kDefaultWidth, config->width); 639 if (encoder_inits_ == 2) {
662 EXPECT_EQ(kDefaultHeight, config->height);
663 } else if (encoder_inits_ == 3) {
664 EXPECT_EQ(2 * kDefaultWidth, config->width);
665 EXPECT_EQ(2 * kDefaultHeight, config->height);
666 EXPECT_GE(last_set_bitrate_, kReconfigureThresholdKbps); 640 EXPECT_GE(last_set_bitrate_, kReconfigureThresholdKbps);
667 EXPECT_NEAR(config->startBitrate, 641 EXPECT_NEAR(config->startBitrate,
668 last_set_bitrate_, 642 last_set_bitrate_,
669 kPermittedReconfiguredBitrateDiffKbps) 643 kPermittedReconfiguredBitrateDiffKbps)
670 << "Encoder reconfigured with bitrate too far away from last set."; 644 << "Encoder reconfigured with bitrate too far away from last set.";
671 observation_complete_.Set(); 645 observation_complete_.Set();
672 } 646 }
673 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 647 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
674 } 648 }
675 649
676 int32_t SetRates(uint32_t new_target_bitrate_kbps, 650 int32_t SetRates(uint32_t new_target_bitrate_kbps,
677 uint32_t framerate) override { 651 uint32_t framerate) override {
678 last_set_bitrate_ = new_target_bitrate_kbps; 652 last_set_bitrate_ = new_target_bitrate_kbps;
679 if (encoder_inits_ == 2 && 653 if (encoder_inits_ == 1 &&
680 new_target_bitrate_kbps > kReconfigureThresholdKbps) { 654 new_target_bitrate_kbps > kReconfigureThresholdKbps) {
681 time_to_reconfigure_.Set(); 655 time_to_reconfigure_.Set();
682 } 656 }
683 return FakeEncoder::SetRates(new_target_bitrate_kbps, framerate); 657 return FakeEncoder::SetRates(new_target_bitrate_kbps, framerate);
684 } 658 }
685 659
686 Call::Config GetSenderCallConfig() override { 660 Call::Config GetSenderCallConfig() override {
687 Call::Config config = EndToEndTest::GetSenderCallConfig(); 661 Call::Config config = EndToEndTest::GetSenderCallConfig();
688 config.bitrate_config.start_bitrate_bps = kInitialBitrateKbps * 1000; 662 config.bitrate_config.start_bitrate_bps = kInitialBitrateKbps * 1000;
689 return config; 663 return config;
690 } 664 }
691 665
692 void ModifyVideoConfigs( 666 void ModifyVideoConfigs(
693 VideoSendStream::Config* send_config, 667 VideoSendStream::Config* send_config,
694 std::vector<VideoReceiveStream::Config>* receive_configs, 668 std::vector<VideoReceiveStream::Config>* receive_configs,
695 VideoEncoderConfig* encoder_config) override { 669 VideoEncoderConfig* encoder_config) override {
696 send_config->encoder_settings.encoder = this; 670 send_config->encoder_settings.encoder = this;
697 encoder_config->video_stream_factory = 671 encoder_config->streams[0].min_bitrate_bps = 50000;
698 new rtc::RefCountedObject<VideoStreamFactory>(); 672 encoder_config->streams[0].target_bitrate_bps =
673 encoder_config->streams[0].max_bitrate_bps = 2000000;
699 674
700 encoder_config_ = encoder_config->Copy(); 675 encoder_config_ = encoder_config->Copy();
701 } 676 }
702 677
703 void OnVideoStreamsCreated( 678 void OnVideoStreamsCreated(
704 VideoSendStream* send_stream, 679 VideoSendStream* send_stream,
705 const std::vector<VideoReceiveStream*>& receive_streams) override { 680 const std::vector<VideoReceiveStream*>& receive_streams) override {
706 send_stream_ = send_stream; 681 send_stream_ = send_stream;
707 } 682 }
708 683
709 void OnFrameGeneratorCapturerCreated(
710 test::FrameGeneratorCapturer* frame_generator_capturer) override {
711 frame_generator_ = frame_generator_capturer;
712 }
713
714 void PerformTest() override { 684 void PerformTest() override {
715 ASSERT_TRUE(time_to_reconfigure_.Wait(kDefaultTimeoutMs)) 685 ASSERT_TRUE(time_to_reconfigure_.Wait(kDefaultTimeoutMs))
716 << "Timed out before receiving an initial high bitrate."; 686 << "Timed out before receiving an initial high bitrate.";
717 frame_generator_->ChangeResolution(kDefaultWidth * 2, kDefaultHeight * 2); 687 encoder_config_.streams[0].width *= 2;
688 encoder_config_.streams[0].height *= 2;
718 send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy()); 689 send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy());
719 EXPECT_TRUE(Wait()) 690 EXPECT_TRUE(Wait())
720 << "Timed out while waiting for a couple of high bitrate estimates " 691 << "Timed out while waiting for a couple of high bitrate estimates "
721 "after reconfiguring the send stream."; 692 "after reconfiguring the send stream.";
722 } 693 }
723 694
724 private: 695 private:
725 rtc::Event time_to_reconfigure_; 696 rtc::Event time_to_reconfigure_;
726 int encoder_inits_; 697 int encoder_inits_;
727 uint32_t last_set_bitrate_; 698 uint32_t last_set_bitrate_;
728 VideoSendStream* send_stream_; 699 VideoSendStream* send_stream_;
729 test::FrameGeneratorCapturer* frame_generator_;
730 VideoEncoderConfig encoder_config_; 700 VideoEncoderConfig encoder_config_;
731 } test; 701 } test;
732 702
733 RunBaseTest(&test); 703 RunBaseTest(&test);
734 } 704 }
735 705
736 } // namespace webrtc 706 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/call/bitrate_estimator_tests.cc ('k') | webrtc/call/rampup_tests.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698