Remove unused field trial WebRTC-VP8ScreenshareTemporalLayers.
Bug: webrtc:9477 Change-Id: I5419653fea369ad253c4815f2b961db7e92b332b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/269203 Auto-Submit: Erik Språng <sprang@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37668}
This commit is contained in:
parent
2189415be3
commit
47be1493b6
@ -33,23 +33,11 @@ namespace cricket {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr webrtc::DataRate Interpolate(const webrtc::DataRate& a,
|
||||
const webrtc::DataRate& b,
|
||||
float rate) {
|
||||
return a * (1.0 - rate) + b * rate;
|
||||
}
|
||||
|
||||
constexpr char kUseLegacySimulcastLayerLimitFieldTrial[] =
|
||||
"WebRTC-LegacySimulcastLayerLimit";
|
||||
|
||||
constexpr double kDefaultMaxRoundupRate = 0.1;
|
||||
|
||||
// TODO(webrtc:12415): Flip this to a kill switch when this feature launches.
|
||||
bool EnableLowresBitrateInterpolation(const webrtc::FieldTrialsView& trials) {
|
||||
return absl::StartsWith(
|
||||
trials.Lookup("WebRTC-LowresSimulcastBitrateInterpolation"), "Enabled");
|
||||
}
|
||||
|
||||
// Limits for legacy conference screensharing mode. Currently used for the
|
||||
// lower of the two simulcast streams.
|
||||
constexpr webrtc::DataRate kScreenshareDefaultTl0Bitrate =
|
||||
@ -64,7 +52,9 @@ constexpr webrtc::DataRate kScreenshareHighStreamMinBitrate =
|
||||
constexpr webrtc::DataRate kScreenshareHighStreamMaxBitrate =
|
||||
webrtc::DataRate::KilobitsPerSec(1250);
|
||||
|
||||
} // namespace
|
||||
constexpr int kDefaultNumTemporalLayers = 3;
|
||||
constexpr int kScreenshareMaxSimulcastLayers = 2;
|
||||
constexpr int kScreenshareTemporalLayers = 2;
|
||||
|
||||
struct SimulcastFormat {
|
||||
int width;
|
||||
@ -112,6 +102,18 @@ constexpr const SimulcastFormat kSimulcastFormats[] = {
|
||||
webrtc::DataRate::KilobitsPerSec(0),
|
||||
webrtc::DataRate::KilobitsPerSec(30)}};
|
||||
|
||||
constexpr webrtc::DataRate Interpolate(const webrtc::DataRate& a,
|
||||
const webrtc::DataRate& b,
|
||||
float rate) {
|
||||
return a * (1.0 - rate) + b * rate;
|
||||
}
|
||||
|
||||
// TODO(webrtc:12415): Flip this to a kill switch when this feature launches.
|
||||
bool EnableLowresBitrateInterpolation(const webrtc::FieldTrialsView& trials) {
|
||||
return absl::StartsWith(
|
||||
trials.Lookup("WebRTC-LowresSimulcastBitrateInterpolation"), "Enabled");
|
||||
}
|
||||
|
||||
std::vector<SimulcastFormat> GetSimulcastFormats(
|
||||
bool enable_lowres_bitrate_interpolation) {
|
||||
std::vector<SimulcastFormat> formats;
|
||||
@ -128,28 +130,14 @@ std::vector<SimulcastFormat> GetSimulcastFormats(
|
||||
return formats;
|
||||
}
|
||||
|
||||
const int kMaxScreenshareSimulcastLayers = 2;
|
||||
|
||||
// Multiway: Number of temporal layers for each simulcast stream.
|
||||
int DefaultNumberOfTemporalLayers(int simulcast_id,
|
||||
bool screenshare,
|
||||
const webrtc::FieldTrialsView& trials) {
|
||||
RTC_CHECK_GE(simulcast_id, 0);
|
||||
RTC_CHECK_LT(simulcast_id, webrtc::kMaxSimulcastStreams);
|
||||
|
||||
const int kDefaultNumTemporalLayers = 3;
|
||||
const int kDefaultNumScreenshareTemporalLayers = 2;
|
||||
int default_num_temporal_layers = screenshare
|
||||
? kDefaultNumScreenshareTemporalLayers
|
||||
: kDefaultNumTemporalLayers;
|
||||
|
||||
int DefaultNumberOfTemporalLayers(const webrtc::FieldTrialsView& trials) {
|
||||
const std::string group_name =
|
||||
screenshare ? trials.Lookup("WebRTC-VP8ScreenshareTemporalLayers")
|
||||
: trials.Lookup("WebRTC-VP8ConferenceTemporalLayers");
|
||||
trials.Lookup("WebRTC-VP8ConferenceTemporalLayers");
|
||||
if (group_name.empty())
|
||||
return default_num_temporal_layers;
|
||||
return kDefaultNumTemporalLayers;
|
||||
|
||||
int num_temporal_layers = default_num_temporal_layers;
|
||||
int num_temporal_layers = kDefaultNumTemporalLayers;
|
||||
if (sscanf(group_name.c_str(), "%d", &num_temporal_layers) == 1 &&
|
||||
num_temporal_layers > 0 &&
|
||||
num_temporal_layers <= webrtc::kMaxTemporalStreams) {
|
||||
@ -160,7 +148,7 @@ int DefaultNumberOfTemporalLayers(int simulcast_id,
|
||||
"incorrect value: "
|
||||
<< group_name;
|
||||
|
||||
return default_num_temporal_layers;
|
||||
return kDefaultNumTemporalLayers;
|
||||
}
|
||||
|
||||
int FindSimulcastFormatIndex(int width,
|
||||
@ -178,6 +166,8 @@ int FindSimulcastFormatIndex(int width,
|
||||
return -1;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
// Round size to nearest simulcast-friendly size.
|
||||
// Simulcast stream width and height must both be dividable by
|
||||
// |2 ^ (simulcast_layers - 1)|.
|
||||
@ -376,9 +366,7 @@ std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
|
||||
// TODO(pbos): Fill actual temporal-layer bitrate thresholds.
|
||||
layers[s].max_qp = max_qp;
|
||||
layers[s].num_temporal_layers =
|
||||
temporal_layers_supported
|
||||
? DefaultNumberOfTemporalLayers(s, false, trials)
|
||||
: 1;
|
||||
temporal_layers_supported ? DefaultNumberOfTemporalLayers(trials) : 1;
|
||||
layers[s].max_bitrate_bps =
|
||||
FindSimulcastMaxBitrate(width, height,
|
||||
enable_lowres_bitrate_interpolation)
|
||||
@ -387,7 +375,7 @@ std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
|
||||
FindSimulcastTargetBitrate(width, height,
|
||||
enable_lowres_bitrate_interpolation)
|
||||
.bps();
|
||||
int num_temporal_layers = DefaultNumberOfTemporalLayers(s, false, trials);
|
||||
int num_temporal_layers = DefaultNumberOfTemporalLayers(trials);
|
||||
if (s == 0) {
|
||||
// If alternative temporal rate allocation is selected, adjust the
|
||||
// bitrate of the lowest simulcast stream so that absolute bitrate for
|
||||
@ -451,9 +439,8 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
bool temporal_layers_supported,
|
||||
bool base_heavy_tl3_rate_alloc,
|
||||
const webrtc::FieldTrialsView& trials) {
|
||||
auto max_screenshare_layers = kMaxScreenshareSimulcastLayers;
|
||||
size_t num_simulcast_layers =
|
||||
std::min<int>(max_layers, max_screenshare_layers);
|
||||
std::min<int>(max_layers, kScreenshareMaxSimulcastLayers);
|
||||
|
||||
std::vector<webrtc::VideoStream> layers(num_simulcast_layers);
|
||||
// For legacy screenshare in conference mode, tl0 and tl1 bitrates are
|
||||
@ -471,10 +458,8 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
// With simulcast enabled, add another spatial layer. This one will have a
|
||||
// more normal layout, with the regular 3 temporal layer pattern and no fps
|
||||
// restrictions. The base simulcast layer will still use legacy setup.
|
||||
if (num_simulcast_layers == kMaxScreenshareSimulcastLayers) {
|
||||
if (num_simulcast_layers == kScreenshareMaxSimulcastLayers) {
|
||||
// Add optional upper simulcast layer.
|
||||
const int num_temporal_layers =
|
||||
DefaultNumberOfTemporalLayers(1, true, trials);
|
||||
int max_bitrate_bps;
|
||||
bool using_boosted_bitrate = false;
|
||||
if (!temporal_layers_supported) {
|
||||
@ -483,20 +468,11 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
max_bitrate_bps = static_cast<int>(
|
||||
kScreenshareHighStreamMaxBitrate.bps() *
|
||||
webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
|
||||
num_temporal_layers, 0, base_heavy_tl3_rate_alloc));
|
||||
} else if (DefaultNumberOfTemporalLayers(1, true, trials) != 3 ||
|
||||
base_heavy_tl3_rate_alloc) {
|
||||
kScreenshareTemporalLayers, 0, base_heavy_tl3_rate_alloc));
|
||||
} else {
|
||||
// Experimental temporal layer mode used, use increased max bitrate.
|
||||
max_bitrate_bps = kScreenshareHighStreamMaxBitrate.bps();
|
||||
using_boosted_bitrate = true;
|
||||
} else {
|
||||
// Keep current bitrates with default 3tl/8 frame settings.
|
||||
// Lowest temporal layers of a 3 layer setup will have 40% of the total
|
||||
// bitrate allocation for that simulcast layer. Make sure the gap between
|
||||
// the target of the lower simulcast layer and first temporal layer of the
|
||||
// higher one is at most 2x the bitrate, so that upswitching is not
|
||||
// hampered by stalled bitrate estimates.
|
||||
max_bitrate_bps = 2 * ((layers[0].target_bitrate_bps * 10) / 4);
|
||||
}
|
||||
|
||||
layers[1].width = width;
|
||||
@ -504,9 +480,7 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
layers[1].max_qp = max_qp;
|
||||
layers[1].max_framerate = kDefaultVideoMaxFramerate;
|
||||
layers[1].num_temporal_layers =
|
||||
temporal_layers_supported
|
||||
? DefaultNumberOfTemporalLayers(1, true, trials)
|
||||
: 1;
|
||||
temporal_layers_supported ? kScreenshareTemporalLayers : 1;
|
||||
layers[1].min_bitrate_bps = using_boosted_bitrate
|
||||
? kScreenshareHighStreamMinBitrate.bps()
|
||||
: layers[0].target_bitrate_bps * 2;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user