diff --git a/webrtc/modules/video_coding/main/interface/video_coding.h b/webrtc/modules/video_coding/main/interface/video_coding.h
index f1ce2ec..02b36b1 100644
--- a/webrtc/modules/video_coding/main/interface/video_coding.h
+++ b/webrtc/modules/video_coding/main/interface/video_coding.h
@@ -582,6 +582,8 @@
         EncodedImageCallback* observer) = 0;
     virtual void RegisterPostEncodeImageCallback(
         EncodedImageCallback* post_encode_callback) = 0;
+    // Releases pending decode calls, permitting faster thread shutdown.
+    virtual void TriggerDecoderShutdown() = 0;
 };
 
 }  // namespace webrtc
diff --git a/webrtc/modules/video_coding/main/source/receiver.cc b/webrtc/modules/video_coding/main/source/receiver.cc
index dad2b6f..6ab9e29 100644
--- a/webrtc/modules/video_coding/main/source/receiver.cc
+++ b/webrtc/modules/video_coding/main/source/receiver.cc
@@ -54,7 +54,6 @@
 
 int32_t VCMReceiver::Initialize() {
   Reset();
-  CriticalSectionScoped cs(crit_sect_);
   return VCM_OK;
 }
 
@@ -86,6 +85,11 @@
   return VCM_OK;
 }
 
+void VCMReceiver::TriggerDecoderShutdown() {
+  jitter_buffer_.Stop();
+  render_wait_event_->Set();
+}
+
 VCMEncodedFrame* VCMReceiver::FrameForDecoding(uint16_t max_wait_time_ms,
                                                int64_t& next_render_time_ms,
                                                bool render_timing) {
diff --git a/webrtc/modules/video_coding/main/source/receiver.h b/webrtc/modules/video_coding/main/source/receiver.h
index f531ac8..0e1f01a 100644
--- a/webrtc/modules/video_coding/main/source/receiver.h
+++ b/webrtc/modules/video_coding/main/source/receiver.h
@@ -81,11 +81,13 @@
 
   void RegisterStatsCallback(VCMReceiveStatisticsCallback* callback);
 
+  void TriggerDecoderShutdown();
+
  private:
   static int32_t GenerateReceiverId();
 
   CriticalSectionWrapper* crit_sect_;
-  Clock* clock_;
+  Clock* const clock_;
   VCMJitterBuffer jitter_buffer_;
   VCMTiming* timing_;
   scoped_ptr<EventWrapper> render_wait_event_;
diff --git a/webrtc/modules/video_coding/main/source/video_coding_impl.cc b/webrtc/modules/video_coding/main/source/video_coding_impl.cc
index 7289e2f..a90ab07 100644
--- a/webrtc/modules/video_coding/main/source/video_coding_impl.cc
+++ b/webrtc/modules/video_coding/main/source/video_coding_impl.cc
@@ -345,6 +345,10 @@
     post_encode_callback_.Register(observer);
   }
 
+  void TriggerDecoderShutdown() override {
+    receiver_->TriggerDecoderShutdown();
+  }
+
  private:
   EncodedImageCallbackWrapper post_encode_callback_;
   scoped_ptr<vcm::VideoSender> sender_;
diff --git a/webrtc/modules/video_coding/main/source/video_coding_impl.h b/webrtc/modules/video_coding/main/source/video_coding_impl.h
index cf4a986..39e763f 100644
--- a/webrtc/modules/video_coding/main/source/video_coding_impl.h
+++ b/webrtc/modules/video_coding/main/source/video_coding_impl.h
@@ -182,6 +182,7 @@
   int32_t Process();
 
   void RegisterPreDecodeImageCallback(EncodedImageCallback* observer);
+  void TriggerDecoderShutdown();
 
  protected:
   int32_t Decode(const webrtc::VCMEncodedFrame& frame)
diff --git a/webrtc/modules/video_coding/main/source/video_receiver.cc b/webrtc/modules/video_coding/main/source/video_receiver.cc
index 46fa399..3e20ed3 100644
--- a/webrtc/modules/video_coding/main/source/video_receiver.cc
+++ b/webrtc/modules/video_coding/main/source/video_receiver.cc
@@ -335,6 +335,10 @@
   return VCM_OK;
 }
 
+void VideoReceiver::TriggerDecoderShutdown() {
+  _receiver.TriggerDecoderShutdown();
+}
+
 // Decode next frame, blocking.
 // Should be called as often as possible to get the most out of the decoder.
 int32_t VideoReceiver::Decode(uint16_t maxWaitTimeMs) {
diff --git a/webrtc/modules/video_render/incoming_video_stream.cc b/webrtc/modules/video_render/incoming_video_stream.cc
index 4a95622..256c21c 100644
--- a/webrtc/modules/video_render/incoming_video_stream.cc
+++ b/webrtc/modules/video_render/incoming_video_stream.cc
@@ -246,14 +246,21 @@
     return 0;
   }
 
-  thread_critsect_.Enter();
-  if (incoming_render_thread_) {
-    ThreadWrapper* thread = incoming_render_thread_;
-    incoming_render_thread_ = NULL;
-#ifndef WIN32_
-    deliver_buffer_event_.StopTimer();
-#endif
-    thread_critsect_.Leave();
+  ThreadWrapper* thread = NULL;
+  {
+    CriticalSectionScoped cs_thread(&thread_critsect_);
+    if (incoming_render_thread_ != NULL) {
+      thread = incoming_render_thread_;
+      // Setting the incoming render thread to NULL marks that we're performing
+      // a shutdown and will make IncomingVideoStreamProcess abort after wakeup.
+      incoming_render_thread_ = NULL;
+      deliver_buffer_event_.StopTimer();
+      // Set the event to allow the thread to wake up and shut down without
+      // waiting for a timeout.
+      deliver_buffer_event_.Set();
+    }
+  }
+  if (thread) {
     if (thread->Stop()) {
       delete thread;
     } else {
@@ -261,8 +268,6 @@
       WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, module_id_,
                    "%s: Not able to stop thread, leaking", __FUNCTION__);
     }
-  } else {
-    thread_critsect_.Leave();
   }
   running_ = false;
   return 0;
diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc
index 0278fe3..dcb9596 100644
--- a/webrtc/video_engine/vie_channel.cc
+++ b/webrtc/video_engine/vie_channel.cc
@@ -1733,6 +1733,8 @@
     return 0;
   }
 
+  vcm_->TriggerDecoderShutdown();
+
   if (decode_thread_->Stop()) {
     delete decode_thread_;
   } else {
