Make VideoStreamEncoder::ReconfigureEncoder always call ConfigureQualityScaler.

In addition restore call to ConfigureQualityScaler in SetSource, which
is needed if degradation preferences change mid-stream.

Fixes a regressions from https://webrtc-review.googlesource.com/70740,
The encoder's GetScalingSettings may depend on arguments to
InitEncode, so configuring the quality scaler only at encoder creation
time isn't enough.

Bug: webrtc:8830
Change-Id: I48f66cde219c56272f44441fdb26ec64c6002068
Reviewed-on: https://webrtc-review.googlesource.com/72000
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22993}
This commit is contained in:
Niels Möller 2018-04-24 09:13:08 +02:00 committed by Commit Bot
parent 882477f19d
commit f394f65b71

View File

@ -418,8 +418,8 @@ void VideoStreamEncoder::SetSource(
bool allow_scaling = IsResolutionScalingEnabled(degradation_preference_);
initial_rampup_ = allow_scaling ? 0 : kMaxInitialFramedrop;
stats_proxy_->SetAdaptationStats(GetActiveCounts(kCpu),
GetActiveCounts(kQuality));
if (encoder_)
ConfigureQualityScaler();
if (!IsFramerateScalingEnabled(degradation_preference) &&
max_framerate_ != -1) {
@ -542,8 +542,6 @@ void VideoStreamEncoder::ReconfigureEncoder() {
// or just discard incoming frames?
RTC_CHECK(encoder_);
ConfigureQualityScaler();
const webrtc::VideoEncoderFactory::CodecInfo info =
settings_.encoder_factory->QueryVideoEncoder(
encoder_config_.video_format);
@ -592,6 +590,8 @@ void VideoStreamEncoder::ReconfigureEncoder() {
int target_framerate = std::min(
max_framerate_, source_proxy_->GetActiveSinkWants().max_framerate_fps);
overuse_detector_->OnTargetFramerateUpdated(target_framerate);
ConfigureQualityScaler();
}
void VideoStreamEncoder::ConfigureQualityScaler() {
@ -616,8 +616,6 @@ void VideoStreamEncoder::ConfigureQualityScaler() {
initial_rampup_ = kMaxInitialFramedrop;
}
// TODO(nisse): Is this still the right place to do this? This is
// now called when the encoder is created.
stats_proxy_->SetAdaptationStats(GetActiveCounts(kCpu),
GetActiveCounts(kQuality));
}