From 7ae8d64dd0f7dd5f0f1009dc876f288af9f96ba4 Mon Sep 17 00:00:00 2001 From: Ilya Nikolaevskiy Date: Tue, 12 Mar 2019 13:16:59 +0100 Subject: [PATCH] Restore VideoCodecInitializer to use only the 1st stream maxFramerate This is a partial fix for regression introduced in https://webrtc-review.googlesource.com/c/src/+/125461 Currently, the OveruseFrameDetector::OnTargetFramerateUpdated is called only then the encoder is reconfigured, with the default maxFramerate. Changing it from default 5 to 60, or even 30 made the detector too sensitive and it caused adaptation down due to CPU overuse even on powerful machines. Bug: webrtc:10310, chromium:940466 Change-Id: I7b0eabfc8f9b502e293af1a5b02fc5d4ab468c14 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127280 Commit-Queue: Ilya Nikolaevskiy Reviewed-by: Johannes Kron Cr-Commit-Position: refs/heads/master@{#27094} --- modules/video_coding/video_codec_initializer.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/video_coding/video_codec_initializer.cc b/modules/video_coding/video_codec_initializer.cc index 40096e7535..3316ce1581 100644 --- a/modules/video_coding/video_codec_initializer.cc +++ b/modules/video_coding/video_codec_initializer.cc @@ -86,7 +86,6 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec( kDefaultOutlierFrameSizePercent}; RTC_DCHECK_LE(streams.size(), kMaxSimulcastStreams); - int max_framerate = 0; for (size_t i = 0; i < streams.size(); ++i) { SimulcastStream* sim_stream = &video_codec.simulcastStream[i]; RTC_DCHECK_GT(streams[i].width, 0); @@ -106,7 +105,6 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec( sim_stream->width = static_cast(streams[i].width); sim_stream->height = static_cast(streams[i].height); sim_stream->maxFramerate = streams[i].max_framerate; - max_framerate = std::max(max_framerate, streams[i].max_framerate); sim_stream->minBitrate = streams[i].min_bitrate_bps / 1000; sim_stream->targetBitrate = streams[i].target_bitrate_bps / 1000; sim_stream->maxBitrate = streams[i].max_bitrate_bps / 1000; @@ -136,8 +134,8 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec( if (video_codec.maxBitrate < kEncoderMinBitrateKbps) video_codec.maxBitrate = kEncoderMinBitrateKbps; - RTC_DCHECK_GT(max_framerate, 0); - video_codec.maxFramerate = max_framerate; + RTC_DCHECK_GT(streams[0].max_framerate, 0); + video_codec.maxFramerate = streams[0].max_framerate; // Set codec specific options if (config.encoder_specific_settings)