diff --git a/api/video_codecs/video_encoder.cc b/api/video_codecs/video_encoder.cc
index 0ee25c5..52e2866 100644
--- a/api/video_codecs/video_encoder.cc
+++ b/api/video_codecs/video_encoder.cc
@@ -112,18 +112,21 @@
   rtc::SimpleStringBuilder oss(string_buf);
 
   oss << "EncoderInfo { "
-      << "ScalingSettings { ";
+         "ScalingSettings { ";
   if (scaling_settings.thresholds) {
     oss << "Thresholds { "
-        << "low = " << scaling_settings.thresholds->low
+           "low = "
+        << scaling_settings.thresholds->low
         << ", high = " << scaling_settings.thresholds->high << "}, ";
   }
   oss << "min_pixels_per_frame = " << scaling_settings.min_pixels_per_frame
       << " }";
   oss << ", requested_resolution_alignment = " << requested_resolution_alignment
       << ", supports_native_handle = " << supports_native_handle
-      << ", implementation_name = '" << implementation_name << "'"
-      << ", has_trusted_rate_controller = " << has_trusted_rate_controller
+      << ", implementation_name = '" << implementation_name
+      << "'"
+         ", has_trusted_rate_controller = "
+      << has_trusted_rate_controller
       << ", is_hardware_accelerated = " << is_hardware_accelerated
       << ", has_internal_source = " << has_internal_source
       << ", fps_allocation = [";
@@ -154,13 +157,15 @@
     }
     ResolutionBitrateLimits l = resolution_bitrate_limits[i];
     oss << "Limits { "
-        << "frame_size_pixels = " << l.frame_size_pixels
+           "frame_size_pixels = "
+        << l.frame_size_pixels
         << ", min_start_bitrate_bps = " << l.min_start_bitrate_bps
         << ", min_bitrate_bps = " << l.min_bitrate_bps
         << ", max_bitrate_bps = " << l.max_bitrate_bps << "} ";
   }
   oss << "] "
-      << ", supports_simulcast = " << supports_simulcast << "}";
+         ", supports_simulcast = "
+      << supports_simulcast << "}";
   return oss.str();
 }
 
diff --git a/audio/channel_receive.cc b/audio/channel_receive.cc
index 2ecc3cf..d0c17fb 100644
--- a/audio/channel_receive.cc
+++ b/audio/channel_receive.cc
@@ -834,7 +834,7 @@
   if (_audioDeviceModulePtr->PlayoutDelay(&delay_ms) == -1) {
     RTC_DLOG(LS_WARNING)
         << "ChannelReceive::UpdatePlayoutTimestamp() failed to read"
-        << " playout delay from the ADM";
+           " playout delay from the ADM";
     return;
   }
 
diff --git a/audio/channel_send.cc b/audio/channel_send.cc
index 5541d75..de77158 100644
--- a/audio/channel_send.cc
+++ b/audio/channel_send.cc
@@ -420,7 +420,7 @@
       payload = encrypted_audio_payload;
     } else if (crypto_options_.sframe.require_frame_encryption) {
       RTC_DLOG(LS_ERROR) << "Channel::SendData() failed sending audio payload: "
-                         << "A frame encryptor is required but one is not set.";
+                            "A frame encryptor is required but one is not set.";
       return -1;
     }
   }
diff --git a/call/flexfec_receive_stream_impl.cc b/call/flexfec_receive_stream_impl.cc
index 9ffa515..40005ef 100644
--- a/call/flexfec_receive_stream_impl.cc
+++ b/call/flexfec_receive_stream_impl.cc
@@ -87,7 +87,7 @@
   if (config.payload_type < 0) {
     RTC_LOG(LS_WARNING)
         << "Invalid FlexFEC payload type given. "
-        << "This FlexfecReceiveStream will therefore be useless.";
+           "This FlexfecReceiveStream will therefore be useless.";
     return nullptr;
   }
   RTC_DCHECK_GE(config.payload_type, 0);
@@ -95,13 +95,13 @@
   if (config.remote_ssrc == 0) {
     RTC_LOG(LS_WARNING)
         << "Invalid FlexFEC SSRC given. "
-        << "This FlexfecReceiveStream will therefore be useless.";
+           "This FlexfecReceiveStream will therefore be useless.";
     return nullptr;
   }
   if (config.protected_media_ssrcs.empty()) {
     RTC_LOG(LS_WARNING)
         << "No protected media SSRC supplied. "
-        << "This FlexfecReceiveStream will therefore be useless.";
+           "This FlexfecReceiveStream will therefore be useless.";
     return nullptr;
   }
 
diff --git a/call/rtp_stream_receiver_controller.cc b/call/rtp_stream_receiver_controller.cc
index 0fc8b26..f440b42 100644
--- a/call/rtp_stream_receiver_controller.cc
+++ b/call/rtp_stream_receiver_controller.cc
@@ -25,7 +25,8 @@
   if (!sink_added) {
     RTC_LOG(LS_ERROR)
         << "RtpStreamReceiverController::Receiver::Receiver: Sink "
-        << "could not be added for SSRC=" << ssrc << ".";
+           "could not be added for SSRC="
+        << ssrc << ".";
   }
 }
 
diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc
index 282a3ad..a5878ab 100644
--- a/call/rtp_transport_controller_send.cc
+++ b/call/rtp_transport_controller_send.cc
@@ -390,7 +390,7 @@
   } else {
     RTC_LOG(LS_VERBOSE)
         << "WebRTC.RtpTransportControllerSend.SetSdpBitrateParameters: "
-        << "nothing to update";
+           "nothing to update";
   }
 }
 
@@ -411,7 +411,7 @@
   } else {
     RTC_LOG(LS_VERBOSE)
         << "WebRTC.RtpTransportControllerSend.SetClientBitratePreferences: "
-        << "nothing to update";
+           "nothing to update";
   }
 }
 
diff --git a/call/simulated_network.cc b/call/simulated_network.cc
index d6a7369..f904464 100644
--- a/call/simulated_network.cc
+++ b/call/simulated_network.cc
@@ -100,9 +100,10 @@
     int min_avg_burst_loss_length = std::ceil(prob_loss / (1 - prob_loss));
 
     RTC_CHECK_GT(avg_burst_loss_length, min_avg_burst_loss_length)
-        << "For a total packet loss of " << config.loss_percent << "%% then"
-        << " avg_burst_loss_length must be " << min_avg_burst_loss_length + 1
-        << " or higher.";
+        << "For a total packet loss of " << config.loss_percent
+        << "%% then"
+           " avg_burst_loss_length must be "
+        << min_avg_burst_loss_length + 1 << " or higher.";
 
     config_state_.prob_loss_bursting = (1.0 - 1.0 / avg_burst_loss_length);
     config_state_.prob_start_bursting =
diff --git a/common_video/bitrate_adjuster.cc b/common_video/bitrate_adjuster.cc
index e2d3b3d..ca52ed9 100644
--- a/common_video/bitrate_adjuster.cc
+++ b/common_video/bitrate_adjuster.cc
@@ -140,7 +140,7 @@
     float last_adjusted_bitrate_bps = adjusted_bitrate_bps_;
     if (adjusted_bitrate_bps != last_adjusted_bitrate_bps) {
       RTC_LOG(LS_VERBOSE) << "Adjusting encoder bitrate:"
-                          << "\n  target_bitrate:"
+                             "\n  target_bitrate:"
                           << static_cast<uint32_t>(target_bitrate_bps)
                           << "\n  estimated_bitrate:"
                           << static_cast<uint32_t>(estimated_bitrate_bps)
diff --git a/examples/peerconnection/client/conductor.cc b/examples/peerconnection/client/conductor.cc
index 10fbc79..005a9d6 100644
--- a/examples/peerconnection/client/conductor.cc
+++ b/examples/peerconnection/client/conductor.cc
@@ -345,7 +345,8 @@
         webrtc::CreateSessionDescription(type, sdp, &error);
     if (!session_description) {
       RTC_LOG(WARNING) << "Can't parse received session description message. "
-                       << "SdpParseError was: " << error.description;
+                          "SdpParseError was: "
+                       << error.description;
       return;
     }
     RTC_LOG(INFO) << " Received session description :" << message;
@@ -373,7 +374,8 @@
         webrtc::CreateIceCandidate(sdp_mid, sdp_mlineindex, sdp, &error));
     if (!candidate.get()) {
       RTC_LOG(WARNING) << "Can't parse received candidate message. "
-                       << "SdpParseError was: " << error.description;
+                          "SdpParseError was: "
+                       << error.description;
       return;
     }
     if (!peer_connection_->AddIceCandidate(candidate.get())) {
diff --git a/examples/unityplugin/simple_peer_connection.cc b/examples/unityplugin/simple_peer_connection.cc
index 8a719ba..05282fa 100644
--- a/examples/unityplugin/simple_peer_connection.cc
+++ b/examples/unityplugin/simple_peer_connection.cc
@@ -342,7 +342,8 @@
       webrtc::CreateSessionDescription(sdp_type, remote_desc, &error));
   if (!session_description) {
     RTC_LOG(WARNING) << "Can't parse received session description message. "
-                     << "SdpParseError was: " << error.description;
+                        "SdpParseError was: "
+                     << error.description;
     return false;
   }
   RTC_LOG(INFO) << " Received session description :" << remote_desc;
@@ -363,7 +364,8 @@
       webrtc::CreateIceCandidate(sdp_mid, sdp_mlineindex, candidate, &error));
   if (!ice_candidate.get()) {
     RTC_LOG(WARNING) << "Can't parse received candidate message. "
-                     << "SdpParseError was: " << error.description;
+                        "SdpParseError was: "
+                     << error.description;
     return false;
   }
   if (!peer_connection_->AddIceCandidate(ice_candidate.get())) {
diff --git a/logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.cc b/logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.cc
index 7b35485..2f1c5a4 100644
--- a/logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.cc
+++ b/logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.cc
@@ -674,7 +674,8 @@
     if (event.config().codecs.size() > 1) {
       RTC_LOG(WARNING)
           << "LogVideoSendStreamConfig currently only supports one "
-          << "codec. Logging codec :" << codec.payload_name;
+             "codec. Logging codec :"
+          << codec.payload_name;
       break;
     }
   }
diff --git a/logging/rtc_event_log/rtc_event_log2rtp_dump.cc b/logging/rtc_event_log/rtc_event_log2rtp_dump.cc
index 405f702..c9d4a6c 100644
--- a/logging/rtc_event_log/rtc_event_log2rtp_dump.cc
+++ b/logging/rtc_event_log/rtc_event_log2rtp_dump.cc
@@ -249,7 +249,9 @@
   event_processor.ProcessEventsInOrder();
 
   std::cout << "Wrote " << rtp_counter << (header_only ? " header-only" : "")
-            << " RTP packets and " << rtcp_counter << " RTCP packets to the "
-            << "output file." << std::endl;
+            << " RTP packets and " << rtcp_counter
+            << " RTCP packets to the "
+               "output file."
+            << std::endl;
   return 0;
 }
diff --git a/logging/rtc_event_log/rtc_event_log_impl.cc b/logging/rtc_event_log/rtc_event_log_impl.cc
index e1e1aab..4a272f0 100644
--- a/logging/rtc_event_log/rtc_event_log_impl.cc
+++ b/logging/rtc_event_log/rtc_event_log_impl.cc
@@ -93,7 +93,8 @@
   const int64_t timestamp_us = rtc::TimeMicros();
   const int64_t utc_time_us = rtc::TimeUTCMicros();
   RTC_LOG(LS_INFO) << "Starting WebRTC event log. (Timestamp, UTC) = "
-                   << "(" << timestamp_us << ", " << utc_time_us << ").";
+                      "("
+                   << timestamp_us << ", " << utc_time_us << ").";
 
   RTC_DCHECK_RUN_ON(&logging_state_checker_);
   logging_state_started_ = true;
diff --git a/media/base/rtp_data_engine.cc b/media/base/rtp_data_engine.cc
index 6161085..0303cd3 100644
--- a/media/base/rtp_data_engine.cc
+++ b/media/base/rtp_data_engine.cc
@@ -319,8 +319,8 @@
   packet.AppendData(payload);
 
   RTC_LOG(LS_VERBOSE) << "Sent RTP data packet: "
-                      << " stream=" << found_stream->id
-                      << " ssrc=" << header.ssrc
+                         " stream="
+                      << found_stream->id << " ssrc=" << header.ssrc
                       << ", seqnum=" << header.seq_num
                       << ", timestamp=" << header.timestamp
                       << ", len=" << payload.size();
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index c93494b..a2944d5 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -735,7 +735,7 @@
 
     if (!allow_codec_switching_) {
       RTC_LOG(LS_INFO) << "Encoder switch requested but codec switching has"
-                       << " not been enabled yet.";
+                          " not been enabled yet.";
       requested_encoder_switch_ = conf;
       return;
     }
@@ -857,7 +857,8 @@
   auto it = send_streams_.find(ssrc);
   if (it == send_streams_.end()) {
     RTC_LOG(LS_WARNING) << "Attempting to get RTP send parameters for stream "
-                        << "with ssrc " << ssrc << " which doesn't exist.";
+                           "with ssrc "
+                        << ssrc << " which doesn't exist.";
     return webrtc::RtpParameters();
   }
 
@@ -878,7 +879,8 @@
   auto it = send_streams_.find(ssrc);
   if (it == send_streams_.end()) {
     RTC_LOG(LS_ERROR) << "Attempting to set RTP send parameters for stream "
-                      << "with ssrc " << ssrc << " which doesn't exist.";
+                         "with ssrc "
+                      << ssrc << " which doesn't exist.";
     return webrtc::RTCError(webrtc::RTCErrorType::INTERNAL_ERROR);
   }
 
@@ -887,7 +889,7 @@
   webrtc::RtpParameters current_parameters = GetRtpSendParameters(ssrc);
   if (current_parameters.codecs != parameters.codecs) {
     RTC_DLOG(LS_ERROR) << "Using SetParameters to change the set of codecs "
-                       << "is not currently supported.";
+                          "is not currently supported.";
     return webrtc::RTCError(webrtc::RTCErrorType::INTERNAL_ERROR);
   }
 
@@ -922,7 +924,8 @@
   if (it == receive_streams_.end()) {
     RTC_LOG(LS_WARNING)
         << "Attempting to get RTP receive parameters for stream "
-        << "with SSRC " << ssrc << " which doesn't exist.";
+           "with SSRC "
+        << ssrc << " which doesn't exist.";
     return webrtc::RtpParameters();
   }
   rtp_params = it->second->GetRtpParameters();
@@ -2736,7 +2739,8 @@
   if (stream_) {
     RTC_LOG(LS_INFO)
         << "Setting FrameDecryptor (recv) because of SetFrameDecryptor, "
-        << "remote_ssrc=" << config_.rtp.remote_ssrc;
+           "remote_ssrc="
+        << config_.rtp.remote_ssrc;
     stream_->SetFrameDecryptor(frame_decryptor);
   }
 }
diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc
index bff3172..a36fc6e 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -170,9 +170,10 @@
     // fail. If codec is not multi-rate and |bps| exceeds or equal the fixed
     // bitrate then ignore.
     RTC_LOG(LS_ERROR) << "Failed to set codec " << spec.format.name
-                      << " to bitrate " << bps << " bps"
-                      << ", requires at least " << spec.info.min_bitrate_bps
-                      << " bps.";
+                      << " to bitrate " << bps
+                      << " bps"
+                         ", requires at least "
+                      << spec.info.min_bitrate_bps << " bps.";
     return absl::nullopt;
   }
 
@@ -1181,7 +1182,7 @@
       return true;
     } else {
       RTC_LOG(LS_ERROR) << "Failed to SetBaseMinimumPlayoutDelayMs"
-                        << " on AudioReceiveStream on SSRC="
+                           " on AudioReceiveStream on SSRC="
                         << config_.rtp.remote_ssrc
                         << " with delay_ms=" << delay_ms;
       return false;
@@ -1351,7 +1352,8 @@
   auto it = send_streams_.find(ssrc);
   if (it == send_streams_.end()) {
     RTC_LOG(LS_WARNING) << "Attempting to get RTP send parameters for stream "
-                        << "with ssrc " << ssrc << " which doesn't exist.";
+                           "with ssrc "
+                        << ssrc << " which doesn't exist.";
     return webrtc::RtpParameters();
   }
 
@@ -1371,7 +1373,8 @@
   auto it = send_streams_.find(ssrc);
   if (it == send_streams_.end()) {
     RTC_LOG(LS_WARNING) << "Attempting to set RTP send parameters for stream "
-                        << "with ssrc " << ssrc << " which doesn't exist.";
+                           "with ssrc "
+                        << ssrc << " which doesn't exist.";
     return webrtc::RTCError(webrtc::RTCErrorType::INTERNAL_ERROR);
   }
 
@@ -1380,7 +1383,7 @@
   webrtc::RtpParameters current_parameters = GetRtpSendParameters(ssrc);
   if (current_parameters.codecs != parameters.codecs) {
     RTC_DLOG(LS_ERROR) << "Using SetParameters to change the set of codecs "
-                       << "is not currently supported.";
+                          "is not currently supported.";
     return webrtc::RTCError(webrtc::RTCErrorType::UNSUPPORTED_PARAMETER);
   }
 
@@ -1426,7 +1429,8 @@
   if (it == recv_streams_.end()) {
     RTC_LOG(LS_WARNING)
         << "Attempting to get RTP receive parameters for stream "
-        << "with ssrc " << ssrc << " which doesn't exist.";
+           "with ssrc "
+        << ssrc << " which doesn't exist.";
     return webrtc::RtpParameters();
   }
   rtp_params = it->second->GetRtpParameters();
diff --git a/media/sctp/sctp_transport.cc b/media/sctp/sctp_transport.cc
index 31489eb..3a083b42 100644
--- a/media/sctp/sctp_transport.cc
+++ b/media/sctp/sctp_transport.cc
@@ -284,7 +284,8 @@
                                   uint8_t set_df) {
     SctpTransport* transport = static_cast<SctpTransport*>(addr);
     RTC_LOG(LS_VERBOSE) << "global OnSctpOutboundPacket():"
-                        << "addr: " << addr << "; length: " << length
+                           "addr: "
+                        << addr << "; length: " << length
                         << "; tos: " << rtc::ToHex(tos)
                         << "; set_df: " << rtc::ToHex(set_df);
 
@@ -511,9 +512,11 @@
 bool SctpTransport::OpenStream(int sid) {
   RTC_DCHECK_RUN_ON(network_thread_);
   if (sid > kMaxSctpSid) {
-    RTC_LOG(LS_WARNING) << debug_name_ << "->OpenStream(...): "
-                        << "Not adding data stream "
-                        << "with sid=" << sid << " because sid is too high.";
+    RTC_LOG(LS_WARNING) << debug_name_
+                        << "->OpenStream(...): "
+                           "Not adding data stream "
+                           "with sid="
+                        << sid << " because sid is too high.";
     return false;
   }
   auto it = stream_status_by_sid_.find(sid);
@@ -522,16 +525,18 @@
     return true;
   }
   if (it->second.is_open()) {
-    RTC_LOG(LS_WARNING) << debug_name_ << "->OpenStream(...): "
-                        << "Not adding data stream "
-                        << "with sid=" << sid
-                        << " because stream is already open.";
+    RTC_LOG(LS_WARNING) << debug_name_
+                        << "->OpenStream(...): "
+                           "Not adding data stream "
+                           "with sid="
+                        << sid << " because stream is already open.";
     return false;
   } else {
-    RTC_LOG(LS_WARNING) << debug_name_ << "->OpenStream(...): "
-                        << "Not adding data stream "
-                        << " with sid=" << sid
-                        << " because stream is still closing.";
+    RTC_LOG(LS_WARNING) << debug_name_
+                        << "->OpenStream(...): "
+                           "Not adding data stream "
+                           " with sid="
+                        << sid << " because stream is still closing.";
     return false;
   }
 }
@@ -546,8 +551,9 @@
     return false;
   }
 
-  RTC_LOG(LS_VERBOSE) << debug_name_ << "->ResetStream(" << sid << "): "
-                      << "Queuing RE-CONFIG chunk.";
+  RTC_LOG(LS_VERBOSE) << debug_name_ << "->ResetStream(" << sid
+                      << "): "
+                         "Queuing RE-CONFIG chunk.";
   it->second.closure_initiated = true;
 
   // Signal our stream-reset logic that it should try to send now, if it can.
@@ -597,8 +603,9 @@
 SendDataResult SctpTransport::SendMessageInternal(OutgoingMessage* message) {
   RTC_DCHECK_RUN_ON(network_thread_);
   if (!sock_) {
-    RTC_LOG(LS_WARNING) << debug_name_ << "->SendMessageInternal(...): "
-                        << "Not sending packet with sid="
+    RTC_LOG(LS_WARNING) << debug_name_
+                        << "->SendMessageInternal(...): "
+                           "Not sending packet with sid="
                         << message->send_params().sid
                         << " len=" << message->size() << " before Start().";
     return SDR_ERROR;
@@ -607,8 +614,9 @@
     auto it = stream_status_by_sid_.find(message->send_params().sid);
     if (it == stream_status_by_sid_.end() || !it->second.is_open()) {
       RTC_LOG(LS_WARNING)
-          << debug_name_ << "->SendMessageInternal(...): "
-          << "Not sending data because sid is unknown or closing: "
+          << debug_name_
+          << "->SendMessageInternal(...): "
+             "Not sending data because sid is unknown or closing: "
           << message->send_params().sid;
       return SDR_ERROR;
     }
@@ -636,9 +644,9 @@
       return SDR_BLOCK;
     }
 
-    RTC_LOG_ERRNO(LS_ERROR)
-        << "ERROR:" << debug_name_ << "->SendMessageInternal(...): "
-        << " usrsctp_sendv: ";
+    RTC_LOG_ERRNO(LS_ERROR) << "ERROR:" << debug_name_
+                            << "->SendMessageInternal(...): "
+                               " usrsctp_sendv: ";
     return SDR_ERROR;
   }
 
@@ -711,9 +719,10 @@
   int connect_result = usrsctp_connect(
       sock_, reinterpret_cast<sockaddr*>(&remote_sconn), sizeof(remote_sconn));
   if (connect_result < 0 && errno != SCTP_EINPROGRESS) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->Connect(): "
-                            << "Failed usrsctp_connect. got errno=" << errno
-                            << ", but wanted " << SCTP_EINPROGRESS;
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->Connect(): "
+                               "Failed usrsctp_connect. got errno="
+                            << errno << ", but wanted " << SCTP_EINPROGRESS;
     CloseSctpSocket();
     return false;
   }
@@ -727,8 +736,9 @@
   params.spp_pathmtu = kSctpMtu - sizeof(struct sctp_common_header);
   if (usrsctp_setsockopt(sock_, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, &params,
                          sizeof(params))) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->Connect(): "
-                            << "Failed to set SCTP_PEER_ADDR_PARAMS.";
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->Connect(): "
+                               "Failed to set SCTP_PEER_ADDR_PARAMS.";
   }
   // Since this is a fresh SCTP association, we'll always start out with empty
   // queues, so "ReadyToSendData" should be true.
@@ -739,8 +749,9 @@
 bool SctpTransport::OpenSctpSocket() {
   RTC_DCHECK_RUN_ON(network_thread_);
   if (sock_) {
-    RTC_LOG(LS_WARNING) << debug_name_ << "->OpenSctpSocket(): "
-                        << "Ignoring attempt to re-create existing socket.";
+    RTC_LOG(LS_WARNING) << debug_name_
+                        << "->OpenSctpSocket(): "
+                           "Ignoring attempt to re-create existing socket.";
     return false;
   }
 
@@ -755,8 +766,9 @@
       AF_CONN, SOCK_STREAM, IPPROTO_SCTP, &UsrSctpWrapper::OnSctpInboundPacket,
       &UsrSctpWrapper::SendThresholdCallback, kSendThreshold, this);
   if (!sock_) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->OpenSctpSocket(): "
-                            << "Failed to create SCTP socket.";
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->OpenSctpSocket(): "
+                               "Failed to create SCTP socket.";
     UsrSctpWrapper::DecrementUsrSctpUsageCount();
     return false;
   }
@@ -779,8 +791,9 @@
   // Make the socket non-blocking. Connect, close, shutdown etc will not block
   // the thread waiting for the socket operation to complete.
   if (usrsctp_set_non_blocking(sock_, 1) < 0) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->ConfigureSctpSocket(): "
-                            << "Failed to set SCTP to non blocking.";
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->ConfigureSctpSocket(): "
+                               "Failed to set SCTP to non blocking.";
     return false;
   }
 
@@ -792,8 +805,9 @@
   linger_opt.l_linger = 0;
   if (usrsctp_setsockopt(sock_, SOL_SOCKET, SO_LINGER, &linger_opt,
                          sizeof(linger_opt))) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->ConfigureSctpSocket(): "
-                            << "Failed to set SO_LINGER.";
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->ConfigureSctpSocket(): "
+                               "Failed to set SO_LINGER.";
     return false;
   }
 
@@ -803,9 +817,9 @@
   stream_rst.assoc_value = 1;
   if (usrsctp_setsockopt(sock_, IPPROTO_SCTP, SCTP_ENABLE_STREAM_RESET,
                          &stream_rst, sizeof(stream_rst))) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->ConfigureSctpSocket(): "
-
-                            << "Failed to set SCTP_ENABLE_STREAM_RESET.";
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->ConfigureSctpSocket(): "
+                               "Failed to set SCTP_ENABLE_STREAM_RESET.";
     return false;
   }
 
@@ -813,8 +827,9 @@
   uint32_t nodelay = 1;
   if (usrsctp_setsockopt(sock_, IPPROTO_SCTP, SCTP_NODELAY, &nodelay,
                          sizeof(nodelay))) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->ConfigureSctpSocket(): "
-                            << "Failed to set SCTP_NODELAY.";
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->ConfigureSctpSocket(): "
+                               "Failed to set SCTP_NODELAY.";
     return false;
   }
 
@@ -822,8 +837,9 @@
   uint32_t eor = 1;
   if (usrsctp_setsockopt(sock_, IPPROTO_SCTP, SCTP_EXPLICIT_EOR, &eor,
                          sizeof(eor))) {
-    RTC_LOG_ERRNO(LS_ERROR) << debug_name_ << "->ConfigureSctpSocket(): "
-                            << "Failed to set SCTP_EXPLICIT_EOR.";
+    RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                            << "->ConfigureSctpSocket(): "
+                               "Failed to set SCTP_EXPLICIT_EOR.";
     return false;
   }
 
@@ -838,10 +854,10 @@
     event.se_type = event_types[i];
     if (usrsctp_setsockopt(sock_, IPPROTO_SCTP, SCTP_EVENT, &event,
                            sizeof(event)) < 0) {
-      RTC_LOG_ERRNO(LS_ERROR)
-          << debug_name_ << "->ConfigureSctpSocket(): "
-
-          << "Failed to set SCTP_EVENT type: " << event.se_type;
+      RTC_LOG_ERRNO(LS_ERROR) << debug_name_
+                              << "->ConfigureSctpSocket(): "
+                                 "Failed to set SCTP_EVENT type: "
+                              << event.se_type;
       return false;
     }
   }
@@ -974,8 +990,10 @@
     return;
   }
 
-  RTC_LOG(LS_VERBOSE) << debug_name_ << "->OnPacketRead(...): "
-                      << " length=" << len << ", started: " << started_;
+  RTC_LOG(LS_VERBOSE) << debug_name_
+                      << "->OnPacketRead(...): "
+                         " length="
+                      << len << ", started: " << started_;
   // Only give receiving packets to usrsctp after if connected. This enables two
   // peers to each make a connect call, but for them not to receive an INIT
   // packet before they have called connect; least the last receiver of the INIT
@@ -1023,10 +1041,11 @@
     const rtc::CopyOnWriteBuffer& buffer) {
   RTC_DCHECK_RUN_ON(network_thread_);
   if (buffer.size() > (kSctpMtu)) {
-    RTC_LOG(LS_ERROR) << debug_name_ << "->OnPacketFromSctpToNetwork(...): "
-                      << "SCTP seems to have made a packet that is bigger "
-                      << "than its official MTU: " << buffer.size()
-                      << " vs max of " << kSctpMtu;
+    RTC_LOG(LS_ERROR) << debug_name_
+                      << "->OnPacketFromSctpToNetwork(...): "
+                         "SCTP seems to have made a packet that is bigger "
+                         "than its official MTU: "
+                      << buffer.size() << " vs max of " << kSctpMtu;
   }
   TRACE_EVENT0("webrtc", "SctpTransport::OnPacketFromSctpToNetwork");
 
@@ -1048,8 +1067,9 @@
   RTC_DCHECK_RUN_ON(network_thread_);
   RTC_LOG(LS_VERBOSE) << debug_name_
                       << "->OnInboundPacketFromSctpToTransport(...): "
-                      << "Received SCTP data:"
-                      << " sid=" << params.sid
+                         "Received SCTP data:"
+                         " sid="
+                      << params.sid
                       << " notification: " << (flags & MSG_NOTIFICATION)
                       << " length=" << buffer.size();
   // Sending a packet with data == NULL (no data) is SCTPs "close the
@@ -1071,9 +1091,10 @@
     const ReceiveDataParams& params,
     const rtc::CopyOnWriteBuffer& buffer) {
   RTC_DCHECK_RUN_ON(network_thread_);
-  RTC_LOG(LS_VERBOSE) << debug_name_ << "->OnDataFromSctpToTransport(...): "
-                      << "Posting with length: " << buffer.size()
-                      << " on stream " << params.sid;
+  RTC_LOG(LS_VERBOSE) << debug_name_
+                      << "->OnDataFromSctpToTransport(...): "
+                         "Posting with length: "
+                      << buffer.size() << " on stream " << params.sid;
   // Reports all received messages to upper layers, no matter whether the sid
   // is known.
   SignalDataReceived(params, buffer);
@@ -1119,7 +1140,7 @@
       const struct sctp_send_failed_event& ssfe =
           notification.sn_send_failed_event;
       RTC_LOG(LS_WARNING) << "SCTP_SEND_FAILED_EVENT: message with"
-                          << " PPID = "
+                             " PPID = "
                           << rtc::NetworkToHost32(ssfe.ssfe_info.snd_ppid)
                           << " SID = " << ssfe.ssfe_info.snd_sid
                           << " flags = " << rtc::ToHex(ssfe.ssfe_info.snd_flags)
diff --git a/modules/audio_coding/neteq/decision_logic.cc b/modules/audio_coding/neteq/decision_logic.cc
index b223b2d..8e1ffaf 100644
--- a/modules/audio_coding/neteq/decision_logic.cc
+++ b/modules/audio_coding/neteq/decision_logic.cc
@@ -53,7 +53,8 @@
       {&estimate_dtx_delay_, &time_stretch_cn_, &target_level_window_ms_},
       field_trial_name);
   RTC_LOG(LS_INFO) << "NetEq decision logic settings:"
-                   << " estimate_dtx_delay=" << estimate_dtx_delay_
+                      " estimate_dtx_delay="
+                   << estimate_dtx_delay_
                    << " time_stretch_cn=" << time_stretch_cn_
                    << " target_level_window_ms=" << target_level_window_ms_;
 }
diff --git a/modules/audio_coding/neteq/delay_manager.cc b/modules/audio_coding/neteq/delay_manager.cc
index 0003d32..4ae6d10 100644
--- a/modules/audio_coding/neteq/delay_manager.cc
+++ b/modules/audio_coding/neteq/delay_manager.cc
@@ -71,7 +71,8 @@
     }
   }
   RTC_LOG(LS_INFO) << "Delay histogram config:"
-                   << " quantile=" << config.quantile
+                      " quantile="
+                   << config.quantile
                    << " forget_factor=" << config.forget_factor
                    << " start_forget_weight="
                    << config.start_forget_weight.value_or(0);
diff --git a/modules/audio_coding/neteq/neteq_impl.cc b/modules/audio_coding/neteq/neteq_impl.cc
index 05e7b73..d0945d7 100644
--- a/modules/audio_coding/neteq/neteq_impl.cc
+++ b/modules/audio_coding/neteq/neteq_impl.cc
@@ -141,8 +141,9 @@
   RTC_LOG(LS_INFO) << "NetEq config: " << config.ToString();
   int fs = config.sample_rate_hz;
   if (fs != 8000 && fs != 16000 && fs != 32000 && fs != 48000) {
-    RTC_LOG(LS_ERROR) << "Sample rate " << fs << " Hz not supported. "
-                      << "Changing to 8000 Hz.";
+    RTC_LOG(LS_ERROR) << "Sample rate " << fs
+                      << " Hz not supported. "
+                         "Changing to 8000 Hz.";
     fs = 8000;
   }
   controller_->SetMaximumDelay(config.max_delay_ms);
diff --git a/modules/audio_coding/neteq/tools/neteq_input.cc b/modules/audio_coding/neteq/tools/neteq_input.cc
index 645894d..de41634 100644
--- a/modules/audio_coding/neteq/tools/neteq_input.cc
+++ b/modules/audio_coding/neteq/tools/neteq_input.cc
@@ -21,13 +21,24 @@
 std::string NetEqInput::PacketData::ToString() const {
   rtc::StringBuilder ss;
   ss << "{"
-     << "time_ms: " << static_cast<int64_t>(time_ms) << ", "
-     << "header: {"
-     << "pt: " << static_cast<int>(header.payloadType) << ", "
-     << "sn: " << header.sequenceNumber << ", "
-     << "ts: " << header.timestamp << ", "
-     << "ssrc: " << header.ssrc << "}, "
-     << "payload bytes: " << payload.size() << "}";
+        "time_ms: "
+     << static_cast<int64_t>(time_ms)
+     << ", "
+        "header: {"
+        "pt: "
+     << static_cast<int>(header.payloadType)
+     << ", "
+        "sn: "
+     << header.sequenceNumber
+     << ", "
+        "ts: "
+     << header.timestamp
+     << ", "
+        "ssrc: "
+     << header.ssrc
+     << "}, "
+        "payload bytes: "
+     << payload.size() << "}";
   return ss.Release();
 }
 
diff --git a/modules/audio_coding/neteq/tools/neteq_rtpplay.cc b/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
index aa73b85..b37bea1 100644
--- a/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
+++ b/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
@@ -242,8 +242,9 @@
   bool output_files_base_name_specified = !output_files_base_name.empty();
   if (!textlog && !plotting && output_files_base_name_specified) {
     std::cout << "Error: --output_files_base_name cannot be used without at "
-              << "least one of the following flags: --textlog, --matlabplot, "
-              << "--pythonplot." << std::endl;
+                 "least one of the following flags: --textlog, --matlabplot, "
+                 "--pythonplot."
+              << std::endl;
     return false;
   }
   // Without |output_audio_filename|, |output_files_base_name| is required when
@@ -252,8 +253,9 @@
   if (output_audio_filename.empty() && plotting &&
       !output_files_base_name_specified) {
     std::cout << "Error: when no output audio file is specified and "
-              << "--matlabplot and/or --pythonplot are used, "
-              << "--output_files_base_name must be also used." << std::endl;
+                 "--matlabplot and/or --pythonplot are used, "
+                 "--output_files_base_name must be also used."
+              << std::endl;
     return false;
   }
   return true;
diff --git a/modules/audio_device/android/aaudio_player.cc b/modules/audio_device/android/aaudio_player.cc
index def0322..6d310ed 100644
--- a/modules/audio_device/android/aaudio_player.cc
+++ b/modules/audio_device/android/aaudio_player.cc
@@ -158,7 +158,8 @@
   // utilized.
   if (first_data_callback_) {
     RTC_LOG(INFO) << "--- First output data callback: "
-                  << "device id=" << aaudio_.device_id();
+                     "device id="
+                  << aaudio_.device_id();
     first_data_callback_ = false;
   }
 
diff --git a/modules/audio_device/android/aaudio_recorder.cc b/modules/audio_device/android/aaudio_recorder.cc
index 3c5dae9..3a29bb8 100644
--- a/modules/audio_device/android/aaudio_recorder.cc
+++ b/modules/audio_device/android/aaudio_recorder.cc
@@ -161,7 +161,8 @@
   // is obtained.
   if (first_data_callback_) {
     RTC_LOG(INFO) << "--- First input data callback: "
-                  << "device id=" << aaudio_.device_id();
+                     "device id="
+                  << aaudio_.device_id();
     aaudio_.ClearInputStream(audio_data, num_frames);
     first_data_callback_ = false;
   }
diff --git a/modules/audio_device/android/audio_manager.cc b/modules/audio_device/android/audio_manager.cc
index 9c2bdd4..9c8137b 100644
--- a/modules/audio_device/android/audio_manager.cc
+++ b/modules/audio_device/android/audio_manager.cc
@@ -275,7 +275,8 @@
                                           jint input_buffer_size) {
   RTC_LOG(INFO)
       << "OnCacheAudioParameters: "
-      << "hardware_aec: " << static_cast<bool>(hardware_aec)
+         "hardware_aec: "
+      << static_cast<bool>(hardware_aec)
       << ", hardware_agc: " << static_cast<bool>(hardware_agc)
       << ", hardware_ns: " << static_cast<bool>(hardware_ns)
       << ", low_latency_output: " << static_cast<bool>(low_latency_output)
diff --git a/modules/audio_device/audio_device_buffer.cc b/modules/audio_device/audio_device_buffer.cc
index 8b56330..336846e 100644
--- a/modules/audio_device/audio_device_buffer.cc
+++ b/modules/audio_device/audio_device_buffer.cc
@@ -413,11 +413,19 @@
                                abs_diff_rate_in_percent);
       RTC_LOG(INFO) << "[REC : " << time_since_last << "msec, "
                     << rec_sample_rate / 1000 << "kHz] callbacks: "
-                    << stats.rec_callbacks - last_stats_.rec_callbacks << ", "
-                    << "samples: " << diff_samples << ", "
-                    << "rate: " << static_cast<int>(rate + 0.5) << ", "
-                    << "rate diff: " << abs_diff_rate_in_percent << "%, "
-                    << "level: " << stats.max_rec_level;
+                    << stats.rec_callbacks - last_stats_.rec_callbacks
+                    << ", "
+                       "samples: "
+                    << diff_samples
+                    << ", "
+                       "rate: "
+                    << static_cast<int>(rate + 0.5)
+                    << ", "
+                       "rate diff: "
+                    << abs_diff_rate_in_percent
+                    << "%, "
+                       "level: "
+                    << stats.max_rec_level;
     }
 
     diff_samples = stats.play_samples - last_stats_.play_samples;
@@ -431,11 +439,19 @@
                                abs_diff_rate_in_percent);
       RTC_LOG(INFO) << "[PLAY: " << time_since_last << "msec, "
                     << play_sample_rate / 1000 << "kHz] callbacks: "
-                    << stats.play_callbacks - last_stats_.play_callbacks << ", "
-                    << "samples: " << diff_samples << ", "
-                    << "rate: " << static_cast<int>(rate + 0.5) << ", "
-                    << "rate diff: " << abs_diff_rate_in_percent << "%, "
-                    << "level: " << stats.max_play_level;
+                    << stats.play_callbacks - last_stats_.play_callbacks
+                    << ", "
+                       "samples: "
+                    << diff_samples
+                    << ", "
+                       "rate: "
+                    << static_cast<int>(rate + 0.5)
+                    << ", "
+                       "rate diff: "
+                    << abs_diff_rate_in_percent
+                    << "%, "
+                       "level: "
+                    << stats.max_play_level;
     }
   }
   last_stats_ = stats;
diff --git a/modules/audio_device/dummy/file_audio_device_factory.cc b/modules/audio_device/dummy/file_audio_device_factory.cc
index 60ef92b..0f56e06 100644
--- a/modules/audio_device/dummy/file_audio_device_factory.cc
+++ b/modules/audio_device/dummy/file_audio_device_factory.cc
@@ -29,8 +29,8 @@
   if (!_isConfigured) {
     RTC_LOG(LS_WARNING)
         << "WebRTC configured with WEBRTC_DUMMY_FILE_DEVICES but "
-        << "no device files supplied. Will fall back to dummy "
-        << "audio.";
+           "no device files supplied. Will fall back to dummy "
+           "audio.";
 
     return nullptr;
   }
diff --git a/modules/audio_device/linux/audio_mixer_manager_alsa_linux.cc b/modules/audio_device/linux/audio_mixer_manager_alsa_linux.cc
index 8a755f6..4368ec9 100644
--- a/modules/audio_device/linux/audio_mixer_manager_alsa_linux.cc
+++ b/modules/audio_device/linux/audio_mixer_manager_alsa_linux.cc
@@ -181,7 +181,8 @@
   if (errVal < 0) {
     RTC_LOG(LS_ERROR)
         << "snd_mixer_selem_register(_outputMixerHandle, NULL, NULL), "
-        << "error: " << LATE(snd_strerror)(errVal);
+           "error: "
+        << LATE(snd_strerror)(errVal);
     _outputMixerHandle = NULL;
     return -1;
   }
@@ -262,7 +263,8 @@
   if (errVal < 0) {
     RTC_LOG(LS_ERROR)
         << "snd_mixer_selem_register(_inputMixerHandle, NULL, NULL), "
-        << "error: " << LATE(snd_strerror)(errVal);
+           "error: "
+        << LATE(snd_strerror)(errVal);
 
     _inputMixerHandle = NULL;
     return -1;
diff --git a/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc b/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc
index 3728a3d..c507e62 100644
--- a/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc
+++ b/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc
@@ -455,7 +455,8 @@
 
   RTC_LOG(LS_VERBOSE)
       << "AudioMixerManagerLinuxPulse::StereoRecordingIsAvailable()"
-      << " => available=" << available;
+         " => available="
+      << available;
 
   return 0;
 }
diff --git a/modules/audio_device/mac/audio_device_mac.cc b/modules/audio_device/mac/audio_device_mac.cc
index 345935f..e894cf3 100644
--- a/modules/audio_device/mac/audio_device_mac.cc
+++ b/modules/audio_device/mac/audio_device_mac.cc
@@ -1034,7 +1034,7 @@
 
   if (_outStreamFormat.mFormatFlags & kAudioFormatFlagIsNonInterleaved) {
     RTC_LOG(LS_ERROR) << "Non-interleaved audio data is not supported."
-                      << "AudioHardware streams should not have this format.";
+                         "AudioHardware streams should not have this format.";
     return -1;
   }
 
@@ -1333,7 +1333,7 @@
       if (!_stopEventRec.Wait(2000)) {
         rtc::CritScope critScoped(&_critSect);
         RTC_LOG(LS_WARNING) << "Timed out stopping the capture IOProc."
-                            << "We may have failed to detect a device removal.";
+                               "We may have failed to detect a device removal.";
         WEBRTC_CA_LOG_WARN(AudioDeviceStop(_inputDeviceID, _inDeviceIOProcID));
         WEBRTC_CA_LOG_WARN(
             AudioDeviceDestroyIOProcID(_inputDeviceID, _inDeviceIOProcID));
@@ -1361,7 +1361,7 @@
       if (!_stopEvent.Wait(2000)) {
         rtc::CritScope critScoped(&_critSect);
         RTC_LOG(LS_WARNING) << "Timed out stopping the shared IOProc."
-                            << "We may have failed to detect a device removal.";
+                               "We may have failed to detect a device removal.";
         // We assume rendering on a shared device has stopped as well if
         // the IOProc times out.
         WEBRTC_CA_LOG_WARN(AudioDeviceStop(_outputDeviceID, _deviceIOProcID));
@@ -1468,7 +1468,7 @@
     if (!_stopEvent.Wait(2000)) {
       rtc::CritScope critScoped(&_critSect);
       RTC_LOG(LS_WARNING) << "Timed out stopping the render IOProc."
-                          << "We may have failed to detect a device removal.";
+                             "We may have failed to detect a device removal.";
 
       // We assume capturing on a shared device has stopped as well if the
       // IOProc times out.
diff --git a/modules/audio_device/win/audio_device_core_win.cc b/modules/audio_device/win/audio_device_core_win.cc
index fbcd7fc..a7aecb0 100644
--- a/modules/audio_device/win/audio_device_core_win.cc
+++ b/modules/audio_device/win/audio_device_core_win.cc
@@ -265,10 +265,10 @@
 
   if (FAILED(hr)) {
     RTC_LOG(LS_ERROR) << "AudioDeviceWindowsCore::CoreAudioIsSupported()"
-                      << " Failed to create the required COM object (hr=" << hr
-                      << ")";
+                         " Failed to create the required COM object (hr="
+                      << hr << ")";
     RTC_LOG(LS_VERBOSE) << "AudioDeviceWindowsCore::CoreAudioIsSupported()"
-                        << " CoCreateInstance(MMDeviceEnumerator) failed (hr="
+                           " CoCreateInstance(MMDeviceEnumerator) failed (hr="
                         << hr << ")";
 
     const DWORD dwFlags =
@@ -295,7 +295,8 @@
     MMDeviceIsAvailable = true;
     RTC_LOG(LS_VERBOSE)
         << "AudioDeviceWindowsCore::CoreAudioIsSupported()"
-        << " CoCreateInstance(MMDeviceEnumerator) succeeded (hr=" << hr << ")";
+           " CoCreateInstance(MMDeviceEnumerator) succeeded (hr="
+        << hr << ")";
     SAFE_RELEASE(pIMMD);
   }
 
@@ -404,7 +405,7 @@
       // Handle is valid (should only happen if OS larger than vista & win7).
       // Try to get the function addresses.
       RTC_LOG(LS_VERBOSE) << "AudioDeviceWindowsCore::AudioDeviceWindowsCore()"
-                          << " The Avrt DLL module is now loaded";
+                             " The Avrt DLL module is now loaded";
 
       _PAvRevertMmThreadCharacteristics =
           (PAvRevertMmThreadCharacteristics)GetProcAddress(
@@ -419,13 +420,13 @@
           _PAvSetMmThreadCharacteristicsA && _PAvSetMmThreadPriority) {
         RTC_LOG(LS_VERBOSE)
             << "AudioDeviceWindowsCore::AudioDeviceWindowsCore()"
-            << " AvRevertMmThreadCharacteristics() is OK";
+               " AvRevertMmThreadCharacteristics() is OK";
         RTC_LOG(LS_VERBOSE)
             << "AudioDeviceWindowsCore::AudioDeviceWindowsCore()"
-            << " AvSetMmThreadCharacteristicsA() is OK";
+               " AvSetMmThreadCharacteristicsA() is OK";
         RTC_LOG(LS_VERBOSE)
             << "AudioDeviceWindowsCore::AudioDeviceWindowsCore()"
-            << " AvSetMmThreadPriority() is OK";
+               " AvSetMmThreadPriority() is OK";
         _winSupportAvrt = true;
       }
     }
@@ -535,10 +536,10 @@
     if (!freeOK) {
       RTC_LOG(LS_WARNING)
           << "AudioDeviceWindowsCore::~AudioDeviceWindowsCore()"
-          << " failed to free the loaded Avrt DLL module correctly";
+             " failed to free the loaded Avrt DLL module correctly";
     } else {
       RTC_LOG(LS_WARNING) << "AudioDeviceWindowsCore::~AudioDeviceWindowsCore()"
-                          << " the Avrt DLL module is now unloaded";
+                             " the Avrt DLL module is now unloaded";
     }
   }
 }
@@ -653,7 +654,7 @@
     int16_t nDevices = PlayoutDevices();
     if (_outputDeviceIndex > (nDevices - 1)) {
       RTC_LOG(LS_ERROR) << "current device selection is invalid => unable to"
-                        << " initialize";
+                           " initialize";
       return -1;
     }
   }
@@ -722,7 +723,7 @@
     int16_t nDevices = RecordingDevices();
     if (_inputDeviceIndex > (nDevices - 1)) {
       RTC_LOG(LS_ERROR) << "current device selection is invalid => unable to"
-                        << " initialize";
+                           " initialize";
       return -1;
     }
   }
@@ -1878,8 +1879,8 @@
           RTC_LOG(INFO) << "nChannels=" << Wfx.nChannels
                         << ", nSamplesPerSec=" << Wfx.nSamplesPerSec
                         << " is not supported. Closest match: "
-                        << "nChannels=" << pWfxClosestMatch->nChannels
-                        << ", nSamplesPerSec="
+                           "nChannels="
+                        << pWfxClosestMatch->nChannels << ", nSamplesPerSec="
                         << pWfxClosestMatch->nSamplesPerSec;
           CoTaskMemFree(pWfxClosestMatch);
           pWfxClosestMatch = NULL;
@@ -2199,8 +2200,8 @@
           RTC_LOG(INFO) << "nChannels=" << Wfx.Format.nChannels
                         << ", nSamplesPerSec=" << Wfx.Format.nSamplesPerSec
                         << " is not supported. Closest match: "
-                        << "nChannels=" << pWfxClosestMatch->nChannels
-                        << ", nSamplesPerSec="
+                           "nChannels="
+                        << pWfxClosestMatch->nChannels << ", nSamplesPerSec="
                         << pWfxClosestMatch->nSamplesPerSec;
           CoTaskMemFree(pWfxClosestMatch);
           pWfxClosestMatch = NULL;
@@ -2338,7 +2339,7 @@
         // give it render data to process.
         RTC_LOG(LS_ERROR)
             << "Playout must be started before recording when using"
-            << " the built-in AEC";
+               " the built-in AEC";
         return -1;
       }
     }
@@ -2571,7 +2572,7 @@
       // playout to stop properly.
       RTC_LOG(LS_WARNING)
           << "Recording should be stopped before playout when using the"
-          << " built-in AEC";
+             " built-in AEC";
     }
 
     // Reset the playout delay value.
@@ -2822,7 +2823,7 @@
             _UnLock();
             RTC_LOG(LS_ERROR)
                 << "output state has been modified during unlocked"
-                << " period";
+                   " period";
             goto Exit;
           }
           if (nSamples != static_cast<int32_t>(_playBlockSize)) {
@@ -3261,7 +3262,7 @@
             if (_ptrCaptureClient == NULL || _ptrClientIn == NULL) {
               _UnLock();
               RTC_LOG(LS_ERROR) << "input state has been modified during"
-                                << " unlocked period";
+                                   " unlocked period";
               goto Exit;
             }
           }
@@ -3282,7 +3283,7 @@
         // IAudioClient::Stop, IAudioClient::Reset, and releasing the audio
         // client.
         RTC_LOG(LS_ERROR) << "IAudioCaptureClient::GetBuffer returned"
-                          << " AUDCLNT_E_BUFFER_ERROR, hr = 0x"
+                             " AUDCLNT_E_BUFFER_ERROR, hr = 0x"
                           << rtc::ToHex(hr);
         goto Exit;
       }
@@ -3815,14 +3816,16 @@
   if ((SUCCEEDED(hr)) && (VT_EMPTY == varName.vt)) {
     hr = E_FAIL;
     RTC_LOG(LS_ERROR) << "IPropertyStore::GetValue returned no value,"
-                      << " hr = 0x" << rtc::ToHex(hr);
+                         " hr = 0x"
+                      << rtc::ToHex(hr);
   }
 
   if ((SUCCEEDED(hr)) && (VT_LPWSTR != varName.vt)) {
     // The returned value is not a wide null terminated string.
     hr = E_UNEXPECTED;
     RTC_LOG(LS_ERROR) << "IPropertyStore::GetValue returned unexpected"
-                      << " type, hr = 0x" << rtc::ToHex(hr);
+                         " type, hr = 0x"
+                      << rtc::ToHex(hr);
   }
 
   if (SUCCEEDED(hr) && (varName.pwszVal != NULL)) {
diff --git a/modules/audio_device/win/core_audio_utility_win.cc b/modules/audio_device/win/core_audio_utility_win.cc
index 29f73c2..a570bfe 100644
--- a/modules/audio_device/win/core_audio_utility_win.cc
+++ b/modules/audio_device/win/core_audio_utility_win.cc
@@ -284,7 +284,8 @@
                                        EDataFlow data_flow,
                                        ERole role) {
   RTC_DLOG(INFO) << "CreateDeviceInternal: "
-                 << "id=" << device_id << ", flow=" << FlowToString(data_flow)
+                    "id="
+                 << device_id << ", flow=" << FlowToString(data_flow)
                  << ", role=" << RoleToString(role);
   ComPtr<IMMDevice> audio_endpoint_device;
 
@@ -967,7 +968,7 @@
     // This API seems to be supported in off-load mode only but it is not
     // documented as a valid error code. Making a special note about it here.
     RTC_LOG(LS_ERROR) << "IAudioClient2::GetBufferSizeLimits failed: "
-                      << "AUDCLNT_E_OFFLOAD_MODE_ONLY";
+                         "AUDCLNT_E_OFFLOAD_MODE_ONLY";
   } else if (FAILED(error.Error())) {
     RTC_LOG(LS_ERROR) << "IAudioClient2::GetBufferSizeLimits failed: "
                       << ErrorToString(error);
diff --git a/modules/audio_mixer/audio_mixer_test.cc b/modules/audio_mixer/audio_mixer_test.cc
index 816d229..5bdc485 100644
--- a/modules/audio_mixer/audio_mixer_test.cc
+++ b/modules/audio_mixer/audio_mixer_test.cc
@@ -144,9 +144,14 @@
   // Print stats.
   std::cout << "Limiting is: " << (absl::GetFlag(FLAGS_limiter) ? "on" : "off")
             << "\n"
-            << "Channels: " << num_channels << "\n"
-            << "Rate: " << sample_rate << "\n"
-            << "Number of input streams: " << input_files.size() << "\n";
+               "Channels: "
+            << num_channels
+            << "\n"
+               "Rate: "
+            << sample_rate
+            << "\n"
+               "Number of input streams: "
+            << input_files.size() << "\n";
   for (const auto& source : sources) {
     std::cout << "\t" << source.ToString() << "\n";
   }
diff --git a/modules/audio_processing/agc/agc_manager_direct.cc b/modules/audio_processing/agc/agc_manager_direct.cc
index 8af7c2d..999e19b 100644
--- a/modules/audio_processing/agc/agc_manager_direct.cc
+++ b/modules/audio_processing/agc/agc_manager_direct.cc
@@ -244,9 +244,13 @@
   }
 
   stream_analog_level_ = new_level;
-  RTC_DLOG(LS_INFO) << "[agc] voe_level=" << voe_level << ", "
-                    << "level_=" << level_ << ", "
-                    << "new_level=" << new_level;
+  RTC_DLOG(LS_INFO) << "[agc] voe_level=" << voe_level
+                    << ", "
+                       "level_="
+                    << level_
+                    << ", "
+                       "new_level="
+                    << new_level;
   level_ = new_level;
 }
 
diff --git a/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc b/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc
index af3619b..f24a76f 100644
--- a/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc
+++ b/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc
@@ -362,7 +362,7 @@
     }
     RTC_DCHECK_NE(candidate_pitch_period, candidate_pitch_secondary_period)
         << "The lower pitch period and the additional sub-harmonic must not "
-        << "coincide.";
+           "coincide.";
     // Compute an auto-correlation score for the primary pitch candidate
     // |candidate_pitch_period| by also looking at its possible sub-harmonic
     // |candidate_pitch_secondary_period|.
diff --git a/modules/audio_processing/agc2/rnn_vad/rnn.cc b/modules/audio_processing/agc2/rnn_vad/rnn.cc
index 1cd8ae7..55a51ff 100644
--- a/modules/audio_processing/agc2/rnn_vad/rnn.cc
+++ b/modules/audio_processing/agc2/rnn_vad/rnn.cc
@@ -331,7 +331,7 @@
       optimization_(optimization) {
   RTC_DCHECK_LE(output_size_, kRecurrentLayersMaxUnits)
       << "Static over-allocation of recurrent layers state vectors is not "
-      << "sufficient.";
+         "sufficient.";
   RTC_DCHECK_EQ(kNumGruGates * output_size_, bias_.size())
       << "Mismatching output size and bias terms array size.";
   RTC_DCHECK_EQ(kNumGruGates * input_size_ * output_size_, weights_.size())
@@ -339,7 +339,7 @@
   RTC_DCHECK_EQ(kNumGruGates * output_size_ * output_size_,
                 recurrent_weights_.size())
       << "Mismatching input-output size and recurrent weight coefficients array"
-      << " size.";
+         " size.";
   Reset();
 }
 
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index 1c88581..a0d9dd1 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -352,7 +352,8 @@
                  EnforceSplitBandHpf()),
       capture_nonlocked_() {
   RTC_LOG(LS_INFO) << "Injected APM submodules:"
-                   << "\nEcho control factory: " << !!echo_control_factory_
+                      "\nEcho control factory: "
+                   << !!echo_control_factory_
                    << "\nEcho detector: " << !!submodules_.echo_detector
                    << "\nCapture analyzer: " << !!submodules_.capture_analyzer
                    << "\nCapture post processor: "
diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc
index 8f9e535..3911f31 100644
--- a/modules/audio_processing/audio_processing_unittest.cc
+++ b/modules/audio_processing/audio_processing_unittest.cc
@@ -2174,21 +2174,36 @@
                              size_t capture_output_num_channels) {
   rtc::StringBuilder ss;
   ss << "Sample rates:"
+        "\n"
+        " Render input: "
+     << render_input_sample_rate_hz
+     << " Hz"
+        "\n"
+        " Render output: "
+     << render_output_sample_rate_hz
+     << " Hz"
+        "\n"
+        " Capture input: "
+     << capture_input_sample_rate_hz
+     << " Hz"
+        "\n"
+        " Capture output: "
+     << capture_output_sample_rate_hz
+     << " Hz"
+        "\n"
+        "Number of channels:"
+        "\n"
+        " Render input: "
+     << render_input_num_channels
      << "\n"
-     << " Render input: " << render_input_sample_rate_hz << " Hz"
+        " Render output: "
+     << render_output_num_channels
      << "\n"
-     << " Render output: " << render_output_sample_rate_hz << " Hz"
+        " Capture input: "
+     << capture_input_num_channels
      << "\n"
-     << " Capture input: " << capture_input_sample_rate_hz << " Hz"
-     << "\n"
-     << " Capture output: " << capture_output_sample_rate_hz << " Hz"
-     << "\n"
-     << "Number of channels:"
-     << "\n"
-     << " Render input: " << render_input_num_channels << "\n"
-     << " Render output: " << render_output_num_channels << "\n"
-     << " Capture input: " << capture_input_num_channels << "\n"
-     << " Capture output: " << capture_output_num_channels;
+        " Capture output: "
+     << capture_output_num_channels;
   return ss.Release();
 }
 
diff --git a/modules/audio_processing/gain_controller2.cc b/modules/audio_processing/gain_controller2.cc
index 8c764f8..b15a266 100644
--- a/modules/audio_processing/gain_controller2.cc
+++ b/modules/audio_processing/gain_controller2.cc
@@ -107,15 +107,15 @@
   // clang-format off
   // clang formatting doesn't respect custom nested style.
   ss << "{"
-     << "enabled: " << (config.enabled ? "true" : "false") << ", "
-     << "fixed_digital: {gain_db: " << config.fixed_digital.gain_db << "}, "
-     << "adaptive_digital: {"
-      << "enabled: "
-        << (config.adaptive_digital.enabled ? "true" : "false") << ", "
-      << "level_estimator: " << adaptive_digital_level_estimator << ", "
-      << "extra_saturation_margin_db:"
-        << config.adaptive_digital.extra_saturation_margin_db << "}"
-      << "}";
+        "enabled: " << (config.enabled ? "true" : "false") << ", "
+        "fixed_digital: {gain_db: " << config.fixed_digital.gain_db << "}, "
+        "adaptive_digital: {"
+          "enabled: "
+            << (config.adaptive_digital.enabled ? "true" : "false") << ", "
+          "level_estimator: " << adaptive_digital_level_estimator << ", "
+          "extra_saturation_margin_db:"
+            << config.adaptive_digital.extra_saturation_margin_db << "}"
+          "}";
   // clang-format on
   return ss.Release();
 }
diff --git a/modules/audio_processing/include/audio_processing.cc b/modules/audio_processing/include/audio_processing.cc
index 98ec590..30d025d 100644
--- a/modules/audio_processing/include/audio_processing.cc
+++ b/modules/audio_processing/include/audio_processing.cc
@@ -72,13 +72,16 @@
   char buf[1024];
   rtc::SimpleStringBuilder builder(buf);
   builder << "AudioProcessing::Config{ "
-          << "pipeline: {"
-          << "maximum_internal_processing_rate: "
+             "pipeline: {"
+             "maximum_internal_processing_rate: "
           << pipeline.maximum_internal_processing_rate
-          << ", multi_channel_render: " << pipeline.multi_channel_render << ", "
-          << ", multi_channel_capture: " << pipeline.multi_channel_capture
+          << ", multi_channel_render: " << pipeline.multi_channel_render
+          << ", "
+             ", multi_channel_capture: "
+          << pipeline.multi_channel_capture
           << "}, "
-          << "pre_amplifier: { enabled: " << pre_amplifier.enabled
+             "pre_amplifier: { enabled: "
+          << pre_amplifier.enabled
           << ", fixed_gain_factor: " << pre_amplifier.fixed_gain_factor
           << " }, high_pass_filter: { enabled: " << high_pass_filter.enabled
           << " }, echo_canceller: { enabled: " << echo_canceller.enabled
diff --git a/modules/audio_processing/test/py_quality_assessment/quality_assessment/sound_level.cc b/modules/audio_processing/test/py_quality_assessment/quality_assessment/sound_level.cc
index de084d3..d58b57e 100644
--- a/modules/audio_processing/test/py_quality_assessment/quality_assessment/sound_level.cc
+++ b/modules/audio_processing/test/py_quality_assessment/quality_assessment/sound_level.cc
@@ -76,9 +76,14 @@
   // Write config to file.
   std::ofstream out_config(config_output_file);
   out_config << "{"
-             << "'frame_len_ms': " << absl::GetFlag(FLAGS_f) << ", "
-             << "'attack_ms': " << absl::GetFlag(FLAGS_a) << ", "
-             << "'decay_ms': " << absl::GetFlag(FLAGS_d) << "}\n";
+                "'frame_len_ms': "
+             << absl::GetFlag(FLAGS_f)
+             << ", "
+                "'attack_ms': "
+             << absl::GetFlag(FLAGS_a)
+             << ", "
+                "'decay_ms': "
+             << absl::GetFlag(FLAGS_d) << "}\n";
   out_config.close();
 
   // Measure level frame-by-frame.
diff --git a/modules/audio_processing/transient/wpd_tree_unittest.cc b/modules/audio_processing/transient/wpd_tree_unittest.cc
index 11f75e6..97d69ae 100644
--- a/modules/audio_processing/transient/wpd_tree_unittest.cc
+++ b/modules/audio_processing/transient/wpd_tree_unittest.cc
@@ -145,7 +145,8 @@
 
       ASSERT_EQ(kLeavesSamples, matlab_samples_read)
           << "Matlab test files are malformed.\n"
-          << "File: 3_" << i;
+             "File: 3_"
+          << i;
       // Get output data from the corresponding node
       const float* node_data = tree.NodeAt(kLevels, i)->data();
       // Compare with matlab files.
diff --git a/modules/congestion_controller/bbr/rtt_stats.cc b/modules/congestion_controller/bbr/rtt_stats.cc
index bbe5e42..2973463 100644
--- a/modules/congestion_controller/bbr/rtt_stats.cc
+++ b/modules/congestion_controller/bbr/rtt_stats.cc
@@ -49,7 +49,7 @@
                          Timestamp now) {
   if (send_delta.IsInfinite() || send_delta <= TimeDelta::Zero()) {
     RTC_LOG(LS_WARNING) << "Ignoring measured send_delta, because it's is "
-                        << "either infinite, zero, or negative.  send_delta = "
+                           "either infinite, zero, or negative.  send_delta = "
                         << ToString(send_delta);
     return;
   }
diff --git a/modules/congestion_controller/bbr/windowed_filter_unittest.cc b/modules/congestion_controller/bbr/windowed_filter_unittest.cc
index 61510d0..7ab4588 100644
--- a/modules/congestion_controller/bbr/windowed_filter_unittest.cc
+++ b/modules/congestion_controller/bbr/windowed_filter_unittest.cc
@@ -41,7 +41,8 @@
       windowed_min_rtt_.Update(rtt_sample, now_ms);
       RTC_LOG(LS_VERBOSE) << "i: " << i << " sample: " << ToString(rtt_sample)
                           << " mins: "
-                          << " " << ToString(windowed_min_rtt_.GetBest()) << " "
+                             " "
+                          << ToString(windowed_min_rtt_.GetBest()) << " "
                           << ToString(windowed_min_rtt_.GetSecondBest()) << " "
                           << ToString(windowed_min_rtt_.GetThirdBest());
       now_ms += 25;
@@ -63,7 +64,8 @@
       windowed_max_bw_.Update(bw_sample, now_ms);
       RTC_LOG(LS_VERBOSE) << "i: " << i << " sample: " << ToString(bw_sample)
                           << " maxs: "
-                          << " " << ToString(windowed_max_bw_.GetBest()) << " "
+                             " "
+                          << ToString(windowed_max_bw_.GetBest()) << " "
                           << ToString(windowed_max_bw_.GetSecondBest()) << " "
                           << ToString(windowed_max_bw_.GetThirdBest());
       now_ms += 25;
@@ -117,7 +119,8 @@
     windowed_min_rtt_.Update(rtt_sample, now_ms);
     RTC_LOG(LS_VERBOSE) << "i: " << i << " sample: " << rtt_sample.ms()
                         << " mins: "
-                        << " " << windowed_min_rtt_.GetBest().ms() << " "
+                           " "
+                        << windowed_min_rtt_.GetBest().ms() << " "
                         << windowed_min_rtt_.GetSecondBest().ms() << " "
                         << windowed_min_rtt_.GetThirdBest().ms();
     if (i < 3) {
@@ -144,7 +147,8 @@
     windowed_max_bw_.Update(bw_sample, now_ms);
     RTC_LOG(LS_VERBOSE) << "i: " << i << " sample: " << bw_sample.bps()
                         << " maxs: "
-                        << " " << windowed_max_bw_.GetBest().bps() << " "
+                           " "
+                        << windowed_max_bw_.GetBest().bps() << " "
                         << windowed_max_bw_.GetSecondBest().bps() << " "
                         << windowed_max_bw_.GetThirdBest().bps();
     if (i < 3) {
diff --git a/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc b/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc
index 0a636fc..b4a33eb 100644
--- a/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc
+++ b/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc
@@ -107,10 +107,12 @@
       receive_interval <= TimeDelta::Zero() ||
       receive_interval > kMaxProbeInterval) {
     RTC_LOG(LS_INFO) << "Probing unsuccessful, invalid send/receive interval"
-                     << " [cluster id: " << cluster_id
-                     << "] [send interval: " << ToString(send_interval) << "]"
-                     << " [receive interval: " << ToString(receive_interval)
-                     << "]";
+                        " [cluster id: "
+                     << cluster_id
+                     << "] [send interval: " << ToString(send_interval)
+                     << "]"
+                        " [receive interval: "
+                     << ToString(receive_interval) << "]";
     if (event_log_) {
       event_log_->Log(std::make_unique<RtcEventProbeResultFailure>(
           cluster_id, ProbeFailureReason::kInvalidSendReceiveInterval));
@@ -134,16 +136,20 @@
   double ratio = receive_rate / send_rate;
   if (ratio > kMaxValidRatio) {
     RTC_LOG(LS_INFO) << "Probing unsuccessful, receive/send ratio too high"
-                     << " [cluster id: " << cluster_id
-                     << "] [send: " << ToString(send_size) << " / "
-                     << ToString(send_interval) << " = " << ToString(send_rate)
+                        " [cluster id: "
+                     << cluster_id << "] [send: " << ToString(send_size)
+                     << " / " << ToString(send_interval) << " = "
+                     << ToString(send_rate)
                      << "]"
-                     << " [receive: " << ToString(receive_size) << " / "
+                        " [receive: "
+                     << ToString(receive_size) << " / "
                      << ToString(receive_interval) << " = "
-                     << ToString(receive_rate) << " ]"
-                     << " [ratio: " << ToString(receive_rate) << " / "
-                     << ToString(send_rate) << " = " << ratio
-                     << " > kMaxValidRatio (" << kMaxValidRatio << ")]";
+                     << ToString(receive_rate)
+                     << " ]"
+                        " [ratio: "
+                     << ToString(receive_rate) << " / " << ToString(send_rate)
+                     << " = " << ratio << " > kMaxValidRatio ("
+                     << kMaxValidRatio << ")]";
     if (event_log_) {
       event_log_->Log(std::make_unique<RtcEventProbeResultFailure>(
           cluster_id, ProbeFailureReason::kInvalidSendReceiveRatio));
@@ -151,11 +157,12 @@
     return absl::nullopt;
   }
   RTC_LOG(LS_INFO) << "Probing successful"
-                   << " [cluster id: " << cluster_id
-                   << "] [send: " << ToString(send_size) << " / "
+                      " [cluster id: "
+                   << cluster_id << "] [send: " << ToString(send_size) << " / "
                    << ToString(send_interval) << " = " << ToString(send_rate)
                    << " ]"
-                   << " [receive: " << ToString(receive_size) << " / "
+                      " [receive: "
+                   << ToString(receive_size) << " / "
                    << ToString(receive_interval) << " = "
                    << ToString(receive_rate) << "]";
 
diff --git a/modules/congestion_controller/receive_side_congestion_controller.cc b/modules/congestion_controller/receive_side_congestion_controller.cc
index 628981f..7448ec2 100644
--- a/modules/congestion_controller/receive_side_congestion_controller.cc
+++ b/modules/congestion_controller/receive_side_congestion_controller.cc
@@ -99,7 +99,7 @@
       if (packets_since_absolute_send_time_ >= kTimeOffsetSwitchThreshold) {
         RTC_LOG(LS_INFO)
             << "WrappingBitrateEstimator: Switching to transmission "
-            << "time offset RBE.";
+               "time offset RBE.";
         using_absolute_send_time_ = false;
         PickEstimator();
       }
diff --git a/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc b/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc
index 9a2f5ff..e3668a5 100644
--- a/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc
+++ b/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc
@@ -46,7 +46,7 @@
     if (!XQueryTree(display, window, &root, &parent, &children,
                     &num_children)) {
       RTC_LOG(LS_ERROR) << "Failed to query for child windows although window"
-                        << "does not have a valid WM_STATE.";
+                           "does not have a valid WM_STATE.";
       return None;
     }
     if (children)
diff --git a/modules/desktop_capture/linux/window_list_utils.cc b/modules/desktop_capture/linux/window_list_utils.cc
index 4f05fc6..06660dd 100644
--- a/modules/desktop_capture/linux/window_list_utils.cc
+++ b/modules/desktop_capture/linux/window_list_utils.cc
@@ -61,7 +61,7 @@
   if (!XQueryTree(cache->display(), window, &root, &parent, &children,
                   &num_children)) {
     RTC_LOG(LS_ERROR) << "Failed to query for child windows although window"
-                      << "does not have a valid WM_STATE.";
+                         "does not have a valid WM_STATE.";
     return 0;
   }
   ::Window app_window = 0;
diff --git a/modules/desktop_capture/mac/desktop_configuration_monitor.cc b/modules/desktop_capture/mac/desktop_configuration_monitor.cc
index cee8e70..e2225cd 100644
--- a/modules/desktop_capture/mac/desktop_configuration_monitor.cc
+++ b/modules/desktop_capture/mac/desktop_configuration_monitor.cc
@@ -54,8 +54,8 @@
     CGDisplayChangeSummaryFlags flags) {
   TRACE_EVENT0("webrtc", "DesktopConfigurationMonitor::DisplaysReconfigured");
   RTC_LOG(LS_INFO) << "DisplaysReconfigured: "
-                   << "DisplayID " << display << "; ChangeSummaryFlags "
-                   << flags;
+                      "DisplayID "
+                   << display << "; ChangeSummaryFlags " << flags;
 
   if (flags & kCGDisplayBeginConfigurationFlag) {
     reconfiguring_displays_.insert(display);
diff --git a/modules/desktop_capture/win/screen_capturer_win_magnifier.cc b/modules/desktop_capture/win/screen_capturer_win_magnifier.cc
index 8293ae5..1a7bbc1 100644
--- a/modules/desktop_capture/win/screen_capturer_win_magnifier.cc
+++ b/modules/desktop_capture/win/screen_capturer_win_magnifier.cc
@@ -230,14 +230,15 @@
       !set_window_source_func_ || !set_window_filter_list_func_ ||
       !set_image_scaling_callback_func_) {
     RTC_LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: "
-                          << "library functions missing.";
+                             "library functions missing.";
     return false;
   }
 
   BOOL result = mag_initialize_func_();
   if (!result) {
     RTC_LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: "
-                          << "error from MagInitialize " << GetLastError();
+                             "error from MagInitialize "
+                          << GetLastError();
     return false;
   }
 
@@ -249,7 +250,8 @@
   if (!result) {
     mag_uninitialize_func_();
     RTC_LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: "
-                          << "error from GetModulehandleExA " << GetLastError();
+                             "error from GetModulehandleExA "
+                          << GetLastError();
     return false;
   }
 
@@ -272,7 +274,7 @@
   if (!host_window_) {
     mag_uninitialize_func_();
     RTC_LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: "
-                          << "error from creating host window "
+                             "error from creating host window "
                           << GetLastError();
     return false;
   }
@@ -284,7 +286,7 @@
   if (!magnifier_window_) {
     mag_uninitialize_func_();
     RTC_LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: "
-                          << "error from creating magnifier window "
+                             "error from creating magnifier window "
                           << GetLastError();
     return false;
   }
@@ -299,7 +301,7 @@
   if (!result) {
     mag_uninitialize_func_();
     RTC_LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: "
-                          << "error from MagSetImageScalingCallback "
+                             "error from MagSetImageScalingCallback "
                           << GetLastError();
     return false;
   }
@@ -311,7 +313,8 @@
       mag_uninitialize_func_();
       RTC_LOG_F(LS_WARNING)
           << "Failed to initialize ScreenCapturerWinMagnifier: "
-          << "error from MagSetWindowFilterList " << GetLastError();
+             "error from MagSetWindowFilterList "
+          << GetLastError();
       return false;
     }
   }
@@ -334,11 +337,19 @@
       captured_bytes_per_pixel != DesktopFrame::kBytesPerPixel) {
     RTC_LOG_F(LS_WARNING)
         << "Output format does not match the captured format: "
-        << "width = " << header.width << ", "
-        << "height = " << header.height << ", "
-        << "stride = " << header.stride << ", "
-        << "bpp = " << captured_bytes_per_pixel << ", "
-        << "pixel format RGBA ? "
+           "width = "
+        << header.width
+        << ", "
+           "height = "
+        << header.height
+        << ", "
+           "stride = "
+        << header.stride
+        << ", "
+           "bpp = "
+        << captured_bytes_per_pixel
+        << ", "
+           "pixel format RGBA ? "
         << (header.format == GUID_WICPixelFormat32bppRGBA) << ".";
     return;
   }
diff --git a/modules/pacing/bitrate_prober.cc b/modules/pacing/bitrate_prober.cc
index 8dc89e4..719a602 100644
--- a/modules/pacing/bitrate_prober.cc
+++ b/modules/pacing/bitrate_prober.cc
@@ -132,8 +132,9 @@
   if (next_probe_time_.IsFinite() &&
       now - next_probe_time_ > config_.max_probe_delay.Get()) {
     RTC_DLOG(LS_WARNING) << "Probe delay too high"
-                         << " (next_ms:" << next_probe_time_.ms()
-                         << ", now_ms: " << now.ms() << ")";
+                            " (next_ms:"
+                         << next_probe_time_.ms() << ", now_ms: " << now.ms()
+                         << ")";
     return Timestamp::PlusInfinity();
   }
 
diff --git a/modules/remote_bitrate_estimator/aimd_rate_control.cc b/modules/remote_bitrate_estimator/aimd_rate_control.cc
index 6c8e6eb..4d2e585 100644
--- a/modules/remote_bitrate_estimator/aimd_rate_control.cc
+++ b/modules/remote_bitrate_estimator/aimd_rate_control.cc
@@ -111,7 +111,8 @@
                   key_value_config->Lookup("WebRTC-BweAimdRateControlConfig"));
   if (initial_backoff_interval_) {
     RTC_LOG(LS_INFO) << "Using aimd rate control with initial back-off interval"
-                     << " " << ToString(*initial_backoff_interval_) << ".";
+                        " "
+                     << ToString(*initial_backoff_interval_) << ".";
   }
   RTC_LOG(LS_INFO) << "Using aimd rate control with back off factor " << beta_;
 }
diff --git a/modules/rtp_rtcp/source/flexfec_sender.cc b/modules/rtp_rtcp/source/flexfec_sender.cc
index d35f4d6..70f1666 100644
--- a/modules/rtp_rtcp/source/flexfec_sender.cc
+++ b/modules/rtp_rtcp/source/flexfec_sender.cc
@@ -58,8 +58,8 @@
     } else {
       RTC_LOG(LS_INFO)
           << "FlexfecSender only supports RTP header extensions for "
-          << "BWE and MID, so the extension " << extension.ToString()
-          << " will not be used.";
+             "BWE and MID, so the extension "
+          << extension.ToString() << " will not be used.";
     }
   }
   return map;
diff --git a/modules/rtp_rtcp/source/forward_error_correction.cc b/modules/rtp_rtcp/source/forward_error_correction.cc
index 120e11f..1812fbf 100644
--- a/modules/rtp_rtcp/source/forward_error_correction.cc
+++ b/modules/rtp_rtcp/source/forward_error_correction.cc
@@ -131,7 +131,7 @@
     if (media_packet->data.size() < kRtpHeaderSize) {
       RTC_LOG(LS_WARNING) << "Media packet " << media_packet->data.size()
                           << " bytes "
-                          << "is smaller than RTP header.";
+                             "is smaller than RTP header.";
       return -1;
     }
     // Ensure the FEC packets will fit in a typical MTU.
@@ -139,8 +139,8 @@
         IP_PACKET_SIZE) {
       RTC_LOG(LS_WARNING) << "Media packet " << media_packet->data.size()
                           << " bytes "
-                          << "with overhead is larger than " << IP_PACKET_SIZE
-                          << " bytes.";
+                             "with overhead is larger than "
+                          << IP_PACKET_SIZE << " bytes.";
     }
   }
 
@@ -549,7 +549,7 @@
       fec_packet.fec_header_size + fec_packet.protection_length) {
     RTC_LOG(LS_WARNING)
         << "The FEC packet is truncated: it does not contain enough room "
-        << "for its own header.";
+           "for its own header.";
     return false;
   }
   if (fec_packet.protection_length >
@@ -590,7 +590,7 @@
       ByteReader<uint16_t>::ReadBigEndian(&data[2]) + kRtpHeaderSize;
   if (new_size > size_t{IP_PACKET_SIZE - kRtpHeaderSize}) {
     RTC_LOG(LS_WARNING) << "The recovered packet had a length larger than a "
-                        << "typical IP packet, and is thus dropped.";
+                           "typical IP packet, and is thus dropped.";
     return false;
   }
   recovered_packet->pkt->data.SetSize(new_size);
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc
index 5f7735e..d1822f2 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video.cc
@@ -593,7 +593,7 @@
   } else if (require_frame_encryption_) {
     RTC_LOG(LS_WARNING)
         << "No FrameEncryptor is attached to this video sending stream but "
-        << "one is required since require_frame_encryptor is set";
+           "one is required since require_frame_encryptor is set";
   }
 
   std::unique_ptr<RtpPacketizer> packetizer = RtpPacketizer::Create(
diff --git a/modules/rtp_rtcp/test/testFec/test_fec.cc b/modules/rtp_rtcp/test/testFec/test_fec.cc
index 505084f..db5ff15 100644
--- a/modules/rtp_rtcp/test/testFec/test_fec.cc
+++ b/modules/rtp_rtcp/test/testFec/test_fec.cc
@@ -99,7 +99,7 @@
       sizeof(kPacketMaskBurstyTbl) / sizeof(*kPacketMaskBurstyTbl)};
 
   ASSERT_EQ(12, kMaxMediaPackets[1]) << "Max media packets for bursty mode not "
-                                     << "equal to 12.";
+                                        "equal to 12.";
 
   ForwardErrorCorrection::PacketList media_packet_list;
   std::list<ForwardErrorCorrection::Packet*> fec_packet_list;
@@ -293,8 +293,10 @@
                 << "EncodeFec() failed";
 
             ASSERT_EQ(num_fec_packets, fec_packet_list.size())
-                << "We requested " << num_fec_packets << " FEC packets, but "
-                << "EncodeFec() produced " << fec_packet_list.size();
+                << "We requested " << num_fec_packets
+                << " FEC packets, but "
+                   "EncodeFec() produced "
+                << fec_packet_list.size();
 
             memset(media_loss_mask, 0, sizeof(media_loss_mask));
             uint32_t media_packet_idx = 0;
@@ -419,12 +421,12 @@
                 ASSERT_EQ(recovered_packet->pkt->data.size(),
                           media_packet->data.size())
                     << "Recovered packet length not identical to original "
-                    << "media packet";
+                       "media packet";
                 ASSERT_EQ(0, memcmp(recovered_packet->pkt->data.cdata(),
                                     media_packet->data.cdata(),
                                     media_packet->data.size()))
                     << "Recovered packet payload not identical to original "
-                    << "media packet";
+                       "media packet";
                 recovered_packet_list.pop_front();
               }
               ++media_packet_idx;
diff --git a/modules/utility/source/process_thread_impl.cc b/modules/utility/source/process_thread_impl.cc
index 506e8b6..67399371 100644
--- a/modules/utility/source/process_thread_impl.cc
+++ b/modules/utility/source/process_thread_impl.cc
@@ -124,8 +124,10 @@
     rtc::CritScope lock(&lock_);
     for (const ModuleCallback& mc : modules_) {
       RTC_DCHECK(mc.module != module)
-          << "Already registered here: " << mc.location.ToString() << "\n"
-          << "Now attempting from here: " << from.ToString();
+          << "Already registered here: " << mc.location.ToString()
+          << "\n"
+             "Now attempting from here: "
+          << from.ToString();
     }
   }
 #endif
diff --git a/modules/video_capture/windows/device_info_ds.cc b/modules/video_capture/windows/device_info_ds.cc
index 5018f52..a163579 100644
--- a/modules/video_capture/windows/device_info_ds.cc
+++ b/modules/video_capture/windows/device_info_ds.cc
@@ -74,7 +74,8 @@
       //
       RTC_LOG(LS_INFO) << __FUNCTION__
                        << ": CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)"
-                       << " => RPC_E_CHANGED_MODE, error 0x" << rtc::ToHex(hr);
+                          " => RPC_E_CHANGED_MODE, error 0x"
+                       << rtc::ToHex(hr);
     }
   }
 }
@@ -163,7 +164,8 @@
                                                deviceNameLength, NULL, NULL);
               if (convResult == 0) {
                 RTC_LOG(LS_INFO) << "Failed to convert device name to UTF8, "
-                                 << "error = " << GetLastError();
+                                    "error = "
+                                 << GetLastError();
                 return -1;
               }
             }
@@ -173,16 +175,16 @@
                 strncpy_s((char*)deviceUniqueIdUTF8, deviceUniqueIdUTF8Length,
                           (char*)deviceNameUTF8, convResult);
                 RTC_LOG(LS_INFO) << "Failed to get "
-                                 << "deviceUniqueIdUTF8 using "
-                                 << "deviceNameUTF8";
+                                    "deviceUniqueIdUTF8 using "
+                                    "deviceNameUTF8";
               } else {
                 convResult = WideCharToMultiByte(
                     CP_UTF8, 0, varName.bstrVal, -1, (char*)deviceUniqueIdUTF8,
                     deviceUniqueIdUTF8Length, NULL, NULL);
                 if (convResult == 0) {
-                  RTC_LOG(LS_INFO)
-                      << "Failed to convert device "
-                      << "name to UTF8, error = " << GetLastError();
+                  RTC_LOG(LS_INFO) << "Failed to convert device "
+                                      "name to UTF8, error = "
+                                   << GetLastError();
                   return -1;
                 }
                 if (productUniqueIdUTF8 && productUniqueIdUTF8Length > 0) {
@@ -261,7 +263,8 @@
             if
               FAILED(hr) {
                 RTC_LOG(LS_ERROR) << "Failed to bind to the selected "
-                                  << "capture device " << hr;
+                                     "capture device "
+                                  << hr;
               }
 
             if (productUniqueIdUTF8 &&
@@ -334,7 +337,7 @@
                                         (void**)&streamConfig);
   if (FAILED(hr)) {
     RTC_LOG(LS_INFO) << "Failed to get IID_IAMStreamConfig interface "
-                     << "from capture device";
+                        "from capture device";
     return -1;
   }
 
diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
index 24fd7a8..53fac77 100644
--- a/modules/video_coding/codecs/h264/h264_encoder_impl.cc
+++ b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
@@ -378,7 +378,7 @@
   if (!encoded_image_callback_) {
     RTC_LOG(LS_WARNING)
         << "InitEncode() has been called, but a callback function "
-        << "has not been set with RegisterEncodeCompleteCallback()";
+           "has not been set with RegisterEncodeCompleteCallback()";
     ReportError();
     return WEBRTC_VIDEO_CODEC_UNINITIALIZED;
   }
diff --git a/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc b/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc
index 4e47507..551ace2 100644
--- a/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc
+++ b/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc
@@ -72,9 +72,11 @@
       allocated_buffers_.push_back(available_buffer);
       if (allocated_buffers_.size() > max_num_buffers_) {
         RTC_LOG(LS_WARNING)
-            << allocated_buffers_.size() << " Vp9FrameBuffers have been "
-            << "allocated by a Vp9FrameBufferPool (exceeding what is "
-            << "considered reasonable, " << max_num_buffers_ << ").";
+            << allocated_buffers_.size()
+            << " Vp9FrameBuffers have been "
+               "allocated by a Vp9FrameBufferPool (exceeding what is "
+               "considered reasonable, "
+            << max_num_buffers_ << ").";
 
         // TODO(phoglund): this limit is being hit in tests since Oct 5 2016.
         // See https://bugs.chromium.org/p/webrtc/issues/detail?id=6484.
diff --git a/modules/video_coding/codecs/vp9/vp9_impl.cc b/modules/video_coding/codecs/vp9/vp9_impl.cc
index 06b7fe1..df53cda 100644
--- a/modules/video_coding/codecs/vp9/vp9_impl.cc
+++ b/modules/video_coding/codecs/vp9/vp9_impl.cc
@@ -1032,7 +1032,8 @@
   if (rv != VPX_CODEC_OK) {
     RTC_LOG(LS_ERROR) << "Encoding error: " << vpx_codec_err_to_string(rv)
                       << "\n"
-                      << "Details: " << vpx_codec_error(encoder_) << "\n"
+                         "Details: "
+                      << vpx_codec_error(encoder_) << "\n"
                       << vpx_codec_error_detail(encoder_);
     return WEBRTC_VIDEO_CODEC_ERROR;
   }
@@ -1608,8 +1609,9 @@
     // The frame buffers are reference counted and frames are exposed after
     // decoding. There may be valid usage cases where previous frames are still
     // referenced after ~VP9DecoderImpl that is not a leak.
-    RTC_LOG(LS_INFO) << num_buffers_in_use << " Vp9FrameBuffers are still "
-                     << "referenced during ~VP9DecoderImpl.";
+    RTC_LOG(LS_INFO) << num_buffers_in_use
+                     << " Vp9FrameBuffers are still "
+                        "referenced during ~VP9DecoderImpl.";
   }
 }
 
diff --git a/modules/video_coding/decoding_state.cc b/modules/video_coding/decoding_state.cc
index f769ed0..a951358 100644
--- a/modules/video_coding/decoding_state.cc
+++ b/modules/video_coding/decoding_state.cc
@@ -297,7 +297,7 @@
       frame->CodecSpecific()->codecSpecific.VP9.flexible_mode;
   if (is_flexible_mode && frame->PictureId() == kNoPictureId) {
     RTC_LOG(LS_WARNING) << "Frame is marked as using flexible mode but no"
-                        << "picture id is set.";
+                           "picture id is set.";
     return false;
   }
   return is_flexible_mode;
diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc
index f76b957..1074215 100644
--- a/modules/video_coding/frame_buffer2.cc
+++ b/modules/video_coding/frame_buffer2.cc
@@ -350,7 +350,8 @@
     int frame_delay = static_cast<int>(std::abs(render_time_ms - now_ms));
     RTC_LOG(LS_WARNING)
         << "A frame about to be decoded is out of the configured "
-        << "delay bounds (" << frame_delay << " > " << kMaxVideoDelayMs
+           "delay bounds ("
+        << frame_delay << " > " << kMaxVideoDelayMs
         << "). Resetting the video jitter buffer.";
     return true;
   }
@@ -482,14 +483,14 @@
                           << id.picture_id << ":"
                           << static_cast<int>(id.spatial_layer)
                           << ") but buffer is full, clearing"
-                          << " buffer and inserting the frame.";
+                             " buffer and inserting the frame.";
       ClearFramesAndHistory();
     } else {
       RTC_LOG(LS_WARNING) << "Frame with (picture_id:spatial_id) ("
                           << id.picture_id << ":"
                           << static_cast<int>(id.spatial_layer)
                           << ") could not be inserted due to the frame "
-                          << "buffer being full, dropping frame.";
+                             "buffer being full, dropping frame.";
       return last_continuous_picture_id;
     }
   }
@@ -662,7 +663,7 @@
               << "Frame with (picture_id:spatial_id) (" << id.picture_id << ":"
               << static_cast<int>(id.spatial_layer)
               << ") depends on a non-decoded frame more previous than"
-              << " the last decoded frame, dropping frame.";
+                 " the last decoded frame, dropping frame.";
           last_log_non_decoded_ms_ = now_ms;
         }
         return false;
diff --git a/modules/video_coding/packet_buffer.cc b/modules/video_coding/packet_buffer.cc
index fb25c0ad..0fbd042 100644
--- a/modules/video_coding/packet_buffer.cc
+++ b/modules/video_coding/packet_buffer.cc
@@ -357,8 +357,8 @@
         if (has_h264_idr && (!has_h264_sps || !has_h264_pps)) {
           RTC_LOG(LS_WARNING)
               << "Received H.264-IDR frame "
-              << "(SPS: " << has_h264_sps << ", PPS: " << has_h264_pps
-              << "). Treating as "
+                 "(SPS: "
+              << has_h264_sps << ", PPS: " << has_h264_pps << "). Treating as "
               << (sps_pps_idr_is_h264_keyframe_ ? "delta" : "key")
               << " frame since WebRTC-SpsPpsIdrIsH264Keyframe is "
               << (sps_pps_idr_is_h264_keyframe_ ? "enabled." : "disabled");
diff --git a/modules/video_coding/receiver.cc b/modules/video_coding/receiver.cc
index 855ece8..2db4e21 100644
--- a/modules/video_coding/receiver.cc
+++ b/modules/video_coding/receiver.cc
@@ -114,7 +114,8 @@
     int frame_delay = static_cast<int>(std::abs(render_time_ms - now_ms));
     RTC_LOG(LS_WARNING)
         << "A frame about to be decoded is out of the configured "
-        << "delay bounds (" << frame_delay << " > " << max_video_delay_ms_
+           "delay bounds ("
+        << frame_delay << " > " << max_video_delay_ms_
         << "). Resetting the video jitter buffer.";
     timing_error = true;
   } else if (static_cast<int>(timing_->TargetVideoDelay()) >
diff --git a/modules/video_coding/rtp_frame_reference_finder.cc b/modules/video_coding/rtp_frame_reference_finder.cc
index 4932c70..e09c95f 100644
--- a/modules/video_coding/rtp_frame_reference_finder.cc
+++ b/modules/video_coding/rtp_frame_reference_finder.cc
@@ -384,7 +384,7 @@
                           << " and packet range [" << frame->first_seq_num()
                           << ", " << frame->last_seq_num()
                           << "] already received, "
-                          << " dropping frame.";
+                             " dropping frame.";
       return kDrop;
     }
 
@@ -585,8 +585,9 @@
   size_t temporal_idx = info.gof->temporal_idx[gof_idx];
 
   if (temporal_idx >= kMaxTemporalLayers) {
-    RTC_LOG(LS_WARNING) << "At most " << kMaxTemporalLayers << " temporal "
-                        << "layers are supported.";
+    RTC_LOG(LS_WARNING) << "At most " << kMaxTemporalLayers
+                        << " temporal "
+                           "layers are supported.";
     return true;
   }
 
@@ -628,8 +629,9 @@
 
       size_t temporal_idx = info->gof->temporal_idx[gof_idx];
       if (temporal_idx >= kMaxTemporalLayers) {
-        RTC_LOG(LS_WARNING) << "At most " << kMaxTemporalLayers << " temporal "
-                            << "layers are supported.";
+        RTC_LOG(LS_WARNING) << "At most " << kMaxTemporalLayers
+                            << " temporal "
+                               "layers are supported.";
         return;
       }
 
@@ -646,8 +648,9 @@
 
     size_t temporal_idx = info->gof->temporal_idx[gof_idx];
     if (temporal_idx >= kMaxTemporalLayers) {
-      RTC_LOG(LS_WARNING) << "At most " << kMaxTemporalLayers << " temporal "
-                          << "layers are supported.";
+      RTC_LOG(LS_WARNING) << "At most " << kMaxTemporalLayers
+                          << " temporal "
+                             "layers are supported.";
       return;
     }
 
@@ -783,7 +786,7 @@
                           << " and packet range [" << frame->first_seq_num()
                           << ", " << frame->last_seq_num()
                           << "] already received, "
-                          << " dropping frame.";
+                             " dropping frame.";
       return kDrop;
     }
 
diff --git a/p2p/base/connection.cc b/p2p/base/connection.cc
index e11b4bc..cd5d290 100644
--- a/p2p/base/connection.cc
+++ b/p2p/base/connection.cc
@@ -525,15 +525,15 @@
       if (last_ping_sent_ + kMinExtraPingDelayMs <= now) {
         RTC_LOG(LS_INFO) << ToString()
                          << "WebRTC-ExtraICEPing/Sending extra ping"
-                         << " last_ping_sent_: " << last_ping_sent_
-                         << " now: " << now
+                            " last_ping_sent_: "
+                         << last_ping_sent_ << " now: " << now
                          << " (diff: " << (now - last_ping_sent_) << ")";
         Ping(now);
       } else {
         RTC_LOG(LS_INFO) << ToString()
                          << "WebRTC-ExtraICEPing/Not sending extra ping"
-                         << " last_ping_sent_: " << last_ping_sent_
-                         << " now: " << now
+                            " last_ping_sent_: "
+                         << last_ping_sent_ << " now: " << now
                          << " (diff: " << (now - last_ping_sent_) << ")";
       }
     }
diff --git a/p2p/base/p2p_transport_channel.cc b/p2p/base/p2p_transport_channel.cc
index c7cfe5a..75490ee 100644
--- a/p2p/base/p2p_transport_channel.cc
+++ b/p2p/base/p2p_transport_channel.cc
@@ -1105,7 +1105,7 @@
   RTC_DCHECK_RUN_ON(network_thread_);
   if (!async_resolver_factory_) {
     RTC_LOG(LS_WARNING) << "Dropping ICE candidate with hostname address "
-                        << "(no AsyncResolverFactory)";
+                           "(no AsyncResolverFactory)";
     return;
   }
 
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index 9abeb3a..f203d48 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -2677,7 +2677,8 @@
   trials.announce_goog_ping = GetParam().first;
   trials.enable_goog_ping = GetParam().second;
   RTC_LOG(LS_INFO) << "Testing combination: "
-                   << " announce: " << trials.announce_goog_ping
+                      " announce: "
+                   << trials.announce_goog_ping
                    << " enable:" << trials.enable_goog_ping;
 
   auto port1_unique =
diff --git a/p2p/base/turn_port.cc b/p2p/base/turn_port.cc
index ed82e35..2e8024d 100644
--- a/p2p/base/turn_port.cc
+++ b/p2p/base/turn_port.cc
@@ -1224,8 +1224,9 @@
 
     if (webrtc::field_trial::IsEnabled("WebRTC-TurnAddMultiMapping")) {
       if (entry->get_remote_ufrag() != remote_ufrag) {
-        RTC_LOG(LS_INFO) << ToString() << ": remote ufrag updated."
-                         << " Sending new permission request";
+        RTC_LOG(LS_INFO) << ToString()
+                         << ": remote ufrag updated."
+                            " Sending new permission request";
         entry->set_remote_ufrag(remote_ufrag);
         entry->SendCreatePermissionRequest(0);
       }
diff --git a/pc/channel.cc b/pc/channel.cc
index 285291f..d6f884c 100644
--- a/pc/channel.cc
+++ b/pc/channel.cc
@@ -423,7 +423,7 @@
       // (and SetSend(true) is called).
       RTC_LOG(LS_ERROR)
           << "Can't send outgoing RTP packet when SRTP is inactive"
-          << " and crypto is required";
+             " and crypto is required";
       RTC_NOTREACHED();
       return false;
     }
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 96b2ce8..664a830 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -1262,7 +1262,7 @@
       RTC_DCHECK(false)
           << "PeerConnecton is initialized with use_datagram_transport = true "
              "or use_datagram_transport_for_data_channels = true "
-          << "but media transport factory is not set in PeerConnectionFactory";
+             "but media transport factory is not set in PeerConnectionFactory";
       return false;
     }
 
diff --git a/pc/rtc_stats_integrationtest.cc b/pc/rtc_stats_integrationtest.cc
index ed4ac5b..381d5bd 100644
--- a/pc/rtc_stats_integrationtest.cc
+++ b/pc/rtc_stats_integrationtest.cc
@@ -318,7 +318,8 @@
     EXPECT_TRUE(valid_reference)
         << stats_->type() << "." << member.name()
         << " is not a reference to an "
-        << "existing dictionary of type " << expected_type << " (value: "
+           "existing dictionary of type "
+        << expected_type << " (value: "
         << (member.is_defined() ? member.ValueToString() : "null") << ").";
     MarkMemberTested(member, valid_reference);
   }
diff --git a/pc/session_description.cc b/pc/session_description.cc
index 07ab7db..4881f4d 100644
--- a/pc/session_description.cc
+++ b/pc/session_description.cc
@@ -266,7 +266,7 @@
     // If description_ is null, we assume that a move operator
     // has been applied.
     RTC_LOG(LS_ERROR) << "ContentInfo::description has been updated by "
-                      << "assignment. This usage is deprecated.";
+                         "assignment. This usage is deprecated.";
     description_.reset(description);  // ensure that it is destroyed.
   }
 }
@@ -295,7 +295,7 @@
     // Someone's updated |description|, or used a move operator
     // on the record.
     RTC_LOG(LS_ERROR) << "ContentInfo::description has been updated by "
-                      << "assignment. This usage is deprecated.";
+                         "assignment. This usage is deprecated.";
     const_cast<ContentInfo*>(this)->description_.reset(description);
   }
   return description_.get();
@@ -306,7 +306,7 @@
     // Someone's updated |description|, or used a move operator
     // on the record.
     RTC_LOG(LS_ERROR) << "ContentInfo::description has been updated by "
-                      << "assignment. This usage is deprecated.";
+                         "assignment. This usage is deprecated.";
     description_.reset(description);
   }
   return description_.get();
diff --git a/pc/webrtc_sdp.cc b/pc/webrtc_sdp.cc
index c0e959a..575f339 100644
--- a/pc/webrtc_sdp.cc
+++ b/pc/webrtc_sdp.cc
@@ -1061,8 +1061,9 @@
       attribute_candidate != kAttributeCandidate) {
     if (is_raw) {
       rtc::StringBuilder description;
-      description << "Expect line: " << kAttributeCandidate << ":"
-                  << "<candidate-str>";
+      description << "Expect line: " << kAttributeCandidate
+                  << ":"
+                     "<candidate-str>";
       return ParseFailed(first_line, 0, description.str(), error);
     } else {
       return ParseFailedExpectLine(first_line, 0, kLineTypeAttributes,
diff --git a/pc/webrtc_sdp_unittest.cc b/pc/webrtc_sdp_unittest.cc
index e8e937a..5bb4ffc 100644
--- a/pc/webrtc_sdp_unittest.cc
+++ b/pc/webrtc_sdp_unittest.cc
@@ -1963,18 +1963,22 @@
     os << "minptime=" << params.min_ptime << "; stereo=" << params.stereo
        << "; sprop-stereo=" << params.sprop_stereo
        << "; useinbandfec=" << params.useinband
-       << "; maxaveragebitrate=" << params.maxaveragebitrate << "\r\n"
-       << "a=ptime:" << params.ptime << "\r\n"
-       << "a=maxptime:" << params.max_ptime << "\r\n";
+       << "; maxaveragebitrate=" << params.maxaveragebitrate
+       << "\r\n"
+          "a=ptime:"
+       << params.ptime
+       << "\r\n"
+          "a=maxptime:"
+       << params.max_ptime << "\r\n";
     sdp += os.str();
 
     os.clear();
     os.str("");
     // Pl type 100 preferred.
     os << "m=video 9 RTP/SAVPF 99 95\r\n"
-       << "a=rtpmap:99 VP8/90000\r\n"
-       << "a=rtpmap:95 RTX/90000\r\n"
-       << "a=fmtp:95 apt=99;\r\n";
+          "a=rtpmap:99 VP8/90000\r\n"
+          "a=rtpmap:95 RTX/90000\r\n"
+          "a=fmtp:95 apt=99;\r\n";
     sdp += os.str();
 
     // Deserialize
@@ -2118,8 +2122,11 @@
   }
   EXPECT_EQ(0, position) << "Strings mismatch at the " << position
                          << " character\n"
-                         << " 1: " << string1.substr(position, 20) << "\n"
-                         << " 2: " << string2.substr(position, 20) << "\n";
+                            " 1: "
+                         << string1.substr(position, 20)
+                         << "\n"
+                            " 2: "
+                         << string2.substr(position, 20) << "\n";
 }
 
 TEST_F(WebRtcSdpTest, SerializeSessionDescription) {
diff --git a/rtc_base/logging_unittest.cc b/rtc_base/logging_unittest.cc
index 969ffeb..a66f8b5 100644
--- a/rtc_base/logging_unittest.cc
+++ b/rtc_base/logging_unittest.cc
@@ -339,8 +339,10 @@
   stream.Close();
 
   EXPECT_EQ(str.size(), (message.size() + logging_overhead) * kRepetitions);
-  RTC_LOG(LS_INFO) << "Total log time: " << TimeDiff(finish, start) << " ms "
-                   << " total bytes logged: " << str.size();
+  RTC_LOG(LS_INFO) << "Total log time: " << TimeDiff(finish, start)
+                   << " ms "
+                      " total bytes logged: "
+                   << str.size();
 }
 
 TEST(LogTest, EnumsAreSupported) {
diff --git a/rtc_base/network.cc b/rtc_base/network.cc
index 369c582..df3487f 100644
--- a/rtc_base/network.cc
+++ b/rtc_base/network.cc
@@ -773,7 +773,7 @@
   if (!f) {
     RTC_LOG(LS_WARNING)
         << "Couldn't read /proc/net/route, skipping default "
-        << "route check (assuming everything is a default route).";
+           "route check (assuming everything is a default route).";
     return true;
   }
   bool is_default_route = false;
diff --git a/rtc_base/network_unittest.cc b/rtc_base/network_unittest.cc
index 024115a..db97d07 100644
--- a/rtc_base/network_unittest.cc
+++ b/rtc_base/network_unittest.cc
@@ -930,7 +930,7 @@
     return;
   }
   RTC_LOG(LS_INFO) << "Found dummy, running again while ignoring non-default "
-                   << "routes.";
+                      "routes.";
   manager.set_ignore_non_default_routes(true);
   list = GetNetworks(manager, false);
   for (NetworkManager::NetworkList::iterator it = list.begin();
diff --git a/rtc_base/openssl_adapter.cc b/rtc_base/openssl_adapter.cc
index 0036aae..07c2b81 100644
--- a/rtc_base/openssl_adapter.cc
+++ b/rtc_base/openssl_adapter.cc
@@ -857,8 +857,10 @@
   if (ctx == nullptr) {
     unsigned long error = ERR_get_error();  // NOLINT: type used by OpenSSL.
     RTC_LOG(LS_WARNING) << "SSL_CTX creation failed: " << '"'
-                        << ERR_reason_error_string(error) << "\" "
-                        << "(error=" << error << ')';
+                        << ERR_reason_error_string(error)
+                        << "\" "
+                           "(error="
+                        << error << ')';
     return nullptr;
   }
 
@@ -906,7 +908,7 @@
   for (const std::string& proto : alpn_protocols) {
     if (proto.size() == 0 || proto.size() > 0xFF) {
       RTC_LOG(LS_ERROR) << "OpenSSLAdapter::Error("
-                        << "TransformAlpnProtocols received proto with size "
+                           "TransformAlpnProtocols received proto with size "
                         << proto.size() << ")";
       return "";
     }
diff --git a/rtc_base/physical_socket_server.cc b/rtc_base/physical_socket_server.cc
index ead4e57..bd6a324 100644
--- a/rtc_base/physical_socket_server.cc
+++ b/rtc_base/physical_socket_server.cc
@@ -1265,8 +1265,8 @@
     if (!pending_add_dispatchers_.erase(pdispatcher) &&
         dispatchers_.find(pdispatcher) == dispatchers_.end()) {
       RTC_LOG(LS_WARNING) << "PhysicalSocketServer asked to remove a unknown "
-                          << "dispatcher, potentially from a duplicate call to "
-                          << "Add.";
+                             "dispatcher, potentially from a duplicate call to "
+                             "Add.";
       return;
     }
 
@@ -1274,7 +1274,7 @@
   } else if (!dispatchers_.erase(pdispatcher)) {
     RTC_LOG(LS_WARNING)
         << "PhysicalSocketServer asked to remove a unknown "
-        << "dispatcher, potentially from a duplicate call to Add.";
+           "dispatcher, potentially from a duplicate call to Add.";
     return;
   }
 #if defined(WEBRTC_USE_EPOLL)
diff --git a/rtc_base/socket_unittest.cc b/rtc_base/socket_unittest.cc
index 80b28bb..2af3a8e 100644
--- a/rtc_base/socket_unittest.cc
+++ b/rtc_base/socket_unittest.cc
@@ -391,7 +391,7 @@
         dns_lookup_finished);
   if (!dns_lookup_finished) {
     RTC_LOG(LS_WARNING) << "Skipping test; DNS resolution took longer than 5 "
-                        << "seconds.";
+                           "seconds.";
     return;
   }
 
diff --git a/rtc_base/thread.cc b/rtc_base/thread.cc
index ba5b617..6c5830f 100644
--- a/rtc_base/thread.cc
+++ b/rtc_base/thread.cc
@@ -766,7 +766,7 @@
   RTC_DCHECK(!IsCurrent());
   if (Current() && !Current()->blocking_calls_allowed_) {
     RTC_LOG(LS_WARNING) << "Waiting for the thread to join, "
-                        << "but blocking calls have been disallowed";
+                           "but blocking calls have been disallowed";
   }
 
 #if defined(WEBRTC_WIN)
diff --git a/rtc_base/timestamp_aligner.cc b/rtc_base/timestamp_aligner.cc
index 2896f9c..b797420 100644
--- a/rtc_base/timestamp_aligner.cc
+++ b/rtc_base/timestamp_aligner.cc
@@ -122,8 +122,8 @@
       // duplicate timestamps in case this function is called several times with
       // exactly the same |system_time_us|.
       RTC_LOG(LS_WARNING) << "too short translated timestamp interval: "
-                          << "system time (us) = " << system_time_us
-                          << ", interval (us) = "
+                             "system time (us) = "
+                          << system_time_us << ", interval (us) = "
                           << system_time_us - prev_translated_time_us_;
       time_us = system_time_us;
     }
diff --git a/sdk/android/native_unittests/peerconnection/peer_connection_factory_unittest.cc b/sdk/android/native_unittests/peerconnection/peer_connection_factory_unittest.cc
index b2672e9..54613f9 100644
--- a/sdk/android/native_unittests/peerconnection/peer_connection_factory_unittest.cc
+++ b/sdk/android/native_unittests/peerconnection/peer_connection_factory_unittest.cc
@@ -67,7 +67,7 @@
   auto factory = CreateModularPeerConnectionFactory(std::move(pcf_deps));
   RTC_LOG(LS_INFO) << "PeerConnectionFactory created: " << factory;
   RTC_CHECK(factory) << "Failed to create the peer connection factory; "
-                     << "WebRTC/libjingle init likely failed on this device";
+                        "WebRTC/libjingle init likely failed on this device";
 
   return factory;
 }
diff --git a/sdk/android/src/jni/android_media_decoder.cc b/sdk/android/src/jni/android_media_decoder.cc
index f61db2a..94ce42d 100644
--- a/sdk/android/src/jni/android_media_decoder.cc
+++ b/sdk/android/src/jni/android_media_decoder.cc
@@ -712,8 +712,10 @@
         (current_frames_ * 1000 + statistic_time_ms / 2) / statistic_time_ms;
     ALOGD << "Frames decoded: " << frames_decoded_
           << ". Received: " << frames_received_
-          << ". Bitrate: " << current_bitrate << " kbps"
-          << ". Fps: " << current_fps
+          << ". Bitrate: " << current_bitrate
+          << " kbps"
+             ". Fps: "
+          << current_fps
           << ". DecTime: " << (current_decoding_time_ms_ / current_frames_)
           << ". DelayTime: " << (current_delay_time_ms_ / current_frames_)
           << " for last " << statistic_time_ms << " ms.";
diff --git a/sdk/android/src/jni/android_media_encoder.cc b/sdk/android/src/jni/android_media_encoder.cc
index 78f313a..4b4ad10 100644
--- a/sdk/android/src/jni/android_media_encoder.cc
+++ b/sdk/android/src/jni/android_media_encoder.cc
@@ -649,7 +649,8 @@
   if (input_frame_infos_.size() > MAX_ENCODER_Q_SIZE) {
     ALOGD << "Already " << input_frame_infos_.size()
           << " frames in the queue, dropping"
-          << ". TS: " << static_cast<int>(current_timestamp_us_ / 1000)
+             ". TS: "
+          << static_cast<int>(current_timestamp_us_ / 1000)
           << ". Fps: " << last_set_fps_
           << ". Consecutive drops: " << consecutive_full_queue_frame_drops_;
     current_timestamp_us_ += rtc::kNumMicrosecsPerSec / last_set_fps_;
@@ -1134,8 +1135,10 @@
         (current_frames_ * 1000 + statistic_time_ms / 2) / statistic_time_ms;
     ALOGD << "Encoded frames: " << frames_encoded_
           << ". Bitrate: " << current_bitrate
-          << ", target: " << last_set_bitrate_kbps_ << " kbps"
-          << ", fps: " << current_fps << ", encTime: "
+          << ", target: " << last_set_bitrate_kbps_
+          << " kbps"
+             ", fps: "
+          << current_fps << ", encTime: "
           << (current_encoding_time_ms_ / current_frames_divider)
           << ". QP: " << (current_acc_qp_ / current_frames_divider)
           << " for last " << statistic_time_ms << " ms.";
diff --git a/sdk/android/src/jni/android_network_monitor.cc b/sdk/android/src/jni/android_network_monitor.cc
index 993bbb5..d29be44 100644
--- a/sdk/android/src/jni/android_network_monitor.cc
+++ b/sdk/android/src/jni/android_network_monitor.cc
@@ -248,7 +248,8 @@
   if (!network_binding_supported) {
     RTC_LOG(LS_WARNING)
         << "BindSocketToNetwork is not supported on this platform "
-        << "(Android SDK: " << android_sdk_int_ << ")";
+           "(Android SDK: "
+        << android_sdk_int_ << ")";
     return rtc::NetworkBindingResult::NOT_IMPLEMENTED;
   }
 
diff --git a/sdk/android/src/jni/audio_device/aaudio_player.cc b/sdk/android/src/jni/audio_device/aaudio_player.cc
index 8e1122d..4e1c7e33 100644
--- a/sdk/android/src/jni/audio_device/aaudio_player.cc
+++ b/sdk/android/src/jni/audio_device/aaudio_player.cc
@@ -174,7 +174,8 @@
   // utilized.
   if (first_data_callback_) {
     RTC_LOG(INFO) << "--- First output data callback: "
-                  << "device id=" << aaudio_.device_id();
+                     "device id="
+                  << aaudio_.device_id();
     first_data_callback_ = false;
   }
 
diff --git a/sdk/android/src/jni/audio_device/aaudio_recorder.cc b/sdk/android/src/jni/audio_device/aaudio_recorder.cc
index b543645..65bef4b 100644
--- a/sdk/android/src/jni/audio_device/aaudio_recorder.cc
+++ b/sdk/android/src/jni/audio_device/aaudio_recorder.cc
@@ -173,7 +173,8 @@
   // is obtained.
   if (first_data_callback_) {
     RTC_LOG(INFO) << "--- First input data callback: "
-                  << "device id=" << aaudio_.device_id();
+                     "device id="
+                  << aaudio_.device_id();
     aaudio_.ClearInputStream(audio_data, num_frames);
     first_data_callback_ = false;
   }
diff --git a/sdk/android/src/jni/pc/peer_connection_factory.cc b/sdk/android/src/jni/pc/peer_connection_factory.cc
index 5b6efe8..48dd6e4 100644
--- a/sdk/android/src/jni/pc/peer_connection_factory.cc
+++ b/sdk/android/src/jni/pc/peer_connection_factory.cc
@@ -330,7 +330,7 @@
       CreateModularPeerConnectionFactory(std::move(dependencies));
 
   RTC_CHECK(factory) << "Failed to create the peer connection factory; "
-                     << "WebRTC/libjingle init likely failed on this device";
+                        "WebRTC/libjingle init likely failed on this device";
   // TODO(honghaiz): Maybe put the options as the argument of
   // CreatePeerConnectionFactory.
   if (options)
diff --git a/stats/rtc_stats.cc b/stats/rtc_stats.cc
index d0a8653..b8e9633 100644
--- a/stats/rtc_stats.cc
+++ b/stats/rtc_stats.cc
@@ -99,9 +99,13 @@
 
 std::string RTCStats::ToJson() const {
   rtc::StringBuilder sb;
-  sb << "{\"type\":\"" << type() << "\","
-     << "\"id\":\"" << id_ << "\","
-     << "\"timestamp\":" << timestamp_us_;
+  sb << "{\"type\":\"" << type()
+     << "\","
+        "\"id\":\""
+     << id_
+     << "\","
+        "\"timestamp\":"
+     << timestamp_us_;
   for (const RTCStatsMemberInterface* member : Members()) {
     if (member->is_defined()) {
       sb << ",\"" << member->name() << "\":";
diff --git a/test/call_test.cc b/test/call_test.cc
index 38c5d5b..a230e025 100644
--- a/test/call_test.cc
+++ b/test/call_test.cc
@@ -79,8 +79,8 @@
           << "URI " << extension.uri
           << (extension.encrypt ? " with " : " without ")
           << "encryption already registered with a different "
-          << "ID (" << extension.id << " vs. " << registered_extension.id
-          << ").";
+             "ID ("
+          << extension.id << " vs. " << registered_extension.id << ").";
     }
   }
   rtp_extensions_.push_back(extension);
diff --git a/test/network/fake_network_socket_server.cc b/test/network/fake_network_socket_server.cc
index 3e9c0ef..60dfbe3 100644
--- a/test/network/fake_network_socket_server.cc
+++ b/test/network/fake_network_socket_server.cc
@@ -202,8 +202,8 @@
   // but we won't to skip such error, so we will assert here.
   RTC_CHECK(data_read == pending_->size())
       << "Too small buffer is provided for socket read. "
-      << "Received data size: " << pending_->size()
-      << "; Provided buffer size: " << cb;
+         "Received data size: "
+      << pending_->size() << "; Provided buffer size: " << cb;
 
   pending_.reset();
 
diff --git a/test/testsupport/file_utils_unittest.cc b/test/testsupport/file_utils_unittest.cc
index c62bb7a..7b23cbe 100644
--- a/test/testsupport/file_utils_unittest.cc
+++ b/test/testsupport/file_utils_unittest.cc
@@ -173,8 +173,9 @@
 #endif
 
   ASSERT_THAT(result, EndsWith(expected_end));
-  ASSERT_TRUE(FileExists(result)) << "Expected " << result << " to exist; did "
-                                  << "ResourcePath return an incorrect path?";
+  ASSERT_TRUE(FileExists(result)) << "Expected " << result
+                                  << " to exist; did "
+                                     "ResourcePath return an incorrect path?";
 }
 
 TEST_F(FileUtilsTest, ResourcePathFromRootWorkingDir) {
diff --git a/video/overuse_frame_detector.cc b/video/overuse_frame_detector.cc
index 429dbc4..ade9303 100644
--- a/video/overuse_frame_detector.cc
+++ b/video/overuse_frame_detector.cc
@@ -677,9 +677,10 @@
       in_quick_rampup_ ? kQuickRampUpDelayMs : current_rampup_delay_ms_;
 
   RTC_LOG(LS_VERBOSE) << " Frame stats: "
-                      << " encode usage " << *encode_usage_percent_
-                      << " overuse detections " << num_overuse_detections_
-                      << " rampup delay " << rampup_delay;
+                         " encode usage "
+                      << *encode_usage_percent_ << " overuse detections "
+                      << num_overuse_detections_ << " rampup delay "
+                      << rampup_delay;
 }
 
 void OveruseFrameDetector::SetOptions(const CpuOveruseOptions& options) {
diff --git a/video/rtp_video_stream_receiver.cc b/video/rtp_video_stream_receiver.cc
index ae3475b..495d2dc 100644
--- a/video/rtp_video_stream_receiver.cc
+++ b/video/rtp_video_stream_receiver.cc
@@ -927,7 +927,8 @@
     return;
 
   RTC_LOG(LS_INFO) << "Found out of band supplied codec parameters for"
-                   << " payload type: " << static_cast<int>(payload_type);
+                      " payload type: "
+                   << static_cast<int>(payload_type);
 
   H264SpropParameterSets sprop_decoder;
   auto sprop_base64_it =
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index d1a01d0..3ddbf58 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -1172,7 +1172,7 @@
   if (frame_dropping_enabled && frame_dropper_.DropFrame()) {
     RTC_LOG(LS_VERBOSE)
         << "Drop Frame: "
-        << "target bitrate "
+           "target bitrate "
         << (last_encoder_rate_settings_
                 ? last_encoder_rate_settings_->encoder_target.bps()
                 : 0)
@@ -1901,8 +1901,8 @@
   rtc::StringBuilder ss;
   ss << "Successfully parsed WebRTC-NetworkCondition-EncoderSwitch field "
         "trial."
-     << " to_codec:" << result.to_codec
-     << " to_param:" << result.to_param.value_or("<none>")
+        " to_codec:"
+     << result.to_codec << " to_param:" << result.to_param.value_or("<none>")
      << " to_value:" << result.to_value.value_or("<none>")
      << " codec_thresholds:";
 
@@ -1935,7 +1935,8 @@
   }
 
   RTC_LOG(LS_INFO) << "Automatic animation detection experiment settings:"
-                   << " min_duration_ms=" << result.min_duration_ms
+                      " min_duration_ms="
+                   << result.min_duration_ms
                    << " min_area_ration=" << result.min_area_ratio
                    << " min_fps=" << result.min_fps;
 
