Index: webrtc/video/screenshare_loopback.cc |
diff --git a/webrtc/video/screenshare_loopback.cc b/webrtc/video/screenshare_loopback.cc |
index 8f0ab63da572aec14aca9cdc5da0f562a6d5041f..4a13629734d1771f8d2e88639818936548f33a3d 100644 |
--- a/webrtc/video/screenshare_loopback.cc |
+++ b/webrtc/video/screenshare_loopback.cc |
@@ -73,6 +73,11 @@ size_t MaxBitrate() { |
return static_cast<size_t>(FLAGS_tl1_bitrate); |
} |
+DEFINE_int32(num_temporal_layers, 2, "Number of temporal layers to use."); |
+int NumTemporalLayers() { |
+ return static_cast<int>(FLAGS_num_temporal_layers); |
+} |
+ |
DEFINE_int32(min_transmit_bitrate, 400, "Min transmit bitrate incl. padding."); |
int MinTransmitBitrate() { |
return FLAGS_min_transmit_bitrate; |
@@ -128,15 +133,20 @@ DEFINE_string( |
class ScreenshareLoopback : public test::Loopback { |
public: |
explicit ScreenshareLoopback(const Config& config) : Loopback(config) { |
+ CHECK_GE(config.num_temporal_layers, 1u); |
+ CHECK_LE(config.num_temporal_layers, 2u); |
+ |
vp8_settings_ = VideoEncoder::GetDefaultVp8Settings(); |
vp8_settings_.denoisingOn = false; |
vp8_settings_.frameDroppingOn = false; |
- vp8_settings_.numberOfTemporalLayers = 2; |
+ vp8_settings_.numberOfTemporalLayers = |
+ static_cast<unsigned char>(config.num_temporal_layers); |
vp9_settings_ = VideoEncoder::GetDefaultVp9Settings(); |
vp9_settings_.denoisingOn = false; |
vp9_settings_.frameDroppingOn = false; |
- vp9_settings_.numberOfTemporalLayers = 2; |
+ vp9_settings_.numberOfTemporalLayers = |
+ static_cast<unsigned char>(config.num_temporal_layers); |
} |
virtual ~ScreenshareLoopback() {} |
@@ -146,10 +156,13 @@ class ScreenshareLoopback : public test::Loopback { |
VideoStream* stream = &encoder_config.streams[0]; |
encoder_config.content_type = VideoEncoderConfig::ContentType::kScreen; |
encoder_config.min_transmit_bitrate_bps = flags::MinTransmitBitrate(); |
+ int num_temporal_layers; |
if (config_.codec == "VP8") { |
encoder_config.encoder_specific_settings = &vp8_settings_; |
+ num_temporal_layers = vp8_settings_.numberOfTemporalLayers; |
} else if (config_.codec == "VP9") { |
encoder_config.encoder_specific_settings = &vp9_settings_; |
+ num_temporal_layers = vp9_settings_.numberOfTemporalLayers; |
} else { |
RTC_NOTREACHED() << "Codec not supported!"; |
abort(); |
@@ -157,7 +170,10 @@ class ScreenshareLoopback : public test::Loopback { |
stream->temporal_layer_thresholds_bps.clear(); |
stream->target_bitrate_bps = |
static_cast<int>(config_.start_bitrate_kbps) * 1000; |
- stream->temporal_layer_thresholds_bps.push_back(stream->target_bitrate_bps); |
+ if (num_temporal_layers == 2) { |
+ stream->temporal_layer_thresholds_bps.push_back( |
+ stream->target_bitrate_bps); |
+ } |
return encoder_config; |
} |
@@ -202,7 +218,7 @@ void Loopback() { |
flags::MaxBitrate(), |
flags::MinTransmitBitrate(), |
flags::Codec(), |
- 0, // Default number of temporal layers. |
+ flags::NumTemporalLayers(), |
flags::LossPercent(), |
flags::LinkCapacity(), |
flags::QueueSize(), |