Running apply-iwyu on ~all files in pc/

Bug: none
Change-Id: Ieebdfb743e691f7ae35e1aa354f68ce9e771064d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204381
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33105}
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index bf12e8d..8ea1a04 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -84,16 +84,22 @@
     "../api:function_view",
     "../api:ice_transport_factory",
     "../api:libjingle_peerconnection_api",
+    "../api:packet_socket_factory",
     "../api:priority",
     "../api:rtc_error",
     "../api:rtp_headers",
     "../api:rtp_parameters",
     "../api:rtp_parameters",
+    "../api:rtp_transceiver_direction",
     "../api:scoped_refptr",
     "../api/crypto:options",
     "../api/rtc_event_log",
+    "../api/task_queue",
     "../api/transport:datagram_transport_interface",
+    "../api/transport:enums",
+    "../api/transport:sctp_transport_factory_interface",
     "../api/video:builtin_video_bitrate_allocator_factory",
+    "../api/video:video_bitrate_allocator_factory",
     "../api/video:video_frame",
     "../api/video:video_rtp_headers",
     "../call:call_interfaces",
@@ -114,9 +120,11 @@
     "../rtc_base:checks",
     "../rtc_base:deprecation",
     "../rtc_base:rtc_task_queue",
+    "../rtc_base:socket",
     "../rtc_base:socket_address",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
+    "../rtc_base/network:sent_packet",
     "../rtc_base/synchronization:mutex",
     "../rtc_base/synchronization:sequence_checker",
     "../rtc_base/system:file_wrapper",
@@ -250,6 +258,7 @@
     "../api:rtp_transceiver_direction",
     "../api:scoped_refptr",
     "../api/adaptation:resource_adaptation_api",
+    "../api/audio_codecs:audio_codecs_api",
     "../api/crypto:frame_decryptor_interface",
     "../api/crypto:options",
     "../api/neteq:neteq_api",
@@ -275,6 +284,7 @@
     "../media:rtc_data",
     "../media:rtc_media_base",
     "../media:rtc_media_config",
+    "../modules/audio_processing:audio_processing_statistics",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../p2p:rtc_p2p",
     "../rtc_base",
@@ -346,7 +356,9 @@
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
     "../api:rtc_error",
+    "../api:scoped_refptr",
     "../rtc_base",
+    "../rtc_base:checks",
     "../rtc_base:threading",
     "../rtc_base/synchronization:sequence_checker",
   ]
@@ -374,10 +386,21 @@
     ":rtp_parameters_conversion",
     ":rtp_receiver",
     ":rtp_sender",
+    "../api:array_view",
     "../api:libjingle_peerconnection_api",
+    "../api:rtc_error",
     "../api:rtp_parameters",
+    "../api:rtp_transceiver_direction",
+    "../api:scoped_refptr",
+    "../api/task_queue",
+    "../media:rtc_media_base",
     "../rtc_base:checks",
     "../rtc_base:logging",
+    "../rtc_base:macromagic",
+    "../rtc_base:refcount",
+    "../rtc_base:threading",
+    "../rtc_base/synchronization:sequence_checker",
+    "../rtc_base/third_party/sigslot",
   ]
   absl_deps = [
     "//third_party/abseil-cpp/absl/algorithm:container",
@@ -411,6 +434,7 @@
     "../rtc_base",
     "../rtc_base:checks",
     "../rtc_base:threading",
+    "../rtc_base:weak_ptr",
     "../rtc_base/third_party/sigslot",
   ]
   absl_deps = [
@@ -425,7 +449,15 @@
     "transceiver_list.cc",
     "transceiver_list.h",
   ]
-  deps = [ ":rtp_transceiver" ]
+  deps = [
+    ":rtp_transceiver",
+    "../api:libjingle_peerconnection_api",
+    "../api:rtc_error",
+    "../api:rtp_parameters",
+    "../api:scoped_refptr",
+    "../rtc_base:checks",
+  ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
 }
 
 rtc_library("rtp_receiver") {
@@ -469,11 +501,13 @@
     ":media_stream",
     ":remote_audio_source",
     ":rtp_receiver",
+    "../api:frame_transformer_interface",
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
     "../api:rtp_parameters",
     "../api:scoped_refptr",
     "../api/crypto:frame_decryptor_interface",
+    "../api/transport/rtp:rtp_source",
     "../media:rtc_media_base",
     "../rtc_base",
     "../rtc_base:checks",
@@ -506,6 +540,8 @@
     "../api:rtp_parameters",
     "../api:scoped_refptr",
     "../api/crypto:frame_decryptor_interface",
+    "../api/transport/rtp:rtp_source",
+    "../api/video:recordable_encoded_frame",
     "../api/video:video_frame",
     "../media:rtc_media_base",
     "../rtc_base",
@@ -527,8 +563,11 @@
   ]
   deps = [
     ":video_track_source",
+    "../api/video:recordable_encoded_frame",
+    "../api/video:video_frame",
     "../media:rtc_media_base",
     "../rtc_base",
+    "../rtc_base:checks",
     "../rtc_base/synchronization:mutex",
     "../rtc_base/system:no_unique_address",
   ]
@@ -627,6 +666,7 @@
     "../api:call_api",
     "../api:media_stream_interface",
     "../api:scoped_refptr",
+    "../media:rtc_media_base",
     "../rtc_base",
     "../rtc_base:checks",
     "../rtc_base:logging",
@@ -652,12 +692,20 @@
     ":dtmf_sender",
     ":stats_collector_interface",
     "../api:audio_options_api",
+    "../api:frame_transformer_interface",
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
+    "../api:priority",
+    "../api:rtc_error",
+    "../api:rtp_parameters",
+    "../api:scoped_refptr",
+    "../api/crypto:frame_encryptor_interface",
     "../media:rtc_media_base",
     "../rtc_base:checks",
     "../rtc_base:rtc_base",
+    "../rtc_base:threading",
     "../rtc_base/synchronization:mutex",
+    "../rtc_base/third_party/sigslot",
   ]
   absl_deps = [
     "//third_party/abseil-cpp/absl/algorithm:container",
@@ -695,9 +743,11 @@
   ]
   deps = [
     "../api:libjingle_peerconnection_api",
+    "../api:scoped_refptr",
     "../rtc_base:checks",
     "../rtc_base:rtc_base",
     "../rtc_base:threading",
+    "../rtc_base/third_party/sigslot",
   ]
   absl_deps = [
     "//third_party/abseil-cpp/absl/algorithm:container",
@@ -733,12 +783,14 @@
   ]
   deps = [
     "../api:media_stream_interface",
+    "../api/video:recordable_encoded_frame",
     "../api/video:video_frame",
     "../media:rtc_media_base",
     "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../rtc_base/system:rtc_export",
   ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
 }
 
 rtc_source_set("stats_collector_interface") {
diff --git a/pc/audio_rtp_receiver.cc b/pc/audio_rtp_receiver.cc
index 8ff685d..37a6fc6 100644
--- a/pc/audio_rtp_receiver.cc
+++ b/pc/audio_rtp_receiver.cc
@@ -15,16 +15,14 @@
 #include <utility>
 #include <vector>
 
-#include "api/media_stream_proxy.h"
 #include "api/media_stream_track_proxy.h"
 #include "pc/audio_track.h"
 #include "pc/jitter_buffer_delay.h"
 #include "pc/jitter_buffer_delay_proxy.h"
-#include "pc/media_stream.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/trace_event.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 
 namespace webrtc {
 
diff --git a/pc/audio_rtp_receiver.h b/pc/audio_rtp_receiver.h
index f4b8210..ec77bbc 100644
--- a/pc/audio_rtp_receiver.h
+++ b/pc/audio_rtp_receiver.h
@@ -12,17 +12,20 @@
 #define PC_AUDIO_RTP_RECEIVER_H_
 
 #include <stdint.h>
-
 #include <string>
 #include <vector>
 
 #include "absl/types/optional.h"
 #include "api/crypto/frame_decryptor_interface.h"
+#include "api/dtls_transport_interface.h"
+#include "api/frame_transformer_interface.h"
 #include "api/media_stream_interface.h"
 #include "api/media_stream_track_proxy.h"
 #include "api/media_types.h"
 #include "api/rtp_parameters.h"
+#include "api/rtp_receiver_interface.h"
 #include "api/scoped_refptr.h"
+#include "api/transport/rtp/rtp_source.h"
 #include "media/base/media_channel.h"
 #include "pc/audio_track.h"
 #include "pc/jitter_buffer_delay_interface.h"
@@ -30,6 +33,7 @@
 #include "pc/rtp_receiver.h"
 #include "rtc_base/ref_counted_object.h"
 #include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
diff --git a/pc/channel.cc b/pc/channel.cc
index 4368be3..1fd054a 100644
--- a/pc/channel.cc
+++ b/pc/channel.cc
@@ -10,22 +10,23 @@
 
 #include "pc/channel.h"
 
+#include <algorithm>
+#include <cstdint>
 #include <iterator>
+#include <map>
 #include <utility>
 
 #include "absl/algorithm/container.h"
-#include "absl/memory/memory.h"
-#include "api/call/audio_sink.h"
-#include "media/base/media_constants.h"
+#include "absl/strings/string_view.h"
+#include "api/rtp_parameters.h"
+#include "api/task_queue/queued_task.h"
+#include "media/base/codec.h"
+#include "media/base/rid_description.h"
 #include "media/base/rtp_utils.h"
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
-#include "p2p/base/packet_transport_internal.h"
-#include "pc/channel_manager.h"
 #include "pc/rtp_media_utils.h"
-#include "rtc_base/byte_order.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/copy_on_write_buffer.h"
-#include "rtc_base/dscp.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/network_route.h"
 #include "rtc_base/strings/string_builder.h"
diff --git a/pc/channel.h b/pc/channel.h
index 3d2d67f..0f1fec4 100644
--- a/pc/channel.h
+++ b/pc/channel.h
@@ -11,6 +11,9 @@
 #ifndef PC_CHANNEL_H_
 #define PC_CHANNEL_H_
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include <map>
 #include <memory>
 #include <set>
@@ -18,30 +21,50 @@
 #include <utility>
 #include <vector>
 
+#include "absl/types/optional.h"
 #include "api/call/audio_sink.h"
+#include "api/crypto/crypto_options.h"
 #include "api/function_view.h"
 #include "api/jsep.h"
+#include "api/media_types.h"
 #include "api/rtp_receiver_interface.h"
+#include "api/rtp_transceiver_direction.h"
+#include "api/scoped_refptr.h"
 #include "api/video/video_sink_interface.h"
 #include "api/video/video_source_interface.h"
+#include "call/rtp_demuxer.h"
 #include "call/rtp_packet_sink_interface.h"
 #include "media/base/media_channel.h"
 #include "media/base/media_engine.h"
 #include "media/base/stream_params.h"
+#include "modules/rtp_rtcp/source/rtp_packet_received.h"
 #include "p2p/base/dtls_transport_internal.h"
 #include "p2p/base/packet_transport_internal.h"
 #include "pc/channel_interface.h"
 #include "pc/dtls_srtp_transport.h"
 #include "pc/media_session.h"
 #include "pc/rtp_transport.h"
+#include "pc/rtp_transport_internal.h"
+#include "pc/session_description.h"
 #include "pc/srtp_filter.h"
 #include "pc/srtp_transport.h"
+#include "rtc_base/async_packet_socket.h"
 #include "rtc_base/async_udp_socket.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/copy_on_write_buffer.h"
+#include "rtc_base/location.h"
+#include "rtc_base/message_handler.h"
 #include "rtc_base/network.h"
+#include "rtc_base/network/sent_packet.h"
+#include "rtc_base/network_route.h"
+#include "rtc_base/socket.h"
+#include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/task_utils/pending_task_safety_flag.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
 #include "rtc_base/thread_annotations.h"
+#include "rtc_base/thread_message.h"
 #include "rtc_base/unique_id_generator.h"
 
 namespace webrtc {
diff --git a/pc/channel_manager.cc b/pc/channel_manager.cc
index 9d5adca..256932b 100644
--- a/pc/channel_manager.cc
+++ b/pc/channel_manager.cc
@@ -10,6 +10,7 @@
 
 #include "pc/channel_manager.h"
 
+#include <algorithm>
 #include <utility>
 
 #include "absl/algorithm/container.h"
@@ -19,7 +20,7 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/thread_checker.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/trace_event.h"
 
 namespace cricket {
diff --git a/pc/channel_manager.h b/pc/channel_manager.h
index ba2c260..dc5a113 100644
--- a/pc/channel_manager.h
+++ b/pc/channel_manager.h
@@ -19,6 +19,8 @@
 
 #include "api/audio_options.h"
 #include "api/crypto/crypto_options.h"
+#include "api/rtp_parameters.h"
+#include "api/video/video_bitrate_allocator_factory.h"
 #include "call/call.h"
 #include "media/base/codec.h"
 #include "media/base/media_channel.h"
@@ -29,6 +31,7 @@
 #include "pc/session_description.h"
 #include "rtc_base/system/file_wrapper.h"
 #include "rtc_base/thread.h"
+#include "rtc_base/unique_id_generator.h"
 
 namespace cricket {
 
diff --git a/pc/composite_rtp_transport.cc b/pc/composite_rtp_transport.cc
index 641d1d0..01cb091 100644
--- a/pc/composite_rtp_transport.cc
+++ b/pc/composite_rtp_transport.cc
@@ -13,8 +13,10 @@
 #include <string>
 #include <utility>
 
-#include "absl/memory/memory.h"
+#include "absl/algorithm/container.h"
 #include "p2p/base/packet_transport_internal.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/third_party/sigslot/sigslot.h"
 
 namespace webrtc {
 
diff --git a/pc/composite_rtp_transport.h b/pc/composite_rtp_transport.h
index 35f9382..d703b9d 100644
--- a/pc/composite_rtp_transport.h
+++ b/pc/composite_rtp_transport.h
@@ -11,17 +11,23 @@
 #ifndef PC_COMPOSITE_RTP_TRANSPORT_H_
 #define PC_COMPOSITE_RTP_TRANSPORT_H_
 
+#include <stdint.h>
+
 #include <memory>
 #include <set>
 #include <string>
 #include <vector>
 
+#include "absl/types/optional.h"
 #include "call/rtp_demuxer.h"
 #include "call/rtp_packet_sink_interface.h"
 #include "pc/rtp_transport_internal.h"
 #include "pc/session_description.h"
 #include "rtc_base/async_packet_socket.h"
 #include "rtc_base/copy_on_write_buffer.h"
+#include "rtc_base/network/sent_packet.h"
+#include "rtc_base/network_route.h"
+#include "rtc_base/socket.h"
 
 namespace webrtc {
 
diff --git a/pc/data_channel_controller.cc b/pc/data_channel_controller.cc
index 9fabe13..9f0a490 100644
--- a/pc/data_channel_controller.cc
+++ b/pc/data_channel_controller.cc
@@ -10,10 +10,18 @@
 
 #include "pc/data_channel_controller.h"
 
+#include <algorithm>
 #include <utility>
 
+#include "absl/algorithm/container.h"
+#include "absl/types/optional.h"
+#include "api/peer_connection_interface.h"
+#include "api/rtc_error.h"
 #include "pc/peer_connection.h"
 #include "pc/sctp_utils.h"
+#include "rtc_base/location.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/string_encode.h"
 
 namespace webrtc {
 
diff --git a/pc/data_channel_controller.h b/pc/data_channel_controller.h
index 6759288..ad24349 100644
--- a/pc/data_channel_controller.h
+++ b/pc/data_channel_controller.h
@@ -11,14 +11,31 @@
 #ifndef PC_DATA_CHANNEL_CONTROLLER_H_
 #define PC_DATA_CHANNEL_CONTROLLER_H_
 
+#include <stdint.h>
+
 #include <map>
 #include <memory>
 #include <string>
 #include <vector>
 
+#include "api/data_channel_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/transport/data_channel_transport_interface.h"
+#include "media/base/media_channel.h"
+#include "media/base/media_engine.h"
+#include "media/base/stream_params.h"
 #include "pc/channel.h"
+#include "pc/data_channel_utils.h"
 #include "pc/rtp_data_channel.h"
 #include "pc/sctp_data_channel.h"
+#include "rtc_base/async_invoker.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/copy_on_write_buffer.h"
+#include "rtc_base/ssl_stream_adapter.h"
+#include "rtc_base/synchronization/sequence_checker.h"
+#include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 #include "rtc_base/weak_ptr.h"
 
 namespace webrtc {
diff --git a/pc/data_channel_utils.cc b/pc/data_channel_utils.cc
index 51d6af9..3e10f37 100644
--- a/pc/data_channel_utils.cc
+++ b/pc/data_channel_utils.cc
@@ -10,6 +10,10 @@
 
 #include "pc/data_channel_utils.h"
 
+#include <utility>
+
+#include "rtc_base/checks.h"
+
 namespace webrtc {
 
 bool PacketQueue::Empty() const {
diff --git a/pc/data_channel_utils.h b/pc/data_channel_utils.h
index 13c6620..de5119e 100644
--- a/pc/data_channel_utils.h
+++ b/pc/data_channel_utils.h
@@ -11,6 +11,8 @@
 #ifndef PC_DATA_CHANNEL_UTILS_H_
 #define PC_DATA_CHANNEL_UTILS_H_
 
+#include <stddef.h>
+#include <stdint.h>
 #include <deque>
 #include <memory>
 #include <string>
diff --git a/pc/dtls_srtp_transport.h b/pc/dtls_srtp_transport.h
index c63a3ca..7c4c590 100644
--- a/pc/dtls_srtp_transport.h
+++ b/pc/dtls_srtp_transport.h
@@ -11,6 +11,7 @@
 #ifndef PC_DTLS_SRTP_TRANSPORT_H_
 #define PC_DTLS_SRTP_TRANSPORT_H_
 
+#include <string>
 #include <vector>
 
 #include "absl/types/optional.h"
diff --git a/pc/dtls_transport.cc b/pc/dtls_transport.cc
index 550ede7..a0547c8 100644
--- a/pc/dtls_transport.cc
+++ b/pc/dtls_transport.cc
@@ -12,7 +12,13 @@
 
 #include <utility>
 
+#include "absl/types/optional.h"
 #include "pc/ice_transport.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/ref_counted_object.h"
+#include "rtc_base/ssl_certificate.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 
 namespace webrtc {
 
diff --git a/pc/dtls_transport.h b/pc/dtls_transport.h
index ff8108c..dd35783 100644
--- a/pc/dtls_transport.h
+++ b/pc/dtls_transport.h
@@ -17,7 +17,12 @@
 #include "api/ice_transport_interface.h"
 #include "api/scoped_refptr.h"
 #include "p2p/base/dtls_transport.h"
+#include "p2p/base/dtls_transport_internal.h"
+#include "pc/ice_transport.h"
 #include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
diff --git a/pc/dtmf_sender.h b/pc/dtmf_sender.h
index e332a7e..76aa04f 100644
--- a/pc/dtmf_sender.h
+++ b/pc/dtmf_sender.h
@@ -11,13 +11,18 @@
 #ifndef PC_DTMF_SENDER_H_
 #define PC_DTMF_SENDER_H_
 
+#include <stdint.h>
+
 #include <string>
 
 #include "api/dtmf_sender_interface.h"
 #include "api/proxy.h"
+#include "api/scoped_refptr.h"
 #include "rtc_base/async_invoker.h"
 #include "rtc_base/constructor_magic.h"
+#include "rtc_base/location.h"
 #include "rtc_base/ref_count.h"
+#include "rtc_base/third_party/sigslot/sigslot.h"
 #include "rtc_base/thread.h"
 
 // DtmfSender is the native implementation of the RTCDTMFSender defined by
@@ -95,6 +100,7 @@
 
 // Define proxy for DtmfSenderInterface.
 BEGIN_SIGNALING_PROXY_MAP(DtmfSender)
+
 PROXY_SIGNALING_THREAD_DESTRUCTOR()
 PROXY_METHOD1(void, RegisterObserver, DtmfSenderObserverInterface*)
 PROXY_METHOD0(void, UnregisterObserver)
diff --git a/pc/ice_server_parsing.cc b/pc/ice_server_parsing.cc
index 4764137..0daf8e4 100644
--- a/pc/ice_server_parsing.cc
+++ b/pc/ice_server_parsing.cc
@@ -12,7 +12,9 @@
 
 #include <stddef.h>
 
+#include <algorithm>
 #include <cctype>  // For std::isdigit.
+#include <memory>
 #include <string>
 
 #include "p2p/base/port_interface.h"
@@ -21,6 +23,7 @@
 #include "rtc_base/ip_address.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/socket_address.h"
+#include "rtc_base/string_encode.h"
 
 namespace webrtc {
 
diff --git a/pc/ice_transport.cc b/pc/ice_transport.cc
index ccc5ecd..d45534a 100644
--- a/pc/ice_transport.cc
+++ b/pc/ice_transport.cc
@@ -10,8 +10,7 @@
 
 #include "pc/ice_transport.h"
 
-#include <memory>
-#include <utility>
+#include "rtc_base/synchronization/sequence_checker.h"
 
 namespace webrtc {
 
diff --git a/pc/ice_transport.h b/pc/ice_transport.h
index c1529de..4234ff6 100644
--- a/pc/ice_transport.h
+++ b/pc/ice_transport.h
@@ -12,7 +12,9 @@
 #define PC_ICE_TRANSPORT_H_
 
 #include "api/ice_transport_interface.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 #include "rtc_base/thread_checker.h"
 
 namespace webrtc {
diff --git a/pc/jitter_buffer_delay.cc b/pc/jitter_buffer_delay.cc
index c9506b3..8863584 100644
--- a/pc/jitter_buffer_delay.cc
+++ b/pc/jitter_buffer_delay.cc
@@ -11,12 +11,10 @@
 #include "pc/jitter_buffer_delay.h"
 
 #include "rtc_base/checks.h"
-#include "rtc_base/location.h"
-#include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/thread.h"
-#include "rtc_base/thread_checker.h"
 
 namespace {
 constexpr int kDefaultDelay = 0;
diff --git a/pc/jsep_transport.cc b/pc/jsep_transport.cc
index 2f7615a..9d70021 100644
--- a/pc/jsep_transport.cc
+++ b/pc/jsep_transport.cc
@@ -14,7 +14,6 @@
 #include <stdint.h>
 
 #include <memory>
-#include <type_traits>
 #include <utility>  // for std::pair
 
 #include "api/array_view.h"
@@ -25,6 +24,7 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/ref_counted_object.h"
 #include "rtc_base/strings/string_builder.h"
 
 using webrtc::SdpType;
diff --git a/pc/jsep_transport.h b/pc/jsep_transport.h
index 11c8168..0ade20e 100644
--- a/pc/jsep_transport.h
+++ b/pc/jsep_transport.h
@@ -18,27 +18,40 @@
 
 #include "absl/types/optional.h"
 #include "api/candidate.h"
+#include "api/crypto_params.h"
 #include "api/ice_transport_interface.h"
 #include "api/jsep.h"
+#include "api/rtc_error.h"
+#include "api/scoped_refptr.h"
 #include "api/transport/data_channel_transport_interface.h"
 #include "media/sctp/sctp_transport_internal.h"
 #include "p2p/base/dtls_transport.h"
+#include "p2p/base/dtls_transport_internal.h"
+#include "p2p/base/ice_transport_internal.h"
 #include "p2p/base/p2p_constants.h"
+#include "p2p/base/transport_description.h"
 #include "p2p/base/transport_info.h"
 #include "pc/composite_rtp_transport.h"
 #include "pc/dtls_srtp_transport.h"
 #include "pc/dtls_transport.h"
 #include "pc/rtcp_mux_filter.h"
 #include "pc/rtp_transport.h"
+#include "pc/rtp_transport_internal.h"
 #include "pc/sctp_transport.h"
 #include "pc/session_description.h"
 #include "pc/srtp_filter.h"
 #include "pc/srtp_transport.h"
 #include "pc/transport_stats.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/constructor_magic.h"
+#include "rtc_base/deprecated/recursive_critical_section.h"
 #include "rtc_base/rtc_certificate.h"
+#include "rtc_base/ssl_fingerprint.h"
 #include "rtc_base/ssl_stream_adapter.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 #include "rtc_base/thread_checker.h"
 
 namespace cricket {
diff --git a/pc/jsep_transport_controller.cc b/pc/jsep_transport_controller.cc
index 7e5f893..bb03cc7 100644
--- a/pc/jsep_transport_controller.cc
+++ b/pc/jsep_transport_controller.cc
@@ -10,15 +10,26 @@
 
 #include "pc/jsep_transport_controller.h"
 
+#include <stddef.h>
+
+#include <algorithm>
 #include <memory>
 #include <utility>
 
 #include "absl/algorithm/container.h"
-#include "api/ice_transport_factory.h"
+#include "api/rtp_parameters.h"
+#include "api/transport/enums.h"
+#include "media/sctp/sctp_transport_internal.h"
+#include "p2p/base/dtls_transport.h"
 #include "p2p/base/ice_transport_internal.h"
+#include "p2p/base/p2p_constants.h"
 #include "p2p/base/port.h"
-#include "pc/srtp_filter.h"
 #include "rtc_base/checks.h"
+#include "rtc_base/location.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/net_helper.h"
+#include "rtc_base/socket_address.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/thread.h"
 
 using webrtc::SdpType;
diff --git a/pc/jsep_transport_controller.h b/pc/jsep_transport_controller.h
index ced7804..3dab284 100644
--- a/pc/jsep_transport_controller.h
+++ b/pc/jsep_transport_controller.h
@@ -11,32 +11,61 @@
 #ifndef PC_JSEP_TRANSPORT_CONTROLLER_H_
 #define PC_JSEP_TRANSPORT_CONTROLLER_H_
 
+#include <stdint.h>
+
+#include <functional>
 #include <map>
 #include <memory>
 #include <string>
 #include <utility>
 #include <vector>
 
+#include "absl/types/optional.h"
+#include "api/async_resolver_factory.h"
 #include "api/candidate.h"
 #include "api/crypto/crypto_options.h"
 #include "api/ice_transport_factory.h"
+#include "api/ice_transport_interface.h"
+#include "api/jsep.h"
 #include "api/peer_connection_interface.h"
+#include "api/rtc_error.h"
 #include "api/rtc_event_log/rtc_event_log.h"
+#include "api/scoped_refptr.h"
+#include "api/transport/data_channel_transport_interface.h"
+#include "api/transport/sctp_transport_factory_interface.h"
 #include "media/sctp/sctp_transport_internal.h"
 #include "p2p/base/dtls_transport.h"
 #include "p2p/base/dtls_transport_factory.h"
+#include "p2p/base/dtls_transport_internal.h"
+#include "p2p/base/ice_transport_internal.h"
 #include "p2p/base/p2p_transport_channel.h"
+#include "p2p/base/packet_transport_internal.h"
+#include "p2p/base/port.h"
+#include "p2p/base/port_allocator.h"
+#include "p2p/base/transport_description.h"
+#include "p2p/base/transport_info.h"
 #include "pc/channel.h"
 #include "pc/dtls_srtp_transport.h"
 #include "pc/dtls_transport.h"
 #include "pc/jsep_transport.h"
 #include "pc/rtp_transport.h"
+#include "pc/rtp_transport_internal.h"
+#include "pc/sctp_transport.h"
+#include "pc/session_description.h"
 #include "pc/srtp_transport.h"
+#include "pc/transport_stats.h"
 #include "rtc_base/async_invoker.h"
-#include "rtc_base/constructor_magic.h"
-#include "rtc_base/ref_counted_object.h"
 #include "rtc_base/callback_list.h"
+#include "rtc_base/constructor_magic.h"
+#include "rtc_base/copy_on_write_buffer.h"
+#include "rtc_base/helpers.h"
+#include "rtc_base/ref_counted_object.h"
+#include "rtc_base/rtc_certificate.h"
+#include "rtc_base/ssl_certificate.h"
+#include "rtc_base/ssl_stream_adapter.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace rtc {
 class Thread;
diff --git a/pc/media_protocol_names.cc b/pc/media_protocol_names.cc
index 3def3f0..ae4fcf3 100644
--- a/pc/media_protocol_names.cc
+++ b/pc/media_protocol_names.cc
@@ -10,6 +10,9 @@
 
 #include "pc/media_protocol_names.h"
 
+#include <ctype.h>
+#include <stddef.h>
+
 namespace cricket {
 
 // There are multiple variants of the RTP protocol stack, including
diff --git a/pc/media_session.cc b/pc/media_session.cc
index 4fd3efa..caf2458 100644
--- a/pc/media_session.cc
+++ b/pc/media_session.cc
@@ -10,8 +10,9 @@
 
 #include "pc/media_session.h"
 
+#include <stddef.h>
+
 #include <algorithm>
-#include <functional>
 #include <map>
 #include <memory>
 #include <set>
@@ -20,8 +21,10 @@
 
 #include "absl/algorithm/container.h"
 #include "absl/strings/match.h"
+#include "absl/strings/string_view.h"
 #include "absl/types/optional.h"
 #include "api/crypto_params.h"
+#include "media/base/codec.h"
 #include "media/base/h264_profile_level_id.h"
 #include "media/base/media_constants.h"
 #include "media/sctp/sctp_transport_internal.h"
@@ -29,11 +32,12 @@
 #include "pc/channel_manager.h"
 #include "pc/media_protocol_names.h"
 #include "pc/rtp_media_utils.h"
-#include "pc/srtp_filter.h"
 #include "pc/used_ids.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/ssl_stream_adapter.h"
+#include "rtc_base/string_encode.h"
 #include "rtc_base/third_party/base64/base64.h"
 #include "rtc_base/unique_id_generator.h"
 #include "system_wrappers/include/field_trial.h"
diff --git a/pc/media_session.h b/pc/media_session.h
index 58a31a2..ccfa676 100644
--- a/pc/media_session.h
+++ b/pc/media_session.h
@@ -18,14 +18,22 @@
 #include <string>
 #include <vector>
 
+#include "api/crypto/crypto_options.h"
 #include "api/media_types.h"
+#include "api/rtp_parameters.h"
+#include "api/rtp_transceiver_direction.h"
 #include "media/base/media_constants.h"
 #include "media/base/media_engine.h"  // For DataChannelType
+#include "media/base/rid_description.h"
+#include "media/base/stream_params.h"
 #include "p2p/base/ice_credentials_iterator.h"
+#include "p2p/base/transport_description.h"
 #include "p2p/base/transport_description_factory.h"
+#include "p2p/base/transport_info.h"
 #include "pc/jsep_transport.h"
 #include "pc/media_protocol_names.h"
 #include "pc/session_description.h"
+#include "pc/simulcast_description.h"
 #include "rtc_base/unique_id_generator.h"
 
 namespace cricket {
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 68fa06e..c3ffa29 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -45,13 +45,14 @@
 #include "pc/sctp_transport.h"
 #include "pc/simulcast_description.h"
 #include "pc/webrtc_session_description_factory.h"
+#include "rtc_base/callback_list.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/ip_address.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/net_helper.h"
 #include "rtc_base/network_constants.h"
-#include "rtc_base/callback_list.h"
+#include "rtc_base/ref_counted_object.h"
 #include "rtc_base/socket_address.h"
 #include "rtc_base/string_encode.h"
 #include "rtc_base/task_utils/to_queued_task.h"
diff --git a/pc/peer_connection_factory.cc b/pc/peer_connection_factory.cc
index 2529877..0048992 100644
--- a/pc/peer_connection_factory.cc
+++ b/pc/peer_connection_factory.cc
@@ -10,9 +10,7 @@
 
 #include "pc/peer_connection_factory.h"
 
-#include <cstdio>
 #include <memory>
-#include <type_traits>
 #include <utility>
 
 #include "absl/strings/match.h"
diff --git a/pc/peer_connection_factory.h b/pc/peer_connection_factory.h
index 9c4a2b0..80d2592 100644
--- a/pc/peer_connection_factory.h
+++ b/pc/peer_connection_factory.h
@@ -39,8 +39,11 @@
 #include "p2p/base/port_allocator.h"
 #include "pc/channel_manager.h"
 #include "pc/connection_context.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/rtc_certificate_generator.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace rtc {
 class BasicNetworkManager;
diff --git a/pc/peer_connection_message_handler.cc b/pc/peer_connection_message_handler.cc
index b3ffcf8..ea9df5a 100644
--- a/pc/peer_connection_message_handler.cc
+++ b/pc/peer_connection_message_handler.cc
@@ -15,7 +15,11 @@
 #include "api/jsep.h"
 #include "api/media_stream_interface.h"
 #include "api/peer_connection_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/stats_types.h"
 #include "pc/stats_collector_interface.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/location.h"
 #include "rtc_base/synchronization/sequence_checker.h"
 
 namespace webrtc {
diff --git a/pc/peer_connection_message_handler.h b/pc/peer_connection_message_handler.h
index 027fbea..c19f5a4 100644
--- a/pc/peer_connection_message_handler.h
+++ b/pc/peer_connection_message_handler.h
@@ -11,10 +11,17 @@
 #ifndef PC_PEER_CONNECTION_MESSAGE_HANDLER_H_
 #define PC_PEER_CONNECTION_MESSAGE_HANDLER_H_
 
+#include <functional>
+
+#include "api/jsep.h"
+#include "api/media_stream_interface.h"
+#include "api/peer_connection_interface.h"
 #include "api/rtc_error.h"
 #include "api/stats_types.h"
+#include "pc/stats_collector_interface.h"
 #include "rtc_base/message_handler.h"
 #include "rtc_base/thread.h"
+#include "rtc_base/thread_message.h"
 
 namespace webrtc {
 
diff --git a/pc/remote_audio_source.cc b/pc/remote_audio_source.cc
index 8ae0612..50e9c55 100644
--- a/pc/remote_audio_source.cc
+++ b/pc/remote_audio_source.cc
@@ -13,17 +13,15 @@
 #include <stddef.h>
 
 #include <memory>
-#include <string>
 
 #include "absl/algorithm/container.h"
 #include "api/scoped_refptr.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/strings/string_format.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/thread.h"
-#include "rtc_base/thread_checker.h"
 
 namespace webrtc {
 
diff --git a/pc/remote_audio_source.h b/pc/remote_audio_source.h
index 9ec0916..276a103 100644
--- a/pc/remote_audio_source.h
+++ b/pc/remote_audio_source.h
@@ -11,15 +11,21 @@
 #ifndef PC_REMOTE_AUDIO_SOURCE_H_
 #define PC_REMOTE_AUDIO_SOURCE_H_
 
+#include <stdint.h>
+
 #include <list>
 #include <string>
 
 #include "absl/types/optional.h"
 #include "api/call/audio_sink.h"
+#include "api/media_stream_interface.h"
 #include "api/notifier.h"
+#include "media/base/media_channel.h"
 #include "pc/channel.h"
 #include "rtc_base/message_handler.h"
 #include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_message.h"
 
 namespace rtc {
 struct Message;
@@ -61,6 +67,7 @@
  private:
   // These are callbacks from the media engine.
   class AudioDataProxy;
+
   void OnData(const AudioSinkInterface::Data& audio);
   void OnAudioChannelGone();
 
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index c9a337d..040ee4d 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -10,24 +10,52 @@
 
 #include "pc/rtc_stats_collector.h"
 
+#include <stdio.h>
+#include <algorithm>
+#include <cstdint>
 #include <map>
 #include <memory>
 #include <string>
 #include <utility>
 #include <vector>
 
+#include "api/array_view.h"
 #include "api/candidate.h"
 #include "api/media_stream_interface.h"
-#include "api/peer_connection_interface.h"
+#include "api/rtp_parameters.h"
+#include "api/rtp_receiver_interface.h"
+#include "api/rtp_sender_interface.h"
+#include "api/stats/rtc_stats.h"
+#include "api/stats/rtcstats_objects.h"
+#include "api/task_queue/queued_task.h"
 #include "api/video/video_content_type.h"
+#include "common_video/include/quality_limitation_reason.h"
 #include "media/base/media_channel.h"
+#include "modules/audio_processing/include/audio_processing_statistics.h"
+#include "modules/rtp_rtcp/include/report_block_data.h"
+#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
+#include "p2p/base/connection_info.h"
+#include "p2p/base/dtls_transport_internal.h"
+#include "p2p/base/ice_transport_internal.h"
 #include "p2p/base/p2p_constants.h"
 #include "p2p/base/port.h"
-#include "pc/peer_connection.h"
+#include "pc/channel.h"
+#include "pc/channel_interface.h"
+#include "pc/data_channel_utils.h"
 #include "pc/rtc_stats_traversal.h"
 #include "pc/webrtc_sdp.h"
 #include "rtc_base/checks.h"
+#include "rtc_base/ip_address.h"
+#include "rtc_base/location.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/network_constants.h"
+#include "rtc_base/ref_counted_object.h"
+#include "rtc_base/rtc_certificate.h"
+#include "rtc_base/socket_address.h"
+#include "rtc_base/ssl_stream_adapter.h"
+#include "rtc_base/string_encode.h"
 #include "rtc_base/strings/string_builder.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/time_utils.h"
 #include "rtc_base/trace_event.h"
 
diff --git a/pc/rtc_stats_collector.h b/pc/rtc_stats_collector.h
index 35576e9..c6c4d59 100644
--- a/pc/rtc_stats_collector.h
+++ b/pc/rtc_stats_collector.h
@@ -11,6 +11,7 @@
 #ifndef PC_RTC_STATS_COLLECTOR_H_
 #define PC_RTC_STATS_COLLECTOR_H_
 
+#include <stdint.h>
 #include <map>
 #include <memory>
 #include <set>
@@ -18,6 +19,8 @@
 #include <vector>
 
 #include "absl/types/optional.h"
+#include "api/data_channel_interface.h"
+#include "api/media_types.h"
 #include "api/scoped_refptr.h"
 #include "api/stats/rtc_stats_collector_callback.h"
 #include "api/stats/rtc_stats_report.h"
@@ -26,11 +29,20 @@
 #include "media/base/media_channel.h"
 #include "pc/data_channel_utils.h"
 #include "pc/peer_connection_internal.h"
+#include "pc/rtp_data_channel.h"
+#include "pc/rtp_receiver.h"
+#include "pc/rtp_sender.h"
+#include "pc/rtp_transceiver.h"
+#include "pc/sctp_data_channel.h"
 #include "pc/track_media_info_map.h"
+#include "pc/transport_stats.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/event.h"
 #include "rtc_base/ref_count.h"
+#include "rtc_base/ssl_certificate.h"
 #include "rtc_base/ssl_identity.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
 #include "rtc_base/time_utils.h"
 
 namespace webrtc {
diff --git a/pc/rtp_data_channel.h b/pc/rtp_data_channel.h
index ea2de49..f1a86ba 100644
--- a/pc/rtp_data_channel.h
+++ b/pc/rtp_data_channel.h
@@ -11,18 +11,25 @@
 #ifndef PC_RTP_DATA_CHANNEL_H_
 #define PC_RTP_DATA_CHANNEL_H_
 
+#include <stdint.h>
+
 #include <memory>
 #include <string>
 
+#include "absl/types/optional.h"
 #include "api/data_channel_interface.h"
 #include "api/priority.h"
+#include "api/rtc_error.h"
 #include "api/scoped_refptr.h"
 #include "api/transport/data_channel_transport_interface.h"
 #include "media/base/media_channel.h"
 #include "pc/channel.h"
 #include "pc/data_channel_utils.h"
 #include "rtc_base/async_invoker.h"
+#include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
diff --git a/pc/rtp_media_utils.h b/pc/rtp_media_utils.h
index e90a76e..d45cc74 100644
--- a/pc/rtp_media_utils.h
+++ b/pc/rtp_media_utils.h
@@ -11,6 +11,7 @@
 #ifndef PC_RTP_MEDIA_UTILS_H_
 #define PC_RTP_MEDIA_UTILS_H_
 
+#include "api/rtp_transceiver_direction.h"
 #include "api/rtp_transceiver_interface.h"
 
 namespace webrtc {
diff --git a/pc/rtp_parameters_conversion.cc b/pc/rtp_parameters_conversion.cc
index 68a948e..8d3064e 100644
--- a/pc/rtp_parameters_conversion.cc
+++ b/pc/rtp_parameters_conversion.cc
@@ -10,10 +10,10 @@
 
 #include "pc/rtp_parameters_conversion.h"
 
+#include <algorithm>
 #include <cstdint>
 #include <set>
 #include <string>
-#include <unordered_map>
 #include <utility>
 
 #include "api/array_view.h"
diff --git a/pc/rtp_receiver.cc b/pc/rtp_receiver.cc
index f65afd7..694a821 100644
--- a/pc/rtp_receiver.cc
+++ b/pc/rtp_receiver.cc
@@ -16,12 +16,8 @@
 #include <vector>
 
 #include "api/media_stream_proxy.h"
-#include "api/media_stream_track_proxy.h"
 #include "pc/media_stream.h"
-#include "rtc_base/checks.h"
 #include "rtc_base/location.h"
-#include "rtc_base/logging.h"
-#include "rtc_base/trace_event.h"
 
 namespace webrtc {
 
diff --git a/pc/rtp_receiver.h b/pc/rtp_receiver.h
index 2cfccd4..22fa753 100644
--- a/pc/rtp_receiver.h
+++ b/pc/rtp_receiver.h
@@ -22,6 +22,7 @@
 
 #include "absl/types/optional.h"
 #include "api/crypto/frame_decryptor_interface.h"
+#include "api/dtls_transport_interface.h"
 #include "api/media_stream_interface.h"
 #include "api/media_types.h"
 #include "api/rtp_parameters.h"
diff --git a/pc/rtp_sender.cc b/pc/rtp_sender.cc
index 5a7e237..7026dd9 100644
--- a/pc/rtp_sender.cc
+++ b/pc/rtp_sender.cc
@@ -10,18 +10,22 @@
 
 #include "pc/rtp_sender.h"
 
+#include <algorithm>
 #include <atomic>
 #include <utility>
 #include <vector>
 
+#include "absl/algorithm/container.h"
 #include "api/audio_options.h"
 #include "api/media_stream_interface.h"
+#include "api/priority.h"
 #include "media/base/media_engine.h"
 #include "pc/stats_collector_interface.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/ref_counted_object.h"
 #include "rtc_base/trace_event.h"
 
 namespace webrtc {
diff --git a/pc/rtp_sender.h b/pc/rtp_sender.h
index 51ae1e9..0b4c204 100644
--- a/pc/rtp_sender.h
+++ b/pc/rtp_sender.h
@@ -15,16 +15,30 @@
 #ifndef PC_RTP_SENDER_H_
 #define PC_RTP_SENDER_H_
 
+#include <stddef.h>
+#include <stdint.h>
 #include <memory>
 #include <string>
 #include <vector>
 
+#include "absl/types/optional.h"
+#include "api/crypto/frame_encryptor_interface.h"
+#include "api/dtls_transport_interface.h"
+#include "api/dtmf_sender_interface.h"
+#include "api/frame_transformer_interface.h"
 #include "api/media_stream_interface.h"
+#include "api/media_types.h"
+#include "api/rtc_error.h"
+#include "api/rtp_parameters.h"
 #include "api/rtp_sender_interface.h"
+#include "api/scoped_refptr.h"
 #include "media/base/audio_source.h"
 #include "media/base/media_channel.h"
 #include "pc/dtmf_sender.h"
+#include "pc/stats_collector_interface.h"
 #include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
 
 namespace webrtc {
 
diff --git a/pc/rtp_transceiver.cc b/pc/rtp_transceiver.cc
index d11e04b..b1f53f1 100644
--- a/pc/rtp_transceiver.cc
+++ b/pc/rtp_transceiver.cc
@@ -10,18 +10,22 @@
 
 #include "pc/rtp_transceiver.h"
 
+#include <iterator>
 #include <string>
 #include <utility>
 #include <vector>
 
 #include "absl/algorithm/container.h"
 #include "api/rtp_parameters.h"
+#include "media/base/codec.h"
+#include "media/base/media_constants.h"
 #include "pc/channel_manager.h"
 #include "pc/rtp_media_utils.h"
-#include "pc/rtp_parameters_conversion.h"
 #include "pc/session_description.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/synchronization/sequence_checker.h"
+#include "rtc_base/thread.h"
 
 namespace webrtc {
 namespace {
diff --git a/pc/rtp_transceiver.h b/pc/rtp_transceiver.h
index 57dbaee..43f376a 100644
--- a/pc/rtp_transceiver.h
+++ b/pc/rtp_transceiver.h
@@ -11,14 +11,32 @@
 #ifndef PC_RTP_TRANSCEIVER_H_
 #define PC_RTP_TRANSCEIVER_H_
 
+#include <stddef.h>
+
+#include <algorithm>
+#include <functional>
 #include <string>
 #include <vector>
 
+#include "absl/types/optional.h"
+#include "api/array_view.h"
+#include "api/media_types.h"
+#include "api/proxy.h"
+#include "api/rtc_error.h"
+#include "api/rtp_parameters.h"
+#include "api/rtp_receiver_interface.h"
+#include "api/rtp_sender_interface.h"
+#include "api/rtp_transceiver_direction.h"
 #include "api/rtp_transceiver_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/task_queue/task_queue_base.h"
 #include "pc/channel_interface.h"
 #include "pc/channel_manager.h"
 #include "pc/rtp_receiver.h"
 #include "pc/rtp_sender.h"
+#include "rtc_base/ref_counted_object.h"
+#include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
@@ -247,6 +265,7 @@
 };
 
 BEGIN_SIGNALING_PROXY_MAP(RtpTransceiver)
+
 PROXY_SIGNALING_THREAD_DESTRUCTOR()
 BYPASS_PROXY_CONSTMETHOD0(cricket::MediaType, media_type)
 PROXY_CONSTMETHOD0(absl::optional<std::string>, mid)
diff --git a/pc/rtp_transmission_manager.h b/pc/rtp_transmission_manager.h
index 731c3b7..21f5a96 100644
--- a/pc/rtp_transmission_manager.h
+++ b/pc/rtp_transmission_manager.h
@@ -36,6 +36,7 @@
 #include "rtc_base/third_party/sigslot/sigslot.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/thread_annotations.h"
+#include "rtc_base/weak_ptr.h"
 
 namespace rtc {
 class Thread;
diff --git a/pc/rtp_transport.cc b/pc/rtp_transport.cc
index fe7357f..1f2082e 100644
--- a/pc/rtp_transport.cc
+++ b/pc/rtp_transport.cc
@@ -11,12 +11,11 @@
 #include "pc/rtp_transport.h"
 
 #include <errno.h>
-
 #include <string>
 #include <utility>
 
-#include "api/rtp_headers.h"
-#include "api/rtp_parameters.h"
+#include "absl/strings/string_view.h"
+#include "api/array_view.h"
 #include "media/base/rtp_utils.h"
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
 #include "rtc_base/checks.h"
diff --git a/pc/rtp_transport.h b/pc/rtp_transport.h
index 57ad9e5..893d91e 100644
--- a/pc/rtp_transport.h
+++ b/pc/rtp_transport.h
@@ -11,11 +11,22 @@
 #ifndef PC_RTP_TRANSPORT_H_
 #define PC_RTP_TRANSPORT_H_
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include <string>
 
+#include "absl/types/optional.h"
 #include "call/rtp_demuxer.h"
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
+#include "p2p/base/packet_transport_internal.h"
 #include "pc/rtp_transport_internal.h"
+#include "pc/session_description.h"
+#include "rtc_base/async_packet_socket.h"
+#include "rtc_base/copy_on_write_buffer.h"
+#include "rtc_base/network/sent_packet.h"
+#include "rtc_base/network_route.h"
+#include "rtc_base/socket.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
 
 namespace rtc {
diff --git a/pc/sctp_data_channel.h b/pc/sctp_data_channel.h
index 6d121e6..ddb8565 100644
--- a/pc/sctp_data_channel.h
+++ b/pc/sctp_data_channel.h
@@ -11,18 +11,25 @@
 #ifndef PC_SCTP_DATA_CHANNEL_H_
 #define PC_SCTP_DATA_CHANNEL_H_
 
+#include <stdint.h>
+
 #include <memory>
 #include <set>
 #include <string>
 
+#include "absl/types/optional.h"
 #include "api/data_channel_interface.h"
 #include "api/priority.h"
+#include "api/rtc_error.h"
 #include "api/scoped_refptr.h"
 #include "api/transport/data_channel_transport_interface.h"
 #include "media/base/media_channel.h"
 #include "pc/data_channel_utils.h"
+#include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/ssl_stream_adapter.h"  // For SSLRole
 #include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
diff --git a/pc/sctp_data_channel_transport.cc b/pc/sctp_data_channel_transport.cc
index 497e11f..135c144 100644
--- a/pc/sctp_data_channel_transport.cc
+++ b/pc/sctp_data_channel_transport.cc
@@ -9,6 +9,8 @@
  */
 
 #include "pc/sctp_data_channel_transport.h"
+
+#include "absl/types/optional.h"
 #include "pc/sctp_utils.h"
 
 namespace webrtc {
diff --git a/pc/sctp_data_channel_transport.h b/pc/sctp_data_channel_transport.h
index 623a490..30818ab 100644
--- a/pc/sctp_data_channel_transport.h
+++ b/pc/sctp_data_channel_transport.h
@@ -11,8 +11,11 @@
 #ifndef PC_SCTP_DATA_CHANNEL_TRANSPORT_H_
 #define PC_SCTP_DATA_CHANNEL_TRANSPORT_H_
 
+#include "api/rtc_error.h"
 #include "api/transport/data_channel_transport_interface.h"
+#include "media/base/media_channel.h"
 #include "media/sctp/sctp_transport_internal.h"
+#include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
 
 namespace webrtc {
diff --git a/pc/sctp_transport.cc b/pc/sctp_transport.cc
index b542695..f3e40b8 100644
--- a/pc/sctp_transport.cc
+++ b/pc/sctp_transport.cc
@@ -13,6 +13,12 @@
 #include <algorithm>
 #include <utility>
 
+#include "absl/types/optional.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/location.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/synchronization/sequence_checker.h"
+
 namespace webrtc {
 
 SctpTransport::SctpTransport(
diff --git a/pc/sctp_transport.h b/pc/sctp_transport.h
index a902ff0..d916a00 100644
--- a/pc/sctp_transport.h
+++ b/pc/sctp_transport.h
@@ -13,11 +13,17 @@
 
 #include <memory>
 
+#include "api/dtls_transport_interface.h"
 #include "api/scoped_refptr.h"
 #include "api/sctp_transport_interface.h"
 #include "media/sctp/sctp_transport.h"
+#include "media/sctp/sctp_transport_internal.h"
+#include "p2p/base/dtls_transport_internal.h"
 #include "pc/dtls_transport.h"
 #include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/third_party/sigslot/sigslot.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
diff --git a/pc/sctp_utils.cc b/pc/sctp_utils.cc
index 1882a15..9d46cc4 100644
--- a/pc/sctp_utils.cc
+++ b/pc/sctp_utils.cc
@@ -13,8 +13,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "absl/types/optional.h"
 #include "api/priority.h"
 #include "rtc_base/byte_buffer.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/logging.h"
 
diff --git a/pc/sctp_utils.h b/pc/sctp_utils.h
index 339ef21..44225cf 100644
--- a/pc/sctp_utils.h
+++ b/pc/sctp_utils.h
@@ -16,6 +16,7 @@
 #include "api/data_channel_interface.h"
 #include "api/transport/data_channel_transport_interface.h"
 #include "media/base/media_channel.h"
+#include "rtc_base/copy_on_write_buffer.h"
 
 namespace rtc {
 class CopyOnWriteBuffer;
diff --git a/pc/sdp_offer_answer.cc b/pc/sdp_offer_answer.cc
index 6e47136..cf28491 100644
--- a/pc/sdp_offer_answer.cc
+++ b/pc/sdp_offer_answer.cc
@@ -39,7 +39,6 @@
 #include "p2p/base/transport_description.h"
 #include "p2p/base/transport_description_factory.h"
 #include "p2p/base/transport_info.h"
-#include "pc/connection_context.h"
 #include "pc/data_channel_utils.h"
 #include "pc/media_protocol_names.h"
 #include "pc/media_stream.h"
diff --git a/pc/sdp_serializer.cc b/pc/sdp_serializer.cc
index 7ebaffd..1074316 100644
--- a/pc/sdp_serializer.cc
+++ b/pc/sdp_serializer.cc
@@ -10,12 +10,14 @@
 
 #include "pc/sdp_serializer.h"
 
+#include <algorithm>
+#include <map>
 #include <string>
 #include <utility>
 #include <vector>
 
 #include "absl/algorithm/container.h"
-#include "api/jsep.h"
+#include "absl/types/optional.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/string_encode.h"
diff --git a/pc/sdp_serializer.h b/pc/sdp_serializer.h
index 476ebaf..1223cd1 100644
--- a/pc/sdp_serializer.h
+++ b/pc/sdp_serializer.h
@@ -17,6 +17,7 @@
 #include "api/rtc_error.h"
 #include "media/base/rid_description.h"
 #include "pc/session_description.h"
+#include "pc/simulcast_description.h"
 
 namespace webrtc {
 
diff --git a/pc/sdp_utils.cc b/pc/sdp_utils.cc
index f5385a6..b750b04 100644
--- a/pc/sdp_utils.cc
+++ b/pc/sdp_utils.cc
@@ -11,10 +11,10 @@
 #include "pc/sdp_utils.h"
 
 #include <memory>
-#include <string>
 #include <utility>
 
 #include "api/jsep_session_description.h"
+#include "rtc_base/checks.h"
 
 namespace webrtc {
 
diff --git a/pc/sdp_utils.h b/pc/sdp_utils.h
index fc4b289..effd7cd 100644
--- a/pc/sdp_utils.h
+++ b/pc/sdp_utils.h
@@ -16,6 +16,7 @@
 #include <string>
 
 #include "api/jsep.h"
+#include "p2p/base/transport_info.h"
 #include "pc/session_description.h"
 #include "rtc_base/system/rtc_export.h"
 
diff --git a/pc/session_description.cc b/pc/session_description.cc
index 87d6667..3cb2b6d 100644
--- a/pc/session_description.cc
+++ b/pc/session_description.cc
@@ -10,12 +10,10 @@
 
 #include "pc/session_description.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "absl/algorithm/container.h"
 #include "absl/memory/memory.h"
-#include "pc/media_protocol_names.h"
 #include "rtc_base/checks.h"
 
 namespace cricket {
diff --git a/pc/session_description.h b/pc/session_description.h
index 9ec371e..07270ee 100644
--- a/pc/session_description.h
+++ b/pc/session_description.h
@@ -14,6 +14,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <algorithm>
 #include <iosfwd>
 #include <memory>
 #include <string>
@@ -24,14 +25,18 @@
 #include "api/crypto_params.h"
 #include "api/media_types.h"
 #include "api/rtp_parameters.h"
+#include "api/rtp_transceiver_direction.h"
 #include "api/rtp_transceiver_interface.h"
+#include "media/base/codec.h"
 #include "media/base/media_channel.h"
 #include "media/base/media_constants.h"
+#include "media/base/rid_description.h"
 #include "media/base/stream_params.h"
 #include "p2p/base/transport_description.h"
 #include "p2p/base/transport_info.h"
 #include "pc/media_protocol_names.h"
 #include "pc/simulcast_description.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/deprecation.h"
 #include "rtc_base/socket_address.h"
 #include "rtc_base/system/rtc_export.h"
diff --git a/pc/simulcast_description.cc b/pc/simulcast_description.cc
index 8b510fe..0ae3e20 100644
--- a/pc/simulcast_description.cc
+++ b/pc/simulcast_description.cc
@@ -10,8 +10,6 @@
 
 #include "pc/simulcast_description.h"
 
-#include <utility>
-
 #include "rtc_base/checks.h"
 
 namespace cricket {
diff --git a/pc/simulcast_description.h b/pc/simulcast_description.h
index 1337a9c..f7ae288 100644
--- a/pc/simulcast_description.h
+++ b/pc/simulcast_description.h
@@ -11,6 +11,8 @@
 #ifndef PC_SIMULCAST_DESCRIPTION_H_
 #define PC_SIMULCAST_DESCRIPTION_H_
 
+#include <stddef.h>
+
 #include <string>
 #include <vector>
 
diff --git a/pc/srtp_filter.cc b/pc/srtp_filter.cc
index bd48eac..babcee1 100644
--- a/pc/srtp_filter.cc
+++ b/pc/srtp_filter.cc
@@ -11,8 +11,8 @@
 #include "pc/srtp_filter.h"
 
 #include <string.h>
-
 #include <cstdint>
+#include <memory>
 
 #include "absl/strings/match.h"
 #include "rtc_base/logging.h"
diff --git a/pc/srtp_filter.h b/pc/srtp_filter.h
index fc60a35..7484776 100644
--- a/pc/srtp_filter.h
+++ b/pc/srtp_filter.h
@@ -11,6 +11,9 @@
 #ifndef PC_SRTP_FILTER_H_
 #define PC_SRTP_FILTER_H_
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include <list>
 #include <map>
 #include <memory>
diff --git a/pc/srtp_transport.cc b/pc/srtp_transport.cc
index 6acb6b3..ee07349 100644
--- a/pc/srtp_transport.cc
+++ b/pc/srtp_transport.cc
@@ -10,7 +10,6 @@
 
 #include "pc/srtp_transport.h"
 
-#include <stdint.h>
 #include <string.h>
 
 #include <string>
diff --git a/pc/stats_collector.cc b/pc/stats_collector.cc
index 991cc4e..99ad1b3 100644
--- a/pc/stats_collector.cc
+++ b/pc/stats_collector.cc
@@ -10,14 +10,46 @@
 
 #include "pc/stats_collector.h"
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include <memory>
 #include <set>
 #include <utility>
 #include <vector>
 
+#include "absl/types/optional.h"
+#include "api/audio_codecs/audio_encoder.h"
+#include "api/candidate.h"
+#include "api/data_channel_interface.h"
+#include "api/media_types.h"
+#include "api/rtp_receiver_interface.h"
+#include "api/rtp_sender_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/video/video_content_type.h"
+#include "api/video/video_timing.h"
+#include "call/call.h"
+#include "media/base/media_channel.h"
+#include "modules/audio_processing/include/audio_processing_statistics.h"
+#include "p2p/base/ice_transport_internal.h"
+#include "p2p/base/p2p_constants.h"
 #include "pc/channel.h"
+#include "pc/channel_interface.h"
+#include "pc/data_channel_utils.h"
+#include "pc/rtp_receiver.h"
+#include "pc/rtp_transceiver.h"
+#include "pc/transport_stats.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/third_party/base64/base64.h"
+#include "rtc_base/ip_address.h"
+#include "rtc_base/location.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/rtc_certificate.h"
+#include "rtc_base/socket_address.h"
+#include "rtc_base/ssl_stream_adapter.h"
+#include "rtc_base/string_encode.h"
+#include "rtc_base/synchronization/sequence_checker.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/time_utils.h"
 #include "system_wrappers/include/field_trial.h"
 
 namespace webrtc {
diff --git a/pc/stats_collector.h b/pc/stats_collector.h
index befbcab..a600a6e 100644
--- a/pc/stats_collector.h
+++ b/pc/stats_collector.h
@@ -16,6 +16,8 @@
 
 #include <stdint.h>
 
+#include <algorithm>
+#include <cstdint>
 #include <map>
 #include <memory>
 #include <string>
@@ -25,6 +27,7 @@
 #include "api/media_stream_interface.h"
 #include "api/peer_connection_interface.h"
 #include "api/stats_types.h"
+#include "p2p/base/connection_info.h"
 #include "p2p/base/port.h"
 #include "pc/peer_connection_internal.h"
 #include "pc/stats_collector_interface.h"
diff --git a/pc/test/fake_audio_capture_module.h b/pc/test/fake_audio_capture_module.h
index ee85c9a..a125028 100644
--- a/pc/test/fake_audio_capture_module.h
+++ b/pc/test/fake_audio_capture_module.h
@@ -20,13 +20,20 @@
 #ifndef PC_TEST_FAKE_AUDIO_CAPTURE_MODULE_H_
 #define PC_TEST_FAKE_AUDIO_CAPTURE_MODULE_H_
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include <memory>
 
 #include "api/scoped_refptr.h"
 #include "modules/audio_device/include/audio_device.h"
+#include "modules/audio_device/include/audio_device_defines.h"
 #include "rtc_base/message_handler.h"
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/synchronization/sequence_checker.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
+#include "rtc_base/thread_message.h"
 
 namespace rtc {
 class Thread;
diff --git a/pc/track_media_info_map.cc b/pc/track_media_info_map.cc
index b3ec68b..66f4c46 100644
--- a/pc/track_media_info_map.cc
+++ b/pc/track_media_info_map.cc
@@ -10,10 +10,15 @@
 
 #include "pc/track_media_info_map.h"
 
+#include <cstdint>
 #include <set>
 #include <string>
 #include <utility>
 
+#include "api/media_types.h"
+#include "api/rtp_parameters.h"
+#include "media/base/stream_params.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/thread.h"
 
 namespace webrtc {
diff --git a/pc/track_media_info_map.h b/pc/track_media_info_map.h
index 542501e..c8c6da2 100644
--- a/pc/track_media_info_map.h
+++ b/pc/track_media_info_map.h
@@ -11,12 +11,16 @@
 #ifndef PC_TRACK_MEDIA_INFO_MAP_H_
 #define PC_TRACK_MEDIA_INFO_MAP_H_
 
+#include <stdint.h>
+
 #include <map>
 #include <memory>
 #include <string>
 #include <vector>
 
+#include "absl/types/optional.h"
 #include "api/media_stream_interface.h"
+#include "api/scoped_refptr.h"
 #include "media/base/media_channel.h"
 #include "pc/rtp_receiver.h"
 #include "pc/rtp_sender.h"
diff --git a/pc/transceiver_list.cc b/pc/transceiver_list.cc
index 5fe148a..aeb89d6 100644
--- a/pc/transceiver_list.cc
+++ b/pc/transceiver_list.cc
@@ -10,6 +10,8 @@
 
 #include "pc/transceiver_list.h"
 
+#include "rtc_base/checks.h"
+
 namespace webrtc {
 
 void TransceiverStableState::set_newly_created() {
diff --git a/pc/transceiver_list.h b/pc/transceiver_list.h
index cd77d67..4364c3c 100644
--- a/pc/transceiver_list.h
+++ b/pc/transceiver_list.h
@@ -11,11 +11,18 @@
 #ifndef PC_TRANSCEIVER_LIST_H_
 #define PC_TRANSCEIVER_LIST_H_
 
+#include <stddef.h>
+
 #include <algorithm>
 #include <map>
 #include <string>
 #include <vector>
 
+#include "absl/types/optional.h"
+#include "api/media_types.h"
+#include "api/rtc_error.h"
+#include "api/rtp_sender_interface.h"
+#include "api/scoped_refptr.h"
 #include "pc/rtp_transceiver.h"
 
 namespace webrtc {
diff --git a/pc/usage_pattern.h b/pc/usage_pattern.h
index c4a8918..0182999 100644
--- a/pc/usage_pattern.h
+++ b/pc/usage_pattern.h
@@ -11,6 +11,8 @@
 #ifndef PC_USAGE_PATTERN_H_
 #define PC_USAGE_PATTERN_H_
 
+#include "api/peer_connection_interface.h"
+
 namespace webrtc {
 
 class PeerConnectionObserver;
diff --git a/pc/video_rtp_receiver.cc b/pc/video_rtp_receiver.cc
index dd60125..374770a 100644
--- a/pc/video_rtp_receiver.cc
+++ b/pc/video_rtp_receiver.cc
@@ -15,16 +15,14 @@
 #include <utility>
 #include <vector>
 
-#include "api/media_stream_proxy.h"
+#include "api/video/recordable_encoded_frame.h"
 #include "api/video_track_source_proxy.h"
 #include "pc/jitter_buffer_delay.h"
 #include "pc/jitter_buffer_delay_proxy.h"
-#include "pc/media_stream.h"
 #include "pc/video_track.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/trace_event.h"
 
 namespace webrtc {
 
diff --git a/pc/video_rtp_receiver.h b/pc/video_rtp_receiver.h
index 74ae444..6cbd8a1 100644
--- a/pc/video_rtp_receiver.h
+++ b/pc/video_rtp_receiver.h
@@ -18,6 +18,7 @@
 
 #include "absl/types/optional.h"
 #include "api/crypto/frame_decryptor_interface.h"
+#include "api/dtls_transport_interface.h"
 #include "api/frame_transformer_interface.h"
 #include "api/media_stream_interface.h"
 #include "api/media_stream_track_proxy.h"
@@ -25,6 +26,7 @@
 #include "api/rtp_parameters.h"
 #include "api/rtp_receiver_interface.h"
 #include "api/scoped_refptr.h"
+#include "api/transport/rtp/rtp_source.h"
 #include "api/video/video_frame.h"
 #include "api/video/video_sink_interface.h"
 #include "api/video/video_source_interface.h"
@@ -34,7 +36,9 @@
 #include "pc/video_rtp_track_source.h"
 #include "pc/video_track.h"
 #include "rtc_base/ref_counted_object.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
diff --git a/pc/video_rtp_track_source.cc b/pc/video_rtp_track_source.cc
index f96db96..bcfcdcb 100644
--- a/pc/video_rtp_track_source.cc
+++ b/pc/video_rtp_track_source.cc
@@ -10,6 +10,12 @@
 
 #include "pc/video_rtp_track_source.h"
 
+#include <stddef.h>
+
+#include <algorithm>
+
+#include "rtc_base/checks.h"
+
 namespace webrtc {
 
 VideoRtpTrackSource::VideoRtpTrackSource(Callback* callback)
diff --git a/pc/video_rtp_track_source.h b/pc/video_rtp_track_source.h
index 9903aaa..53cb046 100644
--- a/pc/video_rtp_track_source.h
+++ b/pc/video_rtp_track_source.h
@@ -13,11 +13,18 @@
 
 #include <vector>
 
+#include "api/video/recordable_encoded_frame.h"
+#include "api/video/video_frame.h"
+#include "api/video/video_sink_interface.h"
+#include "api/video/video_source_interface.h"
 #include "media/base/video_broadcaster.h"
 #include "pc/video_track_source.h"
 #include "rtc_base/callback.h"
+#include "rtc_base/constructor_magic.h"
 #include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 #include "rtc_base/system/no_unique_address.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
diff --git a/pc/video_track.cc b/pc/video_track.cc
index 55356e7..279b153 100644
--- a/pc/video_track.cc
+++ b/pc/video_track.cc
@@ -17,6 +17,7 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/location.h"
 #include "rtc_base/ref_counted_object.h"
+#include "rtc_base/synchronization/sequence_checker.h"
 
 namespace webrtc {
 
diff --git a/pc/video_track_source.h b/pc/video_track_source.h
index 27331ea..d4fc916 100644
--- a/pc/video_track_source.h
+++ b/pc/video_track_source.h
@@ -11,9 +11,13 @@
 #ifndef PC_VIDEO_TRACK_SOURCE_H_
 #define PC_VIDEO_TRACK_SOURCE_H_
 
+#include "absl/types/optional.h"
 #include "api/media_stream_interface.h"
 #include "api/notifier.h"
+#include "api/video/recordable_encoded_frame.h"
+#include "api/video/video_frame.h"
 #include "api/video/video_sink_interface.h"
+#include "api/video/video_source_interface.h"
 #include "media/base/media_channel.h"
 #include "rtc_base/system/rtc_export.h"
 #include "rtc_base/thread_checker.h"
diff --git a/pc/webrtc_sdp.cc b/pc/webrtc_sdp.cc
index 220e752..c4ebf59 100644
--- a/pc/webrtc_sdp.cc
+++ b/pc/webrtc_sdp.cc
@@ -15,6 +15,7 @@
 #include <stdio.h>
 
 #include <algorithm>
+#include <cstdint>
 #include <map>
 #include <memory>
 #include <set>
@@ -24,29 +25,46 @@
 #include <vector>
 
 #include "absl/algorithm/container.h"
-#include "absl/strings/match.h"
 #include "api/candidate.h"
 #include "api/crypto_params.h"
 #include "api/jsep_ice_candidate.h"
 #include "api/jsep_session_description.h"
 #include "api/media_types.h"
 // for RtpExtension
+#include "absl/types/optional.h"
+#include "api/rtc_error.h"
 #include "api/rtp_parameters.h"
+#include "api/rtp_transceiver_direction.h"
 #include "media/base/codec.h"
 #include "media/base/media_constants.h"
+#include "media/base/rid_description.h"
 #include "media/base/rtp_utils.h"
+#include "media/base/stream_params.h"
 #include "media/sctp/sctp_transport_internal.h"
+#include "p2p/base/candidate_pair_interface.h"
+#include "p2p/base/ice_transport_internal.h"
 #include "p2p/base/p2p_constants.h"
 #include "p2p/base/port.h"
+#include "p2p/base/port_interface.h"
+#include "p2p/base/transport_description.h"
+#include "p2p/base/transport_info.h"
+#include "pc/media_protocol_names.h"
 #include "pc/media_session.h"
 #include "pc/sdp_serializer.h"
+#include "pc/session_description.h"
+#include "pc/simulcast_description.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
+#include "rtc_base/helpers.h"
+#include "rtc_base/ip_address.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/message_digest.h"
+#include "rtc_base/net_helper.h"
+#include "rtc_base/network_constants.h"
+#include "rtc_base/socket_address.h"
+#include "rtc_base/ssl_fingerprint.h"
+#include "rtc_base/string_encode.h"
 #include "rtc_base/string_utils.h"
 #include "rtc_base/strings/string_builder.h"
-#include "rtc_base/third_party/base64/base64.h"
 
 using cricket::AudioContentDescription;
 using cricket::Candidate;
@@ -79,10 +97,6 @@
 using cricket::VideoContentDescription;
 using rtc::SocketAddress;
 
-namespace cricket {
-class SessionDescription;
-}
-
 // TODO(deadbeef): Switch to using anonymous namespace rather than declaring
 // everything "static".
 namespace webrtc {
diff --git a/pc/webrtc_sdp.h b/pc/webrtc_sdp.h
index 588e02f..aa3317f 100644
--- a/pc/webrtc_sdp.h
+++ b/pc/webrtc_sdp.h
@@ -22,7 +22,12 @@
 
 #include <string>
 
+#include "api/candidate.h"
+#include "api/jsep.h"
+#include "api/jsep_ice_candidate.h"
+#include "api/jsep_session_description.h"
 #include "media/base/codec.h"
+#include "rtc_base/strings/string_builder.h"
 #include "rtc_base/system/rtc_export.h"
 
 namespace cricket {
diff --git a/pc/webrtc_session_description_factory.h b/pc/webrtc_session_description_factory.h
index 9256045..bd2636c 100644
--- a/pc/webrtc_session_description_factory.h
+++ b/pc/webrtc_session_description_factory.h
@@ -12,6 +12,8 @@
 #define PC_WEBRTC_SESSION_DESCRIPTION_FACTORY_H_
 
 #include <stdint.h>
+
+#include <functional>
 #include <memory>
 #include <queue>
 #include <string>