| Index: webrtc/modules/video_coding/video_codec_initializer.cc
|
| diff --git a/webrtc/modules/video_coding/video_codec_initializer.cc b/webrtc/modules/video_coding/video_codec_initializer.cc
|
| index dbdede07add64ef8a6ebe7a6b107aa6ebd062dfe..96a00334ab8592b8568d759a716cc420649ef428 100644
|
| --- a/webrtc/modules/video_coding/video_codec_initializer.cc
|
| +++ b/webrtc/modules/video_coding/video_codec_initializer.cc
|
| @@ -38,8 +38,9 @@ bool VideoCodecInitializer::SetupCodec(
|
| case kVideoCodecVP8: {
|
| if (!codec->VP8()->tl_factory) {
|
| if (codec->mode == kScreensharing &&
|
| - codec->numberOfSimulcastStreams == 1 &&
|
| - codec->VP8()->numberOfTemporalLayers == 2) {
|
| + (codec->numberOfSimulcastStreams > 1 ||
|
| + (codec->numberOfSimulcastStreams == 1 &&
|
| + codec->VP8()->numberOfTemporalLayers == 2))) {
|
| // Conference mode temporal layering for screen content.
|
| tl_factory.reset(new ScreenshareTemporalLayersFactory());
|
| } else {
|
| @@ -102,7 +103,7 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec(
|
| break;
|
| case VideoEncoderConfig::ContentType::kScreen:
|
| video_codec.mode = kScreensharing;
|
| - if (streams.size() == 1 &&
|
| + if (streams.size() >= 1 &&
|
| streams[0].temporal_layer_thresholds_bps.size() == 1) {
|
| video_codec.targetBitrate =
|
| streams[0].temporal_layer_thresholds_bps[0] / 1000;
|
| @@ -180,8 +181,12 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec(
|
| RTC_DCHECK_GT(streams[i].width, 0);
|
| RTC_DCHECK_GT(streams[i].height, 0);
|
| RTC_DCHECK_GT(streams[i].max_framerate, 0);
|
| - // Different framerates not supported per stream at the moment.
|
| - RTC_DCHECK_EQ(streams[i].max_framerate, streams[0].max_framerate);
|
| + // Different framerates not supported per stream at the moment, unless it's
|
| + // screenshare where there is an exception and a simulcast encoder adapter,
|
| + // which supports different framerates, is used instead.
|
| + if (config.content_type != VideoEncoderConfig::ContentType::kScreen) {
|
| + RTC_DCHECK_EQ(streams[i].max_framerate, streams[0].max_framerate);
|
| + }
|
| RTC_DCHECK_GE(streams[i].min_bitrate_bps, 0);
|
| RTC_DCHECK_GE(streams[i].target_bitrate_bps, streams[i].min_bitrate_bps);
|
| RTC_DCHECK_GE(streams[i].max_bitrate_bps, streams[i].target_bitrate_bps);
|
|
|