| Index: webrtc/video/vie_encoder.cc
 | 
| diff --git a/webrtc/video/vie_encoder.cc b/webrtc/video/vie_encoder.cc
 | 
| index bd0729c1f28425adfd4c1ebcdf1d3d6c3f446e74..e6f6776ad6f7b75d4874ad01a60b079470989689 100644
 | 
| --- a/webrtc/video/vie_encoder.cc
 | 
| +++ b/webrtc/video/vie_encoder.cc
 | 
| @@ -17,11 +17,9 @@
 | 
|  #include "webrtc/base/checks.h"
 | 
|  #include "webrtc/base/logging.h"
 | 
|  #include "webrtc/base/trace_event.h"
 | 
| -#include "webrtc/call/bitrate_allocator.h"
 | 
|  #include "webrtc/common_video/include/video_image.h"
 | 
|  #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
 | 
|  #include "webrtc/frame_callback.h"
 | 
| -#include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
 | 
|  #include "webrtc/modules/pacing/paced_sender.h"
 | 
|  #include "webrtc/modules/utility/include/process_thread.h"
 | 
|  #include "webrtc/modules/video_coding/include/video_codec_interface.h"
 | 
| @@ -80,22 +78,6 @@ class QMVideoSettingsCallback : public VCMQMSettingsCallback {
 | 
|    VideoProcessing* vp_;
 | 
|  };
 | 
|  
 | 
| -class ViEBitrateObserver : public BitrateObserver {
 | 
| - public:
 | 
| -  explicit ViEBitrateObserver(ViEEncoder* owner)
 | 
| -      : owner_(owner) {
 | 
| -  }
 | 
| -  virtual ~ViEBitrateObserver() {}
 | 
| -  // Implements BitrateObserver.
 | 
| -  virtual void OnNetworkChanged(uint32_t bitrate_bps,
 | 
| -                                uint8_t fraction_lost,
 | 
| -                                int64_t rtt) {
 | 
| -    owner_->OnNetworkChanged(bitrate_bps, fraction_lost, rtt);
 | 
| -  }
 | 
| - private:
 | 
| -  ViEEncoder* owner_;
 | 
| -};
 | 
| -
 | 
|  ViEEncoder::ViEEncoder(uint32_t number_of_cores,
 | 
|                         const std::vector<uint32_t>& ssrcs,
 | 
|                         ProcessThread* module_process_thread,
 | 
| @@ -103,8 +85,7 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores,
 | 
|                         I420FrameCallback* pre_encode_callback,
 | 
|                         OveruseFrameDetector* overuse_detector,
 | 
|                         PacedSender* pacer,
 | 
| -                       PayloadRouter* payload_router,
 | 
| -                       BitrateAllocator* bitrate_allocator)
 | 
| +                       PayloadRouter* payload_router)
 | 
|      : number_of_cores_(number_of_cores),
 | 
|        ssrcs_(ssrcs),
 | 
|        vp_(VideoProcessing::Create()),
 | 
| @@ -117,7 +98,6 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores,
 | 
|        overuse_detector_(overuse_detector),
 | 
|        pacer_(pacer),
 | 
|        send_payload_router_(payload_router),
 | 
| -      bitrate_allocator_(bitrate_allocator),
 | 
|        time_of_last_frame_activity_ms_(0),
 | 
|        encoder_config_(),
 | 
|        min_transmit_bitrate_bps_(0),
 | 
| @@ -132,7 +112,6 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores,
 | 
|        has_received_rpsi_(false),
 | 
|        picture_id_rpsi_(0),
 | 
|        video_suspended_(false) {
 | 
| -  bitrate_observer_.reset(new ViEBitrateObserver(this));
 | 
|    module_process_thread_->RegisterModule(vcm_.get());
 | 
|  }
 | 
|  
 | 
| @@ -157,8 +136,6 @@ VideoCodingModule* ViEEncoder::vcm() const {
 | 
|  
 | 
|  ViEEncoder::~ViEEncoder() {
 | 
|    module_process_thread_->DeRegisterModule(vcm_.get());
 | 
| -  if (bitrate_allocator_)
 | 
| -    bitrate_allocator_->RemoveBitrateObserver(bitrate_observer_.get());
 | 
|  }
 | 
|  
 | 
|  void ViEEncoder::SetNetworkTransmissionState(bool is_transmitting) {
 | 
| @@ -202,7 +179,7 @@ void ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec,
 | 
|                 vp_->SetTargetResolution(video_codec.width, video_codec.height,
 | 
|                                          video_codec.maxFramerate));
 | 
|  
 | 
| -  // Cache codec before calling AddBitrateObserver (which calls OnNetworkChanged
 | 
| +  // Cache codec before calling AddBitrateObserver (which calls OnBitrateUpdated
 | 
|    // that makes use of the number of simulcast streams configured).
 | 
|    {
 | 
|      rtc::CritScope lock(&data_cs_);
 | 
| @@ -211,18 +188,9 @@ void ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec,
 | 
|      min_transmit_bitrate_bps_ = min_transmit_bitrate_bps;
 | 
|    }
 | 
|  
 | 
| -  // Add a bitrate observer to the allocator and update the start, max and
 | 
| -  // min bitrates of the bitrate controller as needed.
 | 
| -  int allocated_bitrate_bps = bitrate_allocator_->AddBitrateObserver(
 | 
| -      bitrate_observer_.get(), video_codec.minBitrate * 1000,
 | 
| -      video_codec.maxBitrate * 1000);
 | 
| -
 | 
| -  webrtc::VideoCodec modified_video_codec = video_codec;
 | 
| -  modified_video_codec.startBitrate = allocated_bitrate_bps / 1000;
 | 
| -
 | 
|    size_t max_data_payload_length = send_payload_router_->MaxPayloadLength();
 | 
|    bool success = vcm_->RegisterSendCodec(
 | 
| -                     &modified_video_codec, number_of_cores_,
 | 
| +                     &video_codec, number_of_cores_,
 | 
|                       static_cast<uint32_t>(max_data_payload_length)) == VCM_OK;
 | 
|    if (!success) {
 | 
|      LOG(LS_ERROR) << "Failed to configure encoder.";
 | 
| @@ -511,11 +479,10 @@ void ViEEncoder::OnReceivedIntraFrameRequest(uint32_t ssrc) {
 | 
|    RTC_NOTREACHED() << "Should not receive keyframe requests on unknown SSRCs.";
 | 
|  }
 | 
|  
 | 
| -// Called from ViEBitrateObserver.
 | 
| -void ViEEncoder::OnNetworkChanged(uint32_t bitrate_bps,
 | 
| +void ViEEncoder::OnBitrateUpdated(uint32_t bitrate_bps,
 | 
|                                    uint8_t fraction_lost,
 | 
|                                    int64_t round_trip_time_ms) {
 | 
| -  LOG(LS_VERBOSE) << "OnNetworkChanged, bitrate" << bitrate_bps
 | 
| +  LOG(LS_VERBOSE) << "OnBitrateUpdated, bitrate" << bitrate_bps
 | 
|                    << " packet loss " << static_cast<int>(fraction_lost)
 | 
|                    << " rtt " << round_trip_time_ms;
 | 
|    RTC_DCHECK(send_payload_router_ != NULL);
 | 
| @@ -546,11 +513,6 @@ void ViEEncoder::OnNetworkChanged(uint32_t bitrate_bps,
 | 
|      stats_proxy_->OnSuspendChange(video_is_suspended);
 | 
|  }
 | 
|  
 | 
| -void ViEEncoder::SuspendBelowMinBitrate() {
 | 
| -  vcm_->SuspendBelowMinBitrate();
 | 
| -  bitrate_allocator_->EnforceMinBitrate(false);
 | 
| -}
 | 
| -
 | 
|  void ViEEncoder::RegisterPostEncodeImageCallback(
 | 
|        EncodedImageCallback* post_encode_callback) {
 | 
|    vcm_->RegisterPostEncodeImageCallback(post_encode_callback);
 | 
| 
 |