Remove Vp8VariableFramerateScreenshare experiemnt
Bug: webrtc:10310
Change-Id: I5d7e7bb3e303bc5d3f913daf9016051731ce2157
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347641
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42094}
diff --git a/experiments/field_trials.py b/experiments/field_trials.py
index d162144..053f12b 100755
--- a/experiments/field_trials.py
+++ b/experiments/field_trials.py
@@ -811,9 +811,6 @@
FieldTrial('WebRTC-VP8IosMaxNumberOfThread',
'webrtc:10005',
date(2024, 4, 1)),
- FieldTrial('WebRTC-VP8VariableFramerateScreenshare',
- 'webrtc:10310',
- date(2024, 4, 1)),
FieldTrial('WebRTC-VP9-GetEncoderInfoOverride',
'',
date(2024, 4, 1)),
@@ -902,7 +899,7 @@
]) # yapf: disable
POLICY_EXEMPT_FIELD_TRIALS_DIGEST: str = \
- '4b765e142d10eccf80ec58cc9e994463c092cca0'
+ '785cfbd78860c15c840e509f4859e2b20bf8f250'
REGISTERED_FIELD_TRIALS: FrozenSet[FieldTrial] = ACTIVE_FIELD_TRIALS.union(
POLICY_EXEMPT_FIELD_TRIALS)
@@ -1012,7 +1009,7 @@
invalid.append(
'POLICY_EXEMPT_FIELD_TRIALS has been modified. Please note that '
'you must not add any new entries there. If you removed an entry '
- 'you should also update POLICY_EXEMPT_FIELD_TRIALS_DIGEST. The'
+ 'you should also update POLICY_EXEMPT_FIELD_TRIALS_DIGEST. The '
f'new digest is "{sha1.hexdigest()}".')
for trial in field_trials:
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
index 4593ecc..e9cf5d8 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
@@ -56,6 +56,11 @@
constexpr char kVP8IosMaxNumberOfThreadFieldTrialParameter[] = "max_thread";
#endif
+namespace variable_framerate_screenshare {
+static constexpr double kMinFps = 5.0;
+static constexpr int kUndershootPct = 30;
+} // namespace variable_framerate_screenshare
+
constexpr char kVp8ForcePartitionResilience[] =
"WebRTC-VP8-ForcePartitionResilience";
@@ -310,10 +315,7 @@
key_frame_request_(kMaxSimulcastStreams, false),
last_encoder_output_time_(kMaxSimulcastStreams,
Timestamp::MinusInfinity()),
- variable_framerate_experiment_(ParseVariableFramerateConfig(
- env_.field_trials(),
- "WebRTC-VP8VariableFramerateScreenshare")),
- framerate_controller_(variable_framerate_experiment_.framerate_limit),
+ framerate_controller_(variable_framerate_screenshare::kMinFps),
max_frame_drop_interval_(ParseFrameDropInterval(env_.field_trials())),
android_specific_threading_settings_(env_.field_trials().IsEnabled(
"WebRTC-LibvpxVp8Encoder-AndroidSpecificThreadingSettings")) {
@@ -933,9 +935,7 @@
return 0;
return static_cast<size_t>(
bitrate_bps / (8 * fps) *
- (100 -
- variable_framerate_experiment_.steady_state_undershoot_percentage) /
- 100 +
+ (100 - variable_framerate_screenshare::kUndershootPct) / 100 +
0.5);
}
@@ -1013,8 +1013,7 @@
if (frame.update_rect().IsEmpty() && num_steady_state_frames_ >= 3 &&
!key_frame_requested) {
- if (variable_framerate_experiment_.enabled &&
- framerate_controller_.DropFrame(frame.rtp_timestamp() /
+ if (framerate_controller_.DropFrame(frame.rtp_timestamp() /
kRtpTicksPerMs) &&
frame_drop_overrides_.empty()) {
return WEBRTC_VIDEO_CODEC_OK;
@@ -1265,7 +1264,7 @@
&codec_specific);
const size_t steady_state_size = SteadyStateSize(
stream_idx, codec_specific.codecSpecific.VP8.temporalIdx);
- if (qp_128 > variable_framerate_experiment_.steady_state_qp ||
+ if (qp_128 > kVp8SteadyStateQpThreshold ||
encoded_images_[encoder_idx].size() > steady_state_size) {
num_steady_state_frames_ = 0;
} else {
@@ -1488,24 +1487,4 @@
return prepared_buffers;
}
-// static
-LibvpxVp8Encoder::VariableFramerateExperiment
-LibvpxVp8Encoder::ParseVariableFramerateConfig(
- const FieldTrialsView& field_trials,
- absl::string_view group_name) {
- FieldTrialFlag disabled = FieldTrialFlag("Disabled");
- FieldTrialParameter<double> framerate_limit("min_fps", 5.0);
- FieldTrialParameter<int> qp("min_qp", 15);
- FieldTrialParameter<int> undershoot_percentage("undershoot", 30);
- ParseFieldTrial({&disabled, &framerate_limit, &qp, &undershoot_percentage},
- field_trials.Lookup(group_name));
- VariableFramerateExperiment config;
- config.enabled = !disabled.Get();
- config.framerate_limit = framerate_limit.Get();
- config.steady_state_qp = qp.Get();
- config.steady_state_undershoot_percentage = undershoot_percentage.Get();
-
- return config;
-}
-
} // namespace webrtc
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h
index ed2a86a..1800741 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h
@@ -138,20 +138,6 @@
std::vector<vpx_rational_t> downsampling_factors_;
std::vector<Timestamp> last_encoder_output_time_;
- // Variable frame-rate screencast related fields and methods.
- const struct VariableFramerateExperiment {
- bool enabled = false;
- // Framerate is limited to this value in steady state.
- float framerate_limit = 5.0;
- // This qp or below is considered a steady state.
- int steady_state_qp = kVp8SteadyStateQpThreshold;
- // Frames of at least this percentage below ideal for configured bitrate are
- // considered in a steady state.
- int steady_state_undershoot_percentage = 30;
- } variable_framerate_experiment_;
- static VariableFramerateExperiment ParseVariableFramerateConfig(
- const FieldTrialsView& field_trials,
- absl::string_view group_name);
FramerateControllerDeprecated framerate_controller_;
int num_steady_state_frames_ = 0;