LibvpxVp9Encoder: add option to configure resolution_bitrate_limits.
Bug: none Change-Id: Icdd7333296d652b1e0c159226df702084303475c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204701 Reviewed-by: Sergey Silkin <ssilkin@webrtc.org> Commit-Queue: Åsa Persson <asapersson@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33121}
This commit is contained in:
@ -1718,6 +1718,10 @@ VideoEncoder::EncoderInfo LibvpxVp9Encoder::GetEncoderInfo() const {
|
||||
VideoFrameBuffer::Type::kNV12};
|
||||
}
|
||||
}
|
||||
if (!encoder_info_override_.resolution_bitrate_limits().empty()) {
|
||||
info.resolution_bitrate_limits =
|
||||
encoder_info_override_.resolution_bitrate_limits();
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@
|
||||
#include "modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h"
|
||||
#include "modules/video_coding/svc/scalable_video_controller.h"
|
||||
#include "modules/video_coding/utility/framerate_controller.h"
|
||||
#include "rtc_base/experiments/encoder_info_settings.h"
|
||||
#include "vpx/vp8cx.h"
|
||||
|
||||
namespace webrtc {
|
||||
@ -230,6 +231,8 @@ class LibvpxVp9Encoder : public VP9Encoder {
|
||||
int num_steady_state_frames_;
|
||||
// Only set config when this flag is set.
|
||||
bool config_changed_;
|
||||
|
||||
const LibvpxVp9EncoderInfoSettings encoder_info_override_;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
@ -1636,6 +1636,27 @@ TEST_F(TestVp9Impl, Profile0PreferredPixelFormats) {
|
||||
VideoFrameBuffer::Type::kI420));
|
||||
}
|
||||
|
||||
TEST_F(TestVp9Impl, EncoderInfoWithoutResolutionBitrateLimits) {
|
||||
EXPECT_TRUE(encoder_->GetEncoderInfo().resolution_bitrate_limits.empty());
|
||||
}
|
||||
|
||||
TEST_F(TestVp9Impl, EncoderInfoWithBitrateLimitsFromFieldTrial) {
|
||||
test::ScopedFieldTrials field_trials(
|
||||
"WebRTC-LibvpxVp9Encoder-GetEncoderInfoOverride/"
|
||||
"frame_size_pixels:123|456|789,"
|
||||
"min_start_bitrate_bps:11000|22000|33000,"
|
||||
"min_bitrate_bps:44000|55000|66000,"
|
||||
"max_bitrate_bps:77000|88000|99000/");
|
||||
SetUp();
|
||||
|
||||
EXPECT_THAT(
|
||||
encoder_->GetEncoderInfo().resolution_bitrate_limits,
|
||||
::testing::ElementsAre(
|
||||
VideoEncoder::ResolutionBitrateLimits{123, 11000, 44000, 77000},
|
||||
VideoEncoder::ResolutionBitrateLimits{456, 22000, 55000, 88000},
|
||||
VideoEncoder::ResolutionBitrateLimits{789, 33000, 66000, 99000}));
|
||||
}
|
||||
|
||||
TEST_F(TestVp9Impl, EncoderInfoFpsAllocation) {
|
||||
const uint8_t kNumSpatialLayers = 3;
|
||||
const uint8_t kNumTemporalLayers = 3;
|
||||
|
||||
Reference in New Issue
Block a user