diff --git a/api/test/mock_video_decoder.h b/api/test/mock_video_decoder.h
index 99f0fa9..b6d53f8 100644
--- a/api/test/mock_video_decoder.h
+++ b/api/test/mock_video_decoder.h
@@ -45,10 +45,6 @@
 
   MOCK_METHOD(bool, Configure, (const Settings& settings), (override));
   MOCK_METHOD(int32_t,
-              InitDecode,
-              (const VideoCodec* codec_settings, int32_t number_of_cores),
-              (override));
-  MOCK_METHOD(int32_t,
               Decode,
               (const EncodedImage& input_image,
                bool missing_frames,
diff --git a/api/video_codecs/video_decoder.cc b/api/video_codecs/video_decoder.cc
index f2a5708..c8f40ce 100644
--- a/api/video_codecs/video_decoder.cc
+++ b/api/video_codecs/video_decoder.cc
@@ -62,29 +62,4 @@
   number_of_cores_ = value;
 }
 
-bool VideoDecoder::Configure(const Settings& settings) {
-  VideoCodec codec_settings = {};
-  codec_settings.buffer_pool_size = settings.buffer_pool_size();
-  RenderResolution max_resolution = settings.max_render_resolution();
-  if (max_resolution.Valid()) {
-    codec_settings.width = max_resolution.Width();
-    codec_settings.height = max_resolution.Height();
-  }
-  codec_settings.codecType = settings.codec_type();
-  return InitDecode(&codec_settings, settings.number_of_cores()) >= 0;
-}
-
-int32_t VideoDecoder::InitDecode(const VideoCodec* codec_settings,
-                                 int32_t number_of_cores) {
-  Settings settings;
-  if (codec_settings != nullptr) {
-    settings.set_buffer_pool_size(codec_settings->buffer_pool_size);
-    settings.set_max_render_resolution(
-        {codec_settings->width, codec_settings->height});
-    settings.set_codec_type(codec_settings->codecType);
-  }
-  settings.set_number_of_cores(number_of_cores);
-  return Configure(settings) ? 0 : -1;
-}
-
 }  // namespace webrtc
diff --git a/api/video_codecs/video_decoder.h b/api/video_codecs/video_decoder.h
index 1104b00..aa7ee24 100644
--- a/api/video_codecs/video_decoder.h
+++ b/api/video_codecs/video_decoder.h
@@ -20,7 +20,6 @@
 #include "api/video/render_resolution.h"
 #include "api/video/video_codec_type.h"
 #include "api/video/video_frame.h"
-#include "api/video_codecs/video_codec.h"
 #include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
@@ -97,14 +96,7 @@
 
   // Prepares decoder to handle incoming encoded frames. Can be called multiple
   // times, in such case only latest `settings` are in effect.
-  // TODO(bugs.webrtc.org/13045): Make pure virtual when implemented by all
-  // derived classes.
-  virtual bool Configure(const Settings& settings);
-
-  // TODO(bugs.webrtc.org/13045): Delete in favor of the Configure function
-  // above.
-  virtual int32_t InitDecode(const VideoCodec* codec_settings,
-                             int32_t number_of_cores);
+  virtual bool Configure(const Settings& settings) = 0;
 
   virtual int32_t Decode(const EncodedImage& input_image,
                          bool missing_frames,
