| Index: webrtc/video/video_stream_encoder_unittest.cc
|
| diff --git a/webrtc/video/vie_encoder_unittest.cc b/webrtc/video/video_stream_encoder_unittest.cc
|
| similarity index 82%
|
| rename from webrtc/video/vie_encoder_unittest.cc
|
| rename to webrtc/video/video_stream_encoder_unittest.cc
|
| index 09ac4c95ea09d0f3260bdcd0c65ad0d08ad86696..d7d09db7aad8d1379a65f984dddf6369815a95bb 100644
|
| --- a/webrtc/video/vie_encoder_unittest.cc
|
| +++ b/webrtc/video/video_stream_encoder_unittest.cc
|
| @@ -26,7 +26,7 @@
|
| #include "webrtc/test/gmock.h"
|
| #include "webrtc/test/gtest.h"
|
| #include "webrtc/video/send_statistics_proxy.h"
|
| -#include "webrtc/video/vie_encoder.h"
|
| +#include "webrtc/video/video_stream_encoder.h"
|
|
|
| namespace {
|
| // TODO(kthelgason): Lower this limit when better testing
|
| @@ -93,21 +93,22 @@ class CpuOveruseDetectorProxy : public OveruseFrameDetector {
|
| int last_target_framerate_fps_ GUARDED_BY(lock_);
|
| };
|
|
|
| -class ViEEncoderUnderTest : public ViEEncoder {
|
| +class VideoStreamEncoderUnderTest : public VideoStreamEncoder {
|
| public:
|
| - ViEEncoderUnderTest(SendStatisticsProxy* stats_proxy,
|
| + VideoStreamEncoderUnderTest(SendStatisticsProxy* stats_proxy,
|
| const VideoSendStream::Config::EncoderSettings& settings)
|
| - : ViEEncoder(1 /* number_of_cores */,
|
| - stats_proxy,
|
| - settings,
|
| - nullptr /* pre_encode_callback */,
|
| - nullptr /* encoder_timing */,
|
| - std::unique_ptr<OveruseFrameDetector>(
|
| - overuse_detector_proxy_ = new CpuOveruseDetectorProxy(
|
| - GetCpuOveruseOptions(settings.full_overuse_time),
|
| - this,
|
| - nullptr,
|
| - stats_proxy))) {}
|
| + : VideoStreamEncoder(
|
| + 1 /* number_of_cores */,
|
| + stats_proxy,
|
| + settings,
|
| + nullptr /* pre_encode_callback */,
|
| + nullptr /* encoder_timing */,
|
| + std::unique_ptr<OveruseFrameDetector>(
|
| + overuse_detector_proxy_ = new CpuOveruseDetectorProxy(
|
| + GetCpuOveruseOptions(settings.full_overuse_time),
|
| + this,
|
| + nullptr,
|
| + stats_proxy))) {}
|
|
|
| void PostTaskAndWait(bool down, AdaptReason reason) {
|
| rtc::Event event(false, false);
|
| @@ -258,11 +259,11 @@ class MockBitrateObserver : public VideoBitrateAllocationObserver {
|
|
|
| } // namespace
|
|
|
| -class ViEEncoderTest : public ::testing::Test {
|
| +class VideoStreamEncoderTest : public ::testing::Test {
|
| public:
|
| static const int kDefaultTimeoutMs = 30 * 1000;
|
|
|
| - ViEEncoderTest()
|
| + VideoStreamEncoderTest()
|
| : video_send_config_(VideoSendStream::Config(nullptr)),
|
| codec_width_(320),
|
| codec_height_(240),
|
| @@ -299,18 +300,18 @@ class ViEEncoderTest : public ::testing::Test {
|
|
|
| void ConfigureEncoder(VideoEncoderConfig video_encoder_config,
|
| bool nack_enabled) {
|
| - if (vie_encoder_)
|
| - vie_encoder_->Stop();
|
| - vie_encoder_.reset(new ViEEncoderUnderTest(
|
| + if (video_stream_encoder_)
|
| + video_stream_encoder_->Stop();
|
| + video_stream_encoder_.reset(new VideoStreamEncoderUnderTest(
|
| stats_proxy_.get(), video_send_config_.encoder_settings));
|
| - vie_encoder_->SetSink(&sink_, false /* rotation_applied */);
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSink(&sink_, false /* rotation_applied */);
|
| + video_stream_encoder_->SetSource(
|
| &video_source_,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
| - vie_encoder_->SetStartBitrate(kTargetBitrateBps);
|
| - vie_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| - kMaxPayloadLength, nack_enabled);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->SetStartBitrate(kTargetBitrateBps);
|
| + video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| + kMaxPayloadLength, nack_enabled);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
| }
|
|
|
| void ResetEncoder(const std::string& payload_name,
|
| @@ -555,7 +556,7 @@ class ViEEncoderTest : public ::testing::Test {
|
| bool force_init_encode_failed_ GUARDED_BY(local_crit_sect_) = false;
|
| };
|
|
|
| - class TestSink : public ViEEncoder::EncoderSink {
|
| + class TestSink : public VideoStreamEncoder::EncoderSink {
|
| public:
|
| explicit TestSink(TestEncoder* test_encoder)
|
| : test_encoder_(test_encoder), encoded_frame_event_(false, false) {}
|
| @@ -659,49 +660,49 @@ class ViEEncoderTest : public ::testing::Test {
|
| std::unique_ptr<MockableSendStatisticsProxy> stats_proxy_;
|
| TestSink sink_;
|
| AdaptingFrameForwarder video_source_;
|
| - std::unique_ptr<ViEEncoderUnderTest> vie_encoder_;
|
| + std::unique_ptr<VideoStreamEncoderUnderTest> video_stream_encoder_;
|
| rtc::ScopedFakeClock fake_clock_;
|
| };
|
|
|
| -TEST_F(ViEEncoderTest, EncodeOneFrame) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, EncodeOneFrame) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| rtc::Event frame_destroyed_event(false, false);
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| WaitForEncodedFrame(1);
|
| EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DropsFramesBeforeFirstOnBitrateUpdated) {
|
| +TEST_F(VideoStreamEncoderTest, DropsFramesBeforeFirstOnBitrateUpdated) {
|
| // Dropped since no target bitrate has been set.
|
| rtc::Event frame_destroyed_event(false, false);
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
| EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| WaitForEncodedFrame(2);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DropsFramesWhenRateSetToZero) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, DropsFramesWhenRateSetToZero) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| WaitForEncodedFrame(1);
|
|
|
| - vie_encoder_->OnBitrateUpdated(0, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(0, 0, 0);
|
| // Dropped since bitrate is zero.
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
| WaitForEncodedFrame(3);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DropsFramesWithSameOrOldNtpTimestamp) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, DropsFramesWithSameOrOldNtpTimestamp) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| WaitForEncodedFrame(1);
|
|
|
| @@ -710,24 +711,24 @@ TEST_F(ViEEncoderTest, DropsFramesWithSameOrOldNtpTimestamp) {
|
|
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| WaitForEncodedFrame(2);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DropsFrameAfterStop) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, DropsFrameAfterStop) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| WaitForEncodedFrame(1);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| sink_.SetExpectNoFrames();
|
| rtc::Event frame_destroyed_event(false, false);
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, &frame_destroyed_event));
|
| EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DropsPendingFramesOnSlowEncode) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, DropsPendingFramesOnSlowEncode) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| fake_encoder_.BlockNextEncode();
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| @@ -739,11 +740,12 @@ TEST_F(ViEEncoderTest, DropsPendingFramesOnSlowEncode) {
|
| fake_encoder_.ContinueEncode();
|
| WaitForEncodedFrame(3);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, ConfigureEncoderTriggersOnEncoderConfigurationChanged) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest,
|
| + ConfigureEncoderTriggersOnEncoderConfigurationChanged) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| EXPECT_EQ(0, sink_.number_of_reconfigurations());
|
|
|
| // Capture a frame and wait for it to synchronize with the encoder thread.
|
| @@ -756,8 +758,9 @@ TEST_F(ViEEncoderTest, ConfigureEncoderTriggersOnEncoderConfigurationChanged) {
|
| VideoEncoderConfig video_encoder_config;
|
| test::FillEncoderConfiguration(1, &video_encoder_config);
|
| video_encoder_config.min_transmit_bitrate_bps = 9999;
|
| - vie_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| - kMaxPayloadLength, true /* nack_enabled */);
|
| + video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| + kMaxPayloadLength,
|
| + true /* nack_enabled */);
|
|
|
| // Capture a frame and wait for it to synchronize with the encoder thread.
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
| @@ -765,11 +768,11 @@ TEST_F(ViEEncoderTest, ConfigureEncoderTriggersOnEncoderConfigurationChanged) {
|
| EXPECT_EQ(2, sink_.number_of_reconfigurations());
|
| EXPECT_EQ(9999, sink_.last_min_transmit_bitrate());
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, FrameResolutionChangeReconfigureEncoder) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, FrameResolutionChangeReconfigureEncoder) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Capture a frame and wait for it to synchronize with the encoder thread.
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| @@ -789,15 +792,15 @@ TEST_F(ViEEncoderTest, FrameResolutionChangeReconfigureEncoder) {
|
| EXPECT_EQ(codec_height_, fake_encoder_.codec_config().height);
|
| EXPECT_EQ(2, sink_.number_of_reconfigurations());
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, Vp8ResilienceIsOffFor1S1TLWithNackEnabled) {
|
| +TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor1S1TLWithNackEnabled) {
|
| const bool kNackEnabled = true;
|
| const size_t kNumStreams = 1;
|
| const size_t kNumTl = 1;
|
| ResetEncoder("VP8", kNumStreams, kNumTl, kNackEnabled, false);
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Capture a frame and wait for it to synchronize with the encoder thread.
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| @@ -809,15 +812,15 @@ TEST_F(ViEEncoderTest, Vp8ResilienceIsOffFor1S1TLWithNackEnabled) {
|
| EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
|
| // Resilience is off for no temporal layers with nack on.
|
| EXPECT_EQ(kResilienceOff, fake_encoder_.codec_config().VP8()->resilience);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, Vp8ResilienceIsOffFor2S1TlWithNackEnabled) {
|
| +TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor2S1TlWithNackEnabled) {
|
| const bool kNackEnabled = true;
|
| const size_t kNumStreams = 2;
|
| const size_t kNumTl = 1;
|
| ResetEncoder("VP8", kNumStreams, kNumTl, kNackEnabled, false);
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Capture a frame and wait for it to synchronize with the encoder thread.
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| @@ -829,15 +832,15 @@ TEST_F(ViEEncoderTest, Vp8ResilienceIsOffFor2S1TlWithNackEnabled) {
|
| EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
|
| // Resilience is off for no temporal layers and >1 streams with nack on.
|
| EXPECT_EQ(kResilienceOff, fake_encoder_.codec_config().VP8()->resilience);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, Vp8ResilienceIsOnFor1S1TLWithNackDisabled) {
|
| +TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S1TLWithNackDisabled) {
|
| const bool kNackEnabled = false;
|
| const size_t kNumStreams = 1;
|
| const size_t kNumTl = 1;
|
| ResetEncoder("VP8", kNumStreams, kNumTl, kNackEnabled, false);
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Capture a frame and wait for it to synchronize with the encoder thread.
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| @@ -849,15 +852,15 @@ TEST_F(ViEEncoderTest, Vp8ResilienceIsOnFor1S1TLWithNackDisabled) {
|
| EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
|
| // Resilience is on for no temporal layers with nack off.
|
| EXPECT_EQ(kResilientStream, fake_encoder_.codec_config().VP8()->resilience);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, Vp8ResilienceIsOnFor1S2TlWithNackEnabled) {
|
| +TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S2TlWithNackEnabled) {
|
| const bool kNackEnabled = true;
|
| const size_t kNumStreams = 1;
|
| const size_t kNumTl = 2;
|
| ResetEncoder("VP8", kNumStreams, kNumTl, kNackEnabled, false);
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Capture a frame and wait for it to synchronize with the encoder thread.
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
| @@ -869,45 +872,45 @@ TEST_F(ViEEncoderTest, Vp8ResilienceIsOnFor1S2TlWithNackEnabled) {
|
| EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
|
| // Resilience is on for temporal layers.
|
| EXPECT_EQ(kResilientStream, fake_encoder_.codec_config().VP8()->resilience);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, SwitchSourceDeregisterEncoderAsSink) {
|
| +TEST_F(VideoStreamEncoderTest, SwitchSourceDeregisterEncoderAsSink) {
|
| EXPECT_TRUE(video_source_.has_sinks());
|
| test::FrameForwarder new_video_source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
| EXPECT_FALSE(video_source_.has_sinks());
|
| EXPECT_TRUE(new_video_source.has_sinks());
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, SinkWantsRotationApplied) {
|
| +TEST_F(VideoStreamEncoderTest, SinkWantsRotationApplied) {
|
| EXPECT_FALSE(video_source_.sink_wants().rotation_applied);
|
| - vie_encoder_->SetSink(&sink_, true /*rotation_applied*/);
|
| + video_stream_encoder_->SetSink(&sink_, true /*rotation_applied*/);
|
| EXPECT_TRUE(video_source_.sink_wants().rotation_applied);
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, SinkWantsFromOveruseDetector) {
|
| - const int kMaxDowngrades = ViEEncoder::kMaxCpuResolutionDowngrades;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, SinkWantsFromOveruseDetector) {
|
| + const int kMaxDowngrades = VideoStreamEncoder::kMaxCpuResolutionDowngrades;
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| VerifyNoLimitation(video_source_.sink_wants());
|
|
|
| int frame_width = 1280;
|
| int frame_height = 720;
|
|
|
| - // Trigger CPU overuse kMaxCpuDowngrades times. Every time, ViEEncoder should
|
| - // request lower resolution.
|
| + // Trigger CPU overuse kMaxCpuDowngrades times. Every time, VideoStreamEncoder
|
| + // should request lower resolution.
|
| for (int i = 1; i <= kMaxDowngrades; ++i) {
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(i, frame_width, frame_height));
|
| WaitForEncodedFrame(i);
|
|
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
|
|
| EXPECT_FALSE(video_source_.sink_wants().target_pixel_count);
|
| EXPECT_LT(video_source_.sink_wants().max_pixel_count,
|
| @@ -925,7 +928,7 @@ TEST_F(ViEEncoderTest, SinkWantsFromOveruseDetector) {
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(kMaxDowngrades + 1, frame_width, frame_height));
|
| WaitForEncodedFrame(kMaxDowngrades + 1);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| EXPECT_EQ(video_source_.sink_wants().target_pixel_count,
|
| current_wants.target_pixel_count);
|
| EXPECT_EQ(video_source_.sink_wants().max_pixel_count,
|
| @@ -935,7 +938,7 @@ TEST_F(ViEEncoderTest, SinkWantsFromOveruseDetector) {
|
| stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU normal use.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| EXPECT_EQ(frame_width * frame_height * 5 / 3,
|
| video_source_.sink_wants().target_pixel_count.value_or(0));
|
| EXPECT_EQ(frame_width * frame_height * 4,
|
| @@ -944,20 +947,22 @@ TEST_F(ViEEncoderTest, SinkWantsFromOveruseDetector) {
|
| EXPECT_EQ(kMaxDowngrades + 1,
|
| stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, TestMaxCpuResolutionDowngrades_BalancedMode_NoFpsLimit) {
|
| - const int kMaxDowngrades = ViEEncoder::kMaxCpuResolutionDowngrades;
|
| +TEST_F(VideoStreamEncoderTest,
|
| + TestMaxCpuResolutionDowngrades_BalancedMode_NoFpsLimit) {
|
| + const int kMaxDowngrades = VideoStreamEncoder::kMaxCpuResolutionDowngrades;
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
| @@ -967,7 +972,7 @@ TEST_F(ViEEncoderTest, TestMaxCpuResolutionDowngrades_BalancedMode_NoFpsLimit) {
|
| for (int i = 1; i <= kMaxDowngrades; ++i) {
|
| source.IncomingCapturedFrame(CreateFrame(t, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(t++);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
| EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| EXPECT_EQ(i, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
| @@ -977,7 +982,7 @@ TEST_F(ViEEncoderTest, TestMaxCpuResolutionDowngrades_BalancedMode_NoFpsLimit) {
|
| rtc::VideoSinkWants last_wants = source.sink_wants();
|
| source.IncomingCapturedFrame(CreateFrame(t, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(t++);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| VerifyFpsEqResolutionEq(source.sink_wants(), last_wants);
|
| EXPECT_EQ(last_wants.max_pixel_count, source.sink_wants().max_pixel_count);
|
| EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| @@ -988,7 +993,7 @@ TEST_F(ViEEncoderTest, TestMaxCpuResolutionDowngrades_BalancedMode_NoFpsLimit) {
|
| for (int i = 1; i <= kMaxDowngrades; ++i) {
|
| source.IncomingCapturedFrame(CreateFrame(t, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(t++);
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
| EXPECT_GT(source.sink_wants().max_pixel_count, last_wants.max_pixel_count);
|
| EXPECT_EQ(kMaxDowngrades + i,
|
| @@ -998,10 +1003,10 @@ TEST_F(ViEEncoderTest, TestMaxCpuResolutionDowngrades_BalancedMode_NoFpsLimit) {
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
| -TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| VerifyNoLimitation(video_source_.sink_wants());
|
|
|
| const int kFrameWidth = 1280;
|
| @@ -1016,7 +1021,7 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| frame_timestamp += kFrameIntervalMs;
|
|
|
| // Trigger CPU overuse.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(frame_timestamp, kFrameWidth, kFrameHeight));
|
| WaitForEncodedFrame(frame_timestamp);
|
| @@ -1032,7 +1037,7 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
|
|
| // Set new source, switch to maintain-resolution.
|
| test::FrameForwarder new_video_source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| @@ -1046,7 +1051,7 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| stats.input_frame_rate = kInputFps;
|
| stats_proxy_->SetMockStats(stats);
|
|
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| new_video_source.IncomingCapturedFrame(
|
| CreateFrame(frame_timestamp, kFrameWidth, kFrameHeight));
|
| WaitForEncodedFrame(frame_timestamp);
|
| @@ -1059,12 +1064,12 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| EXPECT_LT(new_video_source.sink_wants().max_framerate_fps, kInputFps);
|
|
|
| // Turn off degradation completely.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kDegradationDisabled);
|
| VerifyNoLimitation(new_video_source.sink_wants());
|
|
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| new_video_source.IncomingCapturedFrame(
|
| CreateFrame(frame_timestamp, kFrameWidth, kFrameHeight));
|
| WaitForEncodedFrame(frame_timestamp);
|
| @@ -1074,7 +1079,7 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| VerifyNoLimitation(new_video_source.sink_wants());
|
|
|
| // Calling SetSource with resolution scaling enabled apply the old SinkWants.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
| EXPECT_LT(new_video_source.sink_wants().max_pixel_count,
|
| @@ -1084,7 +1089,7 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| new_video_source.sink_wants().max_framerate_fps);
|
|
|
| // Calling SetSource with framerate scaling enabled apply the old SinkWants.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
| EXPECT_FALSE(new_video_source.sink_wants().target_pixel_count);
|
| @@ -1092,11 +1097,11 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
|
| new_video_source.sink_wants().max_pixel_count);
|
| EXPECT_LT(new_video_source.sink_wants().max_framerate_fps, kInputFps);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, StatsTracksQualityAdaptationStats) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, StatsTracksQualityAdaptationStats) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| @@ -1107,7 +1112,7 @@ TEST_F(ViEEncoderTest, StatsTracksQualityAdaptationStats) {
|
| EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
|
|
| @@ -1116,7 +1121,7 @@ TEST_F(ViEEncoderTest, StatsTracksQualityAdaptationStats) {
|
| EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| WaitForEncodedFrame(3);
|
|
|
| @@ -1125,11 +1130,11 @@ TEST_F(ViEEncoderTest, StatsTracksQualityAdaptationStats) {
|
| EXPECT_EQ(2, stats.number_of_quality_adapt_changes);
|
| EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStats) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, StatsTracksCpuAdaptationStats) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| @@ -1140,7 +1145,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStats) {
|
| EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU overuse.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
|
|
| @@ -1149,7 +1154,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStats) {
|
| EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU normal use.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| WaitForEncodedFrame(3);
|
|
|
| @@ -1158,11 +1163,11 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStats) {
|
| EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
| EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| @@ -1174,7 +1179,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
| EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU overuse.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
| stats = stats_proxy_->GetStats();
|
| @@ -1184,7 +1189,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
|
|
| // Set new source with adaptation still enabled.
|
| test::FrameForwarder new_video_source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| @@ -1196,7 +1201,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
| EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
| // Set adaptation disabled.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kDegradationDisabled);
|
|
|
| @@ -1208,7 +1213,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
| EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
| // Set adaptation back to enabled.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| @@ -1220,7 +1225,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
| EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU normal use.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| new_video_source.IncomingCapturedFrame(CreateFrame(6, kWidth, kHeight));
|
| WaitForEncodedFrame(6);
|
| stats = stats_proxy_->GetStats();
|
| @@ -1229,11 +1234,11 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
| EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
| EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| @@ -1246,8 +1251,9 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
|
|
| // Set new source with adaptation still enabled.
|
| test::FrameForwarder new_video_source;
|
| - vie_encoder_->SetSource(&new_video_source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &new_video_source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
|
|
| new_video_source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
| @@ -1257,7 +1263,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
| EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| WaitForEncodedFrame(3);
|
| stats = stats_proxy_->GetStats();
|
| @@ -1266,8 +1272,9 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
| EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
|
|
| // Set new source with adaptation still enabled.
|
| - vie_encoder_->SetSource(&new_video_source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &new_video_source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
|
|
| new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
| WaitForEncodedFrame(4);
|
| @@ -1277,7 +1284,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
| EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
|
|
| // Disable resolution scaling.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| @@ -1289,11 +1296,12 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
| EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
| EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest,
|
| + QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| @@ -1305,7 +1313,7 @@ TEST_F(ViEEncoderTest, QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt down.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| @@ -1313,7 +1321,7 @@ TEST_F(ViEEncoderTest, QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger overuse.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| WaitForEncodedFrame(3);
|
| EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| @@ -1322,7 +1330,7 @@ TEST_F(ViEEncoderTest, QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
|
|
|
| // Set source with adaptation still enabled but quality scaler is off.
|
| fake_encoder_.SetQualityScaling(false);
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &video_source_,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| @@ -1332,11 +1340,12 @@ TEST_F(ViEEncoderTest, QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest,
|
| + StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| @@ -1350,7 +1359,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU overuse, should now adapt down.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
|
| WaitForEncodedFrame(sequence++);
|
| stats = stats_proxy_->GetStats();
|
| @@ -1360,7 +1369,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
|
|
| // Set new source with adaptation still enabled.
|
| test::FrameForwarder new_video_source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| @@ -1373,7 +1382,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
| // Set cpu adaptation by frame dropping.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
| new_video_source.IncomingCapturedFrame(
|
| @@ -1390,7 +1399,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| VideoSendStream::Stats mock_stats = stats_proxy_->GetStats();
|
| mock_stats.input_frame_rate = 30;
|
| stats_proxy_->SetMockStats(mock_stats);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| stats_proxy_->ResetMockStats();
|
|
|
| new_video_source.IncomingCapturedFrame(
|
| @@ -1404,7 +1413,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
|
|
| // Disable CPU adaptation.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kDegradationDisabled);
|
| new_video_source.IncomingCapturedFrame(
|
| @@ -1418,7 +1427,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
|
|
| // Try to trigger overuse. Should not succeed.
|
| stats_proxy_->SetMockStats(mock_stats);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| stats_proxy_->ResetMockStats();
|
|
|
| stats = stats_proxy_->GetStats();
|
| @@ -1427,7 +1436,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
|
|
| // Switch back the source with resolution adaptation enabled.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &video_source_,
|
| VideoSendStream::DegradationPreference::kMaintainFramerate);
|
| video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
|
| @@ -1438,7 +1447,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU normal usage.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
|
| WaitForEncodedFrame(sequence++);
|
| stats = stats_proxy_->GetStats();
|
| @@ -1447,7 +1456,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(3, stats.number_of_cpu_adapt_changes);
|
|
|
| // Back to the source with adaptation off, set it back to maintain-resolution.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
| new_video_source.IncomingCapturedFrame(
|
| @@ -1460,7 +1469,7 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(3, stats.number_of_cpu_adapt_changes);
|
|
|
| // Trigger CPU normal usage.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| new_video_source.IncomingCapturedFrame(
|
| CreateFrame(sequence, kWidth, kHeight));
|
| WaitForEncodedFrame(sequence++);
|
| @@ -1470,11 +1479,11 @@ TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
| EXPECT_EQ(4, stats.number_of_cpu_adapt_changes);
|
| EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, StatsTracksPreferredBitrate) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest, StatsTracksPreferredBitrate) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| @@ -1485,13 +1494,14 @@ TEST_F(ViEEncoderTest, StatsTracksPreferredBitrate) {
|
| EXPECT_EQ(video_encoder_config_.max_bitrate_bps,
|
| stats.preferred_media_bitrate_bps);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + ScalingUpAndDownDoesNothingWithMaintainResolution) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Expect no scaling to begin with.
|
| VerifyNoLimitation(video_source_.sink_wants());
|
| @@ -1500,7 +1510,7 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) {
|
| WaitForEncodedFrame(1);
|
|
|
| // Trigger scale down.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
|
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
| @@ -1511,12 +1521,12 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) {
|
|
|
| // Set resolution scaling disabled.
|
| test::FrameForwarder new_video_source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| // Trigger scale down.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| WaitForEncodedFrame(3);
|
|
|
| @@ -1525,7 +1535,7 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) {
|
| new_video_source.sink_wants().max_pixel_count);
|
|
|
| // Trigger scale up.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
| WaitForEncodedFrame(4);
|
|
|
| @@ -1533,17 +1543,18 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) {
|
| EXPECT_EQ(std::numeric_limits<int>::max(),
|
| new_video_source.sink_wants().max_pixel_count);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, SkipsSameAdaptDownRequest_MaintainFramerateMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + SkipsSameAdaptDownRequest_MaintainFramerateMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kMaintainFramerate preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| @@ -1553,36 +1564,37 @@ TEST_F(ViEEncoderTest, SkipsSameAdaptDownRequest_MaintainFramerateMode) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| const int kLastMaxPixelCount = source.sink_wants().max_pixel_count;
|
| EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt down for same input resolution, expect no change.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| EXPECT_EQ(kLastMaxPixelCount, source.sink_wants().max_pixel_count);
|
| EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, SkipsSameOrLargerAdaptDownRequest_BalancedMode) {
|
| +TEST_F(VideoStreamEncoderTest, SkipsSameOrLargerAdaptDownRequest_BalancedMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(1);
|
| VerifyNoLimitation(source.sink_wants());
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
| @@ -1591,7 +1603,7 @@ TEST_F(ViEEncoderTest, SkipsSameOrLargerAdaptDownRequest_BalancedMode) {
|
| // Trigger adapt down for same input resolution, expect no change.
|
| source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(2);
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| EXPECT_EQ(kLastMaxPixelCount, source.sink_wants().max_pixel_count);
|
| EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
| @@ -1599,22 +1611,23 @@ TEST_F(ViEEncoderTest, SkipsSameOrLargerAdaptDownRequest_BalancedMode) {
|
| // Trigger adapt down for larger input resolution, expect no change.
|
| source.IncomingCapturedFrame(CreateFrame(3, kWidth + 1, kHeight + 1));
|
| sink_.WaitForEncodedFrame(3);
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| EXPECT_EQ(kLastMaxPixelCount, source.sink_wants().max_pixel_count);
|
| EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_MaintainFramerateMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + NoChangeForInitialNormalUsage_MaintainFramerateMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kMaintainFramerate preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| @@ -1624,22 +1637,23 @@ TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_MaintainFramerateMode) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt up, expect no change.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_MaintainResolutionMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + NoChangeForInitialNormalUsage_MaintainResolutionMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kMaintainResolution preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| @@ -1649,23 +1663,24 @@ TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_MaintainResolutionMode) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt up, expect no change.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_BalancedMode) {
|
| +TEST_F(VideoStreamEncoderTest, NoChangeForInitialNormalUsage_BalancedMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(kWidth, kHeight);
|
| @@ -1675,23 +1690,23 @@ TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_BalancedMode) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no change.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_DisabledMode) {
|
| +TEST_F(VideoStreamEncoderTest, NoChangeForInitialNormalUsage_DisabledMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kDegradationDisabled preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kDegradationDisabled);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| @@ -1702,24 +1717,25 @@ TEST_F(ViEEncoderTest, NoChangeForInitialNormalUsage_DisabledMode) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no change.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, AdaptsResolutionForLowQuality_MaintainFramerateMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + AdaptsResolutionForLowQuality_MaintainFramerateMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kMaintainFramerate preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| @@ -1729,7 +1745,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionForLowQuality_MaintainFramerateMode) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| @@ -1737,20 +1753,21 @@ TEST_F(ViEEncoderTest, AdaptsResolutionForLowQuality_MaintainFramerateMode) {
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no restriction.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, AdaptsFramerateForLowQuality_MaintainResolutionMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + AdaptsFramerateForLowQuality_MaintainResolutionMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| const int kInputFps = 30;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
| stats.input_frame_rate = kInputFps;
|
| @@ -1762,37 +1779,37 @@ TEST_F(ViEEncoderTest, AdaptsFramerateForLowQuality_MaintainResolutionMode) {
|
| VerifyNoLimitation(video_source_.sink_wants());
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(2);
|
| VerifyFpsMaxResolutionLt(video_source_.sink_wants(), kWidth * kHeight);
|
|
|
| // Enable kMaintainResolution preference.
|
| test::FrameForwarder new_video_source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &new_video_source,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
| VerifyNoLimitation(new_video_source.sink_wants());
|
|
|
| // Trigger adapt down, expect reduced framerate.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(3);
|
| VerifyFpsLtResolutionMax(new_video_source.sink_wants(), kInputFps);
|
|
|
| // Trigger adapt up, expect no restriction.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| VerifyNoLimitation(new_video_source.sink_wants());
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DoesNotScaleBelowSetResolutionLimit) {
|
| +TEST_F(VideoStreamEncoderTest, DoesNotScaleBelowSetResolutionLimit) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| const size_t kNumFrames = 10;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable adapter, expected input resolutions when downscaling:
|
| // 1280x720 -> 960x540 -> 640x360 -> 480x270 -> 320x180 (min resolution limit)
|
| @@ -1808,7 +1825,7 @@ TEST_F(ViEEncoderTest, DoesNotScaleBelowSetResolutionLimit) {
|
|
|
| // Trigger scale down.
|
| rtc::VideoSinkWants last_wants = video_source_.sink_wants();
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| EXPECT_GE(video_source_.sink_wants().max_pixel_count, kMinPixelsPerFrame);
|
|
|
| if (video_source_.sink_wants().max_pixel_count < last_wants.max_pixel_count)
|
| @@ -1819,19 +1836,19 @@ TEST_F(ViEEncoderTest, DoesNotScaleBelowSetResolutionLimit) {
|
| stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
| EXPECT_GT(downscales, 0);
|
| }
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest,
|
| +TEST_F(VideoStreamEncoderTest,
|
| AdaptsResolutionUpAndDownTwiceOnOveruse_MaintainFramerateMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kMaintainFramerate preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| @@ -1841,7 +1858,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| @@ -1849,7 +1866,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt up, expect no restriction.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| WaitForEncodedFrame(kWidth, kHeight);
|
| VerifyNoLimitation(source.sink_wants());
|
| @@ -1857,7 +1874,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
| WaitForEncodedFrame(4);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| @@ -1865,27 +1882,28 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(3, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| // Trigger adapt up, expect no restriction.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| source.IncomingCapturedFrame(CreateFrame(5, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(kWidth, kHeight);
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| EXPECT_EQ(4, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest,
|
| +TEST_F(VideoStreamEncoderTest,
|
| AdaptsResolutionUpAndDownTwiceForLowQuality_BalancedMode_NoFpsLimit) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(kWidth, kHeight);
|
| @@ -1894,7 +1912,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(2);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| @@ -1902,7 +1920,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no restriction.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(kWidth, kHeight);
|
| VerifyNoLimitation(source.sink_wants());
|
| @@ -1910,7 +1928,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(4);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| @@ -1918,26 +1936,26 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(3, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no restriction.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| source.IncomingCapturedFrame(CreateFrame(5, kWidth, kHeight));
|
| sink_.WaitForEncodedFrame(kWidth, kHeight);
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_EQ(4, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest,
|
| +TEST_F(VideoStreamEncoderTest,
|
| AdaptsResolutionOnOveruseAndLowQuality_MaintainFramerateMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kMaintainFramerate preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainFramerate);
|
|
|
| source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| @@ -1949,7 +1967,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt down, expect scaled down resolution (960x540).
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
| WaitForEncodedFrame(2);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
| @@ -1959,7 +1977,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt down, expect scaled down resolution (640x360).
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
| WaitForEncodedFrame(3);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
| @@ -1970,7 +1988,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt down, max cpu downgrades reached, expect no change.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
| WaitForEncodedFrame(4);
|
| VerifyFpsEqResolutionEq(source.sink_wants(), last_wants);
|
| @@ -1980,7 +1998,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger quality adapt down, expect scaled down resolution (480x270).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| source.IncomingCapturedFrame(CreateFrame(5, kWidth, kHeight));
|
| WaitForEncodedFrame(5);
|
| VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
| @@ -1990,7 +2008,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt up, expect upscaled resolution (640x360).
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| source.IncomingCapturedFrame(CreateFrame(6, kWidth, kHeight));
|
| WaitForEncodedFrame(6);
|
| VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
| @@ -2000,7 +2018,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt up, expect upscaled resolution (960x540).
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| source.IncomingCapturedFrame(CreateFrame(7, kWidth, kHeight));
|
| WaitForEncodedFrame(7);
|
| VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
| @@ -2011,7 +2029,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt up, no cpu downgrades, expect no change (960x540).
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| source.IncomingCapturedFrame(CreateFrame(8, kWidth, kHeight));
|
| WaitForEncodedFrame(8);
|
| VerifyFpsEqResolutionEq(source.sink_wants(), last_wants);
|
| @@ -2021,7 +2039,7 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger quality adapt up, expect no restriction (1280x720).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| source.IncomingCapturedFrame(CreateFrame(9, kWidth, kHeight));
|
| WaitForEncodedFrame(kWidth, kHeight);
|
| VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
| @@ -2031,29 +2049,29 @@ TEST_F(ViEEncoderTest,
|
| EXPECT_EQ(4, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, CpuLimitedHistogramIsReported) {
|
| +TEST_F(VideoStreamEncoderTest, CpuLimitedHistogramIsReported) {
|
| const int kWidth = 640;
|
| const int kHeight = 360;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
|
| video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
|
| WaitForEncodedFrame(i);
|
| }
|
|
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
|
| video_source_.IncomingCapturedFrame(CreateFrame(
|
| SendStatisticsProxy::kMinRequiredMetricsSamples + i, kWidth, kHeight));
|
| WaitForEncodedFrame(SendStatisticsProxy::kMinRequiredMetricsSamples + i);
|
| }
|
|
|
| - vie_encoder_->Stop();
|
| - vie_encoder_.reset();
|
| + video_stream_encoder_->Stop();
|
| + video_stream_encoder_.reset();
|
| stats_proxy_.reset();
|
|
|
| EXPECT_EQ(1,
|
| @@ -2062,12 +2080,13 @@ TEST_F(ViEEncoderTest, CpuLimitedHistogramIsReported) {
|
| 1, metrics::NumEvents("WebRTC.Video.CpuLimitedResolutionInPercent", 50));
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, CpuLimitedHistogramIsNotReportedForDisabledDegradation) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest,
|
| + CpuLimitedHistogramIsNotReportedForDisabledDegradation) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| const int kWidth = 640;
|
| const int kHeight = 360;
|
|
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &video_source_,
|
| VideoSendStream::DegradationPreference::kDegradationDisabled);
|
|
|
| @@ -2076,17 +2095,17 @@ TEST_F(ViEEncoderTest, CpuLimitedHistogramIsNotReportedForDisabledDegradation) {
|
| WaitForEncodedFrame(i);
|
| }
|
|
|
| - vie_encoder_->Stop();
|
| - vie_encoder_.reset();
|
| + video_stream_encoder_->Stop();
|
| + video_stream_encoder_.reset();
|
| stats_proxy_.reset();
|
|
|
| EXPECT_EQ(0,
|
| metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent"));
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, CallsBitrateObserver) {
|
| +TEST_F(VideoStreamEncoderTest, CallsBitrateObserver) {
|
| MockBitrateObserver bitrate_observer;
|
| - vie_encoder_->SetBitrateObserver(&bitrate_observer);
|
| + video_stream_encoder_->SetBitrateObserver(&bitrate_observer);
|
|
|
| const int kDefaultFps = 30;
|
| const BitrateAllocation expected_bitrate =
|
| @@ -2096,7 +2115,7 @@ TEST_F(ViEEncoderTest, CallsBitrateObserver) {
|
| // First called on bitrate updated, then again on first frame.
|
| EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(expected_bitrate))
|
| .Times(2);
|
| - vie_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
|
|
|
| const int64_t kStartTimeMs = 1;
|
| video_source_.IncomingCapturedFrame(
|
| @@ -2121,25 +2140,26 @@ TEST_F(ViEEncoderTest, CallsBitrateObserver) {
|
| kStartTimeMs + kProcessIntervalMs, codec_width_, codec_height_));
|
| WaitForEncodedFrame(kStartTimeMs + kProcessIntervalMs);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, OveruseDetectorUpdatedOnReconfigureAndAdaption) {
|
| +TEST_F(VideoStreamEncoderTest, OveruseDetectorUpdatedOnReconfigureAndAdaption) {
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| const int kFramerate = 24;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| // Insert a single frame, triggering initial configuration.
|
| source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - kDefaultFramerate);
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + kDefaultFramerate);
|
|
|
| // Trigger reconfigure encoder (without resetting the entire instance).
|
| VideoEncoderConfig video_encoder_config;
|
| @@ -2147,22 +2167,23 @@ TEST_F(ViEEncoderTest, OveruseDetectorUpdatedOnReconfigureAndAdaption) {
|
| video_encoder_config.number_of_streams = 1;
|
| video_encoder_config.video_stream_factory =
|
| new rtc::RefCountedObject<VideoStreamFactory>(1, kFramerate);
|
| - vie_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| - kMaxPayloadLength, false);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| + kMaxPayloadLength, false);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
| // Detector should be updated with fps limit from codec config.
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - kFramerate);
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + kFramerate);
|
|
|
| // Trigger overuse, max framerate should be reduced.
|
| VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
| stats.input_frame_rate = kFramerate;
|
| stats_proxy_->SetMockStats(stats);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
| int adapted_framerate =
|
| - vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
| EXPECT_LT(adapted_framerate, kFramerate);
|
|
|
| // Trigger underuse, max framerate should go back to codec configured fps.
|
| @@ -2170,23 +2191,25 @@ TEST_F(ViEEncoderTest, OveruseDetectorUpdatedOnReconfigureAndAdaption) {
|
| stats = stats_proxy_->GetStats();
|
| stats.input_frame_rate = adapted_framerate / 2;
|
| stats_proxy_->SetMockStats(stats);
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - kFramerate);
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + kFramerate);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, OveruseDetectorUpdatedRespectsFramerateAfterUnderuse) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + OveruseDetectorUpdatedRespectsFramerateAfterUnderuse) {
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| const int kLowFramerate = 15;
|
| const int kHighFramerate = 25;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| // Trigger initial configuration.
|
| @@ -2196,21 +2219,22 @@ TEST_F(ViEEncoderTest, OveruseDetectorUpdatedRespectsFramerateAfterUnderuse) {
|
| video_encoder_config.video_stream_factory =
|
| new rtc::RefCountedObject<VideoStreamFactory>(1, kLowFramerate);
|
| source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
| - vie_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| - kMaxPayloadLength, false);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| + kMaxPayloadLength, false);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - kLowFramerate);
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + kLowFramerate);
|
|
|
| // Trigger overuse, max framerate should be reduced.
|
| VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
| stats.input_frame_rate = kLowFramerate;
|
| stats_proxy_->SetMockStats(stats);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
| int adapted_framerate =
|
| - vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
| EXPECT_LT(adapted_framerate, kLowFramerate);
|
|
|
| // Reconfigure the encoder with a new (higher max framerate), max fps should
|
| @@ -2218,33 +2242,36 @@ TEST_F(ViEEncoderTest, OveruseDetectorUpdatedRespectsFramerateAfterUnderuse) {
|
| video_encoder_config.video_stream_factory =
|
| new rtc::RefCountedObject<VideoStreamFactory>(1, kHighFramerate);
|
| source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
| - vie_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| - kMaxPayloadLength, false);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| + kMaxPayloadLength, false);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - adapted_framerate);
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + adapted_framerate);
|
|
|
| // Trigger underuse, max framerate should go back to codec configured fps.
|
| stats = stats_proxy_->GetStats();
|
| stats.input_frame_rate = adapted_framerate;
|
| stats_proxy_->SetMockStats(stats);
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - kHighFramerate);
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + kHighFramerate);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, OveruseDetectorUpdatedOnDegradationPreferenceChange) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + OveruseDetectorUpdatedOnDegradationPreferenceChange) {
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| const int kFramerate = 24;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| // Trigger initial configuration.
|
| @@ -2254,37 +2281,39 @@ TEST_F(ViEEncoderTest, OveruseDetectorUpdatedOnDegradationPreferenceChange) {
|
| video_encoder_config.video_stream_factory =
|
| new rtc::RefCountedObject<VideoStreamFactory>(1, kFramerate);
|
| source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
| - vie_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| - kMaxPayloadLength, false);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| + kMaxPayloadLength, false);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - kFramerate);
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + kFramerate);
|
|
|
| // Trigger overuse, max framerate should be reduced.
|
| VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
| stats.input_frame_rate = kFramerate;
|
| stats_proxy_->SetMockStats(stats);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
| int adapted_framerate =
|
| - vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
| EXPECT_LT(adapted_framerate, kFramerate);
|
|
|
| // Change degradation preference to not enable framerate scaling. Target
|
| // framerate should be changed to codec defined limit.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainFramerate);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| - EXPECT_EQ(vie_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| - kFramerate);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
| + EXPECT_EQ(
|
| + video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
| + kFramerate);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DropsFramesAndScalesWhenBitrateIsTooLow) {
|
| +TEST_F(VideoStreamEncoderTest, DropsFramesAndScalesWhenBitrateIsTooLow) {
|
| const int kTooLowBitrateForFrameSizeBps = 10000;
|
| - vie_encoder_->OnBitrateUpdated(kTooLowBitrateForFrameSizeBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTooLowBitrateForFrameSizeBps, 0, 0);
|
| const int kWidth = 640;
|
| const int kHeight = 360;
|
|
|
| @@ -2307,12 +2336,13 @@ TEST_F(ViEEncoderTest, DropsFramesAndScalesWhenBitrateIsTooLow) {
|
|
|
| EXPECT_LT(video_source_.sink_wants().max_pixel_count, last_pixel_count);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, NumberOfDroppedFramesLimitedWhenBitrateIsTooLow) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + NumberOfDroppedFramesLimitedWhenBitrateIsTooLow) {
|
| const int kTooLowBitrateForFrameSizeBps = 10000;
|
| - vie_encoder_->OnBitrateUpdated(kTooLowBitrateForFrameSizeBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTooLowBitrateForFrameSizeBps, 0, 0);
|
| const int kWidth = 640;
|
| const int kHeight = 360;
|
|
|
| @@ -2329,16 +2359,17 @@ TEST_F(ViEEncoderTest, NumberOfDroppedFramesLimitedWhenBitrateIsTooLow) {
|
| // Expect the sink_wants to specify a scaled frame.
|
| EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, InitialFrameDropOffWithMaintainResolutionPreference) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + InitialFrameDropOffWithMaintainResolutionPreference) {
|
| const int kWidth = 640;
|
| const int kHeight = 360;
|
| - vie_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
|
|
|
| // Set degradation preference.
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &video_source_,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
|
|
| @@ -2346,36 +2377,37 @@ TEST_F(ViEEncoderTest, InitialFrameDropOffWithMaintainResolutionPreference) {
|
| // Frame should not be dropped, even if it's too large.
|
| WaitForEncodedFrame(1);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, InitialFrameDropOffWhenEncoderDisabledScaling) {
|
| +TEST_F(VideoStreamEncoderTest, InitialFrameDropOffWhenEncoderDisabledScaling) {
|
| const int kWidth = 640;
|
| const int kHeight = 360;
|
| fake_encoder_.SetQualityScaling(false);
|
| - vie_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
|
|
|
| // Force quality scaler reconfiguration by resetting the source.
|
| - vie_encoder_->SetSource(&video_source_,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &video_source_,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
|
|
| video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
| // Frame should not be dropped, even if it's too large.
|
| WaitForEncodedFrame(1);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| fake_encoder_.SetQualityScaling(true);
|
| }
|
|
|
| -TEST_F(ViEEncoderTest,
|
| +TEST_F(VideoStreamEncoderTest,
|
| ResolutionNotAdaptedForTooSmallFrame_MaintainFramerateMode) {
|
| const int kTooSmallWidth = 10;
|
| const int kTooSmallHeight = 10;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kMaintainFramerate preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->SetSource(
|
| &source, VideoSendStream::DegradationPreference::kMaintainFramerate);
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| @@ -2383,24 +2415,26 @@ TEST_F(ViEEncoderTest,
|
| // Trigger adapt down, too small frame, expect no change.
|
| source.IncomingCapturedFrame(CreateFrame(1, kTooSmallWidth, kTooSmallHeight));
|
| WaitForEncodedFrame(1);
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, ResolutionNotAdaptedForTooSmallFrame_BalancedMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + ResolutionNotAdaptedForTooSmallFrame_BalancedMode) {
|
| const int kTooSmallWidth = 10;
|
| const int kTooSmallHeight = 10;
|
| const int kFpsLimit = 7;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| test::FrameForwarder source;
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
| @@ -2408,7 +2442,7 @@ TEST_F(ViEEncoderTest, ResolutionNotAdaptedForTooSmallFrame_BalancedMode) {
|
| // Trigger adapt down, expect limited framerate.
|
| source.IncomingCapturedFrame(CreateFrame(1, kTooSmallWidth, kTooSmallHeight));
|
| WaitForEncodedFrame(1);
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| VerifyFpsEqResolutionMax(source.sink_wants(), kFpsLimit);
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
| @@ -2417,35 +2451,37 @@ TEST_F(ViEEncoderTest, ResolutionNotAdaptedForTooSmallFrame_BalancedMode) {
|
| // Trigger adapt down, too small frame, expect no change.
|
| source.IncomingCapturedFrame(CreateFrame(2, kTooSmallWidth, kTooSmallHeight));
|
| WaitForEncodedFrame(2);
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| VerifyFpsEqResolutionMax(source.sink_wants(), kFpsLimit);
|
| EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
| EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, FailingInitEncodeDoesntCauseCrash) {
|
| +TEST_F(VideoStreamEncoderTest, FailingInitEncodeDoesntCauseCrash) {
|
| fake_encoder_.ForceInitEncodeFailure(true);
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| ResetEncoder("VP8", 2, 1, true, false);
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(1, kFrameWidth, kFrameHeight));
|
| ExpectDroppedFrame();
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| // TODO(sprang): Extend this with fps throttling and any "balanced" extensions.
|
| -TEST_F(ViEEncoderTest, AdaptsResolutionOnOveruse_MaintainFramerateMode) {
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| +TEST_F(VideoStreamEncoderTest,
|
| + AdaptsResolutionOnOveruse_MaintainFramerateMode) {
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| // Enabled default VideoAdapter downscaling. First step is 3/4, not 3/5 as
|
| - // requested by ViEEncoder::VideoSourceProxy::RequestResolutionLowerThan().
|
| + // requested by
|
| + // VideoStreamEncoder::VideoSourceProxy::RequestResolutionLowerThan().
|
| video_source_.set_adaptation_enabled(true);
|
|
|
| video_source_.IncomingCapturedFrame(
|
| @@ -2453,27 +2489,28 @@ TEST_F(ViEEncoderTest, AdaptsResolutionOnOveruse_MaintainFramerateMode) {
|
| WaitForEncodedFrame(kFrameWidth, kFrameHeight);
|
|
|
| // Trigger CPU overuse, downscale by 3/4.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(2, kFrameWidth, kFrameHeight));
|
| WaitForEncodedFrame((kFrameWidth * 3) / 4, (kFrameHeight * 3) / 4);
|
|
|
| // Trigger CPU normal use, return to original resolution.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(3, kFrameWidth, kFrameHeight));
|
| WaitForEncodedFrame(kFrameWidth, kFrameHeight);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| int kFrameIntervalMs = rtc::kNumMillisecsPerSec / max_framerate_;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->SetSource(
|
| &video_source_,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
| video_source_.set_adaptation_enabled(true);
|
| @@ -2485,7 +2522,7 @@ TEST_F(ViEEncoderTest, AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| WaitForEncodedFrame(timestamp_ms);
|
|
|
| // Try to trigger overuse. No fps estimate available => no effect.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
|
|
| // Insert frames for one second to get a stable estimate.
|
| for (int i = 0; i < max_framerate_; ++i) {
|
| @@ -2496,7 +2533,7 @@ TEST_F(ViEEncoderTest, AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| }
|
|
|
| // Trigger CPU overuse, reduce framerate by 2/3.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| int num_frames_dropped = 0;
|
| for (int i = 0; i < max_framerate_; ++i) {
|
| timestamp_ms += kFrameIntervalMs;
|
| @@ -2515,7 +2552,7 @@ TEST_F(ViEEncoderTest, AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| kErrorMargin);
|
|
|
| // Trigger CPU overuse, reduce framerate by 2/3 again.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| num_frames_dropped = 0;
|
| for (int i = 0; i < max_framerate_; ++i) {
|
| timestamp_ms += kFrameIntervalMs;
|
| @@ -2531,7 +2568,7 @@ TEST_F(ViEEncoderTest, AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| kErrorMargin);
|
|
|
| // Go back up one step.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| num_frames_dropped = 0;
|
| for (int i = 0; i < max_framerate_; ++i) {
|
| timestamp_ms += kFrameIntervalMs;
|
| @@ -2547,7 +2584,7 @@ TEST_F(ViEEncoderTest, AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| kErrorMargin);
|
|
|
| // Go back up to original mode.
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| num_frames_dropped = 0;
|
| for (int i = 0; i < max_framerate_; ++i) {
|
| timestamp_ms += kFrameIntervalMs;
|
| @@ -2561,10 +2598,10 @@ TEST_F(ViEEncoderTest, AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
| }
|
| EXPECT_NEAR(num_frames_dropped, 0, kErrorMargin);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DoesntAdaptDownPastMinFramerate) {
|
| +TEST_F(VideoStreamEncoderTest, DoesntAdaptDownPastMinFramerate) {
|
| const int kFramerateFps = 5;
|
| const int kFrameIntervalMs = rtc::kNumMillisecsPerSec / kFramerateFps;
|
| const int kMinFpsFrameInterval = rtc::kNumMillisecsPerSec / kMinFramerateFps;
|
| @@ -2575,8 +2612,8 @@ TEST_F(ViEEncoderTest, DoesntAdaptDownPastMinFramerate) {
|
| // disable frame dropping and make testing easier.
|
| ResetEncoder("VP8", 1, 2, true, true);
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->SetSource(
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->SetSource(
|
| &video_source_,
|
| VideoSendStream::DegradationPreference::kMaintainResolution);
|
| video_source_.set_adaptation_enabled(true);
|
| @@ -2584,7 +2621,7 @@ TEST_F(ViEEncoderTest, DoesntAdaptDownPastMinFramerate) {
|
| int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
| // Trigger overuse as much as we can.
|
| - for (int i = 0; i < ViEEncoder::kMaxCpuResolutionDowngrades; ++i) {
|
| + for (int i = 0; i < VideoStreamEncoder::kMaxCpuResolutionDowngrades; ++i) {
|
| // Insert frames to get a new fps estimate...
|
| for (int j = 0; j < kFramerateFps; ++j) {
|
| video_source_.IncomingCapturedFrame(
|
| @@ -2592,7 +2629,7 @@ TEST_F(ViEEncoderTest, DoesntAdaptDownPastMinFramerate) {
|
| timestamp_ms += kFrameIntervalMs;
|
| }
|
| // ...and then try to adapt again.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| }
|
|
|
| // Drain any frame in the pipeline.
|
| @@ -2606,21 +2643,23 @@ TEST_F(ViEEncoderTest, DoesntAdaptDownPastMinFramerate) {
|
| WaitForEncodedFrame(timestamp_ms);
|
| }
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| const int64_t kFrameIntervalMs = 150;
|
| int64_t timestamp_ms = kFrameIntervalMs;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(kWidth, kHeight);
|
| @@ -2630,7 +2669,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution (960x540@30fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2640,7 +2679,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution (640x360@30fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2650,7 +2689,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect reduced fps (640x360@15fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2660,7 +2699,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(3, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution (480x270@15fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2670,7 +2709,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(4, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Restrict bitrate, trigger adapt down, expect reduced fps (480x270@10fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2680,7 +2719,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(5, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect scaled down resolution (320x180@10fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2690,7 +2729,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(6, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect reduced fps (320x180@7fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2701,7 +2740,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(7, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, min resolution reached, expect no change.
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2711,7 +2750,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(7, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt down, expect expect increased fps (320x180@10fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2721,7 +2760,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(8, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect upscaled resolution (480x270@10fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2731,7 +2770,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(9, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Increase bitrate, trigger adapt up, expect increased fps (480x270@15fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2741,7 +2780,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(10, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect upscaled resolution (640x360@15fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2751,7 +2790,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(11, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect increased fps (640x360@30fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2761,7 +2800,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(12, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect upscaled resolution (960x540@30fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2771,7 +2810,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(13, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no restriction (1280x720fps@30fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(kWidth, kHeight);
|
| @@ -2782,25 +2821,26 @@ TEST_F(ViEEncoderTest, AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
| EXPECT_EQ(14, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no change.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_EQ(14, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| +TEST_F(VideoStreamEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| const int kWidth = 1280;
|
| const int kHeight = 720;
|
| const int64_t kFrameIntervalMs = 150;
|
| int64_t timestamp_ms = kFrameIntervalMs;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(kWidth, kHeight);
|
| @@ -2813,7 +2853,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt down, expect scaled down resolution (960x540@30fps).
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2826,7 +2866,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt down, expect scaled down resolution (640x360@30fps).
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2839,7 +2879,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger quality adapt down, expect reduced fps (640x360@15fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2852,7 +2892,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt up, expect increased fps (640x360@30fps).
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2865,7 +2905,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger quality adapt up, expect upscaled resolution (960x540@30fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2878,7 +2918,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt up, expect no restriction (1280x720fps@30fps).
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(kWidth, kHeight);
|
| @@ -2892,27 +2932,29 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no change.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_EQ(4, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
| +TEST_F(VideoStreamEncoderTest,
|
| + AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
| const int kWidth = 640;
|
| const int kHeight = 360;
|
| const int kFpsLimit = 15;
|
| const int64_t kFrameIntervalMs = 150;
|
| int64_t timestamp_ms = kFrameIntervalMs;
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| // Enable kBalanced preference, no initial limitation.
|
| AdaptingFrameForwarder source;
|
| source.set_adaptation_enabled(true);
|
| - vie_encoder_->SetSource(&source,
|
| - VideoSendStream::DegradationPreference::kBalanced);
|
| + video_stream_encoder_->SetSource(
|
| + &source,
|
| + VideoSendStream::DegradationPreference::kBalanced);
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(kWidth, kHeight);
|
| @@ -2925,7 +2967,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt down, expect scaled down framerate (640x360@15fps).
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2938,7 +2980,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
| EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger quality adapt down, expect scaled down resolution (480x270@15fps).
|
| - vie_encoder_->TriggerQualityLow();
|
| + video_stream_encoder_->TriggerQualityLow();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2951,7 +2993,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger cpu adapt up, expect upscaled resolution (640x360@15fps).
|
| - vie_encoder_->TriggerCpuNormalUsage();
|
| + video_stream_encoder_->TriggerCpuNormalUsage();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2964,7 +3006,7 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
| EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger quality adapt up, expect increased fps (640x360@30fps).
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| timestamp_ms += kFrameIntervalMs;
|
| source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -2977,15 +3019,15 @@ TEST_F(ViEEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| // Trigger adapt up, expect no change.
|
| - vie_encoder_->TriggerQualityHigh();
|
| + video_stream_encoder_->TriggerQualityHigh();
|
| VerifyNoLimitation(source.sink_wants());
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
| EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, AcceptsFullHdAdaptedDownSimulcastFrames) {
|
| +TEST_F(VideoStreamEncoderTest, AcceptsFullHdAdaptedDownSimulcastFrames) {
|
| // Simulates simulcast behavior and makes highest stream resolutions divisible
|
| // by 4.
|
| class CroppingVideoStreamFactory
|
| @@ -3025,16 +3067,16 @@ TEST_F(ViEEncoderTest, AcceptsFullHdAdaptedDownSimulcastFrames) {
|
| const int kAdaptedFrameHeight = 808;
|
| const int kFramerate = 24;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| // Trigger reconfigure encoder (without resetting the entire instance).
|
| VideoEncoderConfig video_encoder_config;
|
| video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
|
| video_encoder_config.number_of_streams = 1;
|
| video_encoder_config.video_stream_factory =
|
| new rtc::RefCountedObject<CroppingVideoStreamFactory>(1, kFramerate);
|
| - vie_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| - kMaxPayloadLength, false);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
| + kMaxPayloadLength, false);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
| video_source_.set_adaptation_enabled(true);
|
|
|
| @@ -3043,21 +3085,21 @@ TEST_F(ViEEncoderTest, AcceptsFullHdAdaptedDownSimulcastFrames) {
|
| WaitForEncodedFrame(kFrameWidth, kFrameHeight);
|
|
|
| // Trigger CPU overuse, downscale by 3/4.
|
| - vie_encoder_->TriggerCpuOveruse();
|
| + video_stream_encoder_->TriggerCpuOveruse();
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(2, kFrameWidth, kFrameHeight));
|
| WaitForEncodedFrame(kAdaptedFrameWidth, kAdaptedFrameHeight);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, PeriodicallyUpdatesChannelParameters) {
|
| +TEST_F(VideoStreamEncoderTest, PeriodicallyUpdatesChannelParameters) {
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| const int kLowFps = 2;
|
| const int kHighFps = 30;
|
|
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
|
|
| int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
| max_framerate_ = kLowFps;
|
| @@ -3071,7 +3113,7 @@ TEST_F(ViEEncoderTest, PeriodicallyUpdatesChannelParameters) {
|
| }
|
|
|
| // Make sure encoder is updated with new target.
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| video_source_.IncomingCapturedFrame(
|
| CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
| WaitForEncodedFrame(timestamp_ms);
|
| @@ -3099,21 +3141,21 @@ TEST_F(ViEEncoderTest, PeriodicallyUpdatesChannelParameters) {
|
| // before.
|
| EXPECT_GT(fake_encoder_.GetConfiguredInputFramerate(), kLowFps);
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| -TEST_F(ViEEncoderTest, DoesNotUpdateBitrateAllocationWhenSuspended) {
|
| +TEST_F(VideoStreamEncoderTest, DoesNotUpdateBitrateAllocationWhenSuspended) {
|
| const int kFrameWidth = 1280;
|
| const int kFrameHeight = 720;
|
| const int kTargetBitrateBps = 1000000;
|
|
|
| MockBitrateObserver bitrate_observer;
|
| - vie_encoder_->SetBitrateObserver(&bitrate_observer);
|
| + video_stream_encoder_->SetBitrateObserver(&bitrate_observer);
|
|
|
| EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(_)).Times(1);
|
| // Initial bitrate update.
|
| - vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| - vie_encoder_->WaitUntilTaskQueueIsIdle();
|
| + video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
|
| + video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
| // Insert a first video frame, causes another bitrate update.
|
| int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
| @@ -3123,7 +3165,7 @@ TEST_F(ViEEncoderTest, DoesNotUpdateBitrateAllocationWhenSuspended) {
|
| WaitForEncodedFrame(timestamp_ms);
|
|
|
| // Next, simulate video suspension due to pacer queue overrun.
|
| - vie_encoder_->OnBitrateUpdated(0, 0, 1);
|
| + video_stream_encoder_->OnBitrateUpdated(0, 0, 1);
|
|
|
| // Skip ahead until a new periodic parameter update should have occured.
|
| timestamp_ms += vcm::VCMProcessTimer::kDefaultProcessIntervalMs;
|
| @@ -3137,7 +3179,7 @@ TEST_F(ViEEncoderTest, DoesNotUpdateBitrateAllocationWhenSuspended) {
|
| CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
| ExpectDroppedFrame();
|
|
|
| - vie_encoder_->Stop();
|
| + video_stream_encoder_->Stop();
|
| }
|
|
|
| } // namespace webrtc
|
|
|