diff --git a/test/call_test.cc b/test/call_test.cc
index 4e7fa9a..126c716 100644
--- a/test/call_test.cc
+++ b/test/call_test.cc
@@ -99,23 +99,15 @@
 void CallTest::CreateMatchingReceiveConfigs() {
   assert(!send_config_.rtp.ssrcs.empty());
   assert(receive_configs_.empty());
-  assert(fake_decoders_.empty());
+  assert(allocated_decoders_.empty());
   VideoReceiveStream::Config config;
-  VideoCodec codec =
-      test::CreateDecoderVideoCodec(send_config_.encoder_settings);
-  config.codecs.push_back(codec);
   config.rtp.local_ssrc = kReceiverLocalSsrc;
-  if (send_config_.encoder_settings.encoder == &fake_encoder_) {
-    config.external_decoders.resize(1);
-    config.external_decoders[0].payload_type =
-        send_config_.encoder_settings.payload_type;
-  }
   for (size_t i = 0; i < send_config_.rtp.ssrcs.size(); ++i) {
-    if (send_config_.encoder_settings.encoder == &fake_encoder_) {
-      FakeDecoder* decoder = new FakeDecoder();
-      fake_decoders_.push_back(decoder);
-      config.external_decoders[0].decoder = decoder;
-    }
+    VideoReceiveStream::Decoder decoder =
+        test::CreateMatchingDecoder(send_config_.encoder_settings);
+    allocated_decoders_.push_back(decoder.decoder);
+    config.decoders.clear();
+    config.decoders.push_back(decoder);
     config.rtp.remote_ssrc = send_config_.rtp.ssrcs[i];
     receive_configs_.push_back(config);
   }
@@ -150,7 +142,7 @@
   for (size_t i = 0; i < receive_streams_.size(); ++i)
     receiver_call_->DestroyVideoReceiveStream(receive_streams_[i]);
   receive_streams_.clear();
-  fake_decoders_.clear();
+  allocated_decoders_.clear();
 }
 
 const unsigned int CallTest::kDefaultTimeoutMs = 30 * 1000;
diff --git a/test/call_test.h b/test/call_test.h
index 695fb2a..b9a091b 100644
--- a/test/call_test.h
+++ b/test/call_test.h
@@ -74,7 +74,7 @@
 
   scoped_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_;
   test::FakeEncoder fake_encoder_;
-  ScopedVector<test::FakeDecoder> fake_decoders_;
+  ScopedVector<VideoDecoder> allocated_decoders_;
 };
 
 class BaseTest : public RtpRtcpObserver {
diff --git a/test/encoder_settings.cc b/test/encoder_settings.cc
index 0eeb0b9..db064bb 100644
--- a/test/encoder_settings.cc
+++ b/test/encoder_settings.cc
@@ -12,8 +12,8 @@
 #include <assert.h>
 #include <string.h>
 
-#include "webrtc/video_encoder.h"
-#include "webrtc/video_engine/vie_defines.h"
+#include "webrtc/test/fake_decoder.h"
+#include "webrtc/video_decoder.h"
 
 namespace webrtc {
 namespace test {
@@ -53,33 +53,17 @@
   return stream_settings;
 }
 
-VideoCodec CreateDecoderVideoCodec(
+VideoReceiveStream::Decoder CreateMatchingDecoder(
     const VideoSendStream::Config::EncoderSettings& encoder_settings) {
-  VideoCodec codec;
-  memset(&codec, 0, sizeof(codec));
-
-  codec.plType = encoder_settings.payload_type;
-  strcpy(codec.plName, encoder_settings.payload_name.c_str());
+  VideoReceiveStream::Decoder decoder;
+  decoder.payload_type = encoder_settings.payload_type;
+  decoder.payload_name = encoder_settings.payload_name;
   if (encoder_settings.payload_name == "VP8") {
-    codec.codecType = kVideoCodecVP8;
-  } else if (encoder_settings.payload_name == "H264") {
-    codec.codecType = kVideoCodecH264;
+    decoder.decoder = VideoDecoder::Create(VideoDecoder::kVp8);
   } else {
-    codec.codecType = kVideoCodecGeneric;
+    decoder.decoder = new FakeDecoder();
   }
-
-  if (codec.codecType == kVideoCodecVP8) {
-    codec.codecSpecific.VP8 = VideoEncoder::GetDefaultVp8Settings();
-  } else if (codec.codecType == kVideoCodecH264) {
-    codec.codecSpecific.H264 = VideoEncoder::GetDefaultH264Settings();
-  }
-
-  codec.width = 320;
-  codec.height = 180;
-  codec.startBitrate = codec.minBitrate = codec.maxBitrate = 300;
-
-  return codec;
+  return decoder;
 }
-
 }  // namespace test
 }  // namespace webrtc
diff --git a/test/encoder_settings.h b/test/encoder_settings.h
index ea2be97..a44d366 100644
--- a/test/encoder_settings.h
+++ b/test/encoder_settings.h
@@ -10,13 +10,14 @@
 #ifndef WEBRTC_TEST_ENCODER_SETTINGS_H_
 #define WEBRTC_TEST_ENCODER_SETTINGS_H_
 
+#include "webrtc/video_receive_stream.h"
 #include "webrtc/video_send_stream.h"
 
 namespace webrtc {
 namespace test {
 std::vector<VideoStream> CreateVideoStreams(size_t num_streams);
 
-VideoCodec CreateDecoderVideoCodec(
+VideoReceiveStream::Decoder CreateMatchingDecoder(
     const VideoSendStream::Config::EncoderSettings& encoder_settings);
 }  // namespace test
 }  // namespace webrtc
