diff --git a/media/engine/webrtcvideodecoderfactory.h b/media/engine/webrtcvideodecoderfactory.h
index 64a8faa..d0dc3a5 100644
--- a/media/engine/webrtcvideodecoderfactory.h
+++ b/media/engine/webrtcvideodecoderfactory.h
@@ -12,6 +12,7 @@
 #define WEBRTC_MEDIA_ENGINE_WEBRTCVIDEODECODERFACTORY_H_
 
 #include "webrtc/common_types.h"
+#include "webrtc/media/base/codec.h"
 #include "webrtc/rtc_base/refcount.h"
 
 namespace webrtc {
@@ -28,8 +29,23 @@
  public:
   // Caller takes the ownership of the returned object and it should be released
   // by calling DestroyVideoDecoder().
+  virtual webrtc::VideoDecoder* CreateVideoDecoderWithParams(
+      const VideoCodec& codec,
+      VideoDecoderParams params) {
+    // Default implementation that delegates to old version in order to preserve
+    // backwards-compatability.
+    webrtc::VideoCodecType type = webrtc::PayloadStringToCodecType(codec.name);
+    return CreateVideoDecoderWithParams(type, params);
+  }
+  // DEPRECATED.
+  // These methods should not be used by new code and will eventually be
+  // removed. See http://crbug.com/webrtc/8140.
   virtual webrtc::VideoDecoder* CreateVideoDecoder(
-      webrtc::VideoCodecType type) = 0;
+      webrtc::VideoCodecType type) {
+    RTC_NOTREACHED();
+    return nullptr;
+  };
+
   virtual webrtc::VideoDecoder* CreateVideoDecoderWithParams(
       webrtc::VideoCodecType type,
       VideoDecoderParams params) {
diff --git a/media/engine/webrtcvideoengine.cc b/media/engine/webrtcvideoengine.cc
index a9dc11e..983b4ea 100644
--- a/media/engine/webrtcvideoengine.cc
+++ b/media/engine/webrtcvideoengine.cc
@@ -2147,7 +2147,7 @@
   if (external_decoder_factory_ != NULL) {
     webrtc::VideoDecoder* decoder =
         external_decoder_factory_->CreateVideoDecoderWithParams(
-            type, {stream_params_.id});
+            codec, {stream_params_.id});
     if (decoder != NULL) {
       return AllocatedDecoder(decoder, type, true /* is_external */);
     }
@@ -2155,7 +2155,7 @@
 
   InternalDecoderFactory internal_decoder_factory;
   return AllocatedDecoder(internal_decoder_factory.CreateVideoDecoderWithParams(
-                              type, {stream_params_.id}),
+                              codec, {stream_params_.id}),
                           type, false /* is_external */);
 }
 
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 77b9d39..2965338 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -541,6 +541,7 @@
           ":videotoolbox_objc",
           ":videotracksource_objc",
           "..//system_wrappers:system_wrappers_default",
+          "../media:rtc_media_base",
           "../modules:module_api",
           "../rtc_base:rtc_base_tests_utils",
           "../system_wrappers:system_wrappers_default",
diff --git a/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.h b/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.h
index dca7fe2..8fd8c48 100644
--- a/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.h
+++ b/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.h
@@ -25,8 +25,10 @@
 
   id<RTCVideoDecoderFactory> wrapped_decoder_factory() const;
 
-  webrtc::VideoDecoder* CreateVideoDecoder(
-      webrtc::VideoCodecType type) override;
+  VideoDecoder* CreateVideoDecoderWithParams(
+      const cricket::VideoCodec& codec,
+      cricket::VideoDecoderParams params) override;
+
   void DestroyVideoDecoder(webrtc::VideoDecoder* decoder) override;
 
  private:
diff --git a/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm b/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm
index 9d4f2b8..d126f84 100644
--- a/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm
+++ b/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm
@@ -103,10 +103,9 @@
   return decoder_factory_;
 }
 
-VideoDecoder *ObjCVideoDecoderFactory::CreateVideoDecoder(VideoCodecType type) {
-  const char *codec_name = CodecTypeToPayloadString(type);
-
-  NSString *codecName = [NSString stringWithUTF8String:codec_name];
+VideoDecoder *ObjCVideoDecoderFactory::CreateVideoDecoderWithParams(
+    const cricket::VideoCodec &codec, cricket::VideoDecoderParams params) {
+  NSString *codecName = [NSString stringWithUTF8String:codec.name.c_str()];
   for (RTCVideoCodecInfo *codecInfo in decoder_factory_.supportedCodecs) {
     if ([codecName isEqualToString:codecInfo.name]) {
       id<RTCVideoDecoder> decoder = [decoder_factory_ createDecoder:codecInfo];
diff --git a/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm b/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm
index 3b1eb05..6fcc422 100644
--- a/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm
+++ b/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm
@@ -15,6 +15,7 @@
 
 #import "WebRTC/RTCVideoCodec.h"
 #import "WebRTC/RTCVideoCodecFactory.h"
+#include "webrtc/media/base/codec.h"
 #include "webrtc/modules/include/module_common_types.h"
 #include "webrtc/modules/video_coding/include/video_codec_interface.h"
 #include "webrtc/modules/video_coding/include/video_error_codes.h"
@@ -49,7 +50,8 @@
 
 webrtc::VideoDecoder *GetObjCDecoder(id<RTCVideoDecoderFactory> factory) {
   webrtc::ObjCVideoDecoderFactory decoder_factory(factory);
-  return decoder_factory.CreateVideoDecoder(webrtc::kVideoCodecH264);
+  return decoder_factory.CreateVideoDecoderWithParams(cricket::VideoCodec(cricket::kH264CodecName),
+                                                      {});
 }
 
 #pragma mark -
