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 04bbd161ec699338a2a36ac9a6f912ee39207132..8c57aaa4c2448555e466748b8fc8e68944e1455a 100644 |
--- a/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc |
+++ b/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc |
@@ -212,8 +212,7 @@ int VP9EncoderImpl::InitEncode(const VideoCodec* inst, |
if (inst->codecSpecific.VP9.numberOfTemporalLayers > 3) { |
return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; |
} |
- // For now, only support one spatial layer. |
- if (inst->codecSpecific.VP9.numberOfSpatialLayers != 1) { |
+ if (inst->codecSpecific.VP9.numberOfSpatialLayers > 2) { |
sprang_webrtc
2015/08/13 13:52:07
Add comment that libvpx currently only supports tw
ivica
2015/08/13 15:20:30
Done.
|
return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; |
} |
int retVal = Release(); |
@@ -351,12 +350,11 @@ int VP9EncoderImpl::NumberOfThreads(int width, |
} |
int VP9EncoderImpl::InitAndSetControlSettings(const VideoCodec* inst) { |
- |
config_->ss_number_layers = num_spatial_layers_; |
if (num_spatial_layers_ > 1) { |
config_->rc_min_quantizer = 0; |
- config_->rc_max_quantizer = 63; |
+ config_->rc_max_quantizer = 52; |
} |
int scaling_factor_num = 256; |
for (int i = num_spatial_layers_ - 1; i >= 0; --i) { |
@@ -404,6 +402,10 @@ int VP9EncoderImpl::InitAndSetControlSettings(const VideoCodec* inst) { |
vpx_codec_control(encoder_, VP9E_SET_NOISE_SENSITIVITY, |
inst->codecSpecific.VP9.denoisingOn ? 1 : 0); |
#endif |
+ if (codec_.mode == kScreensharing) { |
+ vpx_codec_control(encoder_, VP9E_SET_TUNE_CONTENT, 1); |
+ } |
+ vpx_codec_control(encoder_, VP8E_SET_STATIC_THRESHOLD, 1); |
inited_ = true; |
return WEBRTC_VIDEO_CODEC_OK; |
} |
@@ -540,8 +542,9 @@ void VP9EncoderImpl::PopulateCodecSpecific(CodecSpecificInfo* codec_specific, |
vp9_info->tl0_pic_idx = tl0_pic_idx_; |
} |
+ // Always populate this, so that packetizer can properly set the marker bit. |
+ vp9_info->num_spatial_layers = num_spatial_layers_; |
if (vp9_info->ss_data_available) { |
- vp9_info->num_spatial_layers = num_spatial_layers_; |
vp9_info->spatial_layer_resolution_present = true; |
for (size_t i = 0; i < vp9_info->num_spatial_layers; ++i) { |
vp9_info->width[i] = codec_.width * |