diff --git a/api/test/video_quality_test_fixture.h b/api/test/video_quality_test_fixture.h
index ff92a20..79b6d67 100644
--- a/api/test/video_quality_test_fixture.h
+++ b/api/test/video_quality_test_fixture.h
@@ -60,7 +60,6 @@
       std::string clip_name;  // "Generator" to generate frames instead.
       size_t capture_device_index;
       SdpVideoFormat::Parameters sdp_params;
-      bool partial_updates;
     } video[2];
     struct Audio {
       bool enabled;
diff --git a/video/screenshare_loopback.cc b/video/screenshare_loopback.cc
index e552878..5e781e4 100644
--- a/video/screenshare_loopback.cc
+++ b/video/screenshare_loopback.cc
@@ -299,11 +299,6 @@
 
 WEBRTC_DEFINE_bool(help, false, "prints this message");
 
-WEBRTC_DEFINE_bool(partial_updates,
-                   false,
-                   "Pass only changed regions from the "
-                   "capturer");
-
 }  // namespace flags
 
 void Loopback() {
@@ -340,8 +335,7 @@
                      false,  // Automatic scaling disabled.
                      "",
                      0,  // capture_device_index.
-                     SdpVideoFormat::Parameters(),
-                     flags::FLAG_partial_updates};
+                     SdpVideoFormat::Parameters()};
   params.screenshare[0] = {true, flags::GenerateSlides(),
                            flags::SlideChangeInterval(),
                            flags::ScrollDuration(), flags::Slides()};
diff --git a/video/video_analyzer.cc b/video/video_analyzer.cc
index 2d02d9b..6535133 100644
--- a/video/video_analyzer.cc
+++ b/video/video_analyzer.cc
@@ -62,15 +62,14 @@
                              int selected_tl,
                              bool is_quick_test_enabled,
                              Clock* clock,
-                             std::string rtp_dump_name,
-                             bool partial_updates)
+                             std::string rtp_dump_name)
     : transport_(transport),
       receiver_(nullptr),
       call_(nullptr),
       send_stream_(nullptr),
       receive_stream_(nullptr),
       audio_receive_stream_(nullptr),
-      captured_frame_forwarder_(this, clock, duration_frames, partial_updates),
+      captured_frame_forwarder_(this, clock, duration_frames),
       test_label_(test_label),
       graph_data_output_file_(graph_data_output_file),
       graph_title_(graph_title),
@@ -874,17 +873,13 @@
 VideoAnalyzer::CapturedFrameForwarder::CapturedFrameForwarder(
     VideoAnalyzer* analyzer,
     Clock* clock,
-    int frames_to_process,
-    bool partial_updates)
+    int frames_to_process)
     : analyzer_(analyzer),
       send_stream_input_(nullptr),
       video_source_(nullptr),
       clock_(clock),
       captured_frames_(0),
-      frames_to_process_(frames_to_process) {
-  if (partial_updates)
-    frame_change_extractor_.reset(new FrameChangeExtractor);
-}
+      frames_to_process_(frames_to_process) {}
 
 void VideoAnalyzer::CapturedFrameForwarder::SetSource(
     VideoSourceInterface<VideoFrame>* video_source) {
@@ -903,13 +898,8 @@
   analyzer_->AddCapturedFrameForComparison(copy);
   rtc::CritScope lock(&crit_);
   ++captured_frames_;
-  if (captured_frames_ > frames_to_process_)
-    return;
-  if (frame_change_extractor_) {
-    frame_change_extractor_->OnFrame(copy);
-  } else if (send_stream_input_) {
+  if (send_stream_input_ && captured_frames_ <= frames_to_process_)
     send_stream_input_->OnFrame(copy);
-  }
 }
 
 void VideoAnalyzer::CapturedFrameForwarder::AddOrUpdateSink(
@@ -920,9 +910,6 @@
     RTC_DCHECK(!send_stream_input_ || send_stream_input_ == sink);
     send_stream_input_ = sink;
   }
-  if (frame_change_extractor_) {
-    frame_change_extractor_->AddOrUpdateSink(sink, wants);
-  }
   if (video_source_) {
     video_source_->AddOrUpdateSink(this, wants);
   }
@@ -933,9 +920,6 @@
   rtc::CritScope lock(&crit_);
   RTC_DCHECK(sink == send_stream_input_);
   send_stream_input_ = nullptr;
-  if (frame_change_extractor_) {
-    frame_change_extractor_->RemoveSink(sink);
-  }
 }
 
 }  // namespace webrtc
diff --git a/video/video_analyzer.h b/video/video_analyzer.h
index 759b4e9..8caaf14 100644
--- a/video/video_analyzer.h
+++ b/video/video_analyzer.h
@@ -18,7 +18,6 @@
 
 #include "api/video/video_source_interface.h"
 #include "rtc_base/time_utils.h"
-#include "test/frame_change_extractor.h"
 #include "test/layer_filtering_transport.h"
 #include "test/rtp_file_writer.h"
 #include "test/statistics.h"
@@ -43,8 +42,7 @@
                 int selected_tl,
                 bool is_quick_test_enabled,
                 Clock* clock,
-                std::string rtp_dump_name,
-                bool partial_updates);
+                std::string rtp_dump_name);
   ~VideoAnalyzer();
 
   virtual void SetReceiver(PacketReceiver* receiver);
@@ -140,8 +138,7 @@
    public:
     CapturedFrameForwarder(VideoAnalyzer* analyzer,
                            Clock* clock,
-                           int frames_to_process,
-                           bool partial_updates);
+                           int frames_to_process);
     void SetSource(rtc::VideoSourceInterface<VideoFrame>* video_source);
 
    private:
@@ -162,7 +159,6 @@
     Clock* clock_;
     int captured_frames_ RTC_GUARDED_BY(crit_);
     int frames_to_process_ RTC_GUARDED_BY(crit_);
-    std::unique_ptr<FrameChangeExtractor> frame_change_extractor_;
   };
 
   struct FrameWithPsnr {
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index 8349566..1b2f9d6 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -1091,8 +1091,7 @@
       kSendRtxSsrcs[params_.ss[0].selected_stream],
       static_cast<size_t>(params_.ss[0].selected_stream),
       params.ss[0].selected_sl, params_.video[0].selected_tl,
-      is_quick_test_enabled, clock_, params_.logging.rtp_dump_name,
-      params_.video[0].partial_updates);
+      is_quick_test_enabled, clock_, params_.logging.rtp_dump_name);
 
   task_queue_.SendTask([&]() {
     analyzer_->SetCall(sender_call_.get());
@@ -1358,15 +1357,6 @@
                                            rtc::VideoSinkWants());
       }
       ConnectVideoSourcesToStreams();
-      if (params_.video[0].partial_updates) {
-        frame_change_extractor_.reset(new FrameChangeExtractor());
-        frame_change_extractor_->SetSource(video_sources_[0].get());
-        video_send_streams_[0]->SetSource(frame_change_extractor_.get(),
-                                          degradation_preference_);
-      } else {
-        video_send_streams_[0]->SetSource(video_sources_[0].get(),
-                                          degradation_preference_);
-      }
     }
 
     if (params_.audio.enabled) {
diff --git a/video/video_quality_test.h b/video/video_quality_test.h
index e41d6f2..028dddf 100644
--- a/video/video_quality_test.h
+++ b/video/video_quality_test.h
@@ -22,7 +22,6 @@
 #include "media/engine/internal_decoder_factory.h"
 #include "media/engine/internal_encoder_factory.h"
 #include "test/call_test.h"
-#include "test/frame_change_extractor.h"
 #include "test/frame_generator.h"
 #include "test/layer_filtering_transport.h"
 #include "video/video_analyzer.h"
@@ -115,8 +114,6 @@
   std::vector<VideoReceiveStream::Config> thumbnail_receive_configs_;
   std::vector<VideoReceiveStream*> thumbnail_receive_streams_;
 
-  std::unique_ptr<FrameChangeExtractor> frame_change_extractor_;
-
   int receive_logs_;
   int send_logs_;
 
