diff --git a/api/audio_codecs/opus/audio_decoder_opus.cc b/api/audio_codecs/opus/audio_decoder_opus.cc
index 2f1668b..cd70416 100644
--- a/api/audio_codecs/opus/audio_decoder_opus.cc
+++ b/api/audio_codecs/opus/audio_decoder_opus.cc
@@ -51,7 +51,7 @@
   opus_info.supports_network_adaption = true;
   SdpAudioFormat opus_format(
       {"opus", 48000, 2, {{"minptime", "10"}, {"useinbandfec", "1"}}});
-  specs->push_back({std::move(opus_format), std::move(opus_info)});
+  specs->push_back({std::move(opus_format), opus_info});
 }
 
 std::unique_ptr<AudioDecoder> AudioDecoderOpus::MakeAudioDecoder(
diff --git a/api/test/loopback_media_transport.cc b/api/test/loopback_media_transport.cc
index e7ccb0a..5b75e40 100644
--- a/api/test/loopback_media_transport.cc
+++ b/api/test/loopback_media_transport.cc
@@ -124,7 +124,7 @@
     ++stats_.sent_audio_frames;
   }
   invoker_.AsyncInvoke<void>(RTC_FROM_HERE, thread_, [this, channel_id, frame] {
-    other_->OnData(channel_id, std::move(frame));
+    other_->OnData(channel_id, frame);
   });
   return RTCError::OK();
 }
diff --git a/call/simulated_network.cc b/call/simulated_network.cc
index 9bb8bab..0884b29 100644
--- a/call/simulated_network.cc
+++ b/call/simulated_network.cc
@@ -125,7 +125,7 @@
     }
 
     // Time to get this packet.
-    PacketInfo packet = std::move(capacity_link_.front());
+    PacketInfo packet = capacity_link_.front();
     capacity_link_.pop();
 
     time_us += time_until_front_exits_us;
@@ -165,7 +165,7 @@
         needs_sort = true;
       }
     }
-    delay_link_.emplace_back(std::move(packet));
+    delay_link_.emplace_back(packet);
   }
   last_capacity_link_visit_us_ = time_now_us;
   // Cannot save unused capacity for later.
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
index 6b34361..b3b531f 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
@@ -82,9 +82,9 @@
       new MockSmoothingFilter());
   states->mock_bitrate_smoother = bitrate_smoother.get();
 
-  states->encoder.reset(new AudioEncoderOpusImpl(
-      states->config, kDefaultOpusPayloadType, std::move(creator),
-      std::move(bitrate_smoother)));
+  states->encoder.reset(
+      new AudioEncoderOpusImpl(states->config, kDefaultOpusPayloadType, creator,
+                               std::move(bitrate_smoother)));
   return states;
 }
 
diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc
index a30aef0..2a10b42 100644
--- a/modules/pacing/paced_sender.cc
+++ b/modules/pacing/paced_sender.cc
@@ -359,7 +359,7 @@
     if (success) {
       bytes_sent += packet->bytes;
       // Send succeeded, remove it from the queue.
-      OnPacketSent(std::move(packet));
+      OnPacketSent(packet);
       if (is_probing && bytes_sent > recommended_probe_size)
         break;
     } else {
diff --git a/modules/video_coding/rtp_frame_reference_finder.cc b/modules/video_coding/rtp_frame_reference_finder.cc
index 45f710a..6d4860d 100644
--- a/modules/video_coding/rtp_frame_reference_finder.cc
+++ b/modules/video_coding/rtp_frame_reference_finder.cc
@@ -275,7 +275,7 @@
   if (codec_header.pictureId == kNoPictureId ||
       codec_header.temporalIdx == kNoTemporalIdx ||
       codec_header.tl0PicIdx == kNoTl0PicIdx) {
-    return ManageFramePidOrSeqNum(std::move(frame), codec_header.pictureId);
+    return ManageFramePidOrSeqNum(frame, codec_header.pictureId);
   }
 
   frame->id.picture_id = codec_header.pictureId % kPicIdLength;
@@ -424,7 +424,7 @@
 
   if (codec_header.picture_id == kNoPictureId ||
       codec_header.temporal_idx == kNoTemporalIdx) {
-    return ManageFramePidOrSeqNum(std::move(frame), codec_header.picture_id);
+    return ManageFramePidOrSeqNum(frame, codec_header.picture_id);
   }
 
   frame->id.spatial_layer = codec_header.spatial_idx;
diff --git a/p2p/base/dtls_transport.cc b/p2p/base/dtls_transport.cc
index ba565ca..d3db35b 100644
--- a/p2p/base/dtls_transport.cc
+++ b/p2p/base/dtls_transport.cc
@@ -208,7 +208,7 @@
     return true;
   }
 
-  dtls_role_ = std::move(role);
+  dtls_role_ = role;
   return true;
 }
 
diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc
index 6e3aa19..edcea88 100644
--- a/pc/channel_unittest.cc
+++ b/pc/channel_unittest.cc
@@ -1381,7 +1381,7 @@
   webrtc::RtpParameters BitrateLimitedParameters(absl::optional<int> limit) {
     webrtc::RtpParameters parameters;
     webrtc::RtpEncodingParameters encoding;
-    encoding.max_bitrate_bps = std::move(limit);
+    encoding.max_bitrate_bps = limit;
     parameters.encodings.push_back(encoding);
     return parameters;
   }
diff --git a/pc/jsep_transport.cc b/pc/jsep_transport.cc
index fd6bd0d..28c7525 100644
--- a/pc/jsep_transport.cc
+++ b/pc/jsep_transport.cc
@@ -651,8 +651,8 @@
     // If local is passive, local will act as server.
   }
 
-  *negotiated_dtls_role = (is_remote_server ? std::move(rtc::SSL_CLIENT)
-                                            : std::move(rtc::SSL_SERVER));
+  *negotiated_dtls_role =
+      (is_remote_server ? rtc::SSL_CLIENT : rtc::SSL_SERVER);
   return webrtc::RTCError::OK();
 }
 
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index e0479d1..770c4ab 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -3739,7 +3739,7 @@
   auto receiver = RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create(
       signaling_thread(), audio_receiver);
   GetAudioTransceiver()->internal()->AddReceiver(receiver);
-  Observer()->OnAddTrack(receiver, std::move(streams));
+  Observer()->OnAddTrack(receiver, streams);
   NoteUsageEvent(UsageEvent::AUDIO_ADDED);
 }
 
@@ -3757,7 +3757,7 @@
   auto receiver = RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create(
       signaling_thread(), video_receiver);
   GetVideoTransceiver()->internal()->AddReceiver(receiver);
-  Observer()->OnAddTrack(receiver, std::move(streams));
+  Observer()->OnAddTrack(receiver, streams);
   NoteUsageEvent(UsageEvent::VIDEO_ADDED);
 }
 
diff --git a/pc/rtp_sender_receiver_unittest.cc b/pc/rtp_sender_receiver_unittest.cc
index 83f06c6..ba0e0b5 100644
--- a/pc/rtp_sender_receiver_unittest.cc
+++ b/pc/rtp_sender_receiver_unittest.cc
@@ -239,8 +239,8 @@
 
   void CreateAudioRtpReceiver(
       std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams = {}) {
-    audio_rtp_receiver_ = new AudioRtpReceiver(
-        rtc::Thread::Current(), kAudioTrackId, std::move(streams));
+    audio_rtp_receiver_ =
+        new AudioRtpReceiver(rtc::Thread::Current(), kAudioTrackId, streams);
     audio_rtp_receiver_->SetMediaChannel(voice_media_channel_);
     audio_rtp_receiver_->SetupMediaChannel(kAudioSsrc);
     audio_track_ = audio_rtp_receiver_->audio_track();
@@ -249,8 +249,8 @@
 
   void CreateVideoRtpReceiver(
       std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams = {}) {
-    video_rtp_receiver_ = new VideoRtpReceiver(
-        rtc::Thread::Current(), kVideoTrackId, std::move(streams));
+    video_rtp_receiver_ =
+        new VideoRtpReceiver(rtc::Thread::Current(), kVideoTrackId, streams);
     video_rtp_receiver_->SetMediaChannel(video_media_channel_);
     video_rtp_receiver_->SetupMediaChannel(kVideoSsrc);
     video_track_ = video_rtp_receiver_->video_track();
@@ -269,8 +269,8 @@
     video_media_channel_->AddRecvStream(stream_params);
     uint32_t primary_ssrc = stream_params.first_ssrc();
 
-    video_rtp_receiver_ = new VideoRtpReceiver(
-        rtc::Thread::Current(), kVideoTrackId, std::move(streams));
+    video_rtp_receiver_ =
+        new VideoRtpReceiver(rtc::Thread::Current(), kVideoTrackId, streams);
     video_rtp_receiver_->SetMediaChannel(video_media_channel_);
     video_rtp_receiver_->SetupMediaChannel(primary_ssrc);
     video_track_ = video_rtp_receiver_->video_track();
diff --git a/pc/rtp_transport_unittest.cc b/pc/rtp_transport_unittest.cc
index 1079ab4..f617445 100644
--- a/pc/rtp_transport_unittest.cc
+++ b/pc/rtp_transport_unittest.cc
@@ -86,7 +86,7 @@
 
   absl::optional<rtc::NetworkRoute> network_route() { return network_route_; }
   void OnNetworkRouteChanged(absl::optional<rtc::NetworkRoute> network_route) {
-    network_route_ = std::move(network_route);
+    network_route_ = network_route;
   }
 
   void OnSentPacket(rtc::PacketTransportInternal* packet_transport,
diff --git a/test/pc/e2e/analyzer/video/single_process_encoded_image_id_injector.cc b/test/pc/e2e/analyzer/video/single_process_encoded_image_id_injector.cc
index 0d72fd9..105ee8e 100644
--- a/test/pc/e2e/analyzer/video/single_process_encoded_image_id_injector.cc
+++ b/test/pc/e2e/analyzer/video/single_process_encoded_image_id_injector.cc
@@ -45,7 +45,7 @@
     // Will create new one if missed.
     ExtractionInfoVector& ev = extraction_cache_[id];
     info.sub_id = ev.next_sub_id++;
-    ev.infos[info.sub_id] = std::move(info);
+    ev.infos[info.sub_id] = info;
   }
 
   EncodedImage out = source;
@@ -83,7 +83,7 @@
       auto info_it = ext_vector_it->second.infos.find(sub_id);
       RTC_CHECK(info_it != ext_vector_it->second.infos.end())
           << "Unknown sub id " << sub_id << " for frame " << next_id;
-      info = std::move(info_it->second);
+      info = info_it->second;
       ext_vector_it->second.infos.erase(info_it);
     }
 
diff --git a/video/video_replay.cc b/video/video_replay.cc
index 071df8c..6cfb8c1 100644
--- a/video/video_replay.cc
+++ b/video/video_replay.cc
@@ -247,7 +247,7 @@
                      const std::string& rtp_dump_path) {
     webrtc::RtcEventLogNullImpl event_log;
     Call::Config call_config(&event_log);
-    std::unique_ptr<Call> call(Call::Create(std::move(call_config)));
+    std::unique_ptr<Call> call(Call::Create(call_config));
     std::unique_ptr<StreamState> stream_state;
     // Attempt to load the configuration
     if (replay_config_path.empty()) {
