Enable flexible mode by default
Added a dedicated kill-switch WebRTC-Video-Vp9FlexibleMode. Bug: webrtc:329396373 Change-Id: I1acb28032898379eecf7dd81a770c73708286d74 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355700 Commit-Queue: Sergey Silkin <ssilkin@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42543}
This commit is contained in:
parent
1030eaaffe
commit
0bbc8ce12b
@ -155,6 +155,9 @@ ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
|
||||
FieldTrial('WebRTC-Video-H26xPacketBuffer',
|
||||
41480904,
|
||||
date(2024, 6, 1)),
|
||||
FieldTrial('WebRTC-Video-Vp9FlexibleMode',
|
||||
329396373,
|
||||
date(2025, 6, 26)),
|
||||
# keep-sorted end
|
||||
]) # yapf: disable
|
||||
|
||||
|
||||
@ -978,10 +978,8 @@ WebRtcVideoSendChannel::WebRtcVideoSendStream::ConfigureVideoEncoderSettings(
|
||||
{{"off", webrtc::InterLayerPredMode::kOff},
|
||||
{"on", webrtc::InterLayerPredMode::kOn},
|
||||
{"onkeypic", webrtc::InterLayerPredMode::kOnKeyPic}});
|
||||
webrtc::FieldTrialFlag force_flexible_mode("FlexibleMode");
|
||||
webrtc::ParseFieldTrial(
|
||||
{&interlayer_pred_experiment_enabled, &inter_layer_pred_mode,
|
||||
&force_flexible_mode},
|
||||
{&interlayer_pred_experiment_enabled, &inter_layer_pred_mode},
|
||||
call_->trials().Lookup("WebRTC-Vp9InterLayerPred"));
|
||||
if (interlayer_pred_experiment_enabled) {
|
||||
vp9_settings.interLayerPred = inter_layer_pred_mode;
|
||||
@ -989,7 +987,10 @@ WebRtcVideoSendChannel::WebRtcVideoSendStream::ConfigureVideoEncoderSettings(
|
||||
// Limit inter-layer prediction to key pictures by default.
|
||||
vp9_settings.interLayerPred = webrtc::InterLayerPredMode::kOnKeyPic;
|
||||
}
|
||||
vp9_settings.flexibleMode = force_flexible_mode.Get();
|
||||
|
||||
// TODO(webrtc:329396373): Remove after flexible mode is fully deployed.
|
||||
vp9_settings.flexibleMode =
|
||||
IsDisabled(call_->trials(), "WebRTC-Video-Vp9FlexibleMode");
|
||||
} else {
|
||||
// Multiple spatial layers vp9 screenshare needs flexible mode.
|
||||
vp9_settings.flexibleMode = vp9_settings.numberOfSpatialLayers > 1;
|
||||
@ -1503,9 +1504,9 @@ bool WebRtcVideoSendChannel::AddSendStream(const StreamParams& sp) {
|
||||
RTC_DCHECK(ssrc != 0);
|
||||
send_streams_[ssrc] = stream;
|
||||
|
||||
if (ssrc_list_changed_callback_) {
|
||||
ssrc_list_changed_callback_(send_ssrcs_);
|
||||
}
|
||||
if (ssrc_list_changed_callback_) {
|
||||
ssrc_list_changed_callback_(send_ssrcs_);
|
||||
}
|
||||
|
||||
if (sending_) {
|
||||
stream->SetSend(true);
|
||||
@ -3146,22 +3147,22 @@ bool WebRtcVideoReceiveChannel::MaybeCreateDefaultReceiveStream(
|
||||
// BWE has already been notified of this received packet.
|
||||
return false;
|
||||
}
|
||||
// Ignore unknown ssrcs if we recently created an unsignalled receive
|
||||
// stream since this shouldn't happen frequently. Getting into a state
|
||||
// of creating decoders on every packet eats up processing time (e.g.
|
||||
// https://crbug.com/1069603) and this cooldown prevents that.
|
||||
if (last_unsignalled_ssrc_creation_time_ms_.has_value()) {
|
||||
int64_t now_ms = rtc::TimeMillis();
|
||||
if (now_ms - last_unsignalled_ssrc_creation_time_ms_.value() <
|
||||
kUnsignaledSsrcCooldownMs) {
|
||||
// We've already created an unsignalled ssrc stream within the last
|
||||
// 0.5 s, ignore with a warning.
|
||||
RTC_LOG(LS_WARNING)
|
||||
<< "Another unsignalled ssrc packet arrived shortly after the "
|
||||
<< "creation of an unsignalled ssrc stream. Dropping packet.";
|
||||
return false;
|
||||
}
|
||||
// Ignore unknown ssrcs if we recently created an unsignalled receive
|
||||
// stream since this shouldn't happen frequently. Getting into a state
|
||||
// of creating decoders on every packet eats up processing time (e.g.
|
||||
// https://crbug.com/1069603) and this cooldown prevents that.
|
||||
if (last_unsignalled_ssrc_creation_time_ms_.has_value()) {
|
||||
int64_t now_ms = rtc::TimeMillis();
|
||||
if (now_ms - last_unsignalled_ssrc_creation_time_ms_.value() <
|
||||
kUnsignaledSsrcCooldownMs) {
|
||||
// We've already created an unsignalled ssrc stream within the last
|
||||
// 0.5 s, ignore with a warning.
|
||||
RTC_LOG(LS_WARNING)
|
||||
<< "Another unsignalled ssrc packet arrived shortly after the "
|
||||
<< "creation of an unsignalled ssrc stream. Dropping packet.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// RTX SSRC not yet known.
|
||||
ReCreateDefaultReceiveStream(packet.Ssrc(), absl::nullopt);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user