diff --git a/talk/media/webrtc/fakewebrtcvideoengine.h b/talk/media/webrtc/fakewebrtcvideoengine.h
index cc217bb..470a887 100644
--- a/talk/media/webrtc/fakewebrtcvideoengine.h
+++ b/talk/media/webrtc/fakewebrtcvideoengine.h
@@ -680,6 +680,7 @@
     channels_[channel]->original_channel_id_ = original_channel;
     return 0;
   }
+  WEBRTC_STUB(CreateChannelWithoutDefaultEncoder, (int&, int original_channel));
   WEBRTC_FUNC(CreateReceiveChannel, (int& channel, int original_channel)) {
     return CreateChannel(channel, original_channel);
   }
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index 4c31f0c..ab7f0c1 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -126,7 +126,8 @@
     assert(bitrate_config.max_bitrate_bps >= bitrate_config.start_bitrate_bps);
 
   video_engine_base_ = ViEBase::GetInterface(video_engine);
-  video_engine_base_->CreateChannel(channel_, base_channel);
+  video_engine_base_->CreateChannelWithoutDefaultEncoder(channel_,
+                                                         base_channel);
   assert(channel_ != -1);
 
   rtp_rtcp_ = ViERTP_RTCP::GetInterface(video_engine);
diff --git a/webrtc/video_engine/encoder_state_feedback_unittest.cc b/webrtc/video_engine/encoder_state_feedback_unittest.cc
index 4e15752..0cb0fc7 100644
--- a/webrtc/video_engine/encoder_state_feedback_unittest.cc
+++ b/webrtc/video_engine/encoder_state_feedback_unittest.cc
@@ -28,7 +28,7 @@
 class MockVieEncoder : public ViEEncoder {
  public:
   explicit MockVieEncoder(ProcessThread* process_thread)
-      : ViEEncoder(1, 1, 1, config_, *process_thread, NULL) {}
+      : ViEEncoder(1, 1, 1, config_, *process_thread, NULL, false) {}
   ~MockVieEncoder() {}
 
   MOCK_METHOD1(OnReceivedIntraFrameRequest,
diff --git a/webrtc/video_engine/include/vie_base.h b/webrtc/video_engine/include/vie_base.h
index f42992f..3f4840a 100644
--- a/webrtc/video_engine/include/vie_base.h
+++ b/webrtc/video_engine/include/vie_base.h
@@ -184,6 +184,9 @@
   virtual int CreateChannel(int& video_channel,
                             int original_channel) = 0;
 
+  virtual int CreateChannelWithoutDefaultEncoder(int& video_channel,
+                                                 int original_channel) = 0;
+
   // Creates a new channel grouped together with |original_channel|. The channel
   // can only receive video and it is assumed the remote end-point is the same
   // as for |original_channel|.
diff --git a/webrtc/video_engine/vie_base_impl.cc b/webrtc/video_engine/vie_base_impl.cc
index 825bcdb..9c7ec16 100644
--- a/webrtc/video_engine/vie_base_impl.cc
+++ b/webrtc/video_engine/vie_base_impl.cc
@@ -169,12 +169,18 @@
 
 int ViEBaseImpl::CreateChannel(int& video_channel,  // NOLINT
                                int original_channel) {
-  return CreateChannel(video_channel, original_channel, true);
+  return CreateChannel(video_channel, original_channel, true, false);
+}
+
+int ViEBaseImpl::CreateChannelWithoutDefaultEncoder(
+    int& video_channel,  // NOLINT
+    int original_channel) {
+  return CreateChannel(video_channel, original_channel, true, true);
 }
 
 int ViEBaseImpl::CreateReceiveChannel(int& video_channel,  // NOLINT
                                       int original_channel) {
-  return CreateChannel(video_channel, original_channel, false);
+  return CreateChannel(video_channel, original_channel, false, true);
 }
 
 int ViEBaseImpl::DeleteChannel(const int video_channel) {
@@ -338,16 +344,18 @@
 }
 
 int ViEBaseImpl::CreateChannel(int& video_channel,  // NOLINT
-                               int original_channel, bool sender) {
+                               int original_channel,
+                               bool sender,
+                               bool disable_default_encoder) {
   ViEChannelManagerScoped cs(*(shared_data_.channel_manager()));
   if (!cs.Channel(original_channel)) {
     shared_data_.SetLastError(kViEBaseInvalidChannelId);
     return -1;
   }
 
-  if (shared_data_.channel_manager()->CreateChannel(&video_channel,
-                                                    original_channel,
-                                                    sender) == -1) {
+  if (shared_data_.channel_manager()->CreateChannel(
+          &video_channel, original_channel, sender, disable_default_encoder) ==
+      -1) {
     video_channel = -1;
     shared_data_.SetLastError(kViEBaseChannelCreationFailed);
     return -1;
diff --git a/webrtc/video_engine/vie_base_impl.h b/webrtc/video_engine/vie_base_impl.h
index c949acd..dd21a04 100644
--- a/webrtc/video_engine/vie_base_impl.h
+++ b/webrtc/video_engine/vie_base_impl.h
@@ -44,6 +44,9 @@
                             const Config* config);
   virtual int CreateChannel(int& video_channel,  // NOLINT
                             int original_channel);
+  virtual int CreateChannelWithoutDefaultEncoder(int& video_channel,  // NOLINT
+                                                 int original_channel);
+
   virtual int CreateReceiveChannel(int& video_channel,  // NOLINT
                                    int original_channel);
   virtual int DeleteChannel(const int video_channel);
@@ -65,7 +68,7 @@
 
  private:
   int CreateChannel(int& video_channel, int original_channel,  // NOLINT
-                    bool sender);
+                    bool sender, bool disable_default_encoder);
 
   virtual void RegisterSendStatisticsProxy(
       int channel,
diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc
index 8057ca0..0278fe3 100644
--- a/webrtc/video_engine/vie_channel.cc
+++ b/webrtc/video_engine/vie_channel.cc
@@ -71,7 +71,8 @@
                        RtcpRttStats* rtt_stats,
                        PacedSender* paced_sender,
                        RtpRtcp* default_rtp_rtcp,
-                       bool sender)
+                       bool sender,
+                       bool disable_default_encoder)
     : ViEFrameProviderBase(channel_id, engine_id),
       channel_id_(channel_id),
       engine_id_(engine_id),
@@ -105,6 +106,7 @@
       color_enhancement_(false),
       mtu_(0),
       sender_(sender),
+      disable_default_encoder_(disable_default_encoder),
       nack_history_size_sender_(kSendSidePacketHistorySize),
       max_nack_reordering_threshold_(kMaxPacketAgeToNack),
       pre_render_callback_(NULL),
@@ -155,18 +157,20 @@
     return -1;
   }
 #ifdef VIDEOCODEC_VP8
-  VideoCodec video_codec;
-  if (vcm_->Codec(kVideoCodecVP8, &video_codec) == VCM_OK) {
-    rtp_rtcp_->RegisterSendPayload(video_codec);
-    // TODO(holmer): Can we call SetReceiveCodec() here instead?
-    if (!vie_receiver_.RegisterPayload(video_codec)) {
-      return -1;
+  if (!disable_default_encoder_) {
+    VideoCodec video_codec;
+    if (vcm_->Codec(kVideoCodecVP8, &video_codec) == VCM_OK) {
+      rtp_rtcp_->RegisterSendPayload(video_codec);
+      // TODO(holmer): Can we call SetReceiveCodec() here instead?
+      if (!vie_receiver_.RegisterPayload(video_codec)) {
+        return -1;
+      }
+      vcm_->RegisterReceiveCodec(&video_codec, number_of_cores_);
+      vcm_->RegisterSendCodec(&video_codec, number_of_cores_,
+                              rtp_rtcp_->MaxDataPayloadLength());
+    } else {
+      assert(false);
     }
-    vcm_->RegisterReceiveCodec(&video_codec, number_of_cores_);
-    vcm_->RegisterSendCodec(&video_codec, number_of_cores_,
-                           rtp_rtcp_->MaxDataPayloadLength());
-  } else {
-    assert(false);
   }
 #endif
 
diff --git a/webrtc/video_engine/vie_channel.h b/webrtc/video_engine/vie_channel.h
index 5640f23..d79065d 100644
--- a/webrtc/video_engine/vie_channel.h
+++ b/webrtc/video_engine/vie_channel.h
@@ -74,7 +74,8 @@
              RtcpRttStats* rtt_stats,
              PacedSender* paced_sender,
              RtpRtcp* default_rtp_rtcp,
-             bool sender);
+             bool sender,
+             bool disable_default_encoder);
   ~ViEChannel();
 
   int32_t Init();
@@ -509,6 +510,8 @@
   // User set MTU, -1 if not set.
   uint16_t mtu_;
   const bool sender_;
+  // Used to skip default encoder in the new API.
+  const bool disable_default_encoder_;
 
   int nack_history_size_sender_;
   int max_nack_reordering_threshold_;
diff --git a/webrtc/video_engine/vie_channel_manager.cc b/webrtc/video_engine/vie_channel_manager.cc
index 0ea23ad..f2788cf 100644
--- a/webrtc/video_engine/vie_channel_manager.cc
+++ b/webrtc/video_engine/vie_channel_manager.cc
@@ -93,7 +93,8 @@
                                            number_of_cores_,
                                            engine_config_,
                                            *module_process_thread_,
-                                           bitrate_controller);
+                                           bitrate_controller,
+                                           false);
 
   RtcpBandwidthObserver* bandwidth_observer =
       bitrate_controller->CreateRtcpBandwidthObserver();
@@ -108,7 +109,7 @@
         CreateChannelObject(new_channel_id, vie_encoder, bandwidth_observer,
                             remote_bitrate_estimator, rtcp_rtt_stats,
                             encoder_state_feedback->GetRtcpIntraFrameObserver(),
-                            true))) {
+                            true, false))) {
     delete vie_encoder;
     vie_encoder = NULL;
     ReturnChannelId(new_channel_id);
@@ -138,7 +139,8 @@
 
 int ViEChannelManager::CreateChannel(int* channel_id,
                                      int original_channel,
-                                     bool sender) {
+                                     bool sender,
+                                     bool disable_default_encoder) {
   CriticalSectionScoped cs(channel_id_critsect_);
 
   ChannelGroup* channel_group = FindGroup(original_channel);
@@ -165,7 +167,8 @@
     vie_encoder = new ViEEncoder(engine_id_, new_channel_id, number_of_cores_,
                                  engine_config_,
                                  *module_process_thread_,
-                                 bitrate_controller);
+                                 bitrate_controller,
+                                 disable_default_encoder);
     if (!(vie_encoder->Init() &&
         CreateChannelObject(
             new_channel_id,
@@ -174,7 +177,8 @@
             remote_bitrate_estimator,
             rtcp_rtt_stats,
             encoder_state_feedback->GetRtcpIntraFrameObserver(),
-            sender))) {
+            sender,
+            disable_default_encoder))) {
       delete vie_encoder;
       vie_encoder = NULL;
     }
@@ -197,7 +201,8 @@
         remote_bitrate_estimator,
         rtcp_rtt_stats,
         encoder_state_feedback->GetRtcpIntraFrameObserver(),
-        sender)) {
+        sender,
+        disable_default_encoder)) {
       vie_encoder = NULL;
     }
   }
@@ -421,7 +426,8 @@
     RemoteBitrateEstimator* remote_bitrate_estimator,
     RtcpRttStats* rtcp_rtt_stats,
     RtcpIntraFrameObserver* intra_frame_observer,
-    bool sender) {
+    bool sender,
+    bool disable_default_encoder) {
   PacedSender* paced_sender = vie_encoder->GetPacedSender();
 
   // Register the channel at the encoder.
@@ -437,19 +443,22 @@
                                            rtcp_rtt_stats,
                                            paced_sender,
                                            send_rtp_rtcp_module,
-                                           sender);
+                                           sender,
+                                           disable_default_encoder);
   if (vie_channel->Init() != 0) {
     delete vie_channel;
     return false;
   }
-  VideoCodec encoder;
-  if (vie_encoder->GetEncoder(&encoder) != 0) {
-    delete vie_channel;
-    return false;
-  }
-  if (sender && vie_channel->SetSendCodec(encoder) != 0) {
-    delete vie_channel;
-    return false;
+  if (!disable_default_encoder) {
+    VideoCodec encoder;
+    if (vie_encoder->GetEncoder(&encoder) != 0) {
+      delete vie_channel;
+      return false;
+    }
+    if (sender && vie_channel->SetSendCodec(encoder) != 0) {
+      delete vie_channel;
+      return false;
+    }
   }
   // Store the channel, add it to the channel group and save the vie_encoder.
   channel_map_[channel_id] = vie_channel;
diff --git a/webrtc/video_engine/vie_channel_manager.h b/webrtc/video_engine/vie_channel_manager.h
index e0e3588..a02cfa2 100644
--- a/webrtc/video_engine/vie_channel_manager.h
+++ b/webrtc/video_engine/vie_channel_manager.h
@@ -56,7 +56,11 @@
   // Creates a new channel grouped with |original_channel|. The new channel
   // will get its own |ViEEncoder| if |sender| is set to true. It will be a
   // receive only channel, without an own |ViEEncoder| if |sender| is false.
-  int CreateChannel(int* channel_id, int original_channel, bool sender);
+  // Doesn't internally allocate an encoder if |disable_default_encoder|.
+  int CreateChannel(int* channel_id,
+                    int original_channel,
+                    bool sender,
+                    bool disable_default_encoder);
 
   // Deletes a channel.
   int DeleteChannel(int channel_id);
@@ -94,7 +98,8 @@
                            RemoteBitrateEstimator* remote_bitrate_estimator,
                            RtcpRttStats* rtcp_rtt_stats,
                            RtcpIntraFrameObserver* intra_frame_observer,
-                           bool sender);
+                           bool sender,
+                           bool disable_default_encoder);
 
   // Used by ViEChannelScoped, forcing a manager user to use scoped.
   // Returns a pointer to the channel with id 'channel_id'.
diff --git a/webrtc/video_engine/vie_codec_impl.cc b/webrtc/video_engine/vie_codec_impl.cc
index d90117a..aa0a21a 100644
--- a/webrtc/video_engine/vie_codec_impl.cc
+++ b/webrtc/video_engine/vie_codec_impl.cc
@@ -188,15 +188,12 @@
     video_codec_internal.startBitrate = video_codec_internal.maxBitrate;
   }
 
-  VideoCodec encoder;
-  vie_encoder->GetEncoder(&encoder);
-
   // Make sure to generate a new SSRC if the codec type and/or resolution has
   // changed. This won't have any effect if the user has set an SSRC.
-  bool new_rtp_stream = false;
-  if (encoder.codecType != video_codec_internal.codecType) {
-    new_rtp_stream = true;
-  }
+  bool new_rtp_stream = true;
+  VideoCodec encoder;
+  if (vie_encoder->GetEncoder(&encoder) == 0)
+    new_rtp_stream = encoder.codecType != video_codec_internal.codecType;
 
   ViEInputManagerScoped is(*(shared_data_->input_manager()));
 
diff --git a/webrtc/video_engine/vie_encoder.cc b/webrtc/video_engine/vie_encoder.cc
index 0dd7e91..fb7ea61 100644
--- a/webrtc/video_engine/vie_encoder.cc
+++ b/webrtc/video_engine/vie_encoder.cc
@@ -132,10 +132,12 @@
                        uint32_t number_of_cores,
                        const Config& config,
                        ProcessThread& module_process_thread,
-                       BitrateController* bitrate_controller)
+                       BitrateController* bitrate_controller,
+                       bool disable_default_encoder)
   : engine_id_(engine_id),
     channel_id_(channel_id),
     number_of_cores_(number_of_cores),
+    disable_default_encoder_(disable_default_encoder),
     vcm_(*webrtc::VideoCodingModule::Create()),
     vpm_(*webrtc::VideoProcessingModule::Create(ViEModuleId(engine_id,
                                                             channel_id))),
@@ -202,26 +204,28 @@
   }
   qm_callback_ = new QMVideoSettingsCallback(&vpm_);
 
+  if (!disable_default_encoder_) {
 #ifdef VIDEOCODEC_VP8
-  VideoCodecType codec_type = webrtc::kVideoCodecVP8;
+    VideoCodecType codec_type = webrtc::kVideoCodecVP8;
 #else
-  VideoCodecType codec_type = webrtc::kVideoCodecI420;
+    VideoCodecType codec_type = webrtc::kVideoCodecI420;
 #endif
-
-  VideoCodec video_codec;
-  if (vcm_.Codec(codec_type, &video_codec) != VCM_OK) {
-    return false;
-  }
-  {
-    CriticalSectionScoped cs(data_cs_.get());
-    send_padding_ = video_codec.numberOfSimulcastStreams > 1;
-  }
-  if (vcm_.RegisterSendCodec(&video_codec, number_of_cores_,
-                             PayloadRouter::DefaultMaxPayloadLength()) != 0) {
-    return false;
-  }
-  if (default_rtp_rtcp_->RegisterSendPayload(video_codec) != 0) {
-    return false;
+    VideoCodec video_codec;
+    if (vcm_.Codec(codec_type, &video_codec) != VCM_OK) {
+      return false;
+    }
+    {
+      CriticalSectionScoped cs(data_cs_.get());
+      send_padding_ = video_codec.numberOfSimulcastStreams > 1;
+    }
+    if (vcm_.RegisterSendCodec(&video_codec, number_of_cores_,
+                               PayloadRouter::DefaultMaxPayloadLength()) !=
+        0) {
+      return false;
+    }
+    if (default_rtp_rtcp_->RegisterSendPayload(video_codec) != 0) {
+      return false;
+    }
   }
   if (vcm_.RegisterTransportCallback(this) != 0) {
     return false;
@@ -338,6 +342,9 @@
     return -1;
   }
 
+  if (disable_default_encoder_)
+    return 0;
+
   // If the external encoder is the current send codec, use vcm internal
   // encoder.
   if (current_send_codec.plType == pl_type) {
diff --git a/webrtc/video_engine/vie_encoder.h b/webrtc/video_engine/vie_encoder.h
index 3ed661a..3777adb 100644
--- a/webrtc/video_engine/vie_encoder.h
+++ b/webrtc/video_engine/vie_encoder.h
@@ -59,7 +59,8 @@
              uint32_t number_of_cores,
              const Config& config,
              ProcessThread& module_process_thread,
-             BitrateController* bitrate_controller);
+             BitrateController* bitrate_controller,
+             bool disable_default_encoder);
   ~ViEEncoder();
 
   bool Init();
@@ -202,6 +203,7 @@
   int32_t engine_id_;
   const int channel_id_;
   const uint32_t number_of_cores_;
+  const bool disable_default_encoder_;
 
   VideoCodingModule& vcm_;
   VideoProcessingModule& vpm_;
