Don't reset quality scaler on resolution change.
This was causing the QualityScaler to be reconstructed each time the resolution changes and thus the fast_rampup logic was not working as intended. We now properly change the checking period to 5 seconds after a downscale. BUG=b/36457883 Review-Url: https://codereview.webrtc.org/2766513003 Cr-Commit-Position: refs/heads/master@{#17335}
This commit is contained in:
@ -463,7 +463,16 @@ void ViEEncoder::ConfigureQualityScaler() {
|
||||
const auto scaling_settings = settings_.encoder->GetScalingSettings();
|
||||
const bool degradation_preference_allows_scaling =
|
||||
degradation_preference_ != DegradationPreference::kMaintainResolution;
|
||||
if (degradation_preference_allows_scaling && scaling_settings.enabled) {
|
||||
|
||||
stats_proxy_->SetResolutionRestrictionStats(
|
||||
degradation_preference_allows_scaling, scale_counter_[kCpu] > 0,
|
||||
scale_counter_[kQuality]);
|
||||
|
||||
if (degradation_preference_allows_scaling &&
|
||||
scaling_settings.enabled) {
|
||||
// Abort if quality scaler has already been configured.
|
||||
if (quality_scaler_.get() != nullptr)
|
||||
return;
|
||||
// Drop frames and scale down until desired quality is achieved.
|
||||
if (scaling_settings.thresholds) {
|
||||
quality_scaler_.reset(
|
||||
@ -475,9 +484,6 @@ void ViEEncoder::ConfigureQualityScaler() {
|
||||
quality_scaler_.reset(nullptr);
|
||||
initial_rampup_ = kMaxInitialFramedrop;
|
||||
}
|
||||
stats_proxy_->SetResolutionRestrictionStats(
|
||||
degradation_preference_allows_scaling, scale_counter_[kCpu] > 0,
|
||||
scale_counter_[kQuality]);
|
||||
}
|
||||
|
||||
void ViEEncoder::OnFrame(const VideoFrame& video_frame) {
|
||||
|
||||
Reference in New Issue
Block a user