| Index: webrtc/video/vie_encoder.cc
 | 
| diff --git a/webrtc/video/vie_encoder.cc b/webrtc/video/vie_encoder.cc
 | 
| index 8adf4d0671dfb42e27d59206bd072c2bec687051..2331d1720fa94a3b5a70cad8c14b5363adc2e747 100644
 | 
| --- a/webrtc/video/vie_encoder.cc
 | 
| +++ b/webrtc/video/vie_encoder.cc
 | 
| @@ -108,6 +108,7 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores,
 | 
|                         SendStatisticsProxy* stats_proxy,
 | 
|                         I420FrameCallback* pre_encode_callback,
 | 
|                         PacedSender* pacer,
 | 
| +                       PayloadRouter* payload_router,
 | 
|                         BitrateAllocator* bitrate_allocator)
 | 
|      : number_of_cores_(number_of_cores),
 | 
|        vp_(VideoProcessing::Create()),
 | 
| @@ -115,10 +116,10 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores,
 | 
|        vcm_(VideoCodingModule::Create(Clock::GetRealTimeClock(),
 | 
|                                       this,
 | 
|                                       qm_callback_.get())),
 | 
| -      send_payload_router_(NULL),
 | 
|        stats_proxy_(stats_proxy),
 | 
|        pre_encode_callback_(pre_encode_callback),
 | 
|        pacer_(pacer),
 | 
| +      send_payload_router_(payload_router),
 | 
|        bitrate_allocator_(bitrate_allocator),
 | 
|        time_of_last_frame_activity_ms_(0),
 | 
|        encoder_config_(),
 | 
| @@ -135,6 +136,7 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores,
 | 
|        picture_id_rpsi_(0),
 | 
|        video_suspended_(false) {
 | 
|    bitrate_observer_.reset(new ViEBitrateObserver(this));
 | 
| +  module_process_thread_->RegisterModule(vcm_.get());
 | 
|  }
 | 
|  
 | 
|  bool ViEEncoder::Init() {
 | 
| @@ -152,23 +154,14 @@ bool ViEEncoder::Init() {
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| -void ViEEncoder::StartThreadsAndSetSharedMembers(
 | 
| -    rtc::scoped_refptr<PayloadRouter> send_payload_router,
 | 
| -    VCMProtectionCallback* vcm_protection_callback) {
 | 
| -  RTC_DCHECK(send_payload_router_ == NULL);
 | 
| -
 | 
| -  send_payload_router_ = send_payload_router;
 | 
| -  vcm_->RegisterProtectionCallback(vcm_protection_callback);
 | 
| -  module_process_thread_->RegisterModule(vcm_.get());
 | 
| +VideoCodingModule* ViEEncoder::vcm() const {
 | 
| +  return vcm_.get();
 | 
|  }
 | 
|  
 | 
| -void ViEEncoder::StopThreadsAndRemoveSharedMembers() {
 | 
| +ViEEncoder::~ViEEncoder() {
 | 
| +  module_process_thread_->DeRegisterModule(vcm_.get());
 | 
|    if (bitrate_allocator_)
 | 
|      bitrate_allocator_->RemoveBitrateObserver(bitrate_observer_.get());
 | 
| -  module_process_thread_->DeRegisterModule(vcm_.get());
 | 
| -}
 | 
| -
 | 
| -ViEEncoder::~ViEEncoder() {
 | 
|  }
 | 
|  
 | 
|  void ViEEncoder::SetNetworkTransmissionState(bool is_transmitting) {
 | 
| @@ -335,7 +328,6 @@ void ViEEncoder::TraceFrameDropEnd() {
 | 
|  }
 | 
|  
 | 
|  void ViEEncoder::DeliverFrame(VideoFrame video_frame) {
 | 
| -  RTC_DCHECK(send_payload_router_ != NULL);
 | 
|    if (!send_payload_router_->active()) {
 | 
|      // We've paused or we have no channels attached, don't waste resources on
 | 
|      // encoding.
 | 
| 
 |