Fix calculation of number of active spatial layers.
It didn't account for implicit bitrate allocation, which is used in some unit tests, when bitrate distribution is done by the encoder wrapper. Bug: none Change-Id: I8fcf28e10f7a6c378580ef917221ad5c8d3869c9 Reviewed-on: https://webrtc-review.googlesource.com/94775 Reviewed-by: Åsa Persson <asapersson@webrtc.org> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24343}
This commit is contained in:
committed by
Commit Bot
parent
814f99cf27
commit
908689d047
@ -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<unsigned int>(
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user