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}
This commit is contained in:
parent
a6bf03dc22
commit
39760a1c87
@ -811,9 +811,6 @@ POLICY_EXEMPT_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
|
||||
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 @@ POLICY_EXEMPT_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
|
||||
]) # 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 @@ def validate_field_trials(
|
||||
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:
|
||||
|
||||
@ -56,6 +56,11 @@ constexpr char kVP8IosMaxNumberOfThreadFieldTrial[] =
|
||||
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 @@ LibvpxVp8Encoder::LibvpxVp8Encoder(const Environment& env,
|
||||
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 @@ size_t LibvpxVp8Encoder::SteadyStateSize(int sid, int tid) {
|
||||
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 @@ int LibvpxVp8Encoder::Encode(const VideoFrame& frame,
|
||||
|
||||
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 @@ int LibvpxVp8Encoder::GetEncodedPartitions(const VideoFrame& input_image,
|
||||
&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 @@ LibvpxVp8Encoder::PrepareBuffers(rtc::scoped_refptr<VideoFrameBuffer> buffer) {
|
||||
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
|
||||
|
||||
@ -138,20 +138,6 @@ class LibvpxVp8Encoder : public VideoEncoder {
|
||||
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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user