// If field trial value of the key WebRTC-Bwe-ScreamV2 contain: // Enabled - Scream is used if RFC 8888 congestion control is negotiated. // mode:always - Scream is used regardless of RTCP feedback. // mode:only_after_ce - GoogCC is iniallally used, but Scream state is // updated in parallel. If ECN CE marks is seen in the // feedback, Scream is used instead of GoogCC for the // remaining duration of the call. // mode:goog_cc_with_ect1 - Goog CC is always used, but the controller will // claim to support ECN adaptation until the first // CE mark is seen. After that, packets are not sent // as ECT(1).
constexpr char kScreamFieldTrial[] = "WebRTC-Bwe-ScreamV2";
enum class Mode {
kGoogCc,
kScreamWithTwccOrRfc8888,
kScreamWithRfc8888,
kScreamAfterCe,
kGoogCcWithEct1
};
Mode ParseMode(const FieldTrialsView& field_trials) {
if (field_trials.IsEnabled(kScreamFieldTrial)) { return Mode::kScreamWithRfc8888;
}
FieldTrialParameter<std::string> mode("mode", "");
ParseFieldTrial({&mode}, field_trials.Lookup(kScreamFieldTrial));
if (mode->empty()) { return Mode::kGoogCc;
}
if (mode.Get() == "always") {
RTC_LOG(LS_INFO) << "ScreamV2 enabled always"; return Mode::kScreamWithTwccOrRfc8888;
}
if (mode.Get() == "only_after_ce") {
RTC_LOG(LS_INFO) << "ScreamV2 used after first packet with CE marking."; return Mode::kScreamAfterCe;
}
if (mode.Get() == "goog_cc_with_ect1") {
RTC_LOG(LS_INFO)
<< "GoogCC used. Sending packets as ECT1 until first seen CE marking."; return Mode::kGoogCcWithEct1;
} return Mode::kGoogCc;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.