clang-tidy: modernize-use-override

https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-override.html

Done using clang-tidy with
  tools/clang/scripts/build_clang_tools_extra.py \
    --fetch out/Default clang-tidy clang-apply-replacements
  ninja -C out/Default
  gn gen out/Default --export-compile-commands
  cd out/Default
  tools/clang/third_party/llvm/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py -p . \
    -clang-tidy-binary out/Default/tools/clang/third_party/llvm/build/bin/clang-tidy \
    -clang-apply-replacements-binary \
        out/Default/tools/clang/third_party/llvm/build/bin/clang-apply-replacements \
    -checks='-*,modernize-use-override' \
    -fix

Bug: webrtc:424706384
No-Iwyu: orthogonal LSC
Change-Id: Id3676fc5a4f38ed67e39e567011e9bb4b98ee4cc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/396421
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#44941}
diff --git a/api/video_codecs/libaom_av1_encoder_factory_test.cc b/api/video_codecs/libaom_av1_encoder_factory_test.cc
index 62d7442..07cc9ad 100644
--- a/api/video_codecs/libaom_av1_encoder_factory_test.cc
+++ b/api/video_codecs/libaom_av1_encoder_factory_test.cc
@@ -86,7 +86,7 @@
     }
   }
 
-  ~Av1Decoder() {
+  ~Av1Decoder() override {
     if (raw_out_file_) {
       fclose(raw_out_file_);
     }
diff --git a/audio/audio_state_unittest.cc b/audio/audio_state_unittest.cc
index c886a13..959eb38 100644
--- a/audio/audio_state_unittest.cc
+++ b/audio/audio_state_unittest.cc
@@ -132,13 +132,9 @@
 
 class FakeAudioSource : public AudioMixer::Source {
  public:
-  // TODO(aleloi): Valid overrides commented out, because the gmock
-  // methods don't use any override declarations, and we want to avoid
-  // warnings from -Winconsistent-missing-override. See
-  // http://crbug.com/428099.
-  int Ssrc() const /*override*/ { return 0; }
+  int Ssrc() const override { return 0; }
 
-  int PreferredSampleRate() const /*override*/ { return kSampleRate; }
+  int PreferredSampleRate() const override { return kSampleRate; }
 
   MOCK_METHOD(AudioFrameInfo,
               GetAudioFrameWithInfo,
diff --git a/audio/utility/channel_mixer_unittest.cc b/audio/utility/channel_mixer_unittest.cc
index a54c8a0..62ffca6 100644
--- a/audio/utility/channel_mixer_unittest.cc
+++ b/audio/utility/channel_mixer_unittest.cc
@@ -35,7 +35,7 @@
     EXPECT_TRUE(frame_.muted());
   }
 
-  virtual ~ChannelMixerTest() {}
+  ~ChannelMixerTest() override {}
 
   AudioFrame frame_;
 };
diff --git a/call/bitrate_allocator_unittest.cc b/call/bitrate_allocator_unittest.cc
index ab8e69c..61901fd 100644
--- a/call/bitrate_allocator_unittest.cc
+++ b/call/bitrate_allocator_unittest.cc
@@ -127,7 +127,7 @@
     allocator_->OnNetworkEstimateChanged(
         CreateTargetRateMessage(300000u, 0, 0, kDefaultProbingIntervalMs));
   }
-  ~BitrateAllocatorTest() {}
+  ~BitrateAllocatorTest() override {}
   void AddObserver(
       BitrateAllocatorObserver* observer,
       uint32_t min_bitrate_bps,
@@ -327,7 +327,7 @@
     allocator_->OnNetworkEstimateChanged(
         CreateTargetRateMessage(300000u, 0, 0, kDefaultProbingIntervalMs));
   }
-  ~BitrateAllocatorTestNoEnforceMin() {}
+  ~BitrateAllocatorTestNoEnforceMin() override {}
   void AddObserver(BitrateAllocatorObserver* observer,
                    uint32_t min_bitrate_bps,
                    uint32_t max_bitrate_bps,
diff --git a/call/bitrate_estimator_tests.cc b/call/bitrate_estimator_tests.cc
index 28d401d..58cbaea 100644
--- a/call/bitrate_estimator_tests.cc
+++ b/call/bitrate_estimator_tests.cc
@@ -118,9 +118,9 @@
  public:
   BitrateEstimatorTest() : receive_config_(nullptr) {}
 
-  virtual ~BitrateEstimatorTest() { EXPECT_TRUE(streams_.empty()); }
+  ~BitrateEstimatorTest() override { EXPECT_TRUE(streams_.empty()); }
 
-  virtual void SetUp() {
+  void SetUp() override {
     SendTask(task_queue(), [this]() {
       RegisterRtpExtension(
           RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
@@ -157,7 +157,7 @@
     });
   }
 
-  virtual void TearDown() {
+  void TearDown() override {
     SendTask(task_queue(), [this]() {
       for (auto* stream : streams_) {
         stream->StopSending();
diff --git a/call/fake_network_pipe_unittest.cc b/call/fake_network_pipe_unittest.cc
index 05a348c..dc8c0ca 100644
--- a/call/fake_network_pipe_unittest.cc
+++ b/call/fake_network_pipe_unittest.cc
@@ -45,7 +45,7 @@
                RtpPacketReceived packet,
                OnUndemuxablePacketHandler undemuxable_packet_handler),
               (override));
-  virtual ~MockReceiver() = default;
+  ~MockReceiver() override = default;
 };
 
 class ReorderTestReceiver : public MockReceiver {
diff --git a/call/flexfec_receive_stream_unittest.cc b/call/flexfec_receive_stream_unittest.cc
index e49d02d..0621014 100644
--- a/call/flexfec_receive_stream_unittest.cc
+++ b/call/flexfec_receive_stream_unittest.cc
@@ -89,7 +89,9 @@
     receive_stream_->RegisterWithTransport(&rtp_stream_receiver_controller_);
   }
 
-  ~FlexfecReceiveStreamTest() { receive_stream_->UnregisterFromTransport(); }
+  ~FlexfecReceiveStreamTest() override {
+    receive_stream_->UnregisterFromTransport();
+  }
 
   AutoThread main_thread_;
   MockTransport rtcp_send_transport_;
diff --git a/call/receive_time_calculator_unittest.cc b/call/receive_time_calculator_unittest.cc
index 24f5098..f7a382c 100644
--- a/call/receive_time_calculator_unittest.cc
+++ b/call/receive_time_calculator_unittest.cc
@@ -59,7 +59,7 @@
 class EmulatedMonotoneousClock : public EmulatedClock {
  public:
   explicit EmulatedMonotoneousClock(int seed) : EmulatedClock(seed) {}
-  ~EmulatedMonotoneousClock() = default;
+  ~EmulatedMonotoneousClock() override = default;
 
   int64_t Query(int64_t time_us) {
     int64_t skip_us = UpdateClock(time_us);
@@ -112,7 +112,7 @@
       : EmulatedClock(seed, drift) {
     Pregenerate(duration_us);
   }
-  ~EmulatedNonMonotoneousClock() = default;
+  ~EmulatedNonMonotoneousClock() override = default;
 
   void Pregenerate(int64_t duration_us) {
     int64_t time_since_reset_us = kMinTimeBetweenResetsUs;
diff --git a/call/rtp_demuxer_unittest.cc b/call/rtp_demuxer_unittest.cc
index 5cbc1bc..83e5422 100644
--- a/call/rtp_demuxer_unittest.cc
+++ b/call/rtp_demuxer_unittest.cc
@@ -36,7 +36,7 @@
 
 class RtpDemuxerTest : public ::testing::Test {
  protected:
-  ~RtpDemuxerTest() {
+  ~RtpDemuxerTest() override {
     for (auto* sink : sinks_to_tear_down_) {
       demuxer_.RemoveSink(sink);
     }
diff --git a/common_audio/real_fourier_unittest.cc b/common_audio/real_fourier_unittest.cc
index eac4fce..3f3a2eb 100644
--- a/common_audio/real_fourier_unittest.cc
+++ b/common_audio/real_fourier_unittest.cc
@@ -60,7 +60,7 @@
         real_buffer_(RealFourier::AllocRealBuffer(4)),
         cplx_buffer_(RealFourier::AllocCplxBuffer(3)) {}
 
-  ~RealFourierTest() {}
+  ~RealFourierTest() override {}
 
   T rf_;
   const RealFourier::fft_real_scoper real_buffer_;
diff --git a/common_audio/resampler/sinc_resampler_unittest.cc b/common_audio/resampler/sinc_resampler_unittest.cc
index 01bb883..8fbe0d8 100644
--- a/common_audio/resampler/sinc_resampler_unittest.cc
+++ b/common_audio/resampler/sinc_resampler_unittest.cc
@@ -228,7 +228,7 @@
         rms_error_(std::get<2>(GetParam())),
         low_freq_error_(std::get<3>(GetParam())) {}
 
-  virtual ~SincResamplerTest() {}
+  ~SincResamplerTest() override {}
 
  protected:
   int input_rate_;
diff --git a/examples/peerconnection/client/conductor.cc b/examples/peerconnection/client/conductor.cc
index ea1eb56..43c4cdd 100644
--- a/examples/peerconnection/client/conductor.cc
+++ b/examples/peerconnection/client/conductor.cc
@@ -83,8 +83,8 @@
   static webrtc::scoped_refptr<DummySetSessionDescriptionObserver> Create() {
     return webrtc::make_ref_counted<DummySetSessionDescriptionObserver>();
   }
-  virtual void OnSuccess() { RTC_LOG(LS_INFO) << __FUNCTION__; }
-  virtual void OnFailure(webrtc::RTCError error) {
+  void OnSuccess() override { RTC_LOG(LS_INFO) << __FUNCTION__; }
+  void OnFailure(webrtc::RTCError error) override {
     RTC_LOG(LS_INFO) << __FUNCTION__ << " " << ToString(error.type()) << ": "
                      << error.message();
   }
diff --git a/examples/peerconnection/client/linux/main.cc b/examples/peerconnection/client/linux/main.cc
index a0a80e8..68ac599 100644
--- a/examples/peerconnection/client/linux/main.cc
+++ b/examples/peerconnection/client/linux/main.cc
@@ -35,7 +35,7 @@
  public:
   explicit CustomSocketServer(GtkMainWnd* wnd)
       : wnd_(wnd), conductor_(nullptr), client_(nullptr) {}
-  virtual ~CustomSocketServer() {}
+  ~CustomSocketServer() override {}
 
   void SetMessageQueue(webrtc::Thread* queue) override {
     message_queue_ = queue;
diff --git a/examples/turnserver/turnserver_main.cc b/examples/turnserver/turnserver_main.cc
index 9248ea2..6419509 100644
--- a/examples/turnserver/turnserver_main.cc
+++ b/examples/turnserver/turnserver_main.cc
@@ -33,9 +33,9 @@
   explicit TurnFileAuth(std::map<std::string, std::string> name_to_key)
       : name_to_key_(std::move(name_to_key)) {}
 
-  virtual bool GetKey(absl::string_view username,
-                      absl::string_view realm,
-                      std::string* key) {
+  bool GetKey(absl::string_view username,
+              absl::string_view realm,
+              std::string* key) override {
     // File is stored as lines of <username>=<HA1>.
     // Generate HA1 via "echo -n "<username>:<realm>:<password>" | md5sum"
     auto it = name_to_key_.find(std::string(username));
diff --git a/logging/rtc_event_log/rtc_event_log_impl_unittest.cc b/logging/rtc_event_log/rtc_event_log_impl_unittest.cc
index f2bde75..f1bc96f 100644
--- a/logging/rtc_event_log/rtc_event_log_impl_unittest.cc
+++ b/logging/rtc_event_log/rtc_event_log_impl_unittest.cc
@@ -66,7 +66,7 @@
  public:
   explicit FakeOutput(std::string& written_data)
       : written_data_(written_data) {}
-  bool IsActive() const { return is_active_; }
+  bool IsActive() const override { return is_active_; }
   bool Write(absl::string_view data) override {
     RTC_DCHECK(is_active_);
     if (fails_write_) {
diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc
index 2b22eaf..4de878f 100644
--- a/media/engine/simulcast_encoder_adapter_unittest.cc
+++ b/media/engine/simulcast_encoder_adapter_unittest.cc
@@ -269,7 +269,7 @@
 
   MOCK_METHOD(int32_t, Release, (), (override));
 
-  void SetRates(const RateControlParameters& parameters) {
+  void SetRates(const RateControlParameters& parameters) override {
     last_set_rates_ = parameters;
   }
 
@@ -290,7 +290,7 @@
     return info;
   }
 
-  virtual ~MockVideoEncoder() { factory_->DestroyVideoEncoder(this); }
+  ~MockVideoEncoder() override { factory_->DestroyVideoEncoder(this); }
 
   const VideoCodec& codec() const { return codec_; }
 
@@ -478,7 +478,7 @@
  public:
   TestSimulcastEncoderAdapterFake() : use_fallback_factory_(false) {}
 
-  virtual ~TestSimulcastEncoderAdapterFake() {
+  ~TestSimulcastEncoderAdapterFake() override {
     if (adapter_) {
       adapter_->Release();
     }
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index 579500d..3846024 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -3854,7 +3854,7 @@
       : WebRtcVideoChannelTest(field_trials) {
     encoder_factory_->AddSupportedVideoCodecType("VP9");
   }
-  virtual ~Vp9SettingsTest() {}
+  ~Vp9SettingsTest() override {}
 
  protected:
   void TearDown() override {
diff --git a/modules/audio_coding/acm2/audio_coding_module_unittest.cc b/modules/audio_coding/acm2/audio_coding_module_unittest.cc
index ba8ca87..7982ffc 100644
--- a/modules/audio_coding/acm2/audio_coding_module_unittest.cc
+++ b/modules/audio_coding/acm2/audio_coding_module_unittest.cc
@@ -179,11 +179,11 @@
       : env_(CreateEnvironment()),
         rtp_utility_(new RtpData(kFrameSizeSamples, kPayloadType)) {}
 
-  ~AudioCodingModuleTestOldApi() {}
+  ~AudioCodingModuleTestOldApi() override {}
 
-  void TearDown() {}
+  void TearDown() override {}
 
-  void SetUp() {
+  void SetUp() override {
     acm_ = AudioCodingModule::Create();
     neteq_ = DefaultNetEqFactory().Create(env_, NetEq::Config(),
                                           CreateBuiltinAudioDecoderFactory());
@@ -383,7 +383,7 @@
     env_ = override_clock.Create();
   }
 
-  void SetUp() {
+  void SetUp() override {
     AudioCodingModuleTestOldApi::SetUp();
     RegisterCodec();  // Must be called before the threads start below.
     StartThreads();
@@ -417,7 +417,7 @@
         "pull_audio", attributes);
   }
 
-  void TearDown() {
+  void TearDown() override {
     AudioCodingModuleTestOldApi::TearDown();
     quit_.store(true);
     pull_audio_thread_.Finalize();
@@ -540,7 +540,7 @@
   static constexpr int kFrameSize = kSampleRateHz / 100;
   static constexpr int kNumChannels = 2;
 
-  void SetUp() {
+  void SetUp() override {
     scoped_refptr<AudioEncoderFactory> codec_factory =
         CreateBuiltinAudioEncoderFactory();
     acm_ = AudioCodingModule::Create();
diff --git a/modules/audio_coding/codecs/cng/cng_unittest.cc b/modules/audio_coding/codecs/cng/cng_unittest.cc
index 01b7fbf..309e2b6 100644
--- a/modules/audio_coding/codecs/cng/cng_unittest.cc
+++ b/modules/audio_coding/codecs/cng/cng_unittest.cc
@@ -38,7 +38,7 @@
 
 class CngTest : public ::testing::Test {
  protected:
-  virtual void SetUp();
+  void SetUp() override;
 
   void TestCngEncode(int sample_rate_hz, int quality);
 
diff --git a/modules/audio_coding/codecs/legacy_encoded_audio_frame_unittest.cc b/modules/audio_coding/codecs/legacy_encoded_audio_frame_unittest.cc
index 5e03dce..a1712b7 100644
--- a/modules/audio_coding/codecs/legacy_encoded_audio_frame_unittest.cc
+++ b/modules/audio_coding/codecs/legacy_encoded_audio_frame_unittest.cc
@@ -39,7 +39,7 @@
 
 class SplitBySamplesTest : public ::testing::TestWithParam<NetEqDecoder> {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     decoder_type_ = GetParam();
     switch (decoder_type_) {
       case NetEqDecoder::kDecoderPCMu:
diff --git a/modules/audio_coding/neteq/audio_multi_vector_unittest.cc b/modules/audio_coding/neteq/audio_multi_vector_unittest.cc
index c9fe230..a7bc4ea 100644
--- a/modules/audio_coding/neteq/audio_multi_vector_unittest.cc
+++ b/modules/audio_coding/neteq/audio_multi_vector_unittest.cc
@@ -38,9 +38,9 @@
       : num_channels_(GetParam()),  // Get the test parameter.
         array_interleaved_(num_channels_ * array_length()) {}
 
-  ~AudioMultiVectorTest() = default;
+  ~AudioMultiVectorTest() override = default;
 
-  virtual void SetUp() {
+  void SetUp() override {
     // Populate test arrays.
     for (size_t i = 0; i < array_length(); ++i) {
       array_[i] = static_cast<int16_t>(i);
diff --git a/modules/audio_coding/neteq/audio_vector_unittest.cc b/modules/audio_coding/neteq/audio_vector_unittest.cc
index b215c4a..f048594 100644
--- a/modules/audio_coding/neteq/audio_vector_unittest.cc
+++ b/modules/audio_coding/neteq/audio_vector_unittest.cc
@@ -23,7 +23,7 @@
 
 class AudioVectorTest : public ::testing::Test {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     // Populate test array.
     for (size_t i = 0; i < array_length(); ++i) {
       array_[i] = checked_cast<int16_t>(i);
diff --git a/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc b/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
index 6417cf4..edd57a0 100644
--- a/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
@@ -176,7 +176,7 @@
  public:
   explicit AudioChecksumWithOutput(std::string* output_str)
       : output_str_(*output_str) {}
-  ~AudioChecksumWithOutput() { output_str_ = Finish(); }
+  ~AudioChecksumWithOutput() override { output_str_ = Finish(); }
 
  private:
   std::string& output_str_;
diff --git a/modules/audio_coding/neteq/neteq_impl_unittest.cc b/modules/audio_coding/neteq/neteq_impl_unittest.cc
index bc9e84a..a336e4c 100644
--- a/modules/audio_coding/neteq/neteq_impl_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_impl_unittest.cc
@@ -173,7 +173,7 @@
     use_mock_payload_splitter_ = false;
   }
 
-  virtual ~NetEqImplTest() {
+  ~NetEqImplTest() override {
     if (use_mock_decoder_database_) {
       EXPECT_CALL(*mock_decoder_database_, Die()).Times(1);
     }
@@ -1790,7 +1790,7 @@
 class NetEqImplTest120ms : public NetEqImplTest {
  protected:
   NetEqImplTest120ms() : NetEqImplTest() {}
-  virtual ~NetEqImplTest120ms() {}
+  ~NetEqImplTest120ms() override {}
 
   void CreateInstanceNoMocks() {
     UseNoMocks();
diff --git a/modules/audio_coding/neteq/neteq_stereo_unittest.cc b/modules/audio_coding/neteq/neteq_stereo_unittest.cc
index 6cab630..bdb0cfe 100644
--- a/modules/audio_coding/neteq/neteq_stereo_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_stereo_unittest.cc
@@ -91,14 +91,14 @@
         new uint8_t[frame_size_samples_ * 2 * num_channels_];
   }
 
-  ~NetEqStereoTest() {
+  ~NetEqStereoTest() override {
     delete[] input_;
     delete[] encoded_;
     delete[] input_multi_channel_;
     delete[] encoded_multi_channel_;
   }
 
-  virtual void SetUp() {
+  void SetUp() override {
     const std::string file_name =
         test::ResourcePath("audio_coding/testfile32kHz", "pcm");
     input_file_.reset(new test::InputAudioFile(file_name));
@@ -110,7 +110,7 @@
         SdpAudioFormat("l16", sample_rate_hz_, num_channels_)));
   }
 
-  virtual void TearDown() {}
+  void TearDown() override {}
 
   int GetNewPackets() {
     if (!input_file_->Read(frame_size_samples_, input_)) {
@@ -266,7 +266,7 @@
     // TODO(hlundin): Mock the decision making instead to control the modes.
     last_arrival_time_ = -100;
   }
-  virtual int GetArrivalTime(int send_time) {
+  int GetArrivalTime(int send_time) override {
     int arrival_time =
         last_arrival_time_ + drift_factor * (send_time - last_send_time_);
     last_send_time_ = send_time;
@@ -299,7 +299,7 @@
   static const int kDelay = 1000;
   NetEqStereoTestDelays() : NetEqStereoTest(), frame_index_(0) {}
 
-  virtual int GetArrivalTime(int send_time) {
+  int GetArrivalTime(int send_time) override {
     // Deliver immediately, unless we have a back-log.
     int arrival_time = std::min(last_arrival_time_, send_time);
     if (++frame_index_ % kDelayInterval == 0) {
@@ -323,10 +323,10 @@
   static const int kLossInterval = 10;
   NetEqStereoTestLosses() : NetEqStereoTest(), frame_index_(0) {}
 
-  virtual bool Lost() { return (++frame_index_) % kLossInterval == 0; }
+  bool Lost() override { return (++frame_index_) % kLossInterval == 0; }
 
   // TODO(hlundin): NetEq is not giving bitexact results for these cases.
-  virtual void VerifyOutput(size_t num_samples) {
+  void VerifyOutput(size_t num_samples) override {
     for (size_t i = 0; i < num_samples; ++i) {
       const int16_t* output_data = output_.data();
       const int16_t* output_multi_channel_data = output_multi_channel_.data();
@@ -354,7 +354,7 @@
  protected:
   NetEqStereoTestSingleActiveChannelPlc() : NetEqStereoTestLosses() {}
 
-  virtual void MakeMultiChannelInput() override {
+  void MakeMultiChannelInput() override {
     // Create a multi-channel input by copying the mono channel from file to the
     // first channel, and setting the others to zero.
     memset(input_multi_channel_, 0,
@@ -364,7 +364,7 @@
     }
   }
 
-  virtual void VerifyOutput(size_t num_samples) override {
+  void VerifyOutput(size_t num_samples) override {
     // Simply verify that all samples in channels other than the first are zero.
     const int16_t* output_multi_channel_data = output_multi_channel_.data();
     for (size_t i = 0; i < num_samples; ++i) {
diff --git a/modules/audio_coding/test/target_delay_unittest.cc b/modules/audio_coding/test/target_delay_unittest.cc
index 0b26e88..b437e83 100644
--- a/modules/audio_coding/test/target_delay_unittest.cc
+++ b/modules/audio_coding/test/target_delay_unittest.cc
@@ -38,9 +38,9 @@
                                          NetEq::Config(),
                                          CreateBuiltinAudioDecoderFactory())) {}
 
-  ~TargetDelayTest() {}
+  ~TargetDelayTest() override {}
 
-  void SetUp() {
+  void SetUp() override {
     constexpr int pltype = 108;
     std::map<int, SdpAudioFormat> receive_codecs = {
         {pltype, {"L16", kSampleRateHz, 1}}};
diff --git a/modules/audio_device/audio_device_unittest.cc b/modules/audio_device/audio_device_unittest.cc
index 90ba914..c3cad1c 100644
--- a/modules/audio_device/audio_device_unittest.cc
+++ b/modules/audio_device/audio_device_unittest.cc
@@ -339,7 +339,7 @@
 class MockAudioTransport : public test::MockAudioTransport {
  public:
   explicit MockAudioTransport(TransportType type) : type_(type) {}
-  ~MockAudioTransport() {}
+  ~MockAudioTransport() override {}
 
   // Set default actions of the mock object. We are delegating to fake
   // implementation where the number of callbacks is counted and an event
@@ -572,7 +572,7 @@
   // An alternative would be for the mock to outlive audio_device.
   void PreTearDown() { EXPECT_EQ(0, audio_device_->Terminate()); }
 
-  virtual ~MAYBE_AudioDeviceTest() {
+  ~MAYBE_AudioDeviceTest() override {
     if (audio_device_) {
       EXPECT_EQ(0, audio_device_->Terminate());
     }
diff --git a/modules/audio_processing/aec3/echo_canceller3_unittest.cc b/modules/audio_processing/aec3/echo_canceller3_unittest.cc
index d0681c7..01e1d9f 100644
--- a/modules/audio_processing/aec3/echo_canceller3_unittest.cc
+++ b/modules/audio_processing/aec3/echo_canceller3_unittest.cc
@@ -140,7 +140,7 @@
 
   void SetAudioBufferDelay(int /* delay_ms */) override {}
 
-  void SetCaptureOutputUsage(bool /* capture_output_used */) {}
+  void SetCaptureOutputUsage(bool /* capture_output_used */) override {}
 };
 
 // Class for testing that the render data is properly received by the block
@@ -176,7 +176,7 @@
 
   void SetAudioBufferDelay(int /* delay_ms */) override {}
 
-  void SetCaptureOutputUsage(bool /* capture_output_used */) {}
+  void SetCaptureOutputUsage(bool /* capture_output_used */) override {}
 
  private:
   std::deque<Block> received_render_blocks_;
diff --git a/modules/audio_processing/agc/agc_manager_direct_unittest.cc b/modules/audio_processing/agc/agc_manager_direct_unittest.cc
index 58f7ae6..49c8c78 100644
--- a/modules/audio_processing/agc/agc_manager_direct_unittest.cc
+++ b/modules/audio_processing/agc/agc_manager_direct_unittest.cc
@@ -71,7 +71,7 @@
 
 class MockGainControl : public GainControl {
  public:
-  virtual ~MockGainControl() {}
+  ~MockGainControl() override {}
   MOCK_METHOD(int, set_stream_analog_level, (int level), (override));
   MOCK_METHOD(int, stream_analog_level, (), (const, override));
   MOCK_METHOD(int, set_mode, (Mode mode), (override));
diff --git a/modules/audio_processing/agc2/clipping_predictor.cc b/modules/audio_processing/agc2/clipping_predictor.cc
index 5fc4d16..a14ed7e 100644
--- a/modules/audio_processing/agc2/clipping_predictor.cc
+++ b/modules/audio_processing/agc2/clipping_predictor.cc
@@ -102,9 +102,9 @@
 
   ClippingEventPredictor(const ClippingEventPredictor&) = delete;
   ClippingEventPredictor& operator=(const ClippingEventPredictor&) = delete;
-  ~ClippingEventPredictor() {}
+  ~ClippingEventPredictor() override {}
 
-  void Reset() {
+  void Reset() override {
     const int num_channels = ch_buffers_.size();
     for (int i = 0; i < num_channels; ++i) {
       ch_buffers_[i]->Reset();
@@ -113,7 +113,7 @@
 
   // Analyzes a frame of audio and stores the framewise metrics in
   // `ch_buffers_`.
-  void Analyze(const AudioFrameView<const float>& frame) {
+  void Analyze(const AudioFrameView<const float>& frame) override {
     const int num_channels = frame.num_channels();
     RTC_DCHECK_EQ(num_channels, ch_buffers_.size());
     const int samples_per_channel = frame.samples_per_channel();
@@ -136,11 +136,12 @@
   // if at least `GetMinFramesProcessed()` frames have been processed since the
   // last reset and a clipping event is predicted. `level`, `min_mic_level`, and
   // `max_mic_level` are limited to [0, 255] and `default_step` to [1, 255].
-  std::optional<int> EstimateClippedLevelStep(int channel,
-                                              int level,
-                                              int default_step,
-                                              int min_mic_level,
-                                              int max_mic_level) const {
+  std::optional<int> EstimateClippedLevelStep(
+      int channel,
+      int level,
+      int default_step,
+      int min_mic_level,
+      int max_mic_level) const override {
     RTC_CHECK_GE(channel, 0);
     RTC_CHECK_LT(channel, ch_buffers_.size());
     RTC_DCHECK_GE(level, 0);
@@ -241,9 +242,9 @@
 
   ClippingPeakPredictor(const ClippingPeakPredictor&) = delete;
   ClippingPeakPredictor& operator=(const ClippingPeakPredictor&) = delete;
-  ~ClippingPeakPredictor() {}
+  ~ClippingPeakPredictor() override {}
 
-  void Reset() {
+  void Reset() override {
     const int num_channels = ch_buffers_.size();
     for (int i = 0; i < num_channels; ++i) {
       ch_buffers_[i]->Reset();
@@ -252,7 +253,7 @@
 
   // Analyzes a frame of audio and stores the framewise metrics in
   // `ch_buffers_`.
-  void Analyze(const AudioFrameView<const float>& frame) {
+  void Analyze(const AudioFrameView<const float>& frame) override {
     const int num_channels = frame.num_channels();
     RTC_DCHECK_EQ(num_channels, ch_buffers_.size());
     const int samples_per_channel = frame.samples_per_channel();
@@ -276,11 +277,12 @@
   // least `GetMinFramesProcessed()` frames have been processed since the last
   // reset and a clipping event is predicted. `level`, `min_mic_level`, and
   // `max_mic_level` are limited to [0, 255] and `default_step` to [1, 255].
-  std::optional<int> EstimateClippedLevelStep(int channel,
-                                              int level,
-                                              int default_step,
-                                              int min_mic_level,
-                                              int max_mic_level) const {
+  std::optional<int> EstimateClippedLevelStep(
+      int channel,
+      int level,
+      int default_step,
+      int min_mic_level,
+      int max_mic_level) const override {
     RTC_DCHECK_GE(channel, 0);
     RTC_DCHECK_LT(channel, ch_buffers_.size());
     RTC_DCHECK_GE(level, 0);
diff --git a/modules/audio_processing/agc2/noise_level_estimator.cc b/modules/audio_processing/agc2/noise_level_estimator.cc
index 31427e7..76e7bfb 100644
--- a/modules/audio_processing/agc2/noise_level_estimator.cc
+++ b/modules/audio_processing/agc2/noise_level_estimator.cc
@@ -81,7 +81,7 @@
   }
   NoiseFloorEstimator(const NoiseFloorEstimator&) = delete;
   NoiseFloorEstimator& operator=(const NoiseFloorEstimator&) = delete;
-  ~NoiseFloorEstimator() = default;
+  ~NoiseFloorEstimator() override = default;
 
   float Analyze(DeinterleavedView<const float> frame) override {
     // Detect sample rate changes.
diff --git a/modules/audio_processing/agc2/rnn_vad/test_utils.cc b/modules/audio_processing/agc2/rnn_vad/test_utils.cc
index 1663534..4fb11ce 100644
--- a/modules/audio_processing/agc2/rnn_vad/test_utils.cc
+++ b/modules/audio_processing/agc2/rnn_vad/test_utils.cc
@@ -46,7 +46,7 @@
   }
   FloatFileReader(const FloatFileReader&) = delete;
   FloatFileReader& operator=(const FloatFileReader&) = delete;
-  ~FloatFileReader() = default;
+  ~FloatFileReader() override = default;
 
   int size() const override { return size_; }
   bool ReadChunk(ArrayView<float> dst) override {
diff --git a/modules/audio_processing/agc2/saturation_protector.cc b/modules/audio_processing/agc2/saturation_protector.cc
index 4301f50..e5f2cdb 100644
--- a/modules/audio_processing/agc2/saturation_protector.cc
+++ b/modules/audio_processing/agc2/saturation_protector.cc
@@ -105,7 +105,7 @@
   }
   SaturationProtectorImpl(const SaturationProtectorImpl&) = delete;
   SaturationProtectorImpl& operator=(const SaturationProtectorImpl&) = delete;
-  ~SaturationProtectorImpl() = default;
+  ~SaturationProtectorImpl() override = default;
 
   float HeadroomDb() override { return headroom_db_; }
 
diff --git a/modules/audio_processing/agc2/vad_wrapper.cc b/modules/audio_processing/agc2/vad_wrapper.cc
index 07ec560..0d77e7f 100644
--- a/modules/audio_processing/agc2/vad_wrapper.cc
+++ b/modules/audio_processing/agc2/vad_wrapper.cc
@@ -34,7 +34,7 @@
       : features_extractor_(cpu_features), rnn_vad_(cpu_features) {}
   MonoVadImpl(const MonoVadImpl&) = delete;
   MonoVadImpl& operator=(const MonoVadImpl&) = delete;
-  ~MonoVadImpl() = default;
+  ~MonoVadImpl() override = default;
 
   int SampleRateHz() const override { return rnn_vad::kSampleRate24kHz; }
   void Reset() override { rnn_vad_.Reset(); }
diff --git a/modules/audio_processing/audio_processing_impl_unittest.cc b/modules/audio_processing/audio_processing_impl_unittest.cc
index c95abeb..a75d485 100644
--- a/modules/audio_processing/audio_processing_impl_unittest.cc
+++ b/modules/audio_processing/audio_processing_impl_unittest.cc
@@ -121,7 +121,7 @@
 class TestRenderPreProcessor : public CustomProcessing {
  public:
   TestRenderPreProcessor() = default;
-  ~TestRenderPreProcessor() = default;
+  ~TestRenderPreProcessor() override = default;
   void Initialize(int /* sample_rate_hz */, int /* num_channels */) override {}
   void Process(AudioBuffer* audio) override {
     for (size_t k = 0; k < audio->num_channels(); ++k) {
diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc
index c2ba4ee..6882031 100644
--- a/modules/audio_processing/audio_processing_unittest.cc
+++ b/modules/audio_processing/audio_processing_unittest.cc
@@ -370,8 +370,8 @@
 class ApmTest : public ::testing::Test {
  protected:
   ApmTest();
-  virtual void SetUp();
-  virtual void TearDown();
+  void SetUp() override;
+  void TearDown() override;
 
   static void SetUpTestSuite() {}
 
@@ -1920,7 +1920,7 @@
         expected_snr_(std::get<4>(GetParam())),
         expected_reverse_snr_(std::get<5>(GetParam())) {}
 
-  virtual ~AudioProcessingTest() {}
+  ~AudioProcessingTest() override {}
 
   static void SetUpTestSuite() {
     // Create all needed output reference files.
@@ -1937,7 +1937,7 @@
     }
   }
 
-  void TearDown() {
+  void TearDown() override {
     // Remove "out" files after each test.
     ClearTempOutFiles();
   }
diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream_unittest.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream_unittest.cc
index 4c4c5c4..9bedc8e 100644
--- a/modules/desktop_capture/linux/wayland/shared_screencast_stream_unittest.cc
+++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream_unittest.cc
@@ -43,7 +43,7 @@
                            public SharedScreenCastStream::Observer {
  public:
   PipeWireStreamTest() = default;
-  ~PipeWireStreamTest() = default;
+  ~PipeWireStreamTest() override = default;
 
   // FakeScreenCastPortal::Observer
   MOCK_METHOD(void, OnBufferAdded, (), (override));
diff --git a/modules/remote_bitrate_estimator/inter_arrival_unittest.cc b/modules/remote_bitrate_estimator/inter_arrival_unittest.cc
index 80cb74c..50d3b0f 100644
--- a/modules/remote_bitrate_estimator/inter_arrival_unittest.cc
+++ b/modules/remote_bitrate_estimator/inter_arrival_unittest.cc
@@ -34,7 +34,7 @@
 
 class InterArrivalTest : public ::testing::Test {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     inter_arrival_.reset(new InterArrival(kTimestampGroupLengthUs / 1000, 1.0));
     inter_arrival_rtp_.reset(new InterArrival(
         MakeRtpTimestamp(kTimestampGroupLengthUs), kRtpTimestampToMs));
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
index 8fa6580..664b795 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
@@ -121,7 +121,7 @@
     time_controller_->Register(this);
   }
 
-  ~SendTransport() { time_controller_->Unregister(this); }
+  ~SendTransport() override { time_controller_->Unregister(this); }
 
   void SetRtpRtcpModule(ModuleRtpRtcpImpl2* receiver) { receiver_ = receiver; }
   void SimulateNetworkDelay(TimeDelta delay) { delay_ = delay; }
diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index eb9306b..2607c58 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -92,7 +92,7 @@
 class MockRtpPacketPacer : public RtpPacketSender {
  public:
   MockRtpPacketPacer() {}
-  virtual ~MockRtpPacketPacer() {}
+  ~MockRtpPacketPacer() override {}
 
   MOCK_METHOD(void,
               EnqueuePackets,
diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc
index ea6c311..1ebfe0d 100644
--- a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc
+++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc
@@ -86,7 +86,7 @@
 class LibaomAv1Encoder final : public VideoEncoder {
  public:
   LibaomAv1Encoder(const Environment& env, LibaomAv1EncoderSettings settings);
-  ~LibaomAv1Encoder();
+  ~LibaomAv1Encoder() override;
 
   int InitEncode(const VideoCodec* codec_settings,
                  const Settings& settings) override;
diff --git a/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc b/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc
index b0af26f..6d248e4 100644
--- a/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc
+++ b/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc
@@ -84,7 +84,7 @@
 #endif
   }
 
-  ~VideoEncoderDecoderInstantiationTest() {
+  ~VideoEncoderDecoderInstantiationTest() override {
     for (auto& encoder : encoders_) {
       encoder->Release();
     }
diff --git a/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
index 66f36d6..0e44884 100644
--- a/modules/video_coding/codecs/test/videoprocessor_unittest.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
@@ -64,7 +64,7 @@
     });
   }
 
-  ~VideoProcessorTest() {
+  ~VideoProcessorTest() override {
     q_.SendTask([this] { video_processor_.reset(); });
   }
 
diff --git a/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc b/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc
index a1349f4..b50db65 100644
--- a/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc
+++ b/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc
@@ -388,7 +388,7 @@
       : timestamp_(1),
         last_sync_timestamp_(timestamp_),
         tl0_reference_(nullptr) {}
-  virtual ~TemporalLayersReferenceTest() {}
+  ~TemporalLayersReferenceTest() override {}
 
  protected:
   static const int kMaxPatternLength = 32;
diff --git a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
index db10148..cfafc72 100644
--- a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
+++ b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
@@ -68,7 +68,7 @@
         frame_size_(-1),
         timestamp_(90),
         config_updated_(false) {}
-  virtual ~ScreenshareLayerTest() {}
+  ~ScreenshareLayerTest() override {}
 
   void SetUp() override {
     layers_.reset(new ScreenshareLayers(2));
diff --git a/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc b/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
index f80558e..f129cbc6 100644
--- a/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
+++ b/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
@@ -939,8 +939,9 @@
     void ClearCallbackDeltas() { callback_deltas_.clear(); }
 
    protected:
-    Result OnEncodedImage(const EncodedImage& encoded_image,
-                          const CodecSpecificInfo* /* codec_specific_info */) {
+    Result OnEncodedImage(
+        const EncodedImage& encoded_image,
+        const CodecSpecificInfo* /* codec_specific_info */) override {
       Timestamp timestamp =
           Timestamp::Millis(encoded_image.RtpTimestamp() / 90);
       if (last_callback_.IsFinite()) {
diff --git a/modules/video_coding/deprecated/jitter_buffer_unittest.cc b/modules/video_coding/deprecated/jitter_buffer_unittest.cc
index b5c97fc..cf1dd54 100644
--- a/modules/video_coding/deprecated/jitter_buffer_unittest.cc
+++ b/modules/video_coding/deprecated/jitter_buffer_unittest.cc
@@ -133,7 +133,7 @@
  protected:
   enum { kDataBufferSize = 10 };
 
-  virtual void SetUp() {
+  void SetUp() override {
     clock_.reset(new SimulatedClock(0));
     max_nack_list_size_ = 150;
     oldest_packet_to_nack_ = 250;
@@ -146,7 +146,7 @@
     memset(data_buffer_, 0, kDataBufferSize);
   }
 
-  virtual void TearDown() {
+  void TearDown() override {
     jitter_buffer_->Stop();
     delete stream_generator_;
     delete jitter_buffer_;
@@ -230,9 +230,9 @@
 class TestJitterBufferNack : public TestRunningJitterBuffer {
  protected:
   TestJitterBufferNack() {}
-  virtual void SetUp() { TestRunningJitterBuffer::SetUp(); }
+  void SetUp() override { TestRunningJitterBuffer::SetUp(); }
 
-  virtual void TearDown() { TestRunningJitterBuffer::TearDown(); }
+  void TearDown() override { TestRunningJitterBuffer::TearDown(); }
 };
 
 TEST_F(TestBasicJitterBuffer, StopRunning) {
diff --git a/modules/video_coding/deprecated/receiver_unittest.cc b/modules/video_coding/deprecated/receiver_unittest.cc
index aeea22c..1221b4e 100644
--- a/modules/video_coding/deprecated/receiver_unittest.cc
+++ b/modules/video_coding/deprecated/receiver_unittest.cc
@@ -249,7 +249,7 @@
       : SimulatedClock(0),
         stream_generator_(stream_generator),
         receiver_(receiver) {}
-  virtual ~SimulatedClockWithFrames() {}
+  ~SimulatedClockWithFrames() override {}
 
   // If `stop_on_frame` is true and next frame arrives between now and
   // now+`milliseconds`, the clock will be advanced to the arrival time of next
@@ -381,7 +381,7 @@
             std::unique_ptr<EventWrapper>(new FrameInjectEvent(&clock_, true)),
             field_trials_) {}
 
-  virtual void SetUp() {}
+  void SetUp() override {}
 
   FieldTrials field_trials_;
   SimulatedClockWithFrames clock_;
diff --git a/modules/video_coding/deprecated/session_info_unittest.cc b/modules/video_coding/deprecated/session_info_unittest.cc
index 598a2ef..e648b77 100644
--- a/modules/video_coding/deprecated/session_info_unittest.cc
+++ b/modules/video_coding/deprecated/session_info_unittest.cc
@@ -23,7 +23,7 @@
 
 class TestSessionInfo : public ::testing::Test {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     memset(packet_buffer_, 0, sizeof(packet_buffer_));
     memset(frame_buffer_, 0, sizeof(frame_buffer_));
     session_.Reset();
@@ -66,7 +66,7 @@
 
 class TestNalUnits : public TestSessionInfo {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     TestSessionInfo::SetUp();
     packet_.video_header.codec = kVideoCodecVP8;
   }
@@ -86,7 +86,7 @@
  protected:
   static const size_t kMaxSeqNumListLength = 30;
 
-  virtual void SetUp() {
+  void SetUp() override {
     TestSessionInfo::SetUp();
     seq_num_list_length_ = 0;
     memset(seq_num_list_, 0, sizeof(seq_num_list_));
diff --git a/modules/video_coding/fec_controller_unittest.cc b/modules/video_coding/fec_controller_unittest.cc
index 30d3d90..4a162e2 100644
--- a/modules/video_coding/fec_controller_unittest.cc
+++ b/modules/video_coding/fec_controller_unittest.cc
@@ -42,7 +42,7 @@
       *sent_fec_rate_bps = fec_rate_bps_;
       return 0;
     }
-    void SetRetransmissionMode(int /* retransmission_mode */) {}
+    void SetRetransmissionMode(int /* retransmission_mode */) override {}
 
     uint32_t fec_rate_bps_ = 0;
     uint32_t nack_rate_bps_ = 0;
diff --git a/modules/video_coding/generic_decoder_unittest.cc b/modules/video_coding/generic_decoder_unittest.cc
index 4d42f68..e75c040 100644
--- a/modules/video_coding/generic_decoder_unittest.cc
+++ b/modules/video_coding/generic_decoder_unittest.cc
@@ -73,7 +73,7 @@
 
   ArrayView<const VideoFrame> GetAllFrames() const { return frames_; }
 
-  void OnDroppedFrames(uint32_t frames_dropped) {
+  void OnDroppedFrames(uint32_t frames_dropped) override {
     frames_dropped_ += frames_dropped;
   }
 
diff --git a/modules/video_coding/timing/jitter_estimator_unittest.cc b/modules/video_coding/timing/jitter_estimator_unittest.cc
index 911c9a5..f12e49e 100644
--- a/modules/video_coding/timing/jitter_estimator_unittest.cc
+++ b/modules/video_coding/timing/jitter_estimator_unittest.cc
@@ -58,7 +58,7 @@
         field_trials_(CreateTestFieldTrials(field_trials)),
         estimator_(&fake_clock_, field_trials_) {}
   JitterEstimatorTest() : JitterEstimatorTest("") {}
-  virtual ~JitterEstimatorTest() {}
+  ~JitterEstimatorTest() override {}
 
   void Run(int duration_s, int framerate_fps, ValueGenerator& gen) {
     TimeDelta tick = 1 / Frequency::Hertz(framerate_fps);
@@ -201,7 +201,7 @@
             "estimate_noise_when_congested:false,"
             "nack_limit:2,"
             "nack_count_timeout:100ms/") {}
-  ~FieldTrialsOverriddenJitterEstimatorTest() {}
+  ~FieldTrialsOverriddenJitterEstimatorTest() override {}
 };
 
 TEST_F(FieldTrialsOverriddenJitterEstimatorTest, FieldTrialsParsesCorrectly) {
@@ -332,7 +332,7 @@
             "num_stddev_size_outlier:-23.1,"
             "nack_limit:-1,"
             "nack_count_timeout:0s/") {}
-  ~MisconfiguredFieldTrialsJitterEstimatorTest() {}
+  ~MisconfiguredFieldTrialsJitterEstimatorTest() override {}
 };
 
 TEST_F(MisconfiguredFieldTrialsJitterEstimatorTest, FieldTrialsAreValidated) {
diff --git a/modules/video_coding/utility/bandwidth_quality_scaler_unittest.cc b/modules/video_coding/utility/bandwidth_quality_scaler_unittest.cc
index e54b597..b563d35 100644
--- a/modules/video_coding/utility/bandwidth_quality_scaler_unittest.cc
+++ b/modules/video_coding/utility/bandwidth_quality_scaler_unittest.cc
@@ -102,7 +102,7 @@
     });
   }
 
-  ~BandwidthQualityScalerTest() {
+  ~BandwidthQualityScalerTest() override {
     task_queue_.SendTask([this] { bandwidth_quality_scaler_ = nullptr; });
   }
 
diff --git a/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc b/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
index 2bf6723..3a20dca 100644
--- a/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
+++ b/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
@@ -72,7 +72,7 @@
     codec_.active = true;
     CreateAllocator();
   }
-  virtual ~SimulcastRateAllocatorTest() {}
+  ~SimulcastRateAllocatorTest() override {}
 
   template <size_t S>
   void ExpectEqual(uint32_t (&expected)[S],
diff --git a/modules/video_coding/video_codec_initializer_unittest.cc b/modules/video_coding/video_codec_initializer_unittest.cc
index f97bf88..159c65f 100644
--- a/modules/video_coding/video_codec_initializer_unittest.cc
+++ b/modules/video_coding/video_codec_initializer_unittest.cc
@@ -61,7 +61,7 @@
 class VideoCodecInitializerTest : public ::testing::Test {
  public:
   VideoCodecInitializerTest() {}
-  virtual ~VideoCodecInitializerTest() {}
+  ~VideoCodecInitializerTest() override {}
 
  protected:
   void SetUpFor(VideoCodecType type,
diff --git a/modules/video_coding/video_receiver_unittest.cc b/modules/video_coding/video_receiver_unittest.cc
index 9b6b5b0..0e3036d 100644
--- a/modules/video_coding/video_receiver_unittest.cc
+++ b/modules/video_coding/video_receiver_unittest.cc
@@ -46,7 +46,7 @@
 class MockVCMReceiveCallback : public VCMReceiveCallback {
  public:
   MockVCMReceiveCallback() {}
-  virtual ~MockVCMReceiveCallback() {}
+  ~MockVCMReceiveCallback() override {}
 
   MOCK_METHOD(int32_t, OnFrameToRender, (const FrameToRender&), (override));
   MOCK_METHOD(void, OnIncomingPayloadType, (int), (override));
@@ -67,7 +67,7 @@
         timing_(&clock_, field_trials_),
         receiver_(&clock_, &timing_, field_trials_) {}
 
-  virtual void SetUp() {
+  void SetUp() override {
     // Register decoder.
     receiver_.RegisterExternalDecoder(&decoder_, kUnusedPayloadType);
     VideoDecoder::Settings settings;
diff --git a/p2p/base/async_stun_tcp_socket_unittest.cc b/p2p/base/async_stun_tcp_socket_unittest.cc
index bdb8bbb..5e3bd96 100644
--- a/p2p/base/async_stun_tcp_socket_unittest.cc
+++ b/p2p/base/async_stun_tcp_socket_unittest.cc
@@ -81,7 +81,7 @@
   AsyncStunTCPSocketTest()
       : vss_(new VirtualSocketServer()), thread_(vss_.get()) {}
 
-  virtual void SetUp() { CreateSockets(); }
+  void SetUp() override { CreateSockets(); }
 
   void CreateSockets() {
     std::unique_ptr<Socket> server =
diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc
index 6e9f8fc..1331696 100644
--- a/p2p/base/p2p_transport_channel_unittest.cc
+++ b/p2p/base/p2p_transport_channel_unittest.cc
@@ -7048,7 +7048,7 @@
     controller_ = controller.get();
     return controller;
   }
-  virtual ~ForgetLearnedStateControllerFactory() = default;
+  ~ForgetLearnedStateControllerFactory() override = default;
 
   ForgetLearnedStateController* controller_;
 };
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index a0b982d..68b0aea 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -155,7 +155,7 @@
  public:
   TestPort(const PortParametersRef& args, uint16_t min_port, uint16_t max_port)
       : Port(args, IceCandidateType::kHost, min_port, max_port) {}
-  ~TestPort() {}
+  ~TestPort() override {}
 
   // Expose GetStunMessage so that we can test it.
   using Port::GetStunMessage;
@@ -178,7 +178,7 @@
     return code;
   }
 
-  virtual void PrepareAddress() {
+  void PrepareAddress() override {
     // Act as if the socket was bound to the best IP on the network, to the
     // first port in the allowed range.
     SocketAddress addr(Network()->GetBestIP(), min_port());
@@ -186,11 +186,11 @@
                ICE_TYPE_PREFERENCE_HOST, 0, "", true);
   }
 
-  virtual bool SupportsProtocol(absl::string_view /* protocol */) const {
+  bool SupportsProtocol(absl::string_view /* protocol */) const override {
     return true;
   }
 
-  virtual ProtocolType GetProtocol() const { return PROTO_UDP; }
+  ProtocolType GetProtocol() const override { return PROTO_UDP; }
 
   // Exposed for testing candidate building.
   void AddCandidateAddress(const SocketAddress& addr) {
@@ -206,8 +206,8 @@
                type_preference, 0, "", final);
   }
 
-  virtual Connection* CreateConnection(const Candidate& remote_candidate,
-                                       CandidateOrigin /* origin */) {
+  Connection* CreateConnection(const Candidate& remote_candidate,
+                               CandidateOrigin /* origin */) override {
     Connection* conn = new ProxyConnection(NewWeakPtr(), 0, remote_candidate);
     AddOrReplaceConnection(conn);
     // Set use-candidate attribute flag as this will add USE-CANDIDATE attribute
@@ -215,11 +215,11 @@
     conn->set_use_candidate_attr(true);
     return conn;
   }
-  virtual int SendTo(const void* data,
-                     size_t size,
-                     const SocketAddress& /* addr */,
-                     const AsyncSocketPacketOptions& /* options */,
-                     bool payload) {
+  int SendTo(const void* data,
+             size_t size,
+             const SocketAddress& /* addr */,
+             const AsyncSocketPacketOptions& /* options */,
+             bool payload) override {
     if (!payload) {
       auto msg = std::make_unique<IceMessage>();
       auto buf = std::make_unique<BufferT<uint8_t>>(
@@ -233,9 +233,11 @@
     }
     return static_cast<int>(size);
   }
-  virtual int SetOption(Socket::Option /* opt */, int /* value */) { return 0; }
-  virtual int GetOption(Socket::Option opt, int* value) { return -1; }
-  virtual int GetError() { return 0; }
+  int SetOption(Socket::Option /* opt */, int /* value */) override {
+    return 0;
+  }
+  int GetOption(Socket::Option opt, int* value) override { return -1; }
+  int GetError() override { return 0; }
   void Reset() {
     last_stun_buf_.reset();
     last_stun_msg_.reset();
@@ -246,7 +248,7 @@
 
  private:
   void OnSentPacket(AsyncPacketSocket* socket,
-                    const SentPacketInfo& sent_packet) {
+                    const SentPacketInfo& sent_packet) override {
     PortInterface::SignalSentPacket(sent_packet);
   }
   std::unique_ptr<BufferT<uint8_t>> last_stun_buf_;
@@ -296,7 +298,7 @@
         [this](PortInterface* port) { OnSrcPortDestroyed(port); });
   }
 
-  ~TestChannel() { Stop(); }
+  ~TestChannel() override { Stop(); }
 
   int complete_count() { return complete_count_; }
   Connection* conn() { return conn_; }
@@ -438,7 +440,7 @@
         role_conflict_(false),
         ports_destroyed_(0) {}
 
-  ~PortTest() {
+  ~PortTest() override {
     // Workaround for tests that trigger async destruction of objects that we
     // need to give an opportunity here to run, before proceeding with other
     // teardown.
@@ -1170,38 +1172,38 @@
  public:
   // Returns current local address. Address may be set to NULL if the
   // socket is not bound yet (GetState() returns STATE_BINDING).
-  virtual SocketAddress GetLocalAddress() const { return local_address_; }
+  SocketAddress GetLocalAddress() const override { return local_address_; }
 
   // Returns remote address. Returns zeroes if this is not a client TCP socket.
-  virtual SocketAddress GetRemoteAddress() const { return remote_address_; }
+  SocketAddress GetRemoteAddress() const override { return remote_address_; }
 
   // Send a packet.
-  virtual int Send(const void* pv,
-                   size_t cb,
-                   const AsyncSocketPacketOptions& options) {
+  int Send(const void* pv,
+           size_t cb,
+           const AsyncSocketPacketOptions& options) override {
     if (error_ == 0) {
       return static_cast<int>(cb);
     } else {
       return -1;
     }
   }
-  virtual int SendTo(const void* pv,
-                     size_t cb,
-                     const SocketAddress& addr,
-                     const AsyncSocketPacketOptions& options) {
+  int SendTo(const void* pv,
+             size_t cb,
+             const SocketAddress& addr,
+             const AsyncSocketPacketOptions& options) override {
     if (error_ == 0) {
       return static_cast<int>(cb);
     } else {
       return -1;
     }
   }
-  virtual int Close() { return 0; }
+  int Close() override { return 0; }
 
-  virtual State GetState() const { return state_; }
-  virtual int GetOption(Socket::Option opt, int* value) { return 0; }
-  virtual int SetOption(Socket::Option opt, int value) { return 0; }
-  virtual int GetError() const { return 0; }
-  virtual void SetError(int error) { error_ = error; }
+  State GetState() const override { return state_; }
+  int GetOption(Socket::Option opt, int* value) override { return 0; }
+  int SetOption(Socket::Option opt, int value) override { return 0; }
+  int GetError() const override { return 0; }
+  void SetError(int error) override { error_ = error; }
 
   void set_state(State state) { state_ = state; }
 
@@ -1217,14 +1219,14 @@
  public:
   // Returns current local address. Address may be set to NULL if the
   // socket is not bound yet (GetState() returns STATE_BINDING).
-  virtual SocketAddress GetLocalAddress() const { return local_address_; }
+  SocketAddress GetLocalAddress() const override { return local_address_; }
   void Bind(const SocketAddress& address) {
     local_address_ = address;
     state_ = State::kBound;
   }
   virtual int GetOption(Socket::Option opt, int* value) { return 0; }
   virtual int SetOption(Socket::Option opt, int value) { return 0; }
-  virtual State GetState() const { return state_; }
+  State GetState() const override { return state_; }
 
  private:
   SocketAddress local_address_;
diff --git a/p2p/base/pseudo_tcp_unittest.cc b/p2p/base/pseudo_tcp_unittest.cc
index cdb794a..7d5400f 100644
--- a/p2p/base/pseudo_tcp_unittest.cc
+++ b/p2p/base/pseudo_tcp_unittest.cc
@@ -72,7 +72,7 @@
     // this test would occasionally get really unlucky loss and time out.
     webrtc::SetRandomTestMode(true);
   }
-  ~PseudoTcpTestBase() {
+  ~PseudoTcpTestBase() override {
     // Put it back for the next test.
     webrtc::SetRandomTestMode(false);
   }
@@ -133,7 +133,7 @@
     UpdateLocalClock();
   }
 
-  virtual void OnTcpOpen(PseudoTcp* tcp) {
+  void OnTcpOpen(PseudoTcp* tcp) override {
     // Consider ourselves connected when the local side gets OnTcpOpen.
     // OnTcpWriteable isn't fired at open, so we trigger it now.
     RTC_LOG(LS_VERBOSE) << "Opened";
@@ -146,7 +146,7 @@
   //   virtual void OnTcpReadable(PseudoTcp* tcp)
   // and
   //   virtual void OnTcpWritable(PseudoTcp* tcp)
-  virtual void OnTcpClosed(PseudoTcp* tcp, uint32_t error) {
+  void OnTcpClosed(PseudoTcp* tcp, uint32_t error) override {
     // Consider ourselves closed when the remote side gets OnTcpClosed.
     // TODO(?): OnTcpClosed is only ever notified in case of error in
     // the current implementation.  Solicited close is not (yet) supported.
@@ -156,9 +156,9 @@
       have_disconnected_ = true;
     }
   }
-  virtual WriteResult TcpWritePacket(PseudoTcp* tcp,
-                                     const char* buffer,
-                                     size_t len) {
+  WriteResult TcpWritePacket(PseudoTcp* tcp,
+                             const char* buffer,
+                             size_t len) override {
     // Drop a packet if the test called DropNextPacket.
     if (drop_next_packet_) {
       drop_next_packet_ = false;
@@ -278,7 +278,7 @@
  private:
   // IPseudoTcpNotify interface
 
-  virtual void OnTcpReadable(PseudoTcp* tcp) {
+  void OnTcpReadable(PseudoTcp* tcp) override {
     // Stream bytes to the recv stream as they arrive.
     if (tcp == &remote_) {
       ReadData();
@@ -293,7 +293,7 @@
         OnTcpClosed(&remote_, 0);
     }
   }
-  virtual void OnTcpWriteable(PseudoTcp* tcp) {
+  void OnTcpWriteable(PseudoTcp* tcp) override {
     // Write bytes from the send stream when we can.
     // Shut down when we've sent everything.
     if (tcp == &local_) {
@@ -399,7 +399,7 @@
  private:
   // IPseudoTcpNotify interface
 
-  virtual void OnTcpReadable(PseudoTcp* tcp) {
+  void OnTcpReadable(PseudoTcp* tcp) override {
     if (tcp != receiver_) {
       RTC_LOG_F(LS_ERROR) << "unexpected OnTcpReadable";
       return;
@@ -426,7 +426,7 @@
       OnTcpWriteable(sender_);
     }
   }
-  virtual void OnTcpWriteable(PseudoTcp* tcp) {
+  void OnTcpWriteable(PseudoTcp* tcp) override {
     if (tcp != sender_)
       return;
     // Write bytes from the send stream when we can.
@@ -545,9 +545,9 @@
 
  private:
   // IPseudoTcpNotify interface
-  virtual void OnTcpReadable(PseudoTcp* /* tcp */) {}
+  void OnTcpReadable(PseudoTcp* /* tcp */) override {}
 
-  virtual void OnTcpWriteable(PseudoTcp* /* tcp */) {}
+  void OnTcpWriteable(PseudoTcp* /* tcp */) override {}
 
   void ReadUntilIOPending() {
     char block[kBlockSize];
diff --git a/p2p/base/stun_port_unittest.cc b/p2p/base/stun_port_unittest.cc
index 746a0aa..de1e1b2 100644
--- a/p2p/base/stun_port_unittest.cc
+++ b/p2p/base/stun_port_unittest.cc
@@ -780,7 +780,7 @@
 
 class MockAsyncPacketSocket : public webrtc::AsyncPacketSocket {
  public:
-  ~MockAsyncPacketSocket() = default;
+  ~MockAsyncPacketSocket() override = default;
 
   MOCK_METHOD(SocketAddress, GetLocalAddress, (), (const, override));
   MOCK_METHOD(SocketAddress, GetRemoteAddress, (), (const, override));
diff --git a/p2p/base/stun_request_unittest.cc b/p2p/base/stun_request_unittest.cc
index 945d29b..ec3bb74 100644
--- a/p2p/base/stun_request_unittest.cc
+++ b/p2p/base/stun_request_unittest.cc
@@ -98,11 +98,11 @@
   }
 
  private:
-  virtual void OnResponse(StunMessage* res) { test_->OnResponse(res); }
-  virtual void OnErrorResponse(StunMessage* res) {
+  void OnResponse(StunMessage* res) override { test_->OnResponse(res); }
+  void OnErrorResponse(StunMessage* res) override {
     test_->OnErrorResponse(res);
   }
-  virtual void OnTimeout() { test_->OnTimeout(); }
+  void OnTimeout() override { test_->OnTimeout(); }
 
   StunRequestTest* test_;
 };
diff --git a/p2p/base/tcp_port_unittest.cc b/p2p/base/tcp_port_unittest.cc
index a5e7982..d2437f5 100644
--- a/p2p/base/tcp_port_unittest.cc
+++ b/p2p/base/tcp_port_unittest.cc
@@ -70,7 +70,7 @@
     conn->SignalDestroyed.connect(this, &ConnectionObserver::OnDestroyed);
   }
 
-  ~ConnectionObserver() {
+  ~ConnectionObserver() override {
     if (!connection_destroyed_) {
       RTC_DCHECK(conn_);
       conn_->SignalDestroyed.disconnect(this);
diff --git a/p2p/base/turn_port.cc b/p2p/base/turn_port.cc
index d53f13d..01580b8 100644
--- a/p2p/base/turn_port.cc
+++ b/p2p/base/turn_port.cc
@@ -169,7 +169,7 @@
  public:
   enum BindState { STATE_UNBOUND, STATE_BINDING, STATE_BOUND };
   TurnEntry(TurnPort* port, Connection* conn, int channel_id);
-  ~TurnEntry();
+  ~TurnEntry() override;
 
   TurnPort* port() { return port_; }
 
diff --git a/p2p/base/turn_port_unittest.cc b/p2p/base/turn_port_unittest.cc
index 2e96fe3..665b851 100644
--- a/p2p/base/turn_port_unittest.cc
+++ b/p2p/base/turn_port_unittest.cc
@@ -197,7 +197,7 @@
         this, &TestConnectionWrapper::OnConnectionDestroyed);
   }
 
-  ~TestConnectionWrapper() {
+  ~TestConnectionWrapper() override {
     if (connection_) {
       connection_->SignalDestroyed.disconnect(this);
     }
@@ -1009,7 +1009,7 @@
  public:
   explicit TurnLoggingIdValidator(const char* expect_val)
       : expect_val_(expect_val) {}
-  ~TurnLoggingIdValidator() {}
+  ~TurnLoggingIdValidator() override {}
   void ReceivedMessage(const TurnMessage* msg) override {
     if (msg->type() == STUN_ALLOCATE_REQUEST) {
       const StunByteStringAttribute* attr =
@@ -1940,7 +1940,7 @@
       : message_counter_(message_counter),
         channel_data_counter_(channel_data_counter),
         attr_counter_(attr_counter) {}
-  virtual ~MessageObserver() {}
+  ~MessageObserver() override {}
   void ReceivedMessage(const TurnMessage* msg) override {
     if (message_counter_ != nullptr) {
       (*message_counter_)++;
diff --git a/p2p/dtls/dtls_ice_integrationtest.cc b/p2p/dtls/dtls_ice_integrationtest.cc
index 4f692b9..536b89e 100644
--- a/p2p/dtls/dtls_ice_integrationtest.cc
+++ b/p2p/dtls/dtls_ice_integrationtest.cc
@@ -240,7 +240,7 @@
     server_thread()->BlockingCall([&]() { server_.allocator->Initialize(); });
   }
 
-  void TearDown() {
+  void TearDown() override {
     client_thread()->BlockingCall([&]() {
       client_.dtls.reset();
       client_.ice.reset();
@@ -254,7 +254,7 @@
     });
   }
 
-  ~DtlsIceIntegrationTest() = default;
+  ~DtlsIceIntegrationTest() override = default;
 
   static int CountConnectionsWithFilter(
       IceTransportInternal* ice,
diff --git a/pc/audio_rtp_receiver_unittest.cc b/pc/audio_rtp_receiver_unittest.cc
index b056bdf..375b8a4 100644
--- a/pc/audio_rtp_receiver_unittest.cc
+++ b/pc/audio_rtp_receiver_unittest.cc
@@ -49,7 +49,7 @@
     EXPECT_CALL(receive_channel_, SetBaseMinimumPlayoutDelayMs(kSsrc, _));
   }
 
-  ~AudioRtpReceiverTest() {
+  ~AudioRtpReceiverTest() override {
     EXPECT_CALL(receive_channel_, SetOutputVolume(kSsrc, kVolumeMuted));
     receiver_->SetMediaChannel(nullptr);
   }
diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc
index 36e8638..e3488a9 100644
--- a/pc/channel_unittest.cc
+++ b/pc/channel_unittest.cc
@@ -164,7 +164,7 @@
     RTC_DCHECK(network_thread_);
   }
 
-  ~ChannelTest() {
+  ~ChannelTest() override {
     if (network_thread_) {
       SendTask(network_thread_, [this]() {
         network_thread_safety_->SetNotAlive();
diff --git a/pc/dtls_srtp_transport_integrationtest.cc b/pc/dtls_srtp_transport_integrationtest.cc
index f213557..2d3cafe 100644
--- a/pc/dtls_srtp_transport_integrationtest.cc
+++ b/pc/dtls_srtp_transport_integrationtest.cc
@@ -73,7 +73,7 @@
     srtp_transport_.RegisterRtpDemuxerSink(demuxer_criteria,
                                            &srtp_transport_observer_);
   }
-  ~DtlsSrtpTransportIntegrationTest() {
+  ~DtlsSrtpTransportIntegrationTest() override {
     dtls_srtp_transport_.UnregisterRtpDemuxerSink(
         &dtls_srtp_transport_observer_);
     srtp_transport_.UnregisterRtpDemuxerSink(&srtp_transport_observer_);
diff --git a/pc/dtls_srtp_transport_unittest.cc b/pc/dtls_srtp_transport_unittest.cc
index 4f5dd74..a4c27fe 100644
--- a/pc/dtls_srtp_transport_unittest.cc
+++ b/pc/dtls_srtp_transport_unittest.cc
@@ -53,7 +53,7 @@
  protected:
   DtlsSrtpTransportTest() {}
 
-  ~DtlsSrtpTransportTest() {
+  ~DtlsSrtpTransportTest() override {
     if (dtls_srtp_transport1_) {
       dtls_srtp_transport1_->UnregisterRtpDemuxerSink(&transport_observer1_);
     }
diff --git a/pc/dtmf_sender_unittest.cc b/pc/dtmf_sender_unittest.cc
index 6c442e1..82b149b 100644
--- a/pc/dtmf_sender_unittest.cc
+++ b/pc/dtmf_sender_unittest.cc
@@ -123,7 +123,7 @@
     dtmf_->RegisterObserver(observer_.get());
   }
 
-  ~DtmfSenderTest() {
+  ~DtmfSenderTest() override {
     if (dtmf_) {
       dtmf_->UnregisterObserver();
     }
diff --git a/pc/jsep_session_description_unittest.cc b/pc/jsep_session_description_unittest.cc
index 7619e5a..d561a3b 100644
--- a/pc/jsep_session_description_unittest.cc
+++ b/pc/jsep_session_description_unittest.cc
@@ -85,7 +85,7 @@
 
 class JsepSessionDescriptionTest : public ::testing::Test {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     int port = 1234;
     webrtc::SocketAddress address("127.0.0.1", port++);
     webrtc::Candidate candidate(webrtc::ICE_CANDIDATE_COMPONENT_RTP, "udp",
diff --git a/pc/legacy_stats_collector_unittest.cc b/pc/legacy_stats_collector_unittest.cc
index f9af394..5f6aff4 100644
--- a/pc/legacy_stats_collector_unittest.cc
+++ b/pc/legacy_stats_collector_unittest.cc
@@ -89,7 +89,7 @@
 class FakeAudioProcessor : public AudioProcessorInterface {
  public:
   FakeAudioProcessor() {}
-  ~FakeAudioProcessor() {}
+  ~FakeAudioProcessor() override {}
 
  private:
   AudioProcessorInterface::AudioProcessorStatistics GetStats(
@@ -131,7 +131,7 @@
 class FakeAudioProcessorWithInitValue : public AudioProcessorInterface {
  public:
   FakeAudioProcessorWithInitValue() {}
-  ~FakeAudioProcessorWithInitValue() {}
+  ~FakeAudioProcessorWithInitValue() override {}
 
  private:
   AudioProcessorInterface::AudioProcessorStatistics GetStats(
diff --git a/pc/media_stream_unittest.cc b/pc/media_stream_unittest.cc
index 3a88206..35a518f 100644
--- a/pc/media_stream_unittest.cc
+++ b/pc/media_stream_unittest.cc
@@ -37,7 +37,7 @@
     notifier_->RegisterObserver(this);
   }
 
-  ~MockObserver() { Unregister(); }
+  ~MockObserver() override { Unregister(); }
 
   void Unregister() {
     if (notifier_) {
@@ -54,7 +54,7 @@
 
 class MediaStreamTest : public ::testing::Test {
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     stream_ = MediaStream::Create(kStreamId1);
     ASSERT_TRUE(stream_.get() != nullptr);
 
diff --git a/pc/peer_connection_factory_unittest.cc b/pc/peer_connection_factory_unittest.cc
index 2e6356a..0a32825 100644
--- a/pc/peer_connection_factory_unittest.cc
+++ b/pc/peer_connection_factory_unittest.cc
@@ -110,7 +110,7 @@
 
 class NullPeerConnectionObserver : public PeerConnectionObserver {
  public:
-  virtual ~NullPeerConnectionObserver() = default;
+  ~NullPeerConnectionObserver() override = default;
   void OnSignalingChange(
       PeerConnectionInterface::SignalingState new_state) override {}
   void OnAddStream(scoped_refptr<MediaStreamInterface> stream) override {}
@@ -143,7 +143,7 @@
         main_thread_(socket_server_.get()) {}
 
  private:
-  void SetUp() {
+  void SetUp() override {
 #ifdef WEBRTC_ANDROID
     InitializeAndroidObjects();
 #endif
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index 4e6bc33..40b9994 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -583,7 +583,7 @@
     notifier_->RegisterObserver(this);
   }
 
-  ~MockTrackObserver() { Unregister(); }
+  ~MockTrackObserver() override { Unregister(); }
 
   void Unregister() {
     if (notifier_) {
diff --git a/pc/peer_connection_rampup_tests.cc b/pc/peer_connection_rampup_tests.cc
index d0f4caa..7aa4811 100644
--- a/pc/peer_connection_rampup_tests.cc
+++ b/pc/peer_connection_rampup_tests.cc
@@ -160,7 +160,7 @@
     virtual_socket_server_.set_bandwidth(kNetworkBandwidth / 8);
   }
 
-  virtual ~PeerConnectionRampUpTest() {
+  ~PeerConnectionRampUpTest() override {
     SendTask(network_thread(), [this] { turn_servers_.clear(); });
   }
 
diff --git a/pc/proxy_unittest.cc b/pc/proxy_unittest.cc
index a12e581..d3d3739 100644
--- a/pc/proxy_unittest.cc
+++ b/pc/proxy_unittest.cc
@@ -39,7 +39,7 @@
   virtual std::string Method2(std::string s1, std::string s2) = 0;
 
  protected:
-  virtual ~FakeInterface() {}
+  ~FakeInterface() override {}
 };
 
 // Implementation of the test interface.
@@ -60,7 +60,7 @@
 
  protected:
   Fake() {}
-  ~Fake() { Destroy(); }
+  ~Fake() override { Destroy(); }
 };
 
 // Proxies for the test interface.
diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc
index 29216e1..f3f2a92 100644
--- a/pc/rtc_stats_collector_unittest.cc
+++ b/pc/rtc_stats_collector_unittest.cc
@@ -192,7 +192,7 @@
 class FakeAudioProcessor : public AudioProcessorInterface {
  public:
   FakeAudioProcessor() {}
-  ~FakeAudioProcessor() {}
+  ~FakeAudioProcessor() override {}
 
  private:
   AudioProcessorInterface::AudioProcessorStatistics GetStats(
@@ -3759,8 +3759,8 @@
   // give to scoped_refptr.
   // Satisfying the implementation of these methods and associating them with a
   // reference counter, will be done by RefCountedObject.
-  virtual void AddRef() const = 0;
-  virtual RefCountReleaseStatus Release() const = 0;
+  void AddRef() const override = 0;
+  RefCountReleaseStatus Release() const override = 0;
 
   // RTCStatsCollectorCallback implementation.
   void OnStatsDelivered(
diff --git a/pc/rtp_sender_receiver_unittest.cc b/pc/rtp_sender_receiver_unittest.cc
index 4c5722b..54a85d5 100644
--- a/pc/rtp_sender_receiver_unittest.cc
+++ b/pc/rtp_sender_receiver_unittest.cc
@@ -148,7 +148,7 @@
         StreamParams::CreateLegacy(kVideoSsrc2));
   }
 
-  ~RtpSenderReceiverTest() {
+  ~RtpSenderReceiverTest() override {
     audio_rtp_sender_ = nullptr;
     video_rtp_sender_ = nullptr;
     audio_rtp_receiver_ = nullptr;
diff --git a/pc/srtp_session_unittest.cc b/pc/srtp_session_unittest.cc
index ebd4d69..af00410 100644
--- a/pc/srtp_session_unittest.cc
+++ b/pc/srtp_session_unittest.cc
@@ -44,7 +44,7 @@
   }
 
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     rtp_len_ = sizeof(kPcmuFrame);
     rtcp_len_ = sizeof(kRtcpReport);
     rtp_packet_.EnsureCapacity(rtp_len_ + 10);
diff --git a/pc/srtp_transport_unittest.cc b/pc/srtp_transport_unittest.cc
index dfd9bf2..f0e8415 100644
--- a/pc/srtp_transport_unittest.cc
+++ b/pc/srtp_transport_unittest.cc
@@ -89,7 +89,7 @@
     srtp_transport2_->RegisterRtpDemuxerSink(demuxer_criteria, &rtp_sink2_);
   }
 
-  ~SrtpTransportTest() {
+  ~SrtpTransportTest() override {
     if (srtp_transport1_) {
       srtp_transport1_->UnregisterRtpDemuxerSink(&rtp_sink1_);
     }
diff --git a/pc/test/enable_fake_media.cc b/pc/test/enable_fake_media.cc
index 3102e5f..bafc053 100644
--- a/pc/test/enable_fake_media.cc
+++ b/pc/test/enable_fake_media.cc
@@ -40,7 +40,7 @@
 
     std::unique_ptr<MediaEngineInterface> CreateMediaEngine(
         const Environment& /*env*/,
-        PeerConnectionFactoryDependencies& /*dependencies*/) {
+        PeerConnectionFactoryDependencies& /*dependencies*/) override {
       RTC_CHECK(fake_ != nullptr)
           << "CreateMediaEngine can be called at most once.";
       return std::move(fake_);
diff --git a/rtc_base/async_packet_socket_unittest.cc b/rtc_base/async_packet_socket_unittest.cc
index b37334a..750228e 100644
--- a/rtc_base/async_packet_socket_unittest.cc
+++ b/rtc_base/async_packet_socket_unittest.cc
@@ -22,7 +22,7 @@
 
 class MockAsyncPacketSocket : public AsyncPacketSocket {
  public:
-  ~MockAsyncPacketSocket() = default;
+  ~MockAsyncPacketSocket() override = default;
 
   MOCK_METHOD(SocketAddress, GetLocalAddress, (), (const, override));
   MOCK_METHOD(SocketAddress, GetRemoteAddress, (), (const, override));
diff --git a/rtc_base/memory/always_valid_pointer_unittest.cc b/rtc_base/memory/always_valid_pointer_unittest.cc
index a228c10..3f7981b 100644
--- a/rtc_base/memory/always_valid_pointer_unittest.cc
+++ b/rtc_base/memory/always_valid_pointer_unittest.cc
@@ -32,7 +32,7 @@
   struct B : public A {
     int b = 0;
     explicit B(int val) : b(val) {}
-    virtual ~B() {}
+    ~B() override {}
     int f() override { return b; }
   };
   AlwaysValidPointer<A, B> ptr(nullptr, 3);
diff --git a/rtc_base/openssl_adapter_unittest.cc b/rtc_base/openssl_adapter_unittest.cc
index d30969d..3c2c183 100644
--- a/rtc_base/openssl_adapter_unittest.cc
+++ b/rtc_base/openssl_adapter_unittest.cc
@@ -29,7 +29,7 @@
 
 class MockAsyncSocket : public Socket {
  public:
-  virtual ~MockAsyncSocket() = default;
+  ~MockAsyncSocket() override = default;
   MOCK_METHOD(Socket*, Accept, (SocketAddress*), (override));
   MOCK_METHOD(SocketAddress, GetLocalAddress, (), (const, override));
   MOCK_METHOD(SocketAddress, GetRemoteAddress, (), (const, override));
@@ -56,7 +56,7 @@
 
 class MockCertVerifier : public SSLCertificateVerifier {
  public:
-  virtual ~MockCertVerifier() = default;
+  ~MockCertVerifier() override = default;
   MOCK_METHOD(bool, Verify, (const SSLCertificate&), (override));
 };
 
diff --git a/rtc_base/sigslot_unittest.cc b/rtc_base/sigslot_unittest.cc
index e9fdba5..d2829ee 100644
--- a/rtc_base/sigslot_unittest.cc
+++ b/rtc_base/sigslot_unittest.cc
@@ -33,7 +33,7 @@
 class SigslotReceiver : public sigslot::has_slots<slot_policy> {
  public:
   SigslotReceiver() : signal_(nullptr), signal_count_(0) {}
-  ~SigslotReceiver() {}
+  ~SigslotReceiver() override {}
 
   // Provide copy constructor so that tests can exercise the has_slots copy
   // constructor.
@@ -70,8 +70,8 @@
     TemplateIsMT(&mt_policy);
   }
 
-  virtual void SetUp() { Connect(); }
-  virtual void TearDown() { Disconnect(); }
+  void SetUp() override { Connect(); }
+  void TearDown() override { Disconnect(); }
 
   void Disconnect() {
     st_receiver_.Disconnect();
diff --git a/rtc_base/ssl_adapter_unittest.cc b/rtc_base/ssl_adapter_unittest.cc
index 50f557e..9281474 100644
--- a/rtc_base/ssl_adapter_unittest.cc
+++ b/rtc_base/ssl_adapter_unittest.cc
@@ -52,7 +52,7 @@
 // Simple mock for the certificate verifier.
 class MockCertVerifier : public webrtc::SSLCertificateVerifier {
  public:
-  virtual ~MockCertVerifier() = default;
+  ~MockCertVerifier() override = default;
   MOCK_METHOD(bool, Verify, (const webrtc::SSLCertificate&), (override));
 };
 
@@ -61,7 +61,7 @@
 class SSLAdapterTestDummy : public sigslot::has_slots<> {
  public:
   explicit SSLAdapterTestDummy() : socket_(CreateSocket()) {}
-  virtual ~SSLAdapterTestDummy() = default;
+  ~SSLAdapterTestDummy() override = default;
 
   void CreateSSLAdapter(webrtc::Socket* socket, webrtc::SSLRole role) {
     ssl_adapter_.reset(webrtc::SSLAdapter::Create(socket));
diff --git a/rtc_base/ssl_stream_adapter_unittest.cc b/rtc_base/ssl_stream_adapter_unittest.cc
index fd5a0de..e197e9b 100644
--- a/rtc_base/ssl_stream_adapter_unittest.cc
+++ b/rtc_base/ssl_stream_adapter_unittest.cc
@@ -895,12 +895,12 @@
         count_(0),
         sent_(0) {}
 
-  std::unique_ptr<StreamInterface> CreateClientStream() override final {
+  std::unique_ptr<StreamInterface> CreateClientStream() final {
     return absl::WrapUnique(
         new SSLDummyStream(this, "c2s", &client_buffer_, &server_buffer_));
   }
 
-  std::unique_ptr<StreamInterface> CreateServerStream() override final {
+  std::unique_ptr<StreamInterface> CreateServerStream() final {
     return absl::WrapUnique(
         new SSLDummyStream(this, "s2c", &server_buffer_, &client_buffer_));
   }
@@ -936,7 +936,7 @@
     delete[] packet;
   }
 
-  void ReadData(StreamInterface* stream) override final {
+  void ReadData(StreamInterface* stream) final {
     uint8_t buffer[2000];
     size_t bread;
     int err2;
diff --git a/rtc_tools/frame_analyzer/video_color_aligner_unittest.cc b/rtc_tools/frame_analyzer/video_color_aligner_unittest.cc
index 90b2f92..f175a4e 100644
--- a/rtc_tools/frame_analyzer/video_color_aligner_unittest.cc
+++ b/rtc_tools/frame_analyzer/video_color_aligner_unittest.cc
@@ -44,7 +44,7 @@
 
 class VideoColorAlignerTest : public ::testing::Test {
  protected:
-  void SetUp() {
+  void SetUp() override {
     reference_video_ =
         OpenYuvFile(ResourcePath("foreman_128x96", "yuv"), 128, 96);
     ASSERT_TRUE(reference_video_);
diff --git a/rtc_tools/frame_analyzer/video_geometry_aligner_unittest.cc b/rtc_tools/frame_analyzer/video_geometry_aligner_unittest.cc
index 62f853c..4cc5af8 100644
--- a/rtc_tools/frame_analyzer/video_geometry_aligner_unittest.cc
+++ b/rtc_tools/frame_analyzer/video_geometry_aligner_unittest.cc
@@ -23,7 +23,7 @@
 
 class VideoGeometryAlignerTest : public ::testing::Test {
  protected:
-  void SetUp() {
+  void SetUp() override {
     reference_video_ =
         OpenYuvFile(ResourcePath("foreman_128x96", "yuv"), 128, 96);
     ASSERT_TRUE(reference_video_);
diff --git a/rtc_tools/frame_analyzer/video_temporal_aligner_unittest.cc b/rtc_tools/frame_analyzer/video_temporal_aligner_unittest.cc
index 1fcbd9c..0fe03e8 100644
--- a/rtc_tools/frame_analyzer/video_temporal_aligner_unittest.cc
+++ b/rtc_tools/frame_analyzer/video_temporal_aligner_unittest.cc
@@ -22,7 +22,7 @@
 
 class VideoTemporalAlignerTest : public ::testing::Test {
  protected:
-  void SetUp() {
+  void SetUp() override {
     reference_video =
         OpenYuvFile(ResourcePath("foreman_128x96", "yuv"), 128, 96);
     ASSERT_TRUE(reference_video);
diff --git a/rtc_tools/video_encoder/video_encoder.cc b/rtc_tools/video_encoder/video_encoder.cc
index b252162..59fb758 100644
--- a/rtc_tools/video_encoder/video_encoder.cc
+++ b/rtc_tools/video_encoder/video_encoder.cc
@@ -302,7 +302,7 @@
     return true;
   }
 
-  ~BitstreamProcessor() = default;
+  ~BitstreamProcessor() override = default;
 
  private:
   // DecodedImageCallback
diff --git a/test/network/emulated_turn_server.cc b/test/network/emulated_turn_server.cc
index fe001d6..98861ae 100644
--- a/test/network/emulated_turn_server.cc
+++ b/test/network/emulated_turn_server.cc
@@ -93,7 +93,7 @@
       : turn_server_(turn_server),
         endpoint_(endpoint),
         local_address_(SocketAddress(endpoint_->GetPeerLocalAddress(), port)) {}
-  ~AsyncPacketSocketWrapper() { turn_server_->Unbind(local_address_); }
+  ~AsyncPacketSocketWrapper() override { turn_server_->Unbind(local_address_); }
 
   SocketAddress GetLocalAddress() const override { return local_address_; }
   SocketAddress GetRemoteAddress() const override { return SocketAddress(); }
diff --git a/test/pc/e2e/test_peer_factory.cc b/test/pc/e2e/test_peer_factory.cc
index da9c2b33..8f044c8 100644
--- a/test/pc/e2e/test_peer_factory.cc
+++ b/test/pc/e2e/test_peer_factory.cc
@@ -67,7 +67,7 @@
                       absl_nonnull std::unique_ptr<FieldTrials> field_trials)
       : trials_(std::move(trials)), field_trials_(std::move(field_trials)) {}
 
-  std::string Lookup(absl::string_view key) const {
+  std::string Lookup(absl::string_view key) const override {
     if (trials_ != nullptr) {
       if (std::string value = trials_->Lookup(key); !value.empty()) {
         return value;
diff --git a/test/testsupport/ivf_video_frame_generator_unittest.cc b/test/testsupport/ivf_video_frame_generator_unittest.cc
index f104e36..05d17bc 100644
--- a/test/testsupport/ivf_video_frame_generator_unittest.cc
+++ b/test/testsupport/ivf_video_frame_generator_unittest.cc
@@ -78,7 +78,9 @@
         expected_frames_count_(expected_frames_count) {
     EXPECT_TRUE(file_writer_.get());
   }
-  ~IvfFileWriterEncodedCallback() { EXPECT_TRUE(file_writer_->Close()); }
+  ~IvfFileWriterEncodedCallback() override {
+    EXPECT_TRUE(file_writer_->Close());
+  }
 
   Result OnEncodedImage(const EncodedImage& encoded_image,
                         const CodecSpecificInfo* codec_specific_info) override {
diff --git a/test/testsupport/y4m_frame_generator_test.cc b/test/testsupport/y4m_frame_generator_test.cc
index aa03273..aeaab02 100644
--- a/test/testsupport/y4m_frame_generator_test.cc
+++ b/test/testsupport/y4m_frame_generator_test.cc
@@ -28,9 +28,9 @@
 class Y4mFrameGeneratorTest : public testing::Test {
  protected:
   Y4mFrameGeneratorTest() = default;
-  ~Y4mFrameGeneratorTest() = default;
+  ~Y4mFrameGeneratorTest() override = default;
 
-  void SetUp() {
+  void SetUp() override {
     input_filepath_ = TempFilename(OutputPath(), "2x2.y4m");
     FILE* y4m_file = fopen(input_filepath_.c_str(), "wb");
 
@@ -45,7 +45,7 @@
     fclose(y4m_file);
   }
 
-  void TearDown() { remove(input_filepath_.c_str()); }
+  void TearDown() override { remove(input_filepath_.c_str()); }
 
   std::string input_filepath_;
 };
diff --git a/test/time_controller/real_time_controller.cc b/test/time_controller/real_time_controller.cc
index ac33ee7..3a9bff9 100644
--- a/test/time_controller/real_time_controller.cc
+++ b/test/time_controller/real_time_controller.cc
@@ -31,7 +31,7 @@
         current_setter_(this) {
     DoInit();
   }
-  ~MainThread() {
+  ~MainThread() override {
     Stop();
     DoDestroy();
   }
diff --git a/test/video_codec_tester.cc b/test/video_codec_tester.cc
index 7e51f4e..dbfb6b1 100644
--- a/test/video_codec_tester.cc
+++ b/test/video_codec_tester.cc
@@ -536,7 +536,7 @@
     }
   }
 
-  std::vector<Frame> Slice(Filter filter, bool merge) const {
+  std::vector<Frame> Slice(Filter filter, bool merge) const override {
     std::vector<Frame> slice;
     for (const auto& [timestamp_rtp, temporal_unit_frames] : frames_) {
       if (temporal_unit_frames.empty()) {
@@ -614,7 +614,7 @@
     return slice;
   }
 
-  Stream Aggregate(Filter filter) const {
+  Stream Aggregate(Filter filter) const override {
     std::vector<Frame> frames = Slice(filter, /*merge=*/true);
     Stream stream;
     LeakyBucket leaky_bucket;
@@ -708,7 +708,7 @@
 
   void LogMetrics(absl::string_view csv_path,
                   std::vector<Frame> frames,
-                  std::map<std::string, std::string> metadata) const {
+                  std::map<std::string, std::string> metadata) const override {
     RTC_LOG(LS_INFO) << "Write metrics to " << csv_path;
     FILE* csv_file = fopen(csv_path.data(), "w");
     const std::string delimiter = ";";
diff --git a/test/video_codec_tester_unittest.cc b/test/video_codec_tester_unittest.cc
index a24a1db..ff863e0 100644
--- a/test/video_codec_tester_unittest.cc
+++ b/test/video_codec_tester_unittest.cc
@@ -169,7 +169,7 @@
 
 class TestVideoDecoder : public MockVideoDecoder {
  public:
-  int32_t Decode(const EncodedImage& encoded_frame, int64_t) {
+  int32_t Decode(const EncodedImage& encoded_frame, int64_t) override {
     uint8_t y = (encoded_frame.size() + 0) & 255;
     uint8_t u = (encoded_frame.size() + 2) & 255;
     uint8_t v = (encoded_frame.size() + 4) & 255;
@@ -184,7 +184,8 @@
     return WEBRTC_VIDEO_CODEC_OK;
   }
 
-  int32_t RegisterDecodeCompleteCallback(DecodedImageCallback* callback) {
+  int32_t RegisterDecodeCompleteCallback(
+      DecodedImageCallback* callback) override {
     callback_ = callback;
     return WEBRTC_VIDEO_CODEC_OK;
   }
@@ -228,10 +229,11 @@
         explicit DecoderWrapper(TestVideoDecoder* decoder)
             : decoder_(decoder) {}
         int32_t Decode(const EncodedImage& encoded_frame,
-                       int64_t render_time_ms) {
+                       int64_t render_time_ms) override {
           return decoder_->Decode(encoded_frame, render_time_ms);
         }
-        int32_t RegisterDecodeCompleteCallback(DecodedImageCallback* callback) {
+        int32_t RegisterDecodeCompleteCallback(
+            DecodedImageCallback* callback) override {
           return decoder_->RegisterDecodeCompleteCallback(callback);
         }
         TestVideoDecoder* decoder_;
diff --git a/video/adaptation/overuse_frame_detector_unittest.cc b/video/adaptation/overuse_frame_detector_unittest.cc
index f1b522f..b836cc3 100644
--- a/video/adaptation/overuse_frame_detector_unittest.cc
+++ b/video/adaptation/overuse_frame_detector_unittest.cc
@@ -46,7 +46,7 @@
 class MockCpuOveruseObserver : public OveruseFrameDetectorObserverInterface {
  public:
   MockCpuOveruseObserver() {}
-  virtual ~MockCpuOveruseObserver() {}
+  ~MockCpuOveruseObserver() override {}
 
   MOCK_METHOD(void, AdaptUp, (), (override));
   MOCK_METHOD(void, AdaptDown, (), (override));
@@ -55,7 +55,7 @@
 class CpuOveruseObserverImpl : public OveruseFrameDetectorObserverInterface {
  public:
   CpuOveruseObserverImpl() : overuse_(0), normaluse_(0) {}
-  virtual ~CpuOveruseObserverImpl() {}
+  ~CpuOveruseObserverImpl() override {}
 
   void AdaptDown() override { ++overuse_; }
   void AdaptUp() override { ++normaluse_; }
@@ -70,7 +70,7 @@
       const Environment& env,
       CpuOveruseMetricsObserver* metrics_observer)
       : OveruseFrameDetector(env, metrics_observer) {}
-  ~OveruseFrameDetectorUnderTest() {}
+  ~OveruseFrameDetectorUnderTest() override {}
 
   using OveruseFrameDetector::CheckForOveruse;
   using OveruseFrameDetector::SetOptions;
diff --git a/video/buffered_frame_decryptor_unittest.cc b/video/buffered_frame_decryptor_unittest.cc
index 781de75..f037d62 100644
--- a/video/buffered_frame_decryptor_unittest.cc
+++ b/video/buffered_frame_decryptor_unittest.cc
@@ -58,7 +58,8 @@
     decrypted_frame_call_count_++;
   }
 
-  void OnDecryptionStatusChange(FrameDecryptorInterface::Status status) {
+  void OnDecryptionStatusChange(
+      FrameDecryptorInterface::Status status) override {
     ++decryption_status_change_count_;
   }
 
diff --git a/video/call_stats2_unittest.cc b/video/call_stats2_unittest.cc
index dd49adf..d2cc56f 100644
--- a/video/call_stats2_unittest.cc
+++ b/video/call_stats2_unittest.cc
@@ -34,7 +34,7 @@
 class MockStatsObserver : public CallStatsObserver {
  public:
   MockStatsObserver() {}
-  virtual ~MockStatsObserver() {}
+  ~MockStatsObserver() override {}
 
   MOCK_METHOD(void, OnRttUpdate, (int64_t, int64_t), (override));
 };
diff --git a/video/end_to_end_tests/multi_codec_receive_tests.cc b/video/end_to_end_tests/multi_codec_receive_tests.cc
index d958c77..a72e7a3 100644
--- a/video/end_to_end_tests/multi_codec_receive_tests.cc
+++ b/video/end_to_end_tests/multi_codec_receive_tests.cc
@@ -158,7 +158,7 @@
     });
   }
 
-  virtual ~MultiCodecReceiveTest() {
+  ~MultiCodecReceiveTest() override {
     SendTask(task_queue(), [this]() {
       send_transport_.reset();
       receive_transport_.reset();
diff --git a/video/end_to_end_tests/network_state_tests.cc b/video/end_to_end_tests/network_state_tests.cc
index 35b802b..08bffba 100644
--- a/video/end_to_end_tests/network_state_tests.cc
+++ b/video/end_to_end_tests/network_state_tests.cc
@@ -68,7 +68,7 @@
    public:
     RequiredTransport(bool rtp_required, bool rtcp_required)
         : need_rtp_(rtp_required), need_rtcp_(rtcp_required) {}
-    ~RequiredTransport() {
+    ~RequiredTransport() override {
       if (need_rtp_) {
         ADD_FAILURE() << "Expected RTP packet not sent.";
       }
@@ -410,7 +410,7 @@
    public:
     explicit RequiredEncoder(const Environment& env)
         : FakeEncoder(env), encoded_frame_(false) {}
-    ~RequiredEncoder() {
+    ~RequiredEncoder() override {
       if (!encoded_frame_) {
         ADD_FAILURE() << "Didn't encode an expected frame";
       }
diff --git a/video/end_to_end_tests/transport_feedback_tests.cc b/video/end_to_end_tests/transport_feedback_tests.cc
index 84f2d56..333cc0c 100644
--- a/video/end_to_end_tests/transport_feedback_tests.cc
+++ b/video/end_to_end_tests/transport_feedback_tests.cc
@@ -89,7 +89,7 @@
       extensions_.Register<TransportSequenceNumber>(
           kTransportSequenceNumberExtensionId);
     }
-    virtual ~RtpExtensionHeaderObserver() {}
+    ~RtpExtensionHeaderObserver() override {}
 
     bool SendRtp(ArrayView<const uint8_t> data,
                  const PacketOptions& options) override {
diff --git a/video/frame_cadence_adapter.cc b/video/frame_cadence_adapter.cc
index 7e151f6..9b5ffc1 100644
--- a/video/frame_cadence_adapter.cc
+++ b/video/frame_cadence_adapter.cc
@@ -111,7 +111,7 @@
                        double max_fps,
                        std::atomic<int>& frames_scheduled_for_processing,
                        bool zero_hertz_queue_overload);
-  ~ZeroHertzAdapterMode() { refresh_frame_requester_.Stop(); }
+  ~ZeroHertzAdapterMode() override { refresh_frame_requester_.Stop(); }
 
   // Reconfigures according to parameters.
   // All spatial layer trackers are initialized as unconverged by this method.
@@ -350,7 +350,7 @@
                           Metronome* metronome,
                           TaskQueueBase* worker_queue,
                           const FieldTrialsView& field_trials);
-  ~FrameCadenceAdapterImpl();
+  ~FrameCadenceAdapterImpl() override;
 
   // FrameCadenceAdapterInterface overrides.
   void Initialize(Callback* callback) override;
diff --git a/video/picture_id_tests.cc b/video/picture_id_tests.cc
index 4e76e5d..0c6ab92 100644
--- a/video/picture_id_tests.cc
+++ b/video/picture_id_tests.cc
@@ -240,7 +240,7 @@
  public:
   PictureIdTest() : num_temporal_layers_(GetParam()) {}
 
-  virtual ~PictureIdTest() {
+  ~PictureIdTest() override {
     SendTask(task_queue(), [this]() {
       send_transport_.reset();
       receive_transport_.reset();
diff --git a/video/send_delay_stats_unittest.cc b/video/send_delay_stats_unittest.cc
index c564562..5bd0d98 100644
--- a/video/send_delay_stats_unittest.cc
+++ b/video/send_delay_stats_unittest.cc
@@ -37,10 +37,10 @@
 class SendDelayStatsTest : public ::testing::Test {
  public:
   SendDelayStatsTest() : clock_(1234), config_(CreateConfig()) {}
-  virtual ~SendDelayStatsTest() {}
+  ~SendDelayStatsTest() override {}
 
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     stats_.reset(new SendDelayStats(&clock_));
     stats_->AddSsrcs(config_);
   }
diff --git a/video/send_statistics_proxy_unittest.cc b/video/send_statistics_proxy_unittest.cc
index 3977cc9..07ef0fe 100644
--- a/video/send_statistics_proxy_unittest.cc
+++ b/video/send_statistics_proxy_unittest.cc
@@ -87,10 +87,10 @@
       : override_field_trials_(field_trials),
         fake_clock_(Timestamp::Seconds(1234)),
         config_(GetTestConfig()) {}
-  virtual ~SendStatisticsProxyTest() {}
+  ~SendStatisticsProxyTest() override {}
 
  protected:
-  virtual void SetUp() {
+  void SetUp() override {
     metrics::Reset();
     statistics_proxy_.reset(
         new SendStatisticsProxy(&fake_clock_, GetTestConfig(),
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index d4e1754..f385adf 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -186,7 +186,7 @@
 
   // Implement VideoEncoder
   void SetFecControllerOverride(
-      FecControllerOverride* fec_controller_override) {
+      FecControllerOverride* fec_controller_override) override {
     // Ignored.
   }
 
@@ -205,7 +205,7 @@
   int32_t Release() override { return encoder_->Release(); }
 
   int32_t Encode(const VideoFrame& frame,
-                 const std::vector<VideoFrameType>* frame_types) {
+                 const std::vector<VideoFrameType>* frame_types) override {
     if (analyzer_) {
       analyzer_->PreEncodeOnFrame(frame);
     }
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index d4c39ae..27d7e30 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -170,7 +170,7 @@
     ON_CALL(rtp_video_sender_, SetSending)
         .WillByDefault(SaveArg<0>(&rtp_sending_));
   }
-  ~VideoSendStreamImplTest() {}
+  ~VideoSendStreamImplTest() override {}
 
   VideoEncoderConfig TestVideoEncoderConfig(
       VideoEncoderConfig::ContentType content_type =
diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc
index e9b31d3..25b5254 100644
--- a/video/video_send_stream_tests.cc
+++ b/video/video_send_stream_tests.cc
@@ -862,7 +862,7 @@
     return SEND_PACKET;
   }
 
-  BuiltInNetworkBehaviorConfig GetSendTransportConfig() const {
+  BuiltInNetworkBehaviorConfig GetSendTransportConfig() const override {
     // At low RTT (< kLowRttNackMs) -> NACK only, no FEC.
     // Therefore we need some network delay.
     const int kNetworkDelayMs = 100;
@@ -872,7 +872,7 @@
     return config;
   }
 
-  BuiltInNetworkBehaviorConfig GetReceiveTransportConfig() const {
+  BuiltInNetworkBehaviorConfig GetReceiveTransportConfig() const override {
     // We need the RTT to be >200 ms to send FEC and the network delay for the
     // send transport is 100 ms, so add 100 ms (but no loss) on the return link.
     BuiltInNetworkBehaviorConfig config;
@@ -1667,7 +1667,7 @@
       extensions_.Register<TransportSequenceNumber>(kExtensionId);
     }
 
-    ~ChangingNetworkRouteTest() {
+    ~ChangingNetworkRouteTest() override {
       // Block until all already posted tasks run to avoid 'use after free'
       // when such task accesses `this`.
       SendTask(task_queue_, [] {});
@@ -1786,7 +1786,7 @@
       task_queue_thread_.Detach();
     }
 
-    ~RelayToDirectRouteTest() {
+    ~RelayToDirectRouteTest() override {
       // Block until all already posted tasks run to avoid 'use after free'
       // when such task accesses `this`.
       SendTask(task_queue_, [] {});
@@ -1957,7 +1957,7 @@
     task_queue_thread_.Detach();
   }
 
-  ~MaxPaddingSetTest() {
+  ~MaxPaddingSetTest() override {
     // Block until all already posted tasks run to avoid 'use after free'
     // when such task accesses `this`.
     SendTask(task_queue_, [] {});
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index 374b10b..ea2345e 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/video/video_stream_encoder_unittest.cc
@@ -278,7 +278,7 @@
         last_target_framerate_fps_(-1),
         framerate_updated_event_(true /* manual_reset */,
                                  false /* initially_signaled */) {}
-  virtual ~CpuOveruseDetectorProxy() {}
+  ~CpuOveruseDetectorProxy() override {}
 
   void OnTargetFramerateUpdated(int framerate_fps) override {
     MutexLock lock(&lock_);
@@ -730,7 +730,7 @@
   class AdaptedVideoStreamEncoder : public VideoStreamEncoder {
    public:
     using VideoStreamEncoder::VideoStreamEncoder;
-    ~AdaptedVideoStreamEncoder() { Stop(); }
+    ~AdaptedVideoStreamEncoder() override { Stop(); }
   };
 
   class MockFakeEncoder : public test::FakeEncoder {
@@ -1367,7 +1367,7 @@
       return FakeEncoder::Release();
     }
 
-    void SetRates(const RateControlParameters& parameters) {
+    void SetRates(const RateControlParameters& parameters) override {
       MutexLock lock(&local_mutex_);
       num_set_rates_++;
       VideoBitrateAllocation adjusted_rate_allocation;
@@ -10238,7 +10238,7 @@
         video_stream_encoder_(
             factory_.Create(std::move(adapter_), &encoder_queue_)) {}
 
-  ~VideoStreamEncoderFrameCadenceRestrictionTest() {
+  ~VideoStreamEncoderFrameCadenceRestrictionTest() override {
     factory_.DepleteTaskQueues();
   }