Index: webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc |
diff --git a/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc b/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc |
index 6fdd676ab14b7d17aae27a7fafb49d9c234791b7..edd5952098f6399d000c31f5aa2bfd091ec18510 100644 |
--- a/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc |
+++ b/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc |
@@ -306,6 +306,9 @@ int VP9EncoderImpl::InitEncode(const VideoCodec* inst, |
if (inst->codecSpecific.VP9.keyFrameInterval > 0) { |
config_->kf_mode = VPX_KF_AUTO; |
config_->kf_max_dist = inst->codecSpecific.VP9.keyFrameInterval; |
+ // Needs to be set (in svc mode) to get correct periodic key frame interval |
+ // (will have no effect in non-svc). |
+ config_->kf_min_dist = config_->kf_max_dist; |
} else { |
config_->kf_mode = VPX_KF_DISABLED; |
} |
@@ -379,21 +382,21 @@ int VP9EncoderImpl::NumberOfThreads(int width, |
} |
int VP9EncoderImpl::InitAndSetControlSettings(const VideoCodec* inst) { |
+ int tot_num_layers = num_spatial_layers_ * num_temporal_layers_; |
stefan-webrtc
2015/12/03 08:44:44
I don't fully understand this. Has the max/min_qua
åsapersson
2015/12/03 09:16:25
The configuration has changed in the latest versio
|
+ for (int i = 0; i < tot_num_layers; ++i) { |
+ svc_internal_.svc_params.max_quantizers[i] = config_->rc_max_quantizer; |
+ svc_internal_.svc_params.min_quantizers[i] = config_->rc_min_quantizer; |
+ } |
config_->ss_number_layers = num_spatial_layers_; |
- |
if (ExplicitlyConfiguredSpatialLayers()) { |
for (int i = 0; i < num_spatial_layers_; ++i) { |
const auto& layer = codec_.spatialLayers[i]; |
- svc_internal_.svc_params.max_quantizers[i] = config_->rc_max_quantizer; |
- svc_internal_.svc_params.min_quantizers[i] = config_->rc_min_quantizer; |
svc_internal_.svc_params.scaling_factor_num[i] = layer.scaling_factor_num; |
svc_internal_.svc_params.scaling_factor_den[i] = layer.scaling_factor_den; |
} |
} else { |
int scaling_factor_num = 256; |
for (int i = num_spatial_layers_ - 1; i >= 0; --i) { |
- svc_internal_.svc_params.max_quantizers[i] = config_->rc_max_quantizer; |
- svc_internal_.svc_params.min_quantizers[i] = config_->rc_min_quantizer; |
// 1:2 scaling in each dimension. |
svc_internal_.svc_params.scaling_factor_num[i] = scaling_factor_num; |
svc_internal_.svc_params.scaling_factor_den[i] = 256; |
@@ -544,7 +547,7 @@ void VP9EncoderImpl::PopulateCodecSpecific(CodecSpecificInfo* codec_specific, |
assert(codec_specific != NULL); |
codec_specific->codecType = kVideoCodecVP9; |
CodecSpecificInfoVP9 *vp9_info = &(codec_specific->codecSpecific.VP9); |
- // TODO(asapersson): Set correct values. |
+ // TODO(asapersson): Set correct value. |
vp9_info->inter_pic_predicted = |
(pkt.data.frame.flags & VPX_FRAME_IS_KEY) ? false : true; |
vp9_info->flexible_mode = codec_.codecSpecific.VP9.flexibleMode; |