diff --git a/api/video_codecs/video_decoder.cc b/api/video_codecs/video_decoder.cc
index b0a1c87..1044ae4 100644
--- a/api/video_codecs/video_decoder.cc
+++ b/api/video_codecs/video_decoder.cc
@@ -28,19 +28,6 @@
   return -1;
 }
 
-int32_t VideoDecoder::Decode(const EncodedImage& input_image,
-                             bool missing_frames,
-                             int64_t render_time_ms) {
-  return Decode(input_image, missing_frames, nullptr, render_time_ms);
-}
-
-int32_t VideoDecoder::Decode(const EncodedImage& input_image,
-                             bool missing_frames,
-                             const CodecSpecificInfo* codec_specific_info,
-                             int64_t render_time_ms) {
-  return Decode(input_image, missing_frames, render_time_ms);
-}
-
 bool VideoDecoder::PrefersLateDecoding() const {
   return true;
 }
diff --git a/api/video_codecs/video_decoder.h b/api/video_codecs/video_decoder.h
index d0341b1..e903934 100644
--- a/api/video_codecs/video_decoder.h
+++ b/api/video_codecs/video_decoder.h
@@ -22,10 +22,6 @@
 
 namespace webrtc {
 
-// TODO(pbos): Expose these through a public (root) header or change these APIs.
-struct CodecSpecificInfo;
-class VideoCodec;
-
 class RTC_EXPORT DecodedImageCallback {
  public:
   virtual ~DecodedImageCallback() {}
@@ -55,14 +51,7 @@
 
   virtual int32_t Decode(const EncodedImage& input_image,
                          bool missing_frames,
-                         int64_t render_time_ms);
-
-  // TODO(bugs.webrtc.org/10379): Deprecated. Delete, and make above method pure
-  // virtual, as soon as downstream applications are updated.
-  virtual int32_t Decode(const EncodedImage& input_image,
-                         bool missing_frames,
-                         const CodecSpecificInfo* codec_specific_info,
-                         int64_t render_time_ms);
+                         int64_t render_time_ms) = 0;
 
   virtual int32_t RegisterDecodeCompleteCallback(
       DecodedImageCallback* callback) = 0;
diff --git a/sdk/android/src/jni/android_media_decoder.cc b/sdk/android/src/jni/android_media_decoder.cc
index 6506a86..60250d8 100644
--- a/sdk/android/src/jni/android_media_decoder.cc
+++ b/sdk/android/src/jni/android_media_decoder.cc
@@ -65,7 +65,6 @@
 
   int32_t Decode(const EncodedImage& inputImage,
                  bool missingFrames,
-                 const CodecSpecificInfo* codecSpecificInfo = NULL,
                  int64_t renderTimeMs = -1) override;
 
   int32_t RegisterDecodeCompleteCallback(
@@ -350,7 +349,6 @@
 int32_t MediaCodecVideoDecoder::Decode(
     const EncodedImage& inputImage,
     bool missingFrames,
-    const CodecSpecificInfo* codecSpecificInfo,
     int64_t renderTimeMs) {
   if (sw_fallback_required_) {
     ALOGE << "Decode() - fallback to SW codec";
diff --git a/sdk/android/src/jni/video_decoder_wrapper.cc b/sdk/android/src/jni/video_decoder_wrapper.cc
index e314074..1a15715 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.cc
+++ b/sdk/android/src/jni/video_decoder_wrapper.cc
@@ -88,7 +88,6 @@
 int32_t VideoDecoderWrapper::Decode(
     const EncodedImage& image_param,
     bool missing_frames,
-    const CodecSpecificInfo* codec_specific_info,
     int64_t render_time_ms) {
   RTC_DCHECK_RUN_ON(&decoder_thread_checker_);
   if (!initialized_) {
diff --git a/sdk/android/src/jni/video_decoder_wrapper.h b/sdk/android/src/jni/video_decoder_wrapper.h
index 55a395b..a2bc072 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.h
+++ b/sdk/android/src/jni/video_decoder_wrapper.h
@@ -35,7 +35,6 @@
 
   int32_t Decode(const EncodedImage& input_image,
                  bool missing_frames,
-                 const CodecSpecificInfo* codec_specific_info,
                  int64_t render_time_ms) override;
 
   int32_t RegisterDecodeCompleteCallback(
diff --git a/sdk/objc/native/src/objc_video_decoder_factory.mm b/sdk/objc/native/src/objc_video_decoder_factory.mm
index c79fb06..fdc15c7 100644
--- a/sdk/objc/native/src/objc_video_decoder_factory.mm
+++ b/sdk/objc/native/src/objc_video_decoder_factory.mm
@@ -51,25 +51,13 @@
 
   int32_t Decode(const EncodedImage &input_image,
                  bool missing_frames,
-                 const CodecSpecificInfo *codec_specific_info = NULL,
                  int64_t render_time_ms = -1) override {
     RTCEncodedImage *encodedImage =
         [[RTCEncodedImage alloc] initWithNativeEncodedImage:input_image];
 
-    // webrtc::CodecSpecificInfo only handles a hard coded list of codecs
-    id<RTCCodecSpecificInfo> rtcCodecSpecificInfo = nil;
-    if (codec_specific_info) {
-      if (codec_specific_info->codecType == kVideoCodecH264) {
-        RTCCodecSpecificInfoH264 *h264Info = [[RTCCodecSpecificInfoH264 alloc] init];
-        h264Info.packetizationMode =
-            (RTCH264PacketizationMode)codec_specific_info->codecSpecific.H264.packetization_mode;
-        rtcCodecSpecificInfo = h264Info;
-      }
-    }
-
     return [decoder_ decode:encodedImage
               missingFrames:missing_frames
-          codecSpecificInfo:rtcCodecSpecificInfo
+          codecSpecificInfo:nil
                renderTimeMs:render_time_ms];
   }
 
diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc
index c3c1d0d..42a5434 100644
--- a/video/video_stream_decoder_impl.cc
+++ b/video/video_stream_decoder_impl.cc
@@ -210,7 +210,6 @@
 
     int32_t decode_result = decoder->Decode(frame->EncodedImage(),
                                             false,    // missing_frame
-                                            nullptr,  // codec specific info
                                             frame->RenderTimeMs());
 
     return decode_result == WEBRTC_VIDEO_CODEC_OK ? kOk : kDecodeFailure;
