diff --git a/modules/video_coding/codecs/vp9/vp9_impl.cc b/modules/video_coding/codecs/vp9/vp9_impl.cc index 0cbc34e372..bdae580c47 100644 --- a/modules/video_coding/codecs/vp9/vp9_impl.cc +++ b/modules/video_coding/codecs/vp9/vp9_impl.cc @@ -204,16 +204,8 @@ bool VP9EncoderImpl::ExplicitlyConfiguredSpatialLayers() const { bool VP9EncoderImpl::SetSvcRates( const VideoBitrateAllocation& bitrate_allocation) { - uint8_t i = 0; - config_->rc_target_bitrate = bitrate_allocation.get_sum_kbps(); - num_active_spatial_layers_ = 0; - for (i = 0; i < num_spatial_layers_; ++i) - num_active_spatial_layers_ += bitrate_allocation.IsSpatialLayerUsed(i); - RTC_DCHECK_GT(num_active_spatial_layers_, 0); - RTC_DCHECK_LE(num_active_spatial_layers_, num_spatial_layers_); - if (ExplicitlyConfiguredSpatialLayers()) { for (size_t sl_idx = 0; sl_idx < num_spatial_layers_; ++sl_idx) { const bool was_layer_enabled = (config_->ss_target_bitrate[sl_idx] > 0); @@ -237,7 +229,7 @@ bool VP9EncoderImpl::SetSvcRates( } else { float rate_ratio[VPX_MAX_LAYERS] = {0}; float total = 0; - for (i = 0; i < num_spatial_layers_; ++i) { + for (int i = 0; i < num_spatial_layers_; ++i) { if (svc_params_.scaling_factor_num[i] <= 0 || svc_params_.scaling_factor_den[i] <= 0) { RTC_LOG(LS_ERROR) << "Scaling factors not specified!"; @@ -248,7 +240,7 @@ bool VP9EncoderImpl::SetSvcRates( total += rate_ratio[i]; } - for (i = 0; i < num_spatial_layers_; ++i) { + for (int i = 0; i < num_spatial_layers_; ++i) { RTC_CHECK_GT(total, 0); config_->ss_target_bitrate[i] = static_cast( config_->rc_target_bitrate * rate_ratio[i] / total); @@ -274,6 +266,15 @@ bool VP9EncoderImpl::SetSvcRates( } } } + + num_active_spatial_layers_ = 0; + for (int i = 0; i < num_spatial_layers_; ++i) { + if (config_->ss_target_bitrate[i] > 0) { + ++num_active_spatial_layers_; + } + } + RTC_DCHECK_GT(num_active_spatial_layers_, 0); + return true; }