VideoStreamEncoderTest: Use DataRate for some constants.
Use config from FakeEncoder in some tests.
Bug: none
Change-Id: I1d7e01f604f8aabb5d6815bb519ef2532d024d76
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/233243
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35138}
diff --git a/test/fake_encoder.cc b/test/fake_encoder.cc
index 04ce66b..7a55231 100644
--- a/test/fake_encoder.cc
+++ b/test/fake_encoder.cc
@@ -50,6 +50,7 @@
FakeEncoder::FakeEncoder(Clock* clock)
: clock_(clock),
+ num_initializations_(0),
callback_(nullptr),
max_target_bitrate_kbps_(-1),
pending_keyframe_(true),
@@ -81,6 +82,7 @@
const Settings& settings) {
MutexLock lock(&mutex_);
config_ = *config;
+ ++num_initializations_;
current_rate_settings_.bitrate.SetBitrate(0, 0, config_.startBitrate * 1000);
current_rate_settings_.framerate_fps = config_.maxFramerate;
pending_keyframe_ = true;
@@ -293,6 +295,16 @@
return static_cast<int>(current_rate_settings_.framerate_fps + 0.5);
}
+int FakeEncoder::GetNumInitializations() const {
+ MutexLock lock(&mutex_);
+ return num_initializations_;
+}
+
+const VideoCodec& FakeEncoder::config() const {
+ MutexLock lock(&mutex_);
+ return config_;
+}
+
FakeH264Encoder::FakeH264Encoder(Clock* clock)
: FakeEncoder(clock), idr_counter_(0) {}
diff --git a/test/fake_encoder.h b/test/fake_encoder.h
index 5257fc2..57cdbbc 100644
--- a/test/fake_encoder.h
+++ b/test/fake_encoder.h
@@ -55,9 +55,12 @@
int32_t Release() override;
void SetRates(const RateControlParameters& parameters)
RTC_LOCKS_EXCLUDED(mutex_) override;
- int GetConfiguredInputFramerate() const RTC_LOCKS_EXCLUDED(mutex_);
EncoderInfo GetEncoderInfo() const override;
+ int GetConfiguredInputFramerate() const RTC_LOCKS_EXCLUDED(mutex_);
+ int GetNumInitializations() const RTC_LOCKS_EXCLUDED(mutex_);
+ const VideoCodec& config() const RTC_LOCKS_EXCLUDED(mutex_);
+
static const char* kImplementationName;
protected:
@@ -96,6 +99,7 @@
Clock* const clock_;
VideoCodec config_ RTC_GUARDED_BY(mutex_);
+ int num_initializations_ RTC_GUARDED_BY(mutex_);
EncodedImageCallback* callback_ RTC_GUARDED_BY(mutex_);
RateControlParameters current_rate_settings_ RTC_GUARDED_BY(mutex_);
int max_target_bitrate_kbps_ RTC_GUARDED_BY(mutex_);
diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc
index 7edb332..294181e 100644
--- a/video/video_send_stream_tests.cc
+++ b/video/video_send_stream_tests.cc
@@ -2463,13 +2463,10 @@
public test::FakeEncoder {
public:
VideoCodecConfigObserver(VideoCodecType video_codec_type,
- const char* codec_name,
TaskQueueBase* task_queue)
: SendTest(VideoSendStreamTest::kDefaultTimeoutMs),
FakeEncoder(Clock::GetRealTimeClock()),
video_codec_type_(video_codec_type),
- codec_name_(codec_name),
- num_initializations_(0),
stream_(nullptr),
encoder_factory_(this),
task_queue_(task_queue) {
@@ -2482,7 +2479,7 @@
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
send_config->encoder_settings.encoder_factory = &encoder_factory_;
- send_config->rtp.payload_name = codec_name_;
+ send_config->rtp.payload_name = CodecTypeToPayloadString(video_codec_type_);
encoder_config->codec_type = video_codec_type_;
encoder_config->encoder_specific_settings = GetEncoderSpecificSettings();
@@ -2502,9 +2499,9 @@
const Settings& settings) override {
EXPECT_EQ(video_codec_type_, config->codecType);
VerifyCodecSpecifics(*config);
- ++num_initializations_;
+ int ret = FakeEncoder::InitEncode(config, settings);
init_encode_event_.Set();
- return FakeEncoder::InitEncode(config, settings);
+ return ret;
}
void InitCodecSpecifics();
@@ -2515,7 +2512,8 @@
void PerformTest() override {
EXPECT_TRUE(
init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
- ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
+ ASSERT_EQ(1, FakeEncoder::GetNumInitializations())
+ << "VideoEncoder not initialized.";
// Change encoder settings to actually trigger reconfiguration.
encoder_settings_.frameDroppingOn = !encoder_settings_.frameDroppingOn;
@@ -2525,7 +2523,7 @@
});
ASSERT_TRUE(
init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
- EXPECT_EQ(2u, num_initializations_)
+ EXPECT_EQ(2, FakeEncoder::GetNumInitializations())
<< "ReconfigureVideoEncoder did not reinitialize the encoder with "
"new encoder settings.";
}
@@ -2538,9 +2536,7 @@
T encoder_settings_;
const VideoCodecType video_codec_type_;
- const char* const codec_name_;
rtc::Event init_encode_event_;
- size_t num_initializations_;
VideoSendStream* stream_;
test::VideoEncoderProxyFactory encoder_factory_;
VideoEncoderConfig encoder_config_;
@@ -2650,14 +2646,12 @@
}
TEST_F(VideoSendStreamTest, EncoderSetupPropagatesVp8Config) {
- VideoCodecConfigObserver<VideoCodecVP8> test(kVideoCodecVP8, "VP8",
- task_queue());
+ VideoCodecConfigObserver<VideoCodecVP8> test(kVideoCodecVP8, task_queue());
RunBaseTest(&test);
}
TEST_F(VideoSendStreamTest, EncoderSetupPropagatesVp9Config) {
- VideoCodecConfigObserver<VideoCodecVP9> test(kVideoCodecVP9, "VP9",
- task_queue());
+ VideoCodecConfigObserver<VideoCodecVP9> test(kVideoCodecVP9, task_queue());
RunBaseTest(&test);
}
@@ -2669,8 +2663,7 @@
#define MAYBE_EncoderSetupPropagatesH264Config EncoderSetupPropagatesH264Config
#endif
TEST_F(VideoSendStreamTest, MAYBE_EncoderSetupPropagatesH264Config) {
- VideoCodecConfigObserver<VideoCodecH264> test(kVideoCodecH264, "H264",
- task_queue());
+ VideoCodecConfigObserver<VideoCodecH264> test(kVideoCodecH264, task_queue());
RunBaseTest(&test);
}
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index d9f1136..9782e83 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/video/video_stream_encoder_unittest.cc
@@ -89,10 +89,10 @@
const int kMinBalancedFramerateFps = 7;
const int64_t kFrameTimeoutMs = 100;
const size_t kMaxPayloadLength = 1440;
-const uint32_t kTargetBitrateBps = 1000000;
-const uint32_t kStartBitrateBps = 600000;
-const uint32_t kSimulcastTargetBitrateBps = 3150000;
-const uint32_t kLowTargetBitrateBps = kTargetBitrateBps / 10;
+const DataRate kTargetBitrate = DataRate::KilobitsPerSec(1000);
+const DataRate kLowTargetBitrate = DataRate::KilobitsPerSec(100);
+const DataRate kStartBitrate = DataRate::KilobitsPerSec(600);
+const DataRate kSimulcastTargetBitrate = DataRate::KilobitsPerSec(3150);
const int kMaxInitialFramedrop = 4;
const int kDefaultFramerate = 30;
const int64_t kFrameIntervalMs = rtc::kNumMillisecsPerSec / kDefaultFramerate;
@@ -102,7 +102,7 @@
const VideoEncoder::ResolutionBitrateLimits
kEncoderBitrateLimits720p(1280 * 720, 200 * 1000, 200 * 1000, 4000 * 1000);
-uint8_t optimal_sps[] = {0, 0, 0, 1, H264::NaluType::kSps,
+uint8_t kOptimalSps[] = {0, 0, 0, 1, H264::NaluType::kSps,
0x00, 0x00, 0x03, 0x03, 0xF4,
0x05, 0x03, 0xC7, 0xE0, 0x1B,
0x41, 0x10, 0x8D, 0x00};
@@ -688,10 +688,10 @@
video_stream_encoder_.reset(new VideoStreamEncoderUnderTest(
&time_controller_, GetTaskQueueFactory(), stats_proxy_.get(),
video_send_config_.encoder_settings, allocation_callback_type));
- video_stream_encoder_->SetSink(&sink_, false /* rotation_applied */);
+ video_stream_encoder_->SetSink(&sink_, /*rotation_applied=*/false);
video_stream_encoder_->SetSource(
&video_source_, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
- video_stream_encoder_->SetStartBitrate(kTargetBitrateBps);
+ video_stream_encoder_->SetStartBitrate(kTargetBitrate.bps());
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
kMaxPayloadLength);
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
@@ -716,7 +716,7 @@
layer.max_framerate = kDefaultFramerate;
}
video_encoder_config.max_bitrate_bps =
- num_streams == 1 ? kTargetBitrateBps : kSimulcastTargetBitrateBps;
+ num_streams == 1 ? kTargetBitrate.bps() : kSimulcastTargetBitrate.bps();
video_encoder_config.content_type =
screenshare ? VideoEncoderConfig::ContentType::kScreen
: VideoEncoderConfig::ContentType::kRealtimeVideo;
@@ -809,9 +809,7 @@
void VerifyAllocatedBitrate(const VideoBitrateAllocation& expected_bitrate) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(1, codec_width_, codec_height_));
@@ -854,11 +852,6 @@
RTC_DCHECK(time_controller_);
}
- VideoCodec codec_config() const {
- MutexLock lock(&mutex_);
- return config_;
- }
-
void BlockNextEncode() {
MutexLock lock(&local_mutex_);
block_next_encode_ = true;
@@ -1017,21 +1010,11 @@
return last_input_pixel_format_;
}
- int GetNumEncoderInitializations() const {
- MutexLock lock(&local_mutex_);
- return num_encoder_initializations_;
- }
-
int GetNumSetRates() const {
MutexLock lock(&local_mutex_);
return num_set_rates_;
}
- VideoCodec video_codec() const {
- MutexLock lock(&local_mutex_);
- return video_codec_;
- }
-
void SetPreferredPixelFormats(
absl::InlinedVector<VideoFrameBuffer::Type, kMaxPreferredPixelFormats>
pixel_formats) {
@@ -1100,9 +1083,6 @@
MutexLock lock(&local_mutex_);
EXPECT_EQ(initialized_, EncoderState::kUninitialized);
- ++num_encoder_initializations_;
- video_codec_ = *config;
-
if (config->codecType == kVideoCodecVP8) {
// Simulate setting up temporal layers, in order to validate the life
// cycle of these objects.
@@ -1184,11 +1164,9 @@
EncodedImageCallback* encoded_image_callback_ RTC_GUARDED_BY(local_mutex_) =
nullptr;
NiceMock<MockFecControllerOverride> fec_controller_override_;
- int num_encoder_initializations_ RTC_GUARDED_BY(local_mutex_) = 0;
std::vector<ResolutionBitrateLimits> resolution_bitrate_limits_
RTC_GUARDED_BY(local_mutex_);
int num_set_rates_ RTC_GUARDED_BY(local_mutex_) = 0;
- VideoCodec video_codec_ RTC_GUARDED_BY(local_mutex_);
absl::optional<VideoFrameBuffer::Type> last_input_pixel_format_
RTC_GUARDED_BY(local_mutex_);
absl::InlinedVector<VideoFrameBuffer::Type, kMaxPreferredPixelFormats>
@@ -1453,9 +1431,7 @@
TEST_F(VideoStreamEncoderTest, EncodeOneFrame) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
rtc::Event frame_destroyed_event;
video_source_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
WaitForEncodedFrame(1);
@@ -1475,9 +1451,7 @@
EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// The pending frame should be received.
WaitForEncodedFrame(2);
@@ -1489,15 +1463,13 @@
TEST_F(VideoStreamEncoderTest, DropsFramesWhenRateSetToZero) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
WaitForEncodedFrame(1);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(0), DataRate::BitsPerSec(0), DataRate::BitsPerSec(0),
- 0, 0, 0);
+ DataRate::Zero(), DataRate::Zero(), DataRate::Zero(), 0, 0, 0);
+
// The encoder will cache up to one frame for a short duration. Adding two
// frames means that the first frame will be dropped and the second frame will
// be sent when the encoder is resumed.
@@ -1505,9 +1477,7 @@
video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
WaitForEncodedFrame(3);
video_source_.IncomingCapturedFrame(CreateFrame(4, nullptr));
WaitForEncodedFrame(4);
@@ -1516,9 +1486,7 @@
TEST_F(VideoStreamEncoderTest, DropsFramesWithSameOrOldNtpTimestamp) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
WaitForEncodedFrame(1);
@@ -1532,9 +1500,7 @@
TEST_F(VideoStreamEncoderTest, DropsFrameAfterStop) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
WaitForEncodedFrame(1);
@@ -1561,9 +1527,7 @@
TEST_F(VideoStreamEncoderBlockedTest, DropsPendingFramesOnSlowEncode) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
int dropped_count = 0;
stats_proxy_->SetDroppedFrameCallback(
@@ -1588,9 +1552,7 @@
TEST_F(VideoStreamEncoderTest, NativeFrameWithoutI420SupportGetsDelivered) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
rtc::Event frame_destroyed_event;
video_source_.IncomingCapturedFrame(
@@ -1598,10 +1560,8 @@
WaitForEncodedFrame(1);
EXPECT_EQ(VideoFrameBuffer::Type::kNative,
fake_encoder_.GetLastInputPixelFormat());
- EXPECT_EQ(fake_encoder_.codec_config().width,
- fake_encoder_.GetLastInputWidth());
- EXPECT_EQ(fake_encoder_.codec_config().height,
- fake_encoder_.GetLastInputHeight());
+ EXPECT_EQ(fake_encoder_.config().width, fake_encoder_.GetLastInputWidth());
+ EXPECT_EQ(fake_encoder_.config().height, fake_encoder_.GetLastInputHeight());
video_stream_encoder_->Stop();
}
@@ -1616,15 +1576,13 @@
// Capture a frame at codec_width_/codec_height_.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
WaitForEncodedFrame(1);
// The encoder will have been configured once.
EXPECT_EQ(1, sink_.number_of_reconfigurations());
- EXPECT_EQ(codec_width_, fake_encoder_.codec_config().width);
- EXPECT_EQ(codec_height_, fake_encoder_.codec_config().height);
+ EXPECT_EQ(codec_width_, fake_encoder_.config().width);
+ EXPECT_EQ(codec_height_, fake_encoder_.config().height);
// Now send in a fake frame that needs to be cropped as the width/height
// aren't divisible by 4 (see CreateEncoderStreams above).
@@ -1634,18 +1592,14 @@
WaitForEncodedFrame(2);
EXPECT_EQ(VideoFrameBuffer::Type::kNative,
fake_encoder_.GetLastInputPixelFormat());
- EXPECT_EQ(fake_encoder_.codec_config().width,
- fake_encoder_.GetLastInputWidth());
- EXPECT_EQ(fake_encoder_.codec_config().height,
- fake_encoder_.GetLastInputHeight());
+ EXPECT_EQ(fake_encoder_.config().width, fake_encoder_.GetLastInputWidth());
+ EXPECT_EQ(fake_encoder_.config().height, fake_encoder_.GetLastInputHeight());
video_stream_encoder_->Stop();
}
TEST_F(VideoStreamEncoderTest, NonI420FramesShouldNotBeConvertedToI420) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateNV12Frame(1, codec_width_, codec_height_));
@@ -1657,9 +1611,7 @@
TEST_F(VideoStreamEncoderTest, NativeFrameGetsDelivered_NoFrameTypePreference) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
fake_encoder_.SetPreferredPixelFormats({});
@@ -1675,9 +1627,7 @@
TEST_F(VideoStreamEncoderTest,
NativeFrameGetsDelivered_PixelFormatPreferenceMatches) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
fake_encoder_.SetPreferredPixelFormats({VideoFrameBuffer::Type::kNV12});
@@ -1692,9 +1642,7 @@
TEST_F(VideoStreamEncoderTest, NativeFrameGetsDelivered_MappingIsNotFeasible) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Fake NV12 native frame does not allow mapping to I444.
fake_encoder_.SetPreferredPixelFormats({VideoFrameBuffer::Type::kI444});
@@ -1710,9 +1658,7 @@
TEST_F(VideoStreamEncoderTest, NativeFrameGetsDelivered_BackedByNV12) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
rtc::Event frame_destroyed_event;
video_source_.IncomingCapturedFrame(CreateFakeNV12NativeFrame(
@@ -1725,16 +1671,12 @@
TEST_F(VideoStreamEncoderTest, DropsFramesWhenCongestionWindowPushbackSet) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
WaitForEncodedFrame(1);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0.5);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0.5);
// The congestion window pushback is set to 0.5, which will drop 1/2 of
// frames. Adding two frames means that the first frame will be dropped and
// the second frame will be sent to the encoder.
@@ -1751,9 +1693,7 @@
TEST_F(VideoStreamEncoderTest,
ConfigureEncoderTriggersOnEncoderConfigurationChanged) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
EXPECT_EQ(0, sink_.number_of_reconfigurations());
// Capture a frame and wait for it to synchronize with the encoder thread.
@@ -1780,17 +1720,15 @@
TEST_F(VideoStreamEncoderTest, FrameResolutionChangeReconfigureEncoder) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Capture a frame and wait for it to synchronize with the encoder thread.
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
WaitForEncodedFrame(1);
// The encoder will have been configured once.
EXPECT_EQ(1, sink_.number_of_reconfigurations());
- EXPECT_EQ(codec_width_, fake_encoder_.codec_config().width);
- EXPECT_EQ(codec_height_, fake_encoder_.codec_config().height);
+ EXPECT_EQ(codec_width_, fake_encoder_.config().width);
+ EXPECT_EQ(codec_height_, fake_encoder_.config().height);
codec_width_ *= 2;
codec_height_ *= 2;
@@ -1798,8 +1736,8 @@
// with the encoder thread.
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
WaitForEncodedFrame(2);
- EXPECT_EQ(codec_width_, fake_encoder_.codec_config().width);
- EXPECT_EQ(codec_height_, fake_encoder_.codec_config().height);
+ EXPECT_EQ(codec_width_, fake_encoder_.config().width);
+ EXPECT_EQ(codec_height_, fake_encoder_.config().height);
EXPECT_EQ(2, sink_.number_of_reconfigurations());
video_stream_encoder_->Stop();
@@ -1808,9 +1746,7 @@
TEST_F(VideoStreamEncoderTest,
EncoderInstanceDestroyedBeforeAnotherInstanceCreated) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Capture a frame and wait for it to synchronize with the encoder thread.
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
@@ -1832,14 +1768,12 @@
TEST_F(VideoStreamEncoderTest, BitrateLimitsChangeReconfigureRateAllocator) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
- video_stream_encoder_->SetStartBitrate(kStartBitrateBps);
+ video_encoder_config.max_bitrate_bps = kTargetBitrate.bps();
+ video_stream_encoder_->SetStartBitrate(kStartBitrate.bps());
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
kMaxPayloadLength);
@@ -1849,15 +1783,15 @@
// The encoder will have been configured once when the first frame is
// received.
EXPECT_EQ(1, sink_.number_of_reconfigurations());
- EXPECT_EQ(kTargetBitrateBps,
+ EXPECT_EQ(kTargetBitrate.bps(),
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
- EXPECT_EQ(kStartBitrateBps,
+ EXPECT_EQ(kStartBitrate.bps(),
bitrate_allocator_factory_.codec_config().startBitrate * 1000);
test::FillEncoderConfiguration(kVideoCodecVP8, 1,
&video_encoder_config); //???
- video_encoder_config.max_bitrate_bps = kTargetBitrateBps * 2;
- video_stream_encoder_->SetStartBitrate(kStartBitrateBps * 2);
+ video_encoder_config.max_bitrate_bps = kTargetBitrate.bps() * 2;
+ video_stream_encoder_->SetStartBitrate(kStartBitrate.bps() * 2);
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
kMaxPayloadLength);
@@ -1867,11 +1801,11 @@
EXPECT_EQ(2, sink_.number_of_reconfigurations());
// Bitrate limits have changed - rate allocator should be reconfigured,
// encoder should not be reconfigured.
- EXPECT_EQ(kTargetBitrateBps * 2,
+ EXPECT_EQ(kTargetBitrate.bps() * 2,
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
- EXPECT_EQ(kStartBitrateBps * 2,
+ EXPECT_EQ(kStartBitrate.bps() * 2,
bitrate_allocator_factory_.codec_config().startBitrate * 1000);
- EXPECT_EQ(1, fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(1, fake_encoder_.GetNumInitializations());
video_stream_encoder_->Stop();
}
@@ -1879,9 +1813,7 @@
TEST_F(VideoStreamEncoderTest,
IntersectionOfEncoderAndAppBitrateLimitsUsedWhenBothProvided) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const uint32_t kMinEncBitrateKbps = 100;
const uint32_t kMaxEncBitrateKbps = 1000;
@@ -1927,9 +1859,7 @@
TEST_F(VideoStreamEncoderTest,
EncoderAndAppLimitsDontIntersectEncoderLimitsIgnored) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const uint32_t kMinAppBitrateKbps = 100;
const uint32_t kMaxAppBitrateKbps = 200;
@@ -1963,9 +1893,7 @@
TEST_F(VideoStreamEncoderTest,
EncoderRecommendedMaxAndMinBitratesUsedForGivenResolution) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const VideoEncoder::ResolutionBitrateLimits encoder_bitrate_limits_270p(
480 * 270, 34 * 1000, 12 * 1000, 1234 * 1000);
@@ -2033,9 +1961,7 @@
TEST_F(VideoStreamEncoderTest, EncoderRecommendedMaxBitrateCapsTargetBitrate) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
@@ -2101,48 +2027,48 @@
// The encoder bitrate limits for 270p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(1, 480, 270));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, kNumStreams);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, kNumStreams);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// The encoder bitrate limits for 360p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(2, 640, 360));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// Resolution b/w 270p and 360p. The encoder limits for 360p should be used.
video_source_.IncomingCapturedFrame(
CreateFrame(3, (640 + 480) / 2, (360 + 270) / 2));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// Resolution higher than 360p. Encoder limits should be ignored.
video_source_.IncomingCapturedFrame(CreateFrame(4, 960, 540));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits270p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits270p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits360p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits360p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// Resolution lower than 270p. The encoder limits for 270p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(5, 320, 180));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -2169,11 +2095,11 @@
kVideoCodecVP8, 480 * 270);
video_source_.IncomingCapturedFrame(CreateFrame(1, 480, 270));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, kNumStreams);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, kNumStreams);
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits270p->min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits270p->max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// Default bitrate limits for 360p should be used.
const absl::optional<VideoEncoder::ResolutionBitrateLimits>
@@ -2183,18 +2109,18 @@
video_source_.IncomingCapturedFrame(CreateFrame(2, 640, 360));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits360p->min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits360p->max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// Resolution b/w 270p and 360p. The default limits for 360p should be used.
video_source_.IncomingCapturedFrame(
CreateFrame(3, (640 + 480) / 2, (360 + 270) / 2));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits360p->min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits360p->max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// Default bitrate limits for 540p should be used.
const absl::optional<VideoEncoder::ResolutionBitrateLimits>
@@ -2204,9 +2130,9 @@
video_source_.IncomingCapturedFrame(CreateFrame(4, 960, 540));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits540p->min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kDefaultLimits540p->max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -2238,19 +2164,19 @@
// The encoder bitrate limits for 360p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, kNumStreams);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, kNumStreams);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// The encoder bitrate limits for 270p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(2, 960, 540));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -2283,11 +2209,11 @@
// on lowest stream, limits for 270p should not be used
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, kNumStreams);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, kNumStreams);
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits270p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits270p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -2318,19 +2244,19 @@
// The encoder bitrate limits for 270p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(1, 480, 270));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, kNumStreams);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, kNumStreams);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.max_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
// The max configured bitrate is less than the encoder limit for 360p.
video_source_.IncomingCapturedFrame(CreateFrame(2, 640, 360));
EXPECT_FALSE(WaitForFrame(1000));
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.min_bitrate_bps),
- fake_encoder_.video_codec().simulcastStream[1].minBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kMaxBitrateBps),
- fake_encoder_.video_codec().simulcastStream[1].maxBitrate * 1000);
+ fake_encoder_.config().simulcastStream[1].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -2404,9 +2330,8 @@
video_stream_encoder_->ConfigureEncoder(std::move(config), kMaxPayloadLength);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps), 0, 0, 0);
+ kSimulcastTargetBitrate, kSimulcastTargetBitrate, kSimulcastTargetBitrate,
+ 0, 0, 0);
// Wait for all layers before triggering event.
sink_.SetNumExpectedLayers(num_streams);
@@ -2415,7 +2340,7 @@
int64_t timestamp_ms = kFrameIntervalMs;
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, 1280, 720));
WaitForEncodedFrame(timestamp_ms);
- EXPECT_EQ(1, fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(1, fake_encoder_.GetNumInitializations());
// On the 2nd frame, we should be receiving a correctly aligned resolution.
// (It's up the to the encoder to potentially drop the previous frame,
@@ -2423,9 +2348,9 @@
timestamp_ms += kFrameIntervalMs;
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, 1280, 720));
WaitForEncodedFrame(timestamp_ms);
- EXPECT_GE(fake_encoder_.GetNumEncoderInitializations(), 1);
+ EXPECT_GE(fake_encoder_.GetNumInitializations(), 1);
- VideoCodec codec = fake_encoder_.video_codec();
+ VideoCodec codec = fake_encoder_.config();
EXPECT_EQ(codec.numberOfSimulcastStreams, num_streams);
// Frame size should be a multiple of the requested alignment.
for (int i = 0; i < codec.numberOfSimulcastStreams; ++i) {
@@ -2450,9 +2375,7 @@
// Enable BALANCED preference, no initial limitation.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->SetSource(&video_source_,
webrtc::DegradationPreference::BALANCED);
EXPECT_THAT(video_source_.sink_wants(), UnlimitedSinkWants());
@@ -2538,10 +2461,8 @@
TEST_F(VideoStreamEncoderTest,
SinkWantsNotChangedByResourceLimitedBeforeDegradationPreferenceChange) {
- video_stream_encoder_->OnBitrateUpdated(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ video_stream_encoder_->OnBitrateUpdated(kTargetBitrate, kTargetBitrate,
+ kTargetBitrate, 0, 0, 0);
EXPECT_THAT(video_source_.sink_wants(), UnlimitedSinkWants());
const int kFrameWidth = 1280;
@@ -2651,9 +2572,7 @@
TEST_F(VideoStreamEncoderTest, SinkWantsStoredByDegradationPreference) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
EXPECT_THAT(video_source_.sink_wants(), UnlimitedSinkWants());
const int kFrameWidth = 1280;
@@ -2765,9 +2684,7 @@
TEST_F(VideoStreamEncoderTest, StatsTracksQualityAdaptationStats) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 1280;
const int kHeight = 720;
@@ -2801,9 +2718,7 @@
TEST_F(VideoStreamEncoderTest, StatsTracksCpuAdaptationStats) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 1280;
const int kHeight = 720;
@@ -2837,9 +2752,7 @@
TEST_F(VideoStreamEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 1280;
const int kHeight = 720;
@@ -2908,9 +2821,7 @@
TEST_F(VideoStreamEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 1280;
const int kHeight = 720;
@@ -2971,9 +2882,7 @@
TEST_F(VideoStreamEncoderTest,
QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 1280;
const int kHeight = 720;
@@ -3029,9 +2938,7 @@
TEST_F(VideoStreamEncoderTest,
StatsTracksCpuAdaptationStatsWhenSwitchingSource_Balanced) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 1280;
const int kHeight = 720;
@@ -3096,9 +3003,7 @@
TEST_F(VideoStreamEncoderTest,
StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 1280;
const int kHeight = 720;
@@ -3235,9 +3140,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Expect no scaling to begin with.
EXPECT_THAT(video_source_.sink_wants(), UnlimitedSinkWants());
@@ -3286,9 +3189,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
test::FrameForwarder source;
@@ -3322,9 +3223,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
test::FrameForwarder source;
@@ -3367,9 +3266,7 @@
const int kHeight = 360;
const int64_t kFrameIntervalMs = 150;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -3476,9 +3373,7 @@
const int kHeight = 720;
const int64_t kFrameIntervalMs = 150;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -3617,9 +3512,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
test::FrameForwarder source;
@@ -3646,9 +3539,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable MAINTAIN_RESOLUTION preference, no initial limitation.
test::FrameForwarder source;
@@ -3674,9 +3565,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
test::FrameForwarder source;
@@ -3704,9 +3593,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable DISABLED preference, no initial limitation.
test::FrameForwarder source;
@@ -3735,9 +3622,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -3776,9 +3661,7 @@
const int kHeight = 720;
const int kInputFps = 30;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
VideoSendStream::Stats stats = stats_proxy_->GetStats();
stats.input_frame_rate = kInputFps;
@@ -3826,9 +3709,7 @@
const size_t kNumFrames = 10;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable adapter, expected input resolutions when downscaling:
// 1280x720 -> 960x540 -> 640x360 -> 480x270 -> 320x180 (kMinPixelsPerFrame)
@@ -3864,9 +3745,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -3927,9 +3806,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -4075,17 +3952,16 @@
void SetupTest() {
// Reset encoder for field trials to take effect.
ConfigureEncoder(video_encoder_config_.Copy());
- OnBitrateUpdated(kTargetBitrateBps);
+ OnBitrateUpdated(kTargetBitrate);
// Enable BALANCED preference.
source_.set_adaptation_enabled(true);
video_stream_encoder_->SetSource(&source_, DegradationPreference::BALANCED);
}
- void OnBitrateUpdated(int bitrate_bps) {
+ void OnBitrateUpdated(DataRate bitrate) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(bitrate_bps), DataRate::BitsPerSec(bitrate_bps),
- DataRate::BitsPerSec(bitrate_bps), 0, 0, 0);
+ bitrate, bitrate, bitrate, 0, 0, 0);
}
void InsertFrame() {
@@ -4176,9 +4052,9 @@
"pixels:57600|129600|230400,fps:7|10|14,kbps:0|0|425/");
SetupTest();
- const int kMinBitrateBps = 425000;
- const int kTooLowMinBitrateBps = 424000;
- OnBitrateUpdated(kTooLowMinBitrateBps);
+ const DataRate kMinBitrate = DataRate::KilobitsPerSec(425);
+ const DataRate kTooLowMinBitrate = DataRate::KilobitsPerSec(424);
+ OnBitrateUpdated(kTooLowMinBitrate);
InsertFrameAndWaitForEncoded();
EXPECT_THAT(source_.sink_wants(), FpsMaxResolutionMax());
@@ -4209,7 +4085,7 @@
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_quality_adapt_changes);
// Trigger adapt up, expect upscaled fps (target bitrate == min bitrate).
- OnBitrateUpdated(kMinBitrateBps);
+ OnBitrateUpdated(kMinBitrate);
video_stream_encoder_->TriggerQualityHigh();
InsertFrameAndWaitForEncoded();
EXPECT_EQ(source_.sink_wants().max_framerate_fps, 14);
@@ -4224,7 +4100,7 @@
"WebRTC-Video-BalancedDegradationSettings/"
"pixels:57600|129600|230400,fps:7|24|24/");
SetupTest();
- OnBitrateUpdated(kLowTargetBitrateBps);
+ OnBitrateUpdated(kLowTargetBitrate);
EXPECT_THAT(source_.sink_wants(), UnlimitedSinkWants());
@@ -4256,9 +4132,9 @@
"pixels:57600|129600|230400,fps:7|10|14,kbps_res:0|0|435/");
SetupTest();
- const int kResolutionMinBitrateBps = 435000;
- const int kTooLowMinResolutionBitrateBps = 434000;
- OnBitrateUpdated(kTooLowMinResolutionBitrateBps);
+ const DataRate kResolutionMinBitrate = DataRate::KilobitsPerSec(435);
+ const DataRate kTooLowMinResolutionBitrate = DataRate::KilobitsPerSec(434);
+ OnBitrateUpdated(kTooLowMinResolutionBitrate);
InsertFrameAndWaitForEncoded();
EXPECT_THAT(source_.sink_wants(), FpsMaxResolutionMax());
@@ -4294,7 +4170,7 @@
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_quality_adapt_changes);
// Trigger adapt up, expect upscaled res (target bitrate == min bitrate).
- OnBitrateUpdated(kResolutionMinBitrateBps);
+ OnBitrateUpdated(kResolutionMinBitrate);
video_stream_encoder_->TriggerQualityHigh();
InsertFrameAndWaitForEncoded();
EXPECT_THAT(source_.sink_wants(), FpsEqResolutionGt(source_.last_wants()));
@@ -4310,11 +4186,11 @@
"pixels:57600|129600|230400,fps:7|10|14,kbps:0|0|425,kbps_res:0|0|435/");
SetupTest();
- const int kMinBitrateBps = 425000;
- const int kTooLowMinBitrateBps = 424000;
- const int kResolutionMinBitrateBps = 435000;
- const int kTooLowMinResolutionBitrateBps = 434000;
- OnBitrateUpdated(kTooLowMinBitrateBps);
+ const DataRate kMinBitrate = DataRate::KilobitsPerSec(425);
+ const DataRate kTooLowMinBitrate = DataRate::KilobitsPerSec(424);
+ const DataRate kResolutionMinBitrate = DataRate::KilobitsPerSec(435);
+ const DataRate kTooLowMinResolutionBitrate = DataRate::KilobitsPerSec(434);
+ OnBitrateUpdated(kTooLowMinBitrate);
InsertFrameAndWaitForEncoded();
EXPECT_THAT(source_.sink_wants(), FpsMaxResolutionMax());
@@ -4344,20 +4220,20 @@
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_quality_adapt_changes);
// Trigger adapt up, expect upscaled fps (target bitrate == min bitrate).
- OnBitrateUpdated(kMinBitrateBps);
+ OnBitrateUpdated(kMinBitrate);
video_stream_encoder_->TriggerQualityHigh();
InsertFrameAndWaitForEncoded();
EXPECT_THAT(source_.sink_wants(), FpsGtResolutionEq(source_.last_wants()));
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_quality_adapt_changes);
// Trigger adapt up, expect no upscale in res (target bitrate < min bitrate).
- OnBitrateUpdated(kTooLowMinResolutionBitrateBps);
+ OnBitrateUpdated(kTooLowMinResolutionBitrate);
video_stream_encoder_->TriggerQualityHigh();
InsertFrameAndWaitForEncoded();
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_quality_adapt_changes);
// Trigger adapt up, expect upscaled res (target bitrate == min bitrate).
- OnBitrateUpdated(kResolutionMinBitrateBps);
+ OnBitrateUpdated(kResolutionMinBitrate);
video_stream_encoder_->TriggerQualityHigh();
InsertFrameAndWaitForEncoded();
EXPECT_THAT(source_.sink_wants(), FpsEqResolutionGt(source_.last_wants()));
@@ -4371,9 +4247,7 @@
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -4518,9 +4392,7 @@
const int kHeight = 360;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
@@ -4547,9 +4419,7 @@
TEST_F(VideoStreamEncoderTest,
CpuLimitedHistogramIsNotReportedForDisabledDegradation) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kWidth = 640;
const int kHeight = 360;
@@ -4576,14 +4446,12 @@
const int kDefaultFps = 30;
const VideoBitrateAllocation expected_bitrate =
- SimulcastRateAllocator(fake_encoder_.codec_config())
- .Allocate(VideoBitrateAllocationParameters(kLowTargetBitrateBps,
+ SimulcastRateAllocator(fake_encoder_.config())
+ .Allocate(VideoBitrateAllocationParameters(kLowTargetBitrate.bps(),
kDefaultFps));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(CurrentTimeMs(), codec_width_, codec_height_));
@@ -4623,9 +4491,7 @@
const int kDefaultFps = 30;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(CurrentTimeMs(), codec_width_, codec_height_));
@@ -4633,13 +4499,13 @@
EXPECT_EQ(sink_.number_of_layers_allocations(), 1);
VideoLayersAllocation last_layer_allocation =
sink_.GetLastVideoLayersAllocation();
- // kLowTargetBitrateBps is only enough for one spatial layer.
+ // kLowTargetBitrate is only enough for one spatial layer.
ASSERT_EQ(last_layer_allocation.active_spatial_layers.size(), 1u);
VideoBitrateAllocation bitrate_allocation =
fake_encoder_.GetAndResetLastRateControlSettings()->target_bitrate;
// Check that encoder has been updated too, not just allocation observer.
- EXPECT_EQ(bitrate_allocation.get_sum_bps(), kLowTargetBitrateBps);
+ EXPECT_EQ(bitrate_allocation.get_sum_bps(), kLowTargetBitrate.bps());
AdvanceTime(TimeDelta::Seconds(1) / kDefaultFps);
// VideoLayersAllocation might be updated if frame rate changes.
@@ -4675,7 +4541,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP8,
/* num_streams*/ 3, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
video_encoder_config.encoder_specific_settings =
@@ -4693,9 +4559,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -4720,7 +4584,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP8,
/* num_streams*/ 3, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
video_encoder_config.encoder_specific_settings =
@@ -4738,9 +4602,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -4764,7 +4626,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP9,
/* num_streams*/ 1, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
@@ -4780,9 +4642,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -4808,7 +4668,7 @@
// rate.
EXPECT_EQ(last_layer_allocation.active_spatial_layers[1]
.target_bitrate_per_temporal_layer[1],
- DataRate::BitsPerSec(kTargetBitrateBps));
+ kTargetBitrate);
video_stream_encoder_->Stop();
}
@@ -4819,7 +4679,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP9,
/* num_streams*/ 1, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
@@ -4835,9 +4695,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -4856,7 +4714,7 @@
// rate.
EXPECT_EQ(last_layer_allocation.active_spatial_layers[1]
.target_bitrate_per_temporal_layer[0],
- DataRate::BitsPerSec(kTargetBitrateBps));
+ kTargetBitrate);
video_stream_encoder_->Stop();
}
@@ -4867,7 +4725,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP9,
/* num_streams*/ 1, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
@@ -4883,9 +4741,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -4903,7 +4759,7 @@
// Since KSVC is, spatial layers are independend except on key frames.
EXPECT_LT(last_layer_allocation.active_spatial_layers[1]
.target_bitrate_per_temporal_layer[1],
- DataRate::BitsPerSec(kTargetBitrateBps));
+ kTargetBitrate);
video_stream_encoder_->Stop();
}
@@ -4915,7 +4771,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP9,
/* num_streams*/ 1, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
@@ -4936,9 +4792,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -4962,7 +4816,7 @@
// rate.
EXPECT_EQ(last_layer_allocation.active_spatial_layers[1]
.target_bitrate_per_temporal_layer[1],
- DataRate::BitsPerSec(kTargetBitrateBps));
+ kTargetBitrate);
video_stream_encoder_->Stop();
}
@@ -4974,7 +4828,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP9,
/* num_streams*/ 1, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
@@ -4993,9 +4847,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -5026,7 +4878,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(VideoCodecType::kVideoCodecVP9,
/* num_streams*/ 1, &video_encoder_config);
- video_encoder_config.max_bitrate_bps = 2 * kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = 2 * kTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
@@ -5047,9 +4899,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -5065,7 +4915,7 @@
EXPECT_EQ(last_layer_allocation.active_spatial_layers[0].spatial_id, 0);
EXPECT_EQ(last_layer_allocation.active_spatial_layers[0]
.target_bitrate_per_temporal_layer[1],
- DataRate::BitsPerSec(kTargetBitrateBps));
+ kTargetBitrate);
video_stream_encoder_->Stop();
}
@@ -5074,9 +4924,7 @@
VideoStreamEncoder::BitrateAllocationCallbackType::
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(CurrentTimeMs(), 1280, 720));
WaitForEncodedFrame(CurrentTimeMs());
@@ -5090,7 +4938,7 @@
SizeIs(1));
EXPECT_EQ(last_layer_allocation.active_spatial_layers[0]
.target_bitrate_per_temporal_layer[0],
- DataRate::BitsPerSec(kTargetBitrateBps));
+ kTargetBitrate);
EXPECT_EQ(last_layer_allocation.active_spatial_layers[0].width, 1280);
EXPECT_EQ(last_layer_allocation.active_spatial_layers[0].height, 720);
EXPECT_EQ(last_layer_allocation.active_spatial_layers[0].frame_rate_fps, 30);
@@ -5104,9 +4952,7 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(CurrentTimeMs(), codec_width_, codec_height_));
@@ -5114,16 +4960,15 @@
EXPECT_EQ(sink_.number_of_layers_allocations(), 1);
VideoLayersAllocation last_layer_allocation =
sink_.GetLastVideoLayersAllocation();
- // kLowTargetBitrateBps is only enough for one spatial layer.
+ // kLowTargetBitrate is only enough for one spatial layer.
ASSERT_EQ(last_layer_allocation.active_spatial_layers.size(), 1u);
EXPECT_EQ(last_layer_allocation.active_spatial_layers[0]
.target_bitrate_per_temporal_layer[0],
- DataRate::BitsPerSec(kLowTargetBitrateBps));
+ kLowTargetBitrate);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps), 0, 0, 0);
+ kSimulcastTargetBitrate, kSimulcastTargetBitrate, kSimulcastTargetBitrate,
+ 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(CurrentTimeMs(), codec_width_, codec_height_));
WaitForEncodedFrame(CurrentTimeMs());
@@ -5145,9 +4990,8 @@
kVideoLayersAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps), 0, 0, 0);
+ kSimulcastTargetBitrate, kSimulcastTargetBitrate, kSimulcastTargetBitrate,
+ 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(CurrentTimeMs(), codec_width_, codec_height_));
@@ -5185,11 +5029,11 @@
fake_encoder_.SetTemporalLayersSupported(0, true);
// Bitrate allocated across temporal layers.
- const int kTl0Bps = kTargetBitrateBps *
+ const int kTl0Bps = kTargetBitrate.bps() *
webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
kNumTemporalLayers, /*temporal_id*/ 0,
/*base_heavy_tl3_alloc*/ false);
- const int kTl1Bps = kTargetBitrateBps *
+ const int kTl1Bps = kTargetBitrate.bps() *
webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
kNumTemporalLayers, /*temporal_id*/ 1,
/*base_heavy_tl3_alloc*/ false);
@@ -5211,7 +5055,7 @@
// Temporal layers not supported by the encoder.
// Total bitrate should be at ti:0.
VideoBitrateAllocation expected_bitrate;
- expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 0, kTargetBitrateBps);
+ expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 0, kTargetBitrate.bps());
VerifyAllocatedBitrate(expected_bitrate);
video_stream_encoder_->Stop();
@@ -5240,7 +5084,7 @@
kS0Bps *
webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
/*num_layers*/ 2, /*temporal_id*/ 1, /*base_heavy_tl3_alloc*/ false);
- const int kS1Bps = kTargetBitrateBps - kS0Tl1Bps;
+ const int kS1Bps = kTargetBitrate.bps() - kS0Tl1Bps;
// Temporal layers not supported by si:1.
VideoBitrateAllocation expected_bitrate;
expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 0, kS0Tl0Bps);
@@ -5257,9 +5101,7 @@
const int kFramerate = 24;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
&source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
@@ -5276,7 +5118,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
video_encoder_config.simulcast_layers[0].max_framerate = kFramerate;
- video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kTargetBitrate.bps();
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
kMaxPayloadLength);
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
@@ -5318,9 +5160,7 @@
const int kHighFramerate = 25;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
&source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
@@ -5329,7 +5169,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
video_encoder_config.simulcast_layers[0].max_framerate = kLowFramerate;
- video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kTargetBitrate.bps();
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
kMaxPayloadLength);
@@ -5381,9 +5221,7 @@
const int kFramerate = 24;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
&source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
@@ -5392,7 +5230,7 @@
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
video_encoder_config.simulcast_layers[0].max_framerate = kFramerate;
- video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kTargetBitrate.bps();
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
kMaxPayloadLength);
@@ -5487,9 +5325,7 @@
const int kWidth = 640;
const int kHeight = 360;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
// Set degradation preference.
video_stream_encoder_->SetSource(
@@ -5514,9 +5350,7 @@
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
kMaxPayloadLength);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
// Force quality scaler reconfiguration by resetting the source.
video_stream_encoder_->SetSource(&video_source_,
@@ -5536,15 +5370,13 @@
"initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2/");
// Reset encoder for field trials to take effect.
ConfigureEncoder(video_encoder_config_.Copy());
- const int kNotTooLowBitrateForFrameSizeBps = kTargetBitrateBps * 0.2;
- const int kTooLowBitrateForFrameSizeBps = kTargetBitrateBps * 0.19;
+ const int kNotTooLowBitrateForFrameSizeBps = kTargetBitrate.bps() * 0.2;
+ const int kTooLowBitrateForFrameSizeBps = kTargetBitrate.bps() * 0.19;
const int kWidth = 640;
const int kHeight = 360;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
// Frame should not be dropped.
WaitForEncodedFrame(1);
@@ -5578,15 +5410,13 @@
"initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2/");
fake_encoder_.SetQualityScaling(false);
ConfigureEncoder(video_encoder_config_.Copy());
- const int kNotTooLowBitrateForFrameSizeBps = kTargetBitrateBps * 0.2;
- const int kTooLowBitrateForFrameSizeBps = kTargetBitrateBps * 0.19;
+ const int kNotTooLowBitrateForFrameSizeBps = kTargetBitrate.bps() * 0.2;
+ const int kTooLowBitrateForFrameSizeBps = kTargetBitrate.bps() * 0.19;
const int kWidth = 640;
const int kHeight = 360;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
// Frame should not be dropped.
WaitForEncodedFrame(1);
@@ -5615,16 +5445,14 @@
}
TEST_F(VideoStreamEncoderTest, InitialFrameDropActivatesWhenLayersChange) {
- const int kLowTargetBitrateBps = 400000;
+ const DataRate kLowTargetBitrate = DataRate::KilobitsPerSec(400);
// Set simulcast.
ResetEncoder("VP8", 3, 1, 1, false);
fake_encoder_.SetQualityScaling(true);
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
// Frame should not be dropped.
WaitForEncodedFrame(1);
@@ -5642,7 +5470,7 @@
layer.num_temporal_layers = 1;
layer.max_framerate = kDefaultFramerate;
}
- video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
@@ -5678,16 +5506,14 @@
}
TEST_F(VideoStreamEncoderTest, InitialFrameDropActivatesWhenSVCLayersChange) {
- const int kLowTargetBitrateBps = 400000;
+ const DataRate kLowTargetBitrate = DataRate::KilobitsPerSec(400);
// Set simulcast.
ResetEncoder("VP9", 1, 1, 3, false);
fake_encoder_.SetQualityScaling(true);
const int kWidth = 1280;
const int kHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
// Frame should not be dropped.
WaitForEncodedFrame(1);
@@ -5704,7 +5530,7 @@
video_encoder_config.encoder_specific_settings =
rtc::make_ref_counted<VideoEncoderConfig::Vp9EncoderSpecificSettings>(
vp9_settings);
- video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
// Currently simulcast layers `active` flags are used to inidicate
@@ -5763,7 +5589,7 @@
video_encoder_config.encoder_specific_settings =
rtc::make_ref_counted<VideoEncoderConfig::Vp9EncoderSpecificSettings>(
vp9_settings);
- video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
// Simulcast layers are used to indicate which spatial layers are active.
@@ -5779,32 +5605,30 @@
// The encoder bitrate limits for 360p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, 1);
- EXPECT_EQ(fake_encoder_.video_codec().codecType,
- VideoCodecType::kVideoCodecVP9);
- EXPECT_EQ(fake_encoder_.video_codec().VP9()->numberOfSpatialLayers, 2);
- EXPECT_TRUE(fake_encoder_.video_codec().spatialLayers[0].active);
- EXPECT_EQ(640, fake_encoder_.video_codec().spatialLayers[0].width);
- EXPECT_EQ(360, fake_encoder_.video_codec().spatialLayers[0].height);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, 1);
+ EXPECT_EQ(fake_encoder_.config().codecType, VideoCodecType::kVideoCodecVP9);
+ EXPECT_EQ(fake_encoder_.config().VP9().numberOfSpatialLayers, 2);
+ EXPECT_TRUE(fake_encoder_.config().spatialLayers[0].active);
+ EXPECT_EQ(640, fake_encoder_.config().spatialLayers[0].width);
+ EXPECT_EQ(360, fake_encoder_.config().spatialLayers[0].height);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.min_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].minBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits360p.max_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].maxBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].maxBitrate * 1000);
// The encoder bitrate limits for 270p should be used.
video_source_.IncomingCapturedFrame(CreateFrame(2, 960, 540));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, 1);
- EXPECT_EQ(fake_encoder_.video_codec().codecType,
- VideoCodecType::kVideoCodecVP9);
- EXPECT_EQ(fake_encoder_.video_codec().VP9()->numberOfSpatialLayers, 2);
- EXPECT_TRUE(fake_encoder_.video_codec().spatialLayers[0].active);
- EXPECT_EQ(480, fake_encoder_.video_codec().spatialLayers[0].width);
- EXPECT_EQ(270, fake_encoder_.video_codec().spatialLayers[0].height);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, 1);
+ EXPECT_EQ(fake_encoder_.config().codecType, VideoCodecType::kVideoCodecVP9);
+ EXPECT_EQ(fake_encoder_.config().VP9().numberOfSpatialLayers, 2);
+ EXPECT_TRUE(fake_encoder_.config().spatialLayers[0].active);
+ EXPECT_EQ(480, fake_encoder_.config().spatialLayers[0].width);
+ EXPECT_EQ(270, fake_encoder_.config().spatialLayers[0].height);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.min_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].minBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kEncoderLimits270p.max_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].maxBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -5821,7 +5645,7 @@
video_encoder_config.encoder_specific_settings =
rtc::make_ref_counted<VideoEncoderConfig::Vp9EncoderSpecificSettings>(
vp9_settings);
- video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
// Simulcast layers are used to indicate which spatial layers are active.
@@ -5840,17 +5664,16 @@
kVideoCodecVP9, 640 * 360);
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, 1);
- EXPECT_EQ(fake_encoder_.video_codec().codecType,
- VideoCodecType::kVideoCodecVP9);
- EXPECT_EQ(fake_encoder_.video_codec().VP9()->numberOfSpatialLayers, 2);
- EXPECT_TRUE(fake_encoder_.video_codec().spatialLayers[0].active);
- EXPECT_EQ(640, fake_encoder_.video_codec().spatialLayers[0].width);
- EXPECT_EQ(360, fake_encoder_.video_codec().spatialLayers[0].height);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, 1);
+ EXPECT_EQ(fake_encoder_.config().codecType, VideoCodecType::kVideoCodecVP9);
+ EXPECT_EQ(fake_encoder_.config().VP9().numberOfSpatialLayers, 2);
+ EXPECT_TRUE(fake_encoder_.config().spatialLayers[0].active);
+ EXPECT_EQ(640, fake_encoder_.config().spatialLayers[0].width);
+ EXPECT_EQ(360, fake_encoder_.config().spatialLayers[0].height);
EXPECT_EQ(static_cast<uint32_t>(kLimits360p->min_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].minBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kLimits360p->max_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].maxBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].maxBitrate * 1000);
// The default bitrate limits for 270p should be used.
const absl::optional<VideoEncoder::ResolutionBitrateLimits> kLimits270p =
@@ -5858,17 +5681,16 @@
kVideoCodecVP9, 480 * 270);
video_source_.IncomingCapturedFrame(CreateFrame(2, 960, 540));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, 1);
- EXPECT_EQ(fake_encoder_.video_codec().codecType,
- VideoCodecType::kVideoCodecVP9);
- EXPECT_EQ(fake_encoder_.video_codec().VP9()->numberOfSpatialLayers, 2);
- EXPECT_TRUE(fake_encoder_.video_codec().spatialLayers[0].active);
- EXPECT_EQ(480, fake_encoder_.video_codec().spatialLayers[0].width);
- EXPECT_EQ(270, fake_encoder_.video_codec().spatialLayers[0].height);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, 1);
+ EXPECT_EQ(fake_encoder_.config().codecType, VideoCodecType::kVideoCodecVP9);
+ EXPECT_EQ(fake_encoder_.config().VP9().numberOfSpatialLayers, 2);
+ EXPECT_TRUE(fake_encoder_.config().spatialLayers[0].active);
+ EXPECT_EQ(480, fake_encoder_.config().spatialLayers[0].width);
+ EXPECT_EQ(270, fake_encoder_.config().spatialLayers[0].height);
EXPECT_EQ(static_cast<uint32_t>(kLimits270p->min_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].minBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].minBitrate * 1000);
EXPECT_EQ(static_cast<uint32_t>(kLimits270p->max_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].maxBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -5886,7 +5708,7 @@
video_encoder_config.encoder_specific_settings =
rtc::make_ref_counted<VideoEncoderConfig::Vp9EncoderSpecificSettings>(
vp9_settings);
- video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
// Simulcast layers are used to indicate which spatial layers are active.
@@ -5908,14 +5730,14 @@
kVideoCodecVP9, 640 * 360);
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, 1);
- EXPECT_EQ(fake_encoder_.video_codec().codecType, kVideoCodecVP9);
- EXPECT_EQ(fake_encoder_.video_codec().VP9()->numberOfSpatialLayers, 2);
- EXPECT_TRUE(fake_encoder_.video_codec().spatialLayers[0].active);
- EXPECT_EQ(640, fake_encoder_.video_codec().spatialLayers[0].width);
- EXPECT_EQ(360, fake_encoder_.video_codec().spatialLayers[0].height);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, 1);
+ EXPECT_EQ(fake_encoder_.config().codecType, kVideoCodecVP9);
+ EXPECT_EQ(fake_encoder_.config().VP9().numberOfSpatialLayers, 2);
+ EXPECT_TRUE(fake_encoder_.config().spatialLayers[0].active);
+ EXPECT_EQ(640, fake_encoder_.config().spatialLayers[0].width);
+ EXPECT_EQ(360, fake_encoder_.config().spatialLayers[0].height);
EXPECT_NE(static_cast<uint32_t>(kLimits360p->max_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].maxBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -5930,15 +5752,14 @@
kVideoCodecVP9, 1280 * 720);
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, 1);
- EXPECT_EQ(fake_encoder_.video_codec().codecType,
- VideoCodecType::kVideoCodecVP9);
- EXPECT_EQ(fake_encoder_.video_codec().VP9()->numberOfSpatialLayers, 1);
- EXPECT_TRUE(fake_encoder_.video_codec().spatialLayers[0].active);
- EXPECT_EQ(1280, fake_encoder_.video_codec().spatialLayers[0].width);
- EXPECT_EQ(720, fake_encoder_.video_codec().spatialLayers[0].height);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, 1);
+ EXPECT_EQ(fake_encoder_.config().codecType, VideoCodecType::kVideoCodecVP9);
+ EXPECT_EQ(fake_encoder_.config().VP9().numberOfSpatialLayers, 1);
+ EXPECT_TRUE(fake_encoder_.config().spatialLayers[0].active);
+ EXPECT_EQ(1280, fake_encoder_.config().spatialLayers[0].width);
+ EXPECT_EQ(720, fake_encoder_.config().spatialLayers[0].height);
EXPECT_NE(static_cast<uint32_t>(kLimits720p->max_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].maxBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -5962,7 +5783,7 @@
video_encoder_config.encoder_specific_settings =
rtc::make_ref_counted<VideoEncoderConfig::Vp9EncoderSpecificSettings>(
vp9_settings);
- video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
video_encoder_config.content_type =
VideoEncoderConfig::ContentType::kRealtimeVideo;
// Simulcast layers are used to indicate which spatial layers are active.
@@ -5978,17 +5799,16 @@
// Limits not applied on lowest stream, limits for 180p should not be used.
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
EXPECT_FALSE(WaitForFrame(1000));
- EXPECT_EQ(fake_encoder_.video_codec().numberOfSimulcastStreams, 1);
- EXPECT_EQ(fake_encoder_.video_codec().codecType,
- VideoCodecType::kVideoCodecVP9);
- EXPECT_EQ(fake_encoder_.video_codec().VP9()->numberOfSpatialLayers, 3);
- EXPECT_TRUE(fake_encoder_.video_codec().spatialLayers[0].active);
- EXPECT_EQ(320, fake_encoder_.video_codec().spatialLayers[0].width);
- EXPECT_EQ(180, fake_encoder_.video_codec().spatialLayers[0].height);
+ EXPECT_EQ(fake_encoder_.config().numberOfSimulcastStreams, 1);
+ EXPECT_EQ(fake_encoder_.config().codecType, VideoCodecType::kVideoCodecVP9);
+ EXPECT_EQ(fake_encoder_.config().VP9().numberOfSpatialLayers, 3);
+ EXPECT_TRUE(fake_encoder_.config().spatialLayers[0].active);
+ EXPECT_EQ(320, fake_encoder_.config().spatialLayers[0].width);
+ EXPECT_EQ(180, fake_encoder_.config().spatialLayers[0].height);
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits180p.min_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].minBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].minBitrate * 1000);
EXPECT_NE(static_cast<uint32_t>(kEncoderLimits180p.max_bitrate_bps),
- fake_encoder_.video_codec().spatialLayers[0].maxBitrate * 1000);
+ fake_encoder_.config().spatialLayers[0].maxBitrate * 1000);
video_stream_encoder_->Stop();
}
@@ -5999,17 +5819,13 @@
const int kHeight = 360;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth / 2, kHeight / 2));
// Frame should not be dropped.
WaitForEncodedFrame(1);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth / 2, kHeight / 2));
// Frame should not be dropped, bitrate not too low for frame.
WaitForEncodedFrame(2);
@@ -6039,9 +5855,7 @@
int timestamp = 1;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
source.IncomingCapturedFrame(CreateFrame(timestamp, kWidth, kHeight));
WaitForEncodedFrame(timestamp);
timestamp += 9000;
@@ -6049,9 +5863,7 @@
AdvanceTime(TimeDelta::Millis(1000));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps),
- DataRate::BitsPerSec(kLowTargetBitrateBps), 0, 0, 0);
+ kLowTargetBitrate, kLowTargetBitrate, kLowTargetBitrate, 0, 0, 0);
source.IncomingCapturedFrame(CreateFrame(timestamp, kWidth, kHeight));
// Not dropped frame, as initial frame drop is disabled by now.
WaitForEncodedFrame(timestamp);
@@ -6150,7 +5962,7 @@
// Reset encoder for field trials to take effect.
VideoEncoderConfig config = video_encoder_config_.Copy();
- config.max_bitrate_bps = kTargetBitrateBps;
+ config.max_bitrate_bps = kTargetBitrate.bps();
DataRate max_bitrate = DataRate::BitsPerSec(config.max_bitrate_bps);
ConfigureEncoder(std::move(config));
fake_encoder_.SetQp(kQpLow);
@@ -6162,11 +5974,9 @@
DegradationPreference::MAINTAIN_FRAMERATE);
// Start at low bitrate.
- const int kLowBitrateBps = 200000;
+ const DataRate kLowBitrate = DataRate::KilobitsPerSec(200);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kLowBitrateBps),
- DataRate::BitsPerSec(kLowBitrateBps),
- DataRate::BitsPerSec(kLowBitrateBps), 0, 0, 0);
+ kLowBitrate, kLowBitrate, kLowBitrate, 0, 0, 0);
// Expect first frame to be dropped and resolution to be limited.
const int64_t kFrameIntervalMs = 1000 / kFps;
@@ -6224,9 +6034,7 @@
video_stream_encoder_->SetSource(&source,
DegradationPreference::MAINTAIN_FRAMERATE);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
fake_encoder_.SetQp(kQpHigh + 1);
const int kWidth = 1280;
const int kHeight = 720;
@@ -6270,9 +6078,7 @@
const int kTooSmallWidth = 10;
const int kTooSmallHeight = 10;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
test::FrameForwarder source;
@@ -6298,9 +6104,7 @@
const int kTooSmallHeight = 10;
const int kFpsLimit = 7;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
test::FrameForwarder source;
@@ -6334,9 +6138,7 @@
TEST_F(VideoStreamEncoderTest, FailingInitEncodeDoesntCauseCrash) {
fake_encoder_.ForceInitEncodeFailure(true);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
ResetEncoder("VP8", 2, 1, 1, false);
const int kFrameWidth = 1280;
const int kFrameHeight = 720;
@@ -6350,9 +6152,7 @@
TEST_F(VideoStreamEncoderTest,
AdaptsResolutionOnOveruse_MaintainFramerateMode) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
const int kFrameWidth = 1280;
const int kFrameHeight = 720;
@@ -6386,9 +6186,7 @@
const int kFrameHeight = 720;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->SetSource(
&video_source_, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
video_source_.set_adaptation_enabled(true);
@@ -6490,9 +6288,7 @@
ResetEncoder("VP8", 1, 2, 1, true);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->SetSource(
&video_source_, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
video_source_.set_adaptation_enabled(true);
@@ -6532,9 +6328,7 @@
const int64_t kFrameIntervalMs = 150;
int64_t timestamp_ms = kFrameIntervalMs;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -6718,9 +6512,7 @@
const int64_t kFrameIntervalMs = 150;
int64_t timestamp_ms = kFrameIntervalMs;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -6853,9 +6645,7 @@
const int64_t kFrameIntervalMs = 150;
int64_t timestamp_ms = kFrameIntervalMs;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Enable BALANCED preference, no initial limitation.
AdaptingFrameForwarder source(&time_controller_);
@@ -6959,14 +6749,12 @@
const int kFramerate = 24;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Trigger reconfigure encoder (without resetting the entire instance).
VideoEncoderConfig video_encoder_config;
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
video_encoder_config.simulcast_layers[0].max_framerate = kFramerate;
- video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
+ video_encoder_config.max_bitrate_bps = kTargetBitrate.bps();
video_encoder_config.video_stream_factory =
rtc::make_ref_counted<CroppingVideoStreamFactory>();
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
@@ -6995,9 +6783,7 @@
const int kHighFps = 30;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
int64_t timestamp_ms = CurrentTimeMs();
max_framerate_ = kLowFps;
@@ -7012,9 +6798,7 @@
// Make sure encoder is updated with new target.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
WaitForEncodedFrame(timestamp_ms);
@@ -7047,15 +6831,12 @@
TEST_F(VideoStreamEncoderTest, DoesNotUpdateBitrateAllocationWhenSuspended) {
const int kFrameWidth = 1280;
const int kFrameHeight = 720;
- const int kTargetBitrateBps = 1000000;
ResetEncoder("FAKE", 1, 1, 1, false,
VideoStreamEncoder::BitrateAllocationCallbackType::
kVideoBitrateAllocation);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
// Insert a first video frame, causes another bitrate update.
@@ -7067,8 +6848,7 @@
// Next, simulate video suspension due to pacer queue overrun.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(0), DataRate::BitsPerSec(0), DataRate::BitsPerSec(0),
- 0, 1, 0);
+ DataRate::Zero(), DataRate::Zero(), DataRate::Zero(), 0, 1, 0);
// Skip ahead until a new periodic parameter update should have occured.
timestamp_ms += kProcessIntervalMs;
@@ -7089,9 +6869,7 @@
const int kFrameHeight = 720;
const CpuOveruseOptions default_options;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(1, kFrameWidth, kFrameHeight));
WaitForEncodedFrame(1);
@@ -7114,9 +6892,7 @@
fake_encoder_.SetIsHardwareAccelerated(true);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(1, kFrameWidth, kFrameHeight));
WaitForEncodedFrame(1);
@@ -7136,9 +6912,7 @@
const CpuOveruseOptions default_options;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_source_.IncomingCapturedFrame(
CreateFrame(1, kFrameWidth, kFrameHeight));
WaitForEncodedFrame(1);
@@ -7172,13 +6946,11 @@
const int kFrameWidth = 320;
const int kFrameHeight = 240;
const int kFps = 30;
- const int kTargetBitrateBps = 120000;
+ const DataRate kTargetBitrate = DataRate::KilobitsPerSec(120);
const int kNumFramesInRun = kFps * 5; // Runs of five seconds.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
int64_t timestamp_ms = CurrentTimeMs();
max_framerate_ = kFps;
@@ -7219,9 +6991,9 @@
}
fake_encoder_.SimulateOvershoot(overshoot_factor);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps + 1000),
- DataRate::BitsPerSec(kTargetBitrateBps + 1000),
- DataRate::BitsPerSec(kTargetBitrateBps + 1000), 0, 0, 0);
+ kTargetBitrate + DataRate::KilobitsPerSec(1),
+ kTargetBitrate + DataRate::KilobitsPerSec(1),
+ kTargetBitrate + DataRate::KilobitsPerSec(1), 0, 0, 0);
num_dropped = 0;
for (int i = 0; i < kNumFramesInRun; ++i) {
video_source_.IncomingCapturedFrame(
@@ -7234,9 +7006,7 @@
}
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Target framerate should be still be near the expected target, despite
// the frame drops.
@@ -7252,16 +7022,14 @@
const int kFrameWidth = 320;
const int kFrameHeight = 240;
const int kActualInputFps = 24;
- const int kTargetBitrateBps = 120000;
+ const DataRate kTargetBitrate = DataRate::KilobitsPerSec(120);
ASSERT_GT(max_framerate_, kActualInputFps);
int64_t timestamp_ms = CurrentTimeMs();
max_framerate_ = kActualInputFps;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Insert 3 seconds of video, with an input fps lower than configured max.
for (int i = 0; i < kActualInputFps * 3; ++i) {
@@ -7280,9 +7048,7 @@
TEST_F(VideoStreamEncoderBlockedTest, AccumulatesUpdateRectOnDroppedFrames) {
VideoFrame::UpdateRect rect;
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
fake_encoder_.BlockNextEncode();
video_source_.IncomingCapturedFrame(
@@ -7326,9 +7092,7 @@
TEST_F(VideoStreamEncoderTest, SetsFrameTypes) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// First frame is always keyframe.
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
@@ -7359,9 +7123,8 @@
// Setup simulcast with three streams.
ResetEncoder("VP8", 3, 1, 1, false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps), 0, 0, 0);
+ kSimulcastTargetBitrate, kSimulcastTargetBitrate, kSimulcastTargetBitrate,
+ 0, 0, 0);
// Wait for all three layers before triggering event.
sink_.SetNumExpectedLayers(3);
@@ -7402,9 +7165,7 @@
encoder_factory_.SetHasInternalSource(true);
ResetEncoder("VP8", 1, 1, 1, false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Call encoder directly, simulating internal source where encoded frame
// callback in VideoStreamEncoder is called despite no OnFrame().
@@ -7441,9 +7202,7 @@
encoder_factory_.SetHasInternalSource(true);
ResetEncoder("VP8", 1, 1, 1, false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
int64_t timestamp = 1;
EncodedImage image;
@@ -7470,19 +7229,17 @@
ResetEncoder("H264", 1, 1, 1, false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
fake_encoder_.SetEncodedImageData(
- EncodedImageBuffer::Create(optimal_sps, sizeof(optimal_sps)));
+ EncodedImageBuffer::Create(kOptimalSps, sizeof(kOptimalSps)));
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
WaitForEncodedFrame(1);
EXPECT_THAT(sink_.GetLastEncodedImageData(),
- testing::ElementsAreArray(optimal_sps));
+ testing::ElementsAreArray(kOptimalSps));
video_stream_encoder_->Stop();
}
@@ -7497,9 +7254,7 @@
ResetEncoder("H264", 1, 1, 1, false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
fake_encoder_.SetEncodedImageData(
@@ -7509,7 +7264,7 @@
WaitForEncodedFrame(1);
EXPECT_THAT(sink_.GetLastEncodedImageData(),
- testing::ElementsAreArray(optimal_sps));
+ testing::ElementsAreArray(kOptimalSps));
video_stream_encoder_->Stop();
}
@@ -7517,12 +7272,11 @@
TEST_F(VideoStreamEncoderTest, CopiesVideoFrameMetadataAfterDownscale) {
const int kFrameWidth = 1280;
const int kFrameHeight = 720;
- const int kTargetBitrateBps = 300000; // To low for HD resolution.
+ const DataRate kTargetBitrate =
+ DataRate::KilobitsPerSec(300); // Too low for HD resolution.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
// Insert a first video frame. It should be dropped because of downscale in
@@ -7576,7 +7330,7 @@
WaitForEncodedFrame(timestamp_ms);
// Set a target rate below the minimum allowed by the codec settings.
- VideoCodec codec_config = fake_encoder_.codec_config();
+ VideoCodec codec_config = fake_encoder_.config();
DataRate min_rate = DataRate::KilobitsPerSec(codec_config.minBitrate);
DataRate target_rate = min_rate - DataRate::KilobitsPerSec(1);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
@@ -7601,9 +7355,7 @@
TEST_F(VideoStreamEncoderTest, EncoderRatesPropagatedOnReconfigure) {
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Capture a frame and wait for it to synchronize with the encoder thread.
int64_t timestamp_ms = CurrentTimeMs();
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, nullptr));
@@ -7851,9 +7603,7 @@
// BALANCED degradation preference is required for this feature.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
video_stream_encoder_->SetSource(&video_source_,
webrtc::DegradationPreference::BALANCED);
EXPECT_THAT(video_source_.sink_wants(), UnlimitedSinkWants());
@@ -7904,9 +7654,7 @@
video_source_.set_adaptation_enabled(true);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
VideoFrame frame = CreateFrame(1, kWidth, kHeight);
@@ -7937,9 +7685,8 @@
"VP8", /*max qp*/ 56, /*screencast*/ false,
/*screenshare enabled*/ false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps), 0, 0, 0);
+ kSimulcastTargetBitrate, kSimulcastTargetBitrate, kSimulcastTargetBitrate,
+ 0, 0, 0);
// First initialization.
// Encoder should be initialized. Next frame should be key frame.
@@ -7948,7 +7695,7 @@
int64_t timestamp_ms = kFrameIntervalMs;
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, 1280, 720));
WaitForEncodedFrame(timestamp_ms);
- EXPECT_EQ(1, fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(1, fake_encoder_.GetNumInitializations());
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
::testing::ElementsAreArray({VideoFrameType::kVideoFrameKey,
VideoFrameType::kVideoFrameKey,
@@ -7962,7 +7709,7 @@
timestamp_ms += kFrameIntervalMs;
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, 1280, 720));
WaitForEncodedFrame(timestamp_ms);
- EXPECT_EQ(1, fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(1, fake_encoder_.GetNumInitializations());
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
::testing::ElementsAreArray({VideoFrameType::kVideoFrameDelta,
VideoFrameType::kVideoFrameDelta,
@@ -7976,7 +7723,7 @@
timestamp_ms += kFrameIntervalMs;
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, 1280, 720));
WaitForEncodedFrame(timestamp_ms);
- EXPECT_EQ(2, fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(2, fake_encoder_.GetNumInitializations());
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
::testing::ElementsAreArray({VideoFrameType::kVideoFrameKey,
VideoFrameType::kVideoFrameKey,
@@ -7990,7 +7737,7 @@
timestamp_ms += kFrameIntervalMs;
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, 1280, 720));
WaitForEncodedFrame(timestamp_ms);
- EXPECT_EQ(2, fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(2, fake_encoder_.GetNumInitializations());
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
::testing::ElementsAreArray({VideoFrameType::kVideoFrameDelta,
VideoFrameType::kVideoFrameDelta,
@@ -8004,7 +7751,7 @@
timestamp_ms += kFrameIntervalMs;
video_source_.IncomingCapturedFrame(CreateFrame(timestamp_ms, 1280, 720));
WaitForEncodedFrame(timestamp_ms);
- EXPECT_EQ(3, fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(3, fake_encoder_.GetNumInitializations());
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
::testing::ElementsAreArray({VideoFrameType::kVideoFrameKey,
VideoFrameType::kVideoFrameKey,
@@ -8018,9 +7765,7 @@
SetUp();
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
// Capturing a frame should reconfigure the encoder and expose the encoder
// resolution, which is the same as the input frame.
@@ -8065,9 +7810,8 @@
"VP8", /*max qp*/ 56, /*screencast*/ false,
/*screenshare enabled*/ false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps), 0, 0, 0);
+ kSimulcastTargetBitrate, kSimulcastTargetBitrate, kSimulcastTargetBitrate,
+ 0, 0, 0);
// Capture a frame with all layers active.
int64_t timestamp_ms = kFrameIntervalMs;
@@ -8192,9 +7936,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8222,9 +7964,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8253,9 +7993,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8284,9 +8022,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8316,9 +8052,7 @@
/*max_bitrate_bps=*/MaxEncBitrateKbps * 1000);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
fake_encoder_.SetResolutionBitrateLimits({encoder_bitrate_limits});
@@ -8394,9 +8128,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8424,9 +8156,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8454,9 +8184,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8487,9 +8215,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8519,9 +8245,7 @@
ConfigureEncoder(std::move(video_encoder_config));
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
test::FrameForwarder source;
video_stream_encoder_->SetSource(
@@ -8606,9 +8330,7 @@
// Set bitrate to ensure frame is not dropped.
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps),
- DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
+ kTargetBitrate, kTargetBitrate, kTargetBitrate, 0, 0, 0);
}
const VideoCodecType codec_type_;
@@ -8675,7 +8397,7 @@
VideoEncoderConfig config;
if (codec_type_ == VideoCodecType::kVideoCodecVP9) {
test::FillEncoderConfiguration(codec_type_, 1, &config);
- config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
vp9_settings.numberOfSpatialLayers = kNumSpatialLayers;
vp9_settings.numberOfTemporalLayers = 3;
@@ -8691,7 +8413,7 @@
/*is_screenshare=*/false);
} else if (codec_type_ == VideoCodecType::kVideoCodecAV1) {
test::FillEncoderConfiguration(codec_type_, 1, &config);
- config.max_bitrate_bps = kSimulcastTargetBitrateBps;
+ config.max_bitrate_bps = kSimulcastTargetBitrate.bps();
config.spatial_layers = GetSvcConfig(kFrameWidth, kFrameHeight,
/*fps=*/30.0,
/*first_active_layer=*/0,
@@ -8731,9 +8453,8 @@
/*screencast*/ false,
/*screenshare enabled*/ false);
video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps),
- DataRate::BitsPerSec(kSimulcastTargetBitrateBps), 0, 0, 0);
+ kSimulcastTargetBitrate, kSimulcastTargetBitrate, kSimulcastTargetBitrate,
+ 0, 0, 0);
// Capture a frame with all layers active.
sink_.SetNumExpectedLayers(kNumSpatialLayers);
@@ -8853,22 +8574,21 @@
void RunTest(const std::vector<VideoStream>& configs,
const int expected_num_init_encode) {
ConfigureEncoder(configs[0]);
- OnBitrateUpdated(DataRate::BitsPerSec(kTargetBitrateBps));
+ OnBitrateUpdated(kTargetBitrate);
InsertFrameAndWaitForEncoded();
EXPECT_EQ(1, sink_.number_of_reconfigurations());
ExpectEqual(bitrate_allocator_factory_.codec_config(), configs[0]);
- EXPECT_EQ(1, fake_encoder_.GetNumEncoderInitializations());
- ExpectEqual(fake_encoder_.video_codec(), configs[0]);
+ EXPECT_EQ(1, fake_encoder_.GetNumInitializations());
+ ExpectEqual(fake_encoder_.config(), configs[0]);
// Reconfigure encoder, the encoder should only be reconfigured if needed.
ConfigureEncoder(configs[1]);
InsertFrameAndWaitForEncoded();
EXPECT_EQ(2, sink_.number_of_reconfigurations());
ExpectEqual(bitrate_allocator_factory_.codec_config(), configs[1]);
- EXPECT_EQ(expected_num_init_encode,
- fake_encoder_.GetNumEncoderInitializations());
+ EXPECT_EQ(expected_num_init_encode, fake_encoder_.GetNumInitializations());
if (expected_num_init_encode > 1)
- ExpectEqual(fake_encoder_.video_codec(), configs[1]);
+ ExpectEqual(fake_encoder_.config(), configs[1]);
video_stream_encoder_->Stop();
}