diff --git a/test/fake_encoder.cc b/test/fake_encoder.cc
index 64b4a4e..2959559 100644
--- a/test/fake_encoder.cc
+++ b/test/fake_encoder.cc
@@ -69,7 +69,7 @@
   RTC_DCHECK_GE(max_kbps, -1);  // max_kbps == -1 disables it.
   rtc::CritScope cs(&crit_sect_);
   max_target_bitrate_kbps_ = max_kbps;
-  SetRates(current_rate_settings_);
+  SetRatesLocked(current_rate_settings_);
 }
 
 void FakeEncoder::SetQp(int qp) {
@@ -243,6 +243,10 @@
 
 void FakeEncoder::SetRates(const RateControlParameters& parameters) {
   rtc::CritScope cs(&crit_sect_);
+  SetRatesLocked(parameters);
+}
+
+void FakeEncoder::SetRatesLocked(const RateControlParameters& parameters) {
   current_rate_settings_ = parameters;
   int allocated_bitrate_kbps = parameters.bitrate.get_sum_kbps();
 
diff --git a/test/fake_encoder.h b/test/fake_encoder.h
index 39838d1..ade0e35 100644
--- a/test/fake_encoder.h
+++ b/test/fake_encoder.h
@@ -40,21 +40,23 @@
   virtual ~FakeEncoder() = default;
 
   // Sets max bitrate. Not thread-safe, call before registering the encoder.
-  void SetMaxBitrate(int max_kbps);
-  void SetQp(int qp);
+  void SetMaxBitrate(int max_kbps) RTC_LOCKS_EXCLUDED(crit_sect_);
+  void SetQp(int qp) RTC_LOCKS_EXCLUDED(crit_sect_);
 
   void SetFecControllerOverride(
       FecControllerOverride* fec_controller_override) override;
 
-  int32_t InitEncode(const VideoCodec* config,
-                     const Settings& settings) override;
+  int32_t InitEncode(const VideoCodec* config, const Settings& settings)
+      RTC_LOCKS_EXCLUDED(crit_sect_) override;
   int32_t Encode(const VideoFrame& input_image,
-                 const std::vector<VideoFrameType>* frame_types) override;
-  int32_t RegisterEncodeCompleteCallback(
-      EncodedImageCallback* callback) override;
+                 const std::vector<VideoFrameType>* frame_types)
+      RTC_LOCKS_EXCLUDED(crit_sect_) override;
+  int32_t RegisterEncodeCompleteCallback(EncodedImageCallback* callback)
+      RTC_LOCKS_EXCLUDED(crit_sect_) override;
   int32_t Release() override;
-  void SetRates(const RateControlParameters& parameters) override;
-  int GetConfiguredInputFramerate() const;
+  void SetRates(const RateControlParameters& parameters)
+      RTC_LOCKS_EXCLUDED(crit_sect_) override;
+  int GetConfiguredInputFramerate() const RTC_LOCKS_EXCLUDED(crit_sect_);
   EncoderInfo GetEncoderInfo() const override;
 
   static const char* kImplementationName;
@@ -79,7 +81,7 @@
                       uint8_t num_simulcast_streams,
                       const VideoBitrateAllocation& target_bitrate,
                       SimulcastStream simulcast_streams[kMaxSimulcastStreams],
-                      int framerate);
+                      int framerate) RTC_LOCKS_EXCLUDED(crit_sect_);
 
   // Called before the frame is passed to callback_->OnEncodedImage, to let
   // subclasses fill out codec_specific, possibly modify encodedImage.
@@ -88,6 +90,9 @@
       EncodedImage* encoded_image,
       CodecSpecificInfo* codec_specific);
 
+  void SetRatesLocked(const RateControlParameters& parameters)
+      RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
+
   FrameInfo last_frame_info_ RTC_GUARDED_BY(crit_sect_);
   Clock* const clock_;
 
