diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index cdb5560..16b8842 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -94,7 +94,6 @@
     "../../rtc_base/experiments:field_trial_parser",
     "../../rtc_base/task_utils:repeating_task",
     "../../system_wrappers",
-    "../utility",
   ]
 }
 
@@ -364,7 +363,6 @@
     "../../system_wrappers",
     "../rtp_rtcp:rtp_rtcp_format",
     "../rtp_rtcp:rtp_video_header",
-    "../utility",
     "timing:inter_frame_delay",
     "timing:jitter_estimator",
     "timing:timing_module",
diff --git a/modules/video_coding/include/video_coding.h b/modules/video_coding/include/video_coding.h
index 80398fc..ee9326d 100644
--- a/modules/video_coding/include/video_coding.h
+++ b/modules/video_coding/include/video_coding.h
@@ -14,7 +14,6 @@
 #include "api/field_trials_view.h"
 #include "api/video/video_frame.h"
 #include "api/video_codecs/video_decoder.h"
-#include "modules/include/module.h"
 #include "modules/rtp_rtcp/source/rtp_video_header.h"
 #include "modules/video_coding/include/video_coding_defines.h"
 
@@ -26,13 +25,15 @@
 class VideoEncoder;
 struct CodecSpecificInfo;
 
-class VideoCodingModule : public Module {
+class VideoCodingModule {
  public:
   // DEPRECATED.
   static VideoCodingModule* Create(
       Clock* clock,
       const FieldTrialsView* field_trials = nullptr);
 
+  virtual ~VideoCodingModule() = default;
+
   /*
    *   Receiver
    */
@@ -139,6 +140,9 @@
   virtual void SetNackSettings(size_t max_nack_list_size,
                                int max_packet_age_to_nack,
                                int max_incomplete_time_ms) = 0;
+
+  // Runs delayed tasks. Expected to be called periodically.
+  virtual void Process() = 0;
 };
 
 }  // namespace webrtc
diff --git a/modules/video_coding/video_coding_impl.cc b/modules/video_coding/video_coding_impl.cc
index eec968a..e0ad033 100644
--- a/modules/video_coding/video_coding_impl.cc
+++ b/modules/video_coding/video_coding_impl.cc
@@ -51,13 +51,7 @@
         timing_(new VCMTiming(clock, *field_trials_)),
         receiver_(clock, timing_.get(), *field_trials_) {}
 
-  ~VideoCodingModuleImpl() override {}
-
-  int64_t TimeUntilNextProcess() override {
-    int64_t receiver_time = receiver_.TimeUntilNextProcess();
-    RTC_DCHECK_GE(receiver_time, 0);
-    return receiver_time;
-  }
+  ~VideoCodingModuleImpl() override = default;
 
   void Process() override { receiver_.Process(); }
 
diff --git a/modules/video_coding/video_coding_impl.h b/modules/video_coding/video_coding_impl.h
index c50cb17..22237ca 100644
--- a/modules/video_coding/video_coding_impl.h
+++ b/modules/video_coding/video_coding_impl.h
@@ -55,12 +55,12 @@
   int64_t _latestMs;
 };
 
-class VideoReceiver : public Module {
+class VideoReceiver {
  public:
   VideoReceiver(Clock* clock,
                 VCMTiming* timing,
                 const FieldTrialsView& field_trials);
-  ~VideoReceiver() override;
+  ~VideoReceiver();
 
   void RegisterReceiveCodec(uint8_t payload_type,
                             const VideoDecoder::Settings& settings);
@@ -82,9 +82,7 @@
                        int max_packet_age_to_nack,
                        int max_incomplete_time_ms);
 
-  int64_t TimeUntilNextProcess() override;
-  void Process() override;
-  void ProcessThreadAttached(ProcessThread* process_thread) override;
+  void Process();
 
  protected:
   int32_t Decode(const webrtc::VCMEncodedFrame& frame);
@@ -130,11 +128,6 @@
   VCMProcessTimer _keyRequestTimer RTC_GUARDED_BY(module_thread_checker_);
   ThreadUnsafeOneTimeEvent first_frame_received_
       RTC_GUARDED_BY(decoder_thread_checker_);
-  // Modified on the construction thread. Can be read without a lock and assumed
-  // to be non-null on the module and decoder threads.
-  ProcessThread* process_thread_ = nullptr;
-  bool is_attached_to_process_thread_
-      RTC_GUARDED_BY(construction_thread_checker_) = false;
 };
 
 }  // namespace vcm
diff --git a/modules/video_coding/video_receiver.cc b/modules/video_coding/video_receiver.cc
index 5d14337..51d74c9 100644
--- a/modules/video_coding/video_receiver.cc
+++ b/modules/video_coding/video_receiver.cc
@@ -17,7 +17,6 @@
 #include "api/sequence_checker.h"
 #include "api/video_codecs/video_codec.h"
 #include "api/video_codecs/video_decoder.h"
-#include "modules/utility/include/process_thread.h"
 #include "modules/video_coding/decoder_database.h"
 #include "modules/video_coding/encoded_frame.h"
 #include "modules/video_coding/generic_decoder.h"
@@ -103,27 +102,6 @@
   }
 }
 
-void VideoReceiver::ProcessThreadAttached(ProcessThread* process_thread) {
-  RTC_DCHECK_RUN_ON(&construction_thread_checker_);
-  if (process_thread) {
-    is_attached_to_process_thread_ = true;
-    RTC_DCHECK(!process_thread_ || process_thread_ == process_thread);
-    process_thread_ = process_thread;
-  } else {
-    is_attached_to_process_thread_ = false;
-  }
-}
-
-int64_t VideoReceiver::TimeUntilNextProcess() {
-  RTC_DCHECK_RUN_ON(&module_thread_checker_);
-  int64_t timeUntilNextProcess = _retransmissionTimer.TimeUntilProcess();
-
-  timeUntilNextProcess =
-      VCM_MIN(timeUntilNextProcess, _keyRequestTimer.TimeUntilProcess());
-
-  return timeUntilNextProcess;
-}
-
 // Register a receive callback. Will be called whenever there is a new frame
 // ready for rendering.
 int32_t VideoReceiver::RegisterReceiveCallback(
@@ -150,7 +128,6 @@
 int32_t VideoReceiver::RegisterFrameTypeCallback(
     VCMFrameTypeCallback* frameTypeCallback) {
   RTC_DCHECK_RUN_ON(&construction_thread_checker_);
-  RTC_DCHECK(!is_attached_to_process_thread_);
   // This callback is used on the module thread, but since we don't get
   // callbacks on the module thread while the decoder thread isn't running
   // (and this function must not be called when the decoder is running),
@@ -162,7 +139,6 @@
 int32_t VideoReceiver::RegisterPacketRequestCallback(
     VCMPacketRequestCallback* callback) {
   RTC_DCHECK_RUN_ON(&construction_thread_checker_);
-  RTC_DCHECK(!is_attached_to_process_thread_);
   // This callback is used on the module thread, but since we don't get
   // callbacks on the module thread while the decoder thread isn't running
   // (and this function must not be called when the decoder is running),
@@ -189,10 +165,6 @@
       if (frame->FrameType() != VideoFrameType::kVideoFrameKey) {
         drop_frame = true;
         _scheduleKeyRequest = true;
-        // TODO(tommi): Consider if we could instead post a task to the module
-        // thread and call RequestKeyFrame directly. Here we call WakeUp so that
-        // TimeUntilNextProcess() gets called straight away.
-        process_thread_->WakeUp(this);
       } else {
         drop_frames_until_keyframe_ = false;
       }
