| 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 8c798db66529b5131d63aaa218e8c6f419cac2e7..7ab4a79bd2b2d1e569ffbaaf09a0f5346e0c3822 100644
 | 
| --- a/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc
 | 
| +++ b/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc
 | 
| @@ -77,6 +77,7 @@ VP9EncoderImpl::VP9EncoderImpl()
 | 
|        frames_since_kf_(0),
 | 
|        num_temporal_layers_(0),
 | 
|        num_spatial_layers_(0),
 | 
| +      is_flexible_mode_(false),
 | 
|        frames_encoded_(0),
 | 
|        // Use two spatial when screensharing with flexible mode.
 | 
|        spatial_layer_(new ScreenshareLayersVP9(2)) {
 | 
| @@ -193,24 +194,28 @@ bool VP9EncoderImpl::SetSvcRates() {
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| -int VP9EncoderImpl::SetRates(uint32_t new_bitrate_kbit,
 | 
| -                             uint32_t new_framerate) {
 | 
| +int VP9EncoderImpl::SetRateAllocation(
 | 
| +    const BitrateAllocation& bitrate_allocation,
 | 
| +    uint32_t frame_rate) {
 | 
|    if (!inited_) {
 | 
|      return WEBRTC_VIDEO_CODEC_UNINITIALIZED;
 | 
|    }
 | 
|    if (encoder_->err) {
 | 
|      return WEBRTC_VIDEO_CODEC_ERROR;
 | 
|    }
 | 
| -  if (new_framerate < 1) {
 | 
| +  if (frame_rate < 1) {
 | 
|      return WEBRTC_VIDEO_CODEC_ERR_PARAMETER;
 | 
|    }
 | 
|    // Update bit rate
 | 
| -  if (codec_.maxBitrate > 0 && new_bitrate_kbit > codec_.maxBitrate) {
 | 
| -    new_bitrate_kbit = codec_.maxBitrate;
 | 
| +  if (codec_.maxBitrate > 0 &&
 | 
| +      bitrate_allocation.get_sum_kbps() > codec_.maxBitrate) {
 | 
| +    return WEBRTC_VIDEO_CODEC_ERR_PARAMETER;
 | 
|    }
 | 
| -  config_->rc_target_bitrate = new_bitrate_kbit;
 | 
| -  codec_.maxFramerate = new_framerate;
 | 
| -  spatial_layer_->ConfigureBitrate(new_bitrate_kbit, 0);
 | 
| +
 | 
| +  // TODO(sprang): Actually use BitrateAllocation layer info.
 | 
| +  config_->rc_target_bitrate = bitrate_allocation.get_sum_kbps();
 | 
| +  codec_.maxFramerate = frame_rate;
 | 
| +  spatial_layer_->ConfigureBitrate(bitrate_allocation.get_sum_kbps(), 0);
 | 
|  
 | 
|    if (!SetSvcRates()) {
 | 
|      return WEBRTC_VIDEO_CODEC_ERR_PARAMETER;
 | 
| 
 |