Move frame drop config to VideoCodec and VideoEncoderConfig.
Intend to delete corresponding codec-specific settings in a followup. Bug: webrtc:6883 Change-Id: I78ab07729a5aee1055f80d39d8f7289beb6721e1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262244 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36882}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
8f44ae4fa5
commit
807328fec7
@ -629,7 +629,7 @@ int LibvpxVp9Encoder::InitEncode(const VideoCodec* inst,
|
||||
config_->g_lag_in_frames = 0; // 0- no frame lagging
|
||||
config_->g_threads = 1;
|
||||
// Rate control settings.
|
||||
config_->rc_dropframe_thresh = inst->VP9().frameDroppingOn ? 30 : 0;
|
||||
config_->rc_dropframe_thresh = inst->GetFrameDropEnabled() ? 30 : 0;
|
||||
config_->rc_end_usage = VPX_CBR;
|
||||
config_->g_pass = VPX_RC_ONE_PASS;
|
||||
config_->rc_min_quantizer =
|
||||
|
||||
@ -85,7 +85,7 @@ void ConfigureSvc(VideoCodec& codec_settings,
|
||||
int num_temporal_layers = 1) {
|
||||
codec_settings.VP9()->numberOfSpatialLayers = num_spatial_layers;
|
||||
codec_settings.VP9()->numberOfTemporalLayers = num_temporal_layers;
|
||||
codec_settings.VP9()->frameDroppingOn = false;
|
||||
codec_settings.SetFrameDropEnabled(false);
|
||||
|
||||
std::vector<SpatialLayer> layers = GetSvcConfig(
|
||||
codec_settings.width, codec_settings.height, codec_settings.maxFramerate,
|
||||
@ -435,7 +435,7 @@ TEST_F(TestVp9Impl, EnableDisableSpatialLayers) {
|
||||
const size_t num_frames_to_encode = 5;
|
||||
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = true;
|
||||
codec_settings_.SetFrameDropEnabled(true);
|
||||
|
||||
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
|
||||
encoder_->InitEncode(&codec_settings_, kSettings));
|
||||
@ -491,7 +491,7 @@ TEST(Vp9ImplTest, EnableDisableSpatialLayersWithSvcController) {
|
||||
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
||||
VideoCodec codec_settings = DefaultCodecSettings();
|
||||
ConfigureSvc(codec_settings, num_spatial_layers);
|
||||
codec_settings.VP9()->frameDroppingOn = true;
|
||||
codec_settings.SetFrameDropEnabled(true);
|
||||
EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
|
||||
WEBRTC_VIDEO_CODEC_OK);
|
||||
|
||||
@ -559,7 +559,7 @@ TEST(Vp9ImplTest, SpatialUpswitchNotAtGOFBoundary) {
|
||||
VideoCodec codec_settings = DefaultCodecSettings();
|
||||
ConfigureSvc(codec_settings, /*num_spatial_layers=*/3,
|
||||
/*num_temporal_layers=*/3);
|
||||
codec_settings.VP9()->frameDroppingOn = true;
|
||||
codec_settings.SetFrameDropEnabled(true);
|
||||
EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
|
||||
WEBRTC_VIDEO_CODEC_OK);
|
||||
|
||||
@ -605,7 +605,7 @@ TEST_F(TestVp9Impl, DISABLED_DisableEnableBaseLayerTriggersKeyFrame) {
|
||||
const size_t num_frames_to_encode = 5;
|
||||
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers, num_temporal_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.VP9()->flexibleMode = false;
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOnKeyPic;
|
||||
codec_settings_.mode = VideoCodecMode::kRealtimeVideo;
|
||||
@ -762,7 +762,7 @@ TEST(Vp9ImplTest,
|
||||
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
||||
VideoCodec codec_settings = DefaultCodecSettings();
|
||||
ConfigureSvc(codec_settings, num_spatial_layers, num_temporal_layers);
|
||||
codec_settings.VP9()->frameDroppingOn = false;
|
||||
codec_settings.SetFrameDropEnabled(false);
|
||||
codec_settings.VP9()->flexibleMode = false;
|
||||
codec_settings.VP9()->interLayerPred = InterLayerPredMode::kOnKeyPic;
|
||||
codec_settings.mode = VideoCodecMode::kRealtimeVideo;
|
||||
@ -877,7 +877,7 @@ TEST_F(TestVp9Impl, DisableEnableBaseLayerTriggersKeyFrameForScreenshare) {
|
||||
const size_t num_frames_to_encode = 5;
|
||||
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.mode = VideoCodecMode::kScreensharing;
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
codec_settings_.VP9()->flexibleMode = true;
|
||||
@ -1036,7 +1036,7 @@ TEST_F(TestVp9Impl, EndOfPicture) {
|
||||
TEST_F(TestVp9Impl, InterLayerPred) {
|
||||
const size_t num_spatial_layers = 2;
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
|
||||
VideoBitrateAllocation bitrate_allocation;
|
||||
for (size_t i = 0; i < num_spatial_layers; ++i) {
|
||||
@ -1111,7 +1111,7 @@ TEST_F(TestVp9Impl,
|
||||
const size_t num_frames_to_encode = 2;
|
||||
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
|
||||
const std::vector<InterLayerPredMode> inter_layer_pred_modes = {
|
||||
InterLayerPredMode::kOff, InterLayerPredMode::kOn,
|
||||
@ -1168,7 +1168,7 @@ TEST_F(TestVp9Impl,
|
||||
const size_t num_frames_to_encode = 2;
|
||||
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.VP9()->flexibleMode = false;
|
||||
|
||||
const std::vector<InterLayerPredMode> inter_layer_pred_modes = {
|
||||
@ -1223,7 +1223,7 @@ TEST_F(TestVp9Impl, EnablingDisablingUpperLayerInTheSameGof) {
|
||||
const size_t num_temporal_layers = 2;
|
||||
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers, num_temporal_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.VP9()->flexibleMode = false;
|
||||
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
@ -1295,7 +1295,7 @@ TEST_F(TestVp9Impl, EnablingDisablingUpperLayerAccrossGof) {
|
||||
const size_t num_temporal_layers = 2;
|
||||
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers, num_temporal_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.VP9()->flexibleMode = false;
|
||||
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
@ -1381,7 +1381,7 @@ TEST_F(TestVp9Impl, EnablingNewLayerInScreenshareForcesAllLayersWithSS) {
|
||||
// simplifies the test.
|
||||
codec_settings_.spatialLayers[1].maxFramerate = 30.0;
|
||||
codec_settings_.spatialLayers[2].maxFramerate = 30.0;
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.mode = VideoCodecMode::kScreensharing;
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
codec_settings_.VP9()->flexibleMode = true;
|
||||
@ -1438,7 +1438,7 @@ TEST_F(TestVp9Impl, ScreenshareFrameDropping) {
|
||||
codec_settings_.spatialLayers[0].maxFramerate = 30.0;
|
||||
codec_settings_.spatialLayers[1].maxFramerate = 30.0;
|
||||
codec_settings_.spatialLayers[2].maxFramerate = 30.0;
|
||||
codec_settings_.VP9()->frameDroppingOn = true;
|
||||
codec_settings_.SetFrameDropEnabled(true);
|
||||
codec_settings_.mode = VideoCodecMode::kScreensharing;
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
codec_settings_.VP9()->flexibleMode = true;
|
||||
@ -1530,7 +1530,7 @@ TEST_F(TestVp9Impl, RemovingLayerIsNotDelayedInScreenshareAndAddsSsInfo) {
|
||||
// simplifies the test.
|
||||
codec_settings_.spatialLayers[1].maxFramerate = 30.0;
|
||||
codec_settings_.spatialLayers[2].maxFramerate = 30.0;
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.mode = VideoCodecMode::kScreensharing;
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
codec_settings_.VP9()->flexibleMode = true;
|
||||
@ -1611,7 +1611,7 @@ TEST_F(TestVp9Impl, DisableNewLayerInVideoDelaysSsInfoTillTL0) {
|
||||
// Chosen by hand, the 2nd frame is dropped with configured per-layer max
|
||||
// framerate.
|
||||
ConfigureSvc(codec_settings_, num_spatial_layers, num_temporal_layers);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.mode = VideoCodecMode::kRealtimeVideo;
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOnKeyPic;
|
||||
codec_settings_.VP9()->flexibleMode = false;
|
||||
@ -1670,7 +1670,7 @@ TEST_F(TestVp9Impl, DisableNewLayerInVideoDelaysSsInfoTillTL0) {
|
||||
TEST_F(TestVp9Impl,
|
||||
LowLayerMarkedAsRefIfHighLayerNotEncodedAndInterLayerPredIsEnabled) {
|
||||
ConfigureSvc(codec_settings_, 3);
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
|
||||
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
|
||||
@ -1839,7 +1839,7 @@ TEST_P(Vp9ImplWithLayeringTest, FlexibleMode) {
|
||||
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
||||
VideoCodec codec_settings = DefaultCodecSettings();
|
||||
codec_settings.VP9()->flexibleMode = true;
|
||||
codec_settings.VP9()->frameDroppingOn = false;
|
||||
codec_settings.SetFrameDropEnabled(false);
|
||||
codec_settings.VP9()->numberOfSpatialLayers = num_spatial_layers_;
|
||||
codec_settings.VP9()->numberOfTemporalLayers = num_temporal_layers_;
|
||||
EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
|
||||
@ -1945,7 +1945,7 @@ TEST_F(TestVp9ImplFrameDropping, DifferentFrameratePerSpatialLayer) {
|
||||
const size_t num_input_frames = video_duration_secs * input_framerate_fps;
|
||||
|
||||
codec_settings_.VP9()->numberOfSpatialLayers = num_spatial_layers;
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.VP9()->flexibleMode = true;
|
||||
|
||||
VideoBitrateAllocation bitrate_allocation;
|
||||
@ -2088,7 +2088,7 @@ TEST_F(TestVp9Impl, ReenablingUpperLayerAfterKFWithInterlayerPredIsEnabled) {
|
||||
const size_t num_spatial_layers = 2;
|
||||
const int num_frames_to_encode = 10;
|
||||
codec_settings_.VP9()->flexibleMode = true;
|
||||
codec_settings_.VP9()->frameDroppingOn = false;
|
||||
codec_settings_.SetFrameDropEnabled(false);
|
||||
codec_settings_.VP9()->numberOfSpatialLayers = num_spatial_layers;
|
||||
codec_settings_.VP9()->numberOfTemporalLayers = 1;
|
||||
codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn;
|
||||
|
||||
Reference in New Issue
Block a user