| # Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 
 | # | 
 | # Use of this source code is governed by a BSD-style license | 
 | # that can be found in the LICENSE file in the root of the source | 
 | # tree. An additional intellectual property rights grant can be found | 
 | # in the file PATENTS.  All contributing project authors may | 
 | # be found in the AUTHORS file in the root of the source tree. | 
 |  | 
 | # Visibility considerations: | 
 | # | 
 | # Most targets in this file should have visibility ":*", as they are only | 
 | # used internally. | 
 | # Some functions are cleared for wider webrtc usage; these have default | 
 | # visibility (set to "//*", not the gn default of "*"). | 
 | # These are: | 
 | # - rtc_pc | 
 | # - session_description | 
 | # - simulcast_description | 
 | # - sdp_utils | 
 | # - media_stream_observer | 
 | # - video_track_source | 
 | # - libjingle_peerconnection | 
 | # | 
 | # Some targets are depended on by external users for historical reasons, | 
 | # and are therefore marked with visibility "*". This is in the process | 
 | # of being removed. | 
 | # | 
 | # Some targets are only publicly visible in Chrome builds. | 
 | # These are marked up as such. | 
 |  | 
 | import("../webrtc.gni") | 
 | if (is_android) { | 
 |   import("//build/config/android/config.gni") | 
 |   import("//build/config/android/rules.gni") | 
 | } | 
 |  | 
 | if (rtc_build_libsrtp) { | 
 |   import("//third_party/libsrtp/options.gni") | 
 |   assert(rtc_build_ssl == libsrtp_build_boringssl, | 
 |          "Mismatch ssl build settings detected") | 
 |   assert(rtc_ssl_root == libsrtp_ssl_root, "Mismatch in ssl root detected") | 
 | } | 
 |  | 
 | group("pc") { | 
 |   deps = [ ":rtc_pc" ] | 
 | } | 
 |  | 
 | rtc_source_set("proxy") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "proxy.h" ] | 
 |   deps = [ | 
 |     "../api:make_ref_counted", | 
 |     "../api:scoped_refptr", | 
 |     "../api/task_queue", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:rtc_event", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/system:rtc_export", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("channel") { | 
 |   visibility = [ | 
 |     ":*", | 
 |     "../test/peer_scenario", | 
 |   ] | 
 |   sources = [ | 
 |     "channel.cc", | 
 |     "channel.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":channel_interface", | 
 |     ":rtp_media_utils", | 
 |     ":rtp_transport_internal", | 
 |     ":session_description", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_headers", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/crypto:options", | 
 |     "../api/task_queue", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../call:rtp_interfaces", | 
 |     "../call:rtp_receiver", | 
 |     "../media:codec", | 
 |     "../media:media_channel", | 
 |     "../media:media_channel_impl", | 
 |     "../media:rid_description", | 
 |     "../media:rtp_utils", | 
 |     "../media:stream_params", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../rtc_base:async_packet_socket", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:network_route", | 
 |     "../rtc_base:socket", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "../rtc_base/containers:flat_set", | 
 |     "../rtc_base/network:sent_packet", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("channel_interface") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "channel_interface.h" ] | 
 |   deps = [ | 
 |     ":rtp_transport_internal", | 
 |     ":session_description", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtp_parameters", | 
 |     "../media:media_channel", | 
 |     "../media:rtc_media_config", | 
 |     "../media:stream_params", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("dtls_srtp_transport") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "dtls_srtp_transport.cc", | 
 |     "dtls_srtp_transport.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":srtp_transport", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:field_trials_view", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../p2p:packet_transport_internal", | 
 |     "../rtc_base:buffer", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:ssl_adapter", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("dtls_transport") { | 
 |   visibility = [ | 
 |     ":*", | 
 |     "../test/*", | 
 |   ] | 
 |   sources = [ | 
 |     "dtls_transport.cc", | 
 |     "dtls_transport.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":ice_transport", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:ice_transport_interface", | 
 |     "../api:make_ref_counted", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/synchronization:mutex", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("external_hmac") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "external_hmac.cc", | 
 |     "external_hmac.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:zero_memory", | 
 |   ] | 
 |   if (rtc_build_libsrtp) { | 
 |     deps += [ "//third_party/libsrtp" ] | 
 |   } | 
 | } | 
 |  | 
 | rtc_library("ice_transport") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "ice_transport.cc", | 
 |     "ice_transport.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:ice_transport_interface", | 
 |     "../api:sequence_checker", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("jsep_transport") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "jsep_transport.cc", | 
 |     "jsep_transport.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":dtls_srtp_transport", | 
 |     ":dtls_transport", | 
 |     ":rtcp_mux_filter", | 
 |     ":rtp_transport", | 
 |     ":rtp_transport_internal", | 
 |     ":sctp_transport", | 
 |     ":session_description", | 
 |     ":srtp_transport", | 
 |     ":transport_stats", | 
 |     "../api:array_view", | 
 |     "../api:candidate", | 
 |     "../api:ice_transport_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:rtc_error", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/transport:datagram_transport_interface", | 
 |     "../call:payload_type_picker", | 
 |     "../media:rtc_data_sctp_transport_internal", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:p2p_transport_channel", | 
 |     "../p2p:transport_description", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("jsep_transport_collection") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "jsep_transport_collection.cc", | 
 |     "jsep_transport_collection.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":jsep_transport", | 
 |     ":session_description", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:sequence_checker", | 
 |     "../p2p:p2p_constants", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base/system:no_unique_address", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("jsep_transport_controller") { | 
 |   visibility = [ | 
 |     ":*", | 
 |     "../test/peer_scenario:*", | 
 |   ] | 
 |   sources = [ | 
 |     "jsep_transport_controller.cc", | 
 |     "jsep_transport_controller.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":dtls_srtp_transport", | 
 |     ":dtls_transport", | 
 |     ":jsep_transport", | 
 |     ":jsep_transport_collection", | 
 |     ":rtp_transport", | 
 |     ":rtp_transport_internal", | 
 |     ":sctp_transport", | 
 |     ":session_description", | 
 |     ":srtp_transport", | 
 |     ":transport_stats", | 
 |     "../api:async_dns_resolver", | 
 |     "../api:candidate", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:ice_transport_factory", | 
 |     "../api:ice_transport_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:local_network_access_permission", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/crypto:options", | 
 |     "../api/environment", | 
 |     "../api/rtc_event_log", | 
 |     "../api/transport:datagram_transport_interface", | 
 |     "../api/transport:enums", | 
 |     "../api/transport:sctp_transport_factory_interface", | 
 |     "../call:payload_type", | 
 |     "../call:payload_type_picker", | 
 |     "../media:codec", | 
 |     "../media:rtc_data_sctp_transport_internal", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../p2p:dtls_transport", | 
 |     "../p2p:dtls_transport_factory", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:p2p_transport_channel", | 
 |     "../p2p:packet_transport_internal", | 
 |     "../p2p:port", | 
 |     "../p2p:port_allocator", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:callback_list", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/third_party/sigslot", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("media_factory") { | 
 |   sources = [ "media_factory.h" ] | 
 |   deps = [ | 
 |     "../api/environment", | 
 |     "../call:call_interfaces", | 
 |     "../media:media_engine", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("media_session") { | 
 |   visibility = [ "*" ]  # Used by Chrome | 
 |   sources = [ | 
 |     "media_session.cc", | 
 |     "media_session.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":codec_vendor", | 
 |     ":media_options", | 
 |     ":media_protocol_names", | 
 |     ":rtp_media_utils", | 
 |     ":session_description", | 
 |     ":simulcast_description", | 
 |     ":used_ids", | 
 |     "../api:field_trials_view", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../media:codec", | 
 |     "../media:codec_list", | 
 |     "../media:media_constants", | 
 |     "../media:media_engine", | 
 |     "../media:rid_description", | 
 |     "../media:stream_params", | 
 |     "../p2p:ice_credentials_iterator", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_description_factory", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "../rtc_base/experiments:field_trial_parser", | 
 |     "../rtc_base/memory:always_valid_pointer", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("media_options") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "media_options.cc", | 
 |     "media_options.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":simulcast_description", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api/crypto:options", | 
 |     "../media:codec", | 
 |     "../media:rid_description", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_description_factory", | 
 |     "../rtc_base:checks", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("codec_vendor") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "codec_vendor.cc", | 
 |     "codec_vendor.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":media_options", | 
 |     ":rtp_media_utils", | 
 |     ":session_description", | 
 |     ":typed_codec_vendor", | 
 |     ":used_ids", | 
 |     "../api:field_trials_view", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api/video_codecs:video_codecs_api", | 
 |     "../call:payload_type", | 
 |     "../media:codec", | 
 |     "../media:codec_list", | 
 |     "../media:media_constants", | 
 |     "../media:media_engine", | 
 |     "../media:rtc_sdp_video_format_utils", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:str_format", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("typed_codec_vendor") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "typed_codec_vendor.cc", | 
 |     "typed_codec_vendor.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:field_trials_view", | 
 |     "../api:rtp_parameters", | 
 |     "../api/audio_codecs:audio_codecs_api", | 
 |     "../media:codec", | 
 |     "../media:codec_list", | 
 |     "../media:media_constants", | 
 |     "../media:media_engine", | 
 |     "../rtc_base:logging", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("media_stream_proxy") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "media_stream_proxy.h" ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:media_stream_interface", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("media_stream_track_proxy") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "media_stream_track_proxy.h" ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:media_stream_interface", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("peer_connection_factory_proxy") { | 
 |   visibility = [ "../api:create_modular_peer_connection_factory" ] | 
 |   sources = [ "peer_connection_factory_proxy.h" ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:audio_options_api", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("peer_connection_proxy") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "peer_connection_proxy.h" ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:candidate", | 
 |     "../api:data_channel_event_observer_interface", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:libjingle_logging_api", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:rtc_stats_api", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api/adaptation:resource_adaptation_api", | 
 |     "../api/transport:bandwidth_estimation_settings", | 
 |     "../api/transport:bitrate_settings", | 
 |     "../api/transport:network_control", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtcp_mux_filter") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtcp_mux_filter.cc", | 
 |     "rtcp_mux_filter.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":session_description", | 
 |     "../rtc_base:logging", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtp_media_utils") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtp_media_utils.cc", | 
 |     "rtp_media_utils.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../rtc_base:checks", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("rtp_receiver_proxy") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "rtp_receiver_proxy.h" ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:dtls_transport_interface", | 
 |     "../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", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("rtp_sender_proxy") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "rtp_sender_proxy.h" ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:frame_transformer_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api/crypto:frame_encryptor_interface", | 
 |     "../api/video_codecs:video_codecs_api", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtp_transport") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtp_transport.cc", | 
 |     "rtp_transport.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":rtp_transport_internal", | 
 |     ":session_description", | 
 |     "../api:array_view", | 
 |     "../api:field_trials_view", | 
 |     "../api/task_queue", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/transport:ecn_marking", | 
 |     "../api/units:timestamp", | 
 |     "../call:rtp_receiver", | 
 |     "../call:video_receive_stream_api", | 
 |     "../media:rtp_utils", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../p2p:packet_transport_internal", | 
 |     "../rtc_base:async_packet_socket", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:network_route", | 
 |     "../rtc_base:socket", | 
 |     "../rtc_base/containers:flat_set", | 
 |     "../rtc_base/network:received_packet", | 
 |     "../rtc_base/network:sent_packet", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("rtp_transport_internal") { | 
 |   visibility = [ | 
 |     ":*", | 
 |     "../test/peer_scenario", | 
 |   ] | 
 |   sources = [ "rtp_transport_internal.h" ] | 
 |   deps = [ | 
 |     ":session_description", | 
 |     "../call:rtp_receiver", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../rtc_base:async_packet_socket", | 
 |     "../rtc_base:callback_list", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:network_route", | 
 |     "../rtc_base:socket", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base/network:sent_packet", | 
 |     "../rtc_base/third_party/sigslot", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("sctp_transport") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "sctp_transport.cc", | 
 |     "sctp_transport.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":dtls_transport", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:priority", | 
 |     "../api:rtc_error", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/transport:datagram_transport_interface", | 
 |     "../media:rtc_data_sctp_transport_internal", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("sctp_utils") { | 
 |   visibility = [ | 
 |     ":*", | 
 |     "../test/fuzzers:*", | 
 |   ] | 
 |   sources = [ | 
 |     "sctp_utils.cc", | 
 |     "sctp_utils.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:priority", | 
 |     "../api/transport:datagram_transport_interface", | 
 |     "../media:media_channel", | 
 |     "../media:rtc_data_sctp_transport_internal", | 
 |     "../net/dcsctp/public:types", | 
 |     "../rtc_base:byte_buffer", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:ssl_adapter", | 
 |   ] | 
 | } | 
 | rtc_library("srtp_session") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "srtp_session.cc", | 
 |     "srtp_session.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":external_hmac", | 
 |     "../api:array_view", | 
 |     "../api:field_trials_view", | 
 |     "../api:sequence_checker", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../rtc_base:buffer", | 
 |     "../rtc_base:byte_order", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:ip_address", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:timeutils", | 
 |     "../rtc_base/synchronization:mutex", | 
 |     "../system_wrappers:metrics", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 |   if (rtc_build_libsrtp) { | 
 |     deps += [ "//third_party/libsrtp" ] | 
 |   } | 
 | } | 
 | rtc_library("srtp_transport") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "srtp_transport.cc", | 
 |     "srtp_transport.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":rtp_transport", | 
 |     ":srtp_session", | 
 |     "../api:field_trials_view", | 
 |     "../api/units:timestamp", | 
 |     "../call:rtp_receiver", | 
 |     "../media:rtp_utils", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../p2p:packet_transport_internal", | 
 |     "../rtc_base:async_packet_socket", | 
 |     "../rtc_base:buffer", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:network_route", | 
 |     "../rtc_base/network:received_packet", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("transport_stats") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "transport_stats.cc", | 
 |     "transport_stats.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:dtls_transport_interface", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("used_ids") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "used_ids.h" ] | 
 |   deps = [ | 
 |     "../api:rtp_parameters", | 
 |     "../media:codec", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("video_track_source_proxy") { | 
 |   visibility = [ "*" ]  # Used by Chrome | 
 |   sources = [ | 
 |     "video_track_source_proxy.cc", | 
 |     "video_track_source_proxy.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |     "../api:video_track_source_constraints", | 
 |     "../api/video:recordable_encoded_frame", | 
 |     "../api/video:video_frame", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("session_description") { | 
 |   # TODO(bugs.webrtc.org/13661): Reduce visibility if possible | 
 |   visibility = [ "*" ]  # Used by Chrome and others | 
 |  | 
 |   sources = [ | 
 |     "session_description.cc", | 
 |     "session_description.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":media_protocol_names", | 
 |     ":simulcast_description", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../media:codec", | 
 |     "../media:media_constants", | 
 |     "../media:rid_description", | 
 |     "../media:stream_params", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:socket_address", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base/system:rtc_export", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/memory", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("simulcast_description") { | 
 |   sources = [ | 
 |     "simulcast_description.cc", | 
 |     "simulcast_description.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../rtc_base:checks", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("rtc_pc") { | 
 |   if (build_with_chromium) { | 
 |     visibility = [ "*" ] | 
 |   } | 
 |   allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove. | 
 |   deps = [ "../media:rtc_audio_video" ] | 
 | } | 
 |  | 
 | rtc_library("media_protocol_names") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "media_protocol_names.cc", | 
 |     "media_protocol_names.h", | 
 |   ] | 
 |   deps = [ "//third_party/abseil-cpp/absl/strings:string_view" ] | 
 | } | 
 |  | 
 | rtc_library("sctp_data_channel") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "sctp_data_channel.cc", | 
 |     "sctp_data_channel.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":data_channel_utils", | 
 |     ":proxy", | 
 |     ":sctp_utils", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:priority", | 
 |     "../api:rtc_error", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/transport:datagram_transport_interface", | 
 |     "../media:rtc_data_sctp_transport_internal", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:weak_ptr", | 
 |     "../rtc_base/containers:flat_set", | 
 |     "../rtc_base/system:no_unique_address", | 
 |     "../rtc_base/system:unused", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("data_channel_utils") { | 
 |   # TODO(bugs.webrtc.org/13661): Reduce visibility if possible | 
 |   visibility = [ "*" ]  # Known to be used externally | 
 |  | 
 |   sources = [ | 
 |     "data_channel_utils.cc", | 
 |     "data_channel_utils.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../media:media_engine", | 
 |     "../rtc_base:checks", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("connection_context") { | 
 |   sources = [ | 
 |     "connection_context.cc", | 
 |     "connection_context.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":media_factory", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:packet_socket_factory", | 
 |     "../api:refcountedbase", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/environment", | 
 |     "../api/transport:sctp_transport_factory_interface", | 
 |     "../media:media_engine", | 
 |     "../media:rtc_data_sctp_transport_factory", | 
 |     "../p2p:basic_packet_socket_factory", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:network", | 
 |     "../rtc_base:socket_factory", | 
 |     "../rtc_base:socket_server", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "../rtc_base/memory:always_valid_pointer", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("data_channel_controller") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "data_channel_controller.cc", | 
 |     "data_channel_controller.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":data_channel_utils", | 
 |     ":peer_connection_internal", | 
 |     ":sctp_data_channel", | 
 |     ":sctp_utils", | 
 |     "../api:array_view", | 
 |     "../api:data_channel_event_observer_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:priority", | 
 |     "../api:rtc_error", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/transport:datagram_transport_interface", | 
 |     "../media:rtc_data_sctp_transport_internal", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:timeutils", | 
 |     "../rtc_base:weak_ptr", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("peer_connection_internal") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "peer_connection_internal.h" ] | 
 |   deps = [ | 
 |     ":data_channel_utils", | 
 |     ":jsep_transport_controller", | 
 |     ":peer_connection_message_handler", | 
 |     ":rtp_transceiver", | 
 |     ":rtp_transmission_manager", | 
 |     ":session_description", | 
 |     ":transport_stats", | 
 |     ":usage_pattern", | 
 |     "../api:candidate", | 
 |     "../api:field_trials_view", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api/audio:audio_device", | 
 |     "../api/crypto:options", | 
 |     "../call:call_interfaces", | 
 |     "../call:payload_type_picker", | 
 |     "../p2p:port", | 
 |     "../p2p:port_allocator", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:threading", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtc_stats_collector") { | 
 |   visibility = [ | 
 |     ":*", | 
 |     "../api:*", | 
 |   ] | 
 |   sources = [ | 
 |     "rtc_stats_collector.cc", | 
 |     "rtc_stats_collector.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":channel_interface", | 
 |     ":data_channel_utils", | 
 |     ":peer_connection_internal", | 
 |     ":rtc_stats_traversal", | 
 |     ":rtp_receiver", | 
 |     ":rtp_receiver_proxy", | 
 |     ":rtp_sender", | 
 |     ":rtp_sender_proxy", | 
 |     ":rtp_transceiver", | 
 |     ":sctp_data_channel", | 
 |     ":track_media_info_map", | 
 |     ":transport_stats", | 
 |     ":webrtc_sdp", | 
 |     "../api:array_view", | 
 |     "../api:candidate", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:ref_count", | 
 |     "../api:rtc_stats_api", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/audio:audio_device", | 
 |     "../api/audio:audio_processing_statistics", | 
 |     "../api/environment", | 
 |     "../api/transport:enums", | 
 |     "../api/units:time_delta", | 
 |     "../api/units:timestamp", | 
 |     "../api/video:video_rtp_headers", | 
 |     "../api/video_codecs:scalability_mode", | 
 |     "../call:call_interfaces", | 
 |     "../common_video", | 
 |     "../media:media_channel", | 
 |     "../media:stream_params", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../p2p:connection_info", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:port", | 
 |     "../p2p:transport_description", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:ip_address", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:network_constants", | 
 |     "../rtc_base:refcount", | 
 |     "../rtc_base:rtc_event", | 
 |     "../rtc_base:socket_address", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:timeutils", | 
 |     "../rtc_base/containers:flat_set", | 
 |     "../rtc_base/synchronization:mutex", | 
 |     "//third_party/abseil-cpp/absl/functional:bind_front", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtc_stats_traversal") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtc_stats_traversal.cc", | 
 |     "rtc_stats_traversal.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:rtc_stats_api", | 
 |     "../api:scoped_refptr", | 
 |     "../rtc_base:checks", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("sdp_munging_detector") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "sdp_munging_detector.cc", | 
 |     "sdp_munging_detector.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":session_description", | 
 |     "../api:field_trials_view", | 
 |     "../api:jsep", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtp_parameters", | 
 |     "../media:codec", | 
 |     "../media:media_constants", | 
 |     "../media:stream_params", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 | rtc_library("sdp_offer_answer") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "sdp_offer_answer.cc", | 
 |     "sdp_offer_answer.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":channel_interface", | 
 |     ":codec_vendor", | 
 |     ":connection_context", | 
 |     ":data_channel_controller", | 
 |     ":dtls_transport", | 
 |     ":jsep_transport_controller", | 
 |     ":legacy_stats_collector", | 
 |     ":media_options", | 
 |     ":media_session", | 
 |     ":media_stream", | 
 |     ":media_stream_observer", | 
 |     ":media_stream_proxy", | 
 |     ":peer_connection_internal", | 
 |     ":peer_connection_message_handler", | 
 |     ":rtp_media_utils", | 
 |     ":rtp_receiver", | 
 |     ":rtp_sender", | 
 |     ":rtp_sender_proxy", | 
 |     ":rtp_transceiver", | 
 |     ":rtp_transmission_manager", | 
 |     ":sdp_munging_detector", | 
 |     ":sdp_state_provider", | 
 |     ":session_description", | 
 |     ":simulcast_description", | 
 |     ":stream_collection", | 
 |     ":transceiver_list", | 
 |     ":usage_pattern", | 
 |     ":webrtc_session_description_factory", | 
 |     "../api:array_view", | 
 |     "../api:audio_options_api", | 
 |     "../api:candidate", | 
 |     "../api:jsep", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/crypto:options", | 
 |     "../api/environment", | 
 |     "../api/video:builtin_video_bitrate_allocator_factory", | 
 |     "../api/video:video_bitrate_allocator_factory", | 
 |     "../api/video:video_codec_constants", | 
 |     "../call:payload_type", | 
 |     "../media:codec", | 
 |     "../media:media_channel", | 
 |     "../media:media_constants", | 
 |     "../media:media_engine", | 
 |     "../media:rid_description", | 
 |     "../media:stream_params", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:p2p_transport_channel", | 
 |     "../p2p:port_allocator", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_description_factory", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:crypto_random", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:rtc_certificate_generator", | 
 |     "../rtc_base:rtc_operations_chain", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "../rtc_base:weak_ptr", | 
 |     "../system_wrappers:metrics", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |     "//third_party/abseil-cpp/absl/memory", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 | rtc_source_set("jsep_ice_candidate") { | 
 |   visibility = [ ":*" ] | 
 | } | 
 | rtc_source_set("jsep_session_description") { | 
 |   visibility = [ ":*" ] | 
 | } | 
 | rtc_library("local_audio_source") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "local_audio_source.cc", | 
 |     "local_audio_source.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:audio_options_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |   ] | 
 | } | 
 | rtc_library("peer_connection") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "peer_connection.cc", | 
 |     "peer_connection.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":channel_interface", | 
 |     ":codec_vendor", | 
 |     ":connection_context", | 
 |     ":data_channel_controller", | 
 |     ":data_channel_utils", | 
 |     ":dtls_transport", | 
 |     ":ice_server_parsing", | 
 |     ":jsep_transport_controller", | 
 |     ":legacy_stats_collector", | 
 |     ":peer_connection_internal", | 
 |     ":peer_connection_message_handler", | 
 |     ":rtc_stats_collector", | 
 |     ":rtp_receiver", | 
 |     ":rtp_receiver_proxy", | 
 |     ":rtp_sender", | 
 |     ":rtp_sender_proxy", | 
 |     ":rtp_transceiver", | 
 |     ":rtp_transmission_manager", | 
 |     ":rtp_transport_internal", | 
 |     ":sctp_data_channel", | 
 |     ":sctp_transport", | 
 |     ":sdp_offer_answer", | 
 |     ":sdp_state_provider", | 
 |     ":session_description", | 
 |     ":simulcast_description", | 
 |     ":transceiver_list", | 
 |     ":transport_stats", | 
 |     ":usage_pattern", | 
 |     "../api:async_dns_resolver", | 
 |     "../api:candidate", | 
 |     "../api:data_channel_event_observer_interface", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:field_trials_view", | 
 |     "../api:ice_transport_interface", | 
 |     "../api:jsep", | 
 |     "../api:libjingle_logging_api", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:local_network_access_permission", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:rtc_stats_api", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api:turn_customizer", | 
 |     "../api/adaptation:resource_adaptation_api", | 
 |     "../api/audio:audio_device", | 
 |     "../api/crypto:options", | 
 |     "../api/environment", | 
 |     "../api/rtc_event_log", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/transport:bandwidth_estimation_settings", | 
 |     "../api/transport:bitrate_settings", | 
 |     "../api/transport:datagram_transport_interface", | 
 |     "../api/transport:enums", | 
 |     "../api/transport:network_control", | 
 |     "../api/units:time_delta", | 
 |     "../api/video:video_codec_constants", | 
 |     "../call:call_interfaces", | 
 |     "../call:payload_type", | 
 |     "../call:payload_type_picker", | 
 |     "../media:codec", | 
 |     "../media:media_engine", | 
 |     "../media:rid_description", | 
 |     "../media:rtc_media_config", | 
 |     "../media:stream_params", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../p2p:connection_info", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:p2p_transport_channel", | 
 |     "../p2p:port", | 
 |     "../p2p:port_allocator", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:crypto_random", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:ip_address", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:net_helper", | 
 |     "../rtc_base:net_helpers", | 
 |     "../rtc_base:network", | 
 |     "../rtc_base:network_constants", | 
 |     "../rtc_base:socket_address", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "../rtc_base:weak_ptr", | 
 |     "../system_wrappers:metrics", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("simulcast_sdp_serializer") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "simulcast_sdp_serializer.cc", | 
 |     "simulcast_sdp_serializer.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":session_description", | 
 |     ":simulcast_description", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../media:codec", | 
 |     "../media:rid_description", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:stringutils", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 | rtc_library("sdp_utils") { | 
 |   sources = [ | 
 |     "sdp_utils.cc", | 
 |     "sdp_utils.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":session_description", | 
 |     "../api:jsep", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base/system:rtc_export", | 
 |   ] | 
 | } | 
 | rtc_library("legacy_stats_collector") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "legacy_stats_collector.cc", | 
 |     "legacy_stats_collector.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":channel", | 
 |     ":channel_interface", | 
 |     ":data_channel_utils", | 
 |     ":legacy_stats_collector_interface", | 
 |     ":peer_connection_internal", | 
 |     ":rtp_receiver", | 
 |     ":rtp_receiver_proxy", | 
 |     ":rtp_sender_proxy", | 
 |     ":rtp_transceiver", | 
 |     ":transport_stats", | 
 |     "../api:candidate", | 
 |     "../api:field_trials_view", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/audio:audio_processing_statistics", | 
 |     "../api/audio_codecs:audio_codecs_api", | 
 |     "../api/video:video_rtp_headers", | 
 |     "../call:call_interfaces", | 
 |     "../media:media_channel", | 
 |     "../p2p:connection_info", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:port", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:ip_address", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:network_constants", | 
 |     "../rtc_base:socket_address", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:timeutils", | 
 |     "../system_wrappers", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 | rtc_source_set("stream_collection") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "stream_collection.h" ] | 
 |   deps = [ | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |   ] | 
 | } | 
 | rtc_library("track_media_info_map") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "track_media_info_map.cc", | 
 |     "track_media_info_map.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":rtp_receiver", | 
 |     ":rtp_sender", | 
 |     "../api:array_view", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../media:media_channel", | 
 |     "../media:stream_params", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:refcount", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 | rtc_library("webrtc_sdp") { | 
 |   # TODO(bugs.webrtc.org/13661): Reduce visibility if possible | 
 |   visibility = [ "*" ]  # Used by Chrome and more | 
 |  | 
 |   sources = [ | 
 |     "jsep_session_description.cc", | 
 |     "webrtc_sdp.cc", | 
 |     "webrtc_sdp.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":media_protocol_names", | 
 |     ":media_session", | 
 |     ":session_description", | 
 |     ":simulcast_description", | 
 |     ":simulcast_sdp_serializer", | 
 |     "../api:candidate", | 
 |     "../api:jsep", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:sequence_checker", | 
 |     "../api/audio:audio_frame_api", | 
 |     "../media:codec", | 
 |     "../media:media_constants", | 
 |     "../media:rid_description", | 
 |     "../media:rtc_data_sctp_transport_internal", | 
 |     "../media:rtp_utils", | 
 |     "../media:stream_params", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:port", | 
 |     "../p2p:port_interface", | 
 |     "../p2p:transport_description", | 
 |     "../p2p:transport_info", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:crypto_random", | 
 |     "../rtc_base:ip_address", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:net_helper", | 
 |     "../rtc_base:net_helpers", | 
 |     "../rtc_base:network_constants", | 
 |     "../rtc_base:socket_address", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base/system:rtc_export", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/base:nullability", | 
 |     "//third_party/abseil-cpp/absl/memory", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 | rtc_library("webrtc_session_description_factory") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "webrtc_session_description_factory.cc", | 
 |     "webrtc_session_description_factory.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":codec_vendor", | 
 |     ":connection_context", | 
 |     ":media_options", | 
 |     ":media_session", | 
 |     ":sdp_state_provider", | 
 |     ":session_description", | 
 |     "../api:field_trials_view", | 
 |     "../api:jsep", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtc_error", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/task_queue", | 
 |     "../p2p:transport_description_factory", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:rtc_certificate_generator", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "../rtc_base:weak_ptr", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("ice_server_parsing") { | 
 |   # TODO(bugs.webrtc.org/13661): Reduce visibility if possible | 
 |   visibility = [ "*" ]  # Known to be used externally | 
 |  | 
 |   sources = [ | 
 |     "ice_server_parsing.cc", | 
 |     "ice_server_parsing.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:candidate", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtc_error", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:port", | 
 |     "../p2p:port_allocator", | 
 |     "../p2p:port_interface", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:ip_address", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:socket_address", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base/system:rtc_export", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("media_stream_observer") { | 
 |   sources = [ | 
 |     "media_stream_observer.cc", | 
 |     "media_stream_observer.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |   ] | 
 | } | 
 | rtc_library("peer_connection_factory") { | 
 |   # TODO(bugs.webrtc.org/13661): Reduce visibility if possible | 
 |   visibility = [ "*" ]  # Known to be used externally | 
 |   allow_poison = [ "environment_construction" ] | 
 |   sources = [ | 
 |     "peer_connection_factory.cc", | 
 |     "peer_connection_factory.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":audio_track", | 
 |     ":codec_vendor", | 
 |     ":connection_context", | 
 |     ":ice_server_parsing", | 
 |     ":local_audio_source", | 
 |     ":media_factory", | 
 |     ":media_stream", | 
 |     ":media_stream_proxy", | 
 |     ":media_stream_track_proxy", | 
 |     ":peer_connection", | 
 |     ":peer_connection_proxy", | 
 |     ":rtp_parameters_conversion", | 
 |     ":video_track", | 
 |     "../api:audio_options_api", | 
 |     "../api:fec_controller_api", | 
 |     "../api:field_trials_view", | 
 |     "../api:ice_transport_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:network_state_predictor_api", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/environment", | 
 |     "../api/environment:environment_factory", | 
 |     "../api/metronome", | 
 |     "../api/neteq:neteq_api", | 
 |     "../api/rtc_event_log:rtc_event_log_factory_interface", | 
 |     "../api/transport:bitrate_settings", | 
 |     "../api/transport:network_control", | 
 |     "../api/transport:sctp_transport_factory_interface", | 
 |     "../api/units:data_rate", | 
 |     "../call:call_interfaces", | 
 |     "../call:rtp_interfaces", | 
 |     "../call:rtp_sender", | 
 |     "../media:codec", | 
 |     "../media:media_engine", | 
 |     "../p2p:basic_async_resolver_factory", | 
 |     "../p2p:basic_port_allocator", | 
 |     "../p2p:default_ice_transport_factory", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:port", | 
 |     "../p2p:port_allocator", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:rtc_certificate_generator", | 
 |     "../rtc_base:safe_conversions", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/experiments:field_trial_parser", | 
 |     "../rtc_base/system:file_wrapper", | 
 |     "//third_party/abseil-cpp/absl/strings", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("peer_connection_message_handler") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "peer_connection_message_handler.cc", | 
 |     "peer_connection_message_handler.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":legacy_stats_collector_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/task_queue", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/units:time_delta", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("usage_pattern") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "usage_pattern.cc", | 
 |     "usage_pattern.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../rtc_base:logging", | 
 |     "../system_wrappers:metrics", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtp_transceiver") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtp_transceiver.cc", | 
 |     "rtp_transceiver.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":channel", | 
 |     ":channel_interface", | 
 |     ":codec_vendor", | 
 |     ":connection_context", | 
 |     ":proxy", | 
 |     ":rtp_media_utils", | 
 |     ":rtp_receiver", | 
 |     ":rtp_receiver_proxy", | 
 |     ":rtp_sender", | 
 |     ":rtp_sender_proxy", | 
 |     ":rtp_transport_internal", | 
 |     ":session_description", | 
 |     "../api:array_view", | 
 |     "../api:audio_options_api", | 
 |     "../api:jsep", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/audio_codecs:audio_codecs_api", | 
 |     "../api/crypto:options", | 
 |     "../api/environment", | 
 |     "../api/task_queue", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/video:video_bitrate_allocator_factory", | 
 |     "../api/video_codecs:scalability_mode", | 
 |     "../media:codec", | 
 |     "../media:media_channel", | 
 |     "../media:media_engine", | 
 |     "../media:rtc_media_config", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:threading", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtp_transmission_manager") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtp_transmission_manager.cc", | 
 |     "rtp_transmission_manager.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":audio_rtp_receiver", | 
 |     ":channel_interface", | 
 |     ":codec_vendor", | 
 |     ":connection_context", | 
 |     ":legacy_stats_collector_interface", | 
 |     ":rtp_receiver", | 
 |     ":rtp_receiver_proxy", | 
 |     ":rtp_sender", | 
 |     ":rtp_sender_proxy", | 
 |     ":rtp_transceiver", | 
 |     ":transceiver_list", | 
 |     ":usage_pattern", | 
 |     ":video_rtp_receiver", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/environment", | 
 |     "../media:media_channel", | 
 |     "../media:media_engine", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:crypto_random", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base:unique_id_generator", | 
 |     "../rtc_base:weak_ptr", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("transceiver_list") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "transceiver_list.cc", | 
 |     "transceiver_list.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":rtp_transceiver", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:rtp_transceiver_direction", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base/system:no_unique_address", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtp_receiver") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtp_receiver.cc", | 
 |     "rtp_receiver.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":media_stream", | 
 |     ":media_stream_proxy", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |     "../media:media_channel", | 
 |     "../rtc_base:threading", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("audio_rtp_receiver") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "audio_rtp_receiver.cc", | 
 |     "audio_rtp_receiver.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":audio_track", | 
 |     ":jitter_buffer_delay", | 
 |     ":media_stream_track_proxy", | 
 |     ":remote_audio_source", | 
 |     ":rtp_receiver", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:frame_transformer_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/crypto:frame_decryptor_interface", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/transport/rtp:rtp_source", | 
 |     "../media:media_channel", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/system:no_unique_address", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("video_rtp_receiver") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "video_rtp_receiver.cc", | 
 |     "video_rtp_receiver.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":jitter_buffer_delay", | 
 |     ":media_stream_track_proxy", | 
 |     ":rtp_receiver", | 
 |     ":video_rtp_track_source", | 
 |     ":video_track", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:frame_transformer_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/crypto:frame_decryptor_interface", | 
 |     "../api/transport/rtp:rtp_source", | 
 |     "../api/video:recordable_encoded_frame", | 
 |     "../api/video:video_frame", | 
 |     "../media:media_channel", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/system:no_unique_address", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("video_rtp_track_source") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "video_rtp_track_source.cc", | 
 |     "video_rtp_track_source.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":video_track_source", | 
 |     "../api:sequence_checker", | 
 |     "../api/video:recordable_encoded_frame", | 
 |     "../api/video:video_frame", | 
 |     "../media:rtc_media_base", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base/synchronization:mutex", | 
 |     "../rtc_base/system:no_unique_address", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("audio_track") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "audio_track.cc", | 
 |     "audio_track.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base/system:no_unique_address", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("video_track") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "video_track.cc", | 
 |     "video_track.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":video_track_source_proxy", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/video:video_frame", | 
 |     "../media:video_source_base", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/system:no_unique_address", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("sdp_state_provider") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "sdp_state_provider.h" ] | 
 |   deps = [ | 
 |     "../api:jsep", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../rtc_base:ssl_adapter", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("jitter_buffer_delay") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "jitter_buffer_delay.cc", | 
 |     "jitter_buffer_delay.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:sequence_checker", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:safe_conversions", | 
 |     "../rtc_base:safe_minmax", | 
 |     "../rtc_base/system:no_unique_address", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("remote_audio_source") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "remote_audio_source.cc", | 
 |     "remote_audio_source.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:call_api", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/task_queue", | 
 |     "../media:media_channel", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:stringutils", | 
 |     "../rtc_base/synchronization:mutex", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtp_sender") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtp_sender.cc", | 
 |     "rtp_sender.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":dtmf_sender", | 
 |     ":legacy_stats_collector_interface", | 
 |     "../api:audio_options_api", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:dtmf_sender_interface", | 
 |     "../api:field_trials_view", | 
 |     "../api:frame_transformer_interface", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:priority", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/crypto:frame_encryptor_interface", | 
 |     "../api/environment", | 
 |     "../api/video_codecs:video_codecs_api", | 
 |     "../media:audio_source", | 
 |     "../media:codec", | 
 |     "../media:media_channel", | 
 |     "../media:media_engine", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:crypto_random", | 
 |     "../rtc_base:event_tracer", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:rtc_event", | 
 |     "../rtc_base:threading", | 
 |     "../rtc_base/synchronization:mutex", | 
 |     "//third_party/abseil-cpp/absl/algorithm:container", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("rtp_parameters_conversion") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "rtp_parameters_conversion.cc", | 
 |     "rtp_parameters_conversion.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":session_description", | 
 |     "../api:rtc_error", | 
 |     "../api:rtp_parameters", | 
 |     "../media:codec", | 
 |     "../media:media_constants", | 
 |     "../media:stream_params", | 
 |     "../rtc_base:logging", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("dtmf_sender") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "dtmf_sender.cc", | 
 |     "dtmf_sender.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":proxy", | 
 |     "../api:dtmf_sender_interface", | 
 |     "../api:make_ref_counted", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/task_queue", | 
 |     "../api/task_queue:pending_task_safety_flag", | 
 |     "../api/units:time_delta", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:refcount", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("media_stream") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ | 
 |     "media_stream.cc", | 
 |     "media_stream.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:make_ref_counted", | 
 |     "../api:media_stream_interface", | 
 |     "../api:scoped_refptr", | 
 |     "../rtc_base:checks", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("video_track_source") { | 
 |   sources = [ | 
 |     "video_track_source.cc", | 
 |     "video_track_source.h", | 
 |   ] | 
 |   deps = [ | 
 |     "../api:media_stream_interface", | 
 |     "../api:sequence_checker", | 
 |     "../api/video:recordable_encoded_frame", | 
 |     "../api/video:video_frame", | 
 |     "../media:media_channel", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base/system:no_unique_address", | 
 |     "../rtc_base/system:rtc_export", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_source_set("legacy_stats_collector_interface") { | 
 |   visibility = [ ":*" ] | 
 |   sources = [ "legacy_stats_collector_interface.h" ] | 
 |   deps = [ | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../api:media_stream_interface", | 
 |   ] | 
 | } | 
 |  | 
 | # This target contains the libraries that are required in order to get an | 
 | # usable peerconnection-using binary. | 
 | rtc_source_set("libjingle_peerconnection") { | 
 |   # TODO(bugs.webrtc.org/13661): Reduce visibility if possible | 
 |   visibility = [ "*" ]  # Used by Chrome and others | 
 |   allow_poison = [ "environment_construction" ] | 
 |  | 
 |   deps = [ | 
 |     ":jsep_session_description", | 
 |     ":peer_connection_factory", | 
 |     ":rtc_stats_collector", | 
 |     "../api:libjingle_peerconnection_api", | 
 |     "../stats", | 
 |   ] | 
 | } | 
 |  | 
 | rtc_library("datagram_connection_internal") { | 
 |   sources = [ | 
 |     "datagram_connection_internal.cc", | 
 |     "datagram_connection_internal.h", | 
 |   ] | 
 |   deps = [ | 
 |     ":dtls_srtp_transport", | 
 |     ":dtls_transport", | 
 |     "../api:array_view", | 
 |     "../api:candidate", | 
 |     "../api:datagram_connection", | 
 |     "../api:dtls_transport_interface", | 
 |     "../api:ice_transport_interface", | 
 |     "../api:make_ref_counted", | 
 |     "../api:ref_count", | 
 |     "../api:scoped_refptr", | 
 |     "../api:sequence_checker", | 
 |     "../api/crypto:options", | 
 |     "../api/environment", | 
 |     "../api/transport:enums", | 
 |     "../call:rtp_interfaces", | 
 |     "../call:rtp_receiver", | 
 |     "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |     "../p2p:dtls_transport", | 
 |     "../p2p:dtls_transport_internal", | 
 |     "../p2p:ice_transport_internal", | 
 |     "../p2p:p2p_constants", | 
 |     "../p2p:p2p_transport_channel", | 
 |     "../p2p:packet_transport_internal", | 
 |     "../p2p:port", | 
 |     "../p2p:port_allocator", | 
 |     "../p2p:transport_description", | 
 |     "../pc:dtls_srtp_transport", | 
 |     "../pc:dtls_transport", | 
 |     "../rtc_base:async_packet_socket", | 
 |     "../rtc_base:checks", | 
 |     "../rtc_base:copy_on_write_buffer", | 
 |     "../rtc_base:crypto_random", | 
 |     "../rtc_base:logging", | 
 |     "../rtc_base:macromagic", | 
 |     "../rtc_base:ssl", | 
 |     "../rtc_base:ssl_adapter", | 
 |     "../rtc_base/network:received_packet", | 
 |     "../rtc_base/system:rtc_export", | 
 |     "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |     "//third_party/abseil-cpp/absl/strings:string_view", | 
 |   ] | 
 | } | 
 |  | 
 | if (rtc_include_tests && !build_with_chromium) { | 
 |   rtc_source_set("fake_codec_lookup_helper") { | 
 |     testonly = true | 
 |     sources = [ "test/fake_codec_lookup_helper.h" ] | 
 |     deps = [ | 
 |       ":codec_vendor", | 
 |       ":connection_context", | 
 |       "../call:payload_type", | 
 |       "../rtc_base:checks", | 
 |     ] | 
 |   } | 
 |  | 
 |   rtc_test("rtc_pc_unittests") { | 
 |     testonly = true | 
 |  | 
 |     sources = [ | 
 |       "audio_rtp_receiver_unittest.cc", | 
 |       "channel_unittest.cc", | 
 |       "codec_vendor_unittest.cc", | 
 |       "datagram_connection_unittest.cc", | 
 |       "dtls_srtp_transport_integrationtest.cc", | 
 |       "dtls_srtp_transport_unittest.cc", | 
 |       "dtls_transport_unittest.cc", | 
 |       "ice_transport_unittest.cc", | 
 |       "jsep_transport_controller_unittest.cc", | 
 |       "jsep_transport_unittest.cc", | 
 |       "media_session_unittest.cc", | 
 |       "rtcp_mux_filter_unittest.cc", | 
 |       "rtp_transport_unittest.cc", | 
 |       "sctp_transport_unittest.cc", | 
 |       "session_description_unittest.cc", | 
 |       "srtp_session_unittest.cc", | 
 |       "srtp_transport_unittest.cc", | 
 |       "test/rtp_transport_test_util.h", | 
 |       "test/srtp_test_util.h", | 
 |       "used_ids_unittest.cc", | 
 |       "video_rtp_receiver_unittest.cc", | 
 |     ] | 
 |  | 
 |     if (is_win) { | 
 |       libs = [ "strmiids.lib" ] | 
 |     } | 
 |  | 
 |     deps = [ | 
 |       ":audio_rtp_receiver", | 
 |       ":channel", | 
 |       ":codec_vendor", | 
 |       ":datagram_connection_internal", | 
 |       ":dtls_srtp_transport", | 
 |       ":dtls_transport", | 
 |       ":ice_transport", | 
 |       ":jsep_transport", | 
 |       ":jsep_transport_controller", | 
 |       ":media_options", | 
 |       ":media_protocol_names", | 
 |       ":media_session", | 
 |       ":pc_test_utils", | 
 |       ":rtcp_mux_filter", | 
 |       ":rtp_media_utils", | 
 |       ":rtp_parameters_conversion", | 
 |       ":rtp_transport", | 
 |       ":rtp_transport_internal", | 
 |       ":sctp_transport", | 
 |       ":session_description", | 
 |       ":simulcast_description", | 
 |       ":srtp_session", | 
 |       ":srtp_transport", | 
 |       ":transport_stats", | 
 |       ":used_ids", | 
 |       ":video_rtp_receiver", | 
 |       "../api:array_view", | 
 |       "../api:audio_options_api", | 
 |       "../api:candidate", | 
 |       "../api:datagram_connection", | 
 |       "../api:dtls_transport_interface", | 
 |       "../api:field_trials", | 
 |       "../api:field_trials_view", | 
 |       "../api:ice_transport_factory", | 
 |       "../api:ice_transport_interface", | 
 |       "../api:jsep", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:make_ref_counted", | 
 |       "../api:media_stream_interface", | 
 |       "../api:mock_datagram_connection_observer", | 
 |       "../api:priority", | 
 |       "../api:rtc_error", | 
 |       "../api:rtc_error_matchers", | 
 |       "../api:rtp_headers", | 
 |       "../api:rtp_parameters", | 
 |       "../api:rtp_transceiver_direction", | 
 |       "../api:scoped_refptr", | 
 |       "../api:sequence_checker", | 
 |       "../api/audio_codecs:audio_codecs_api", | 
 |       "../api/crypto:options", | 
 |       "../api/environment", | 
 |       "../api/environment:environment_factory", | 
 |       "../api/task_queue", | 
 |       "../api/task_queue:pending_task_safety_flag", | 
 |       "../api/transport:datagram_transport_interface", | 
 |       "../api/transport:ecn_marking", | 
 |       "../api/transport:enums", | 
 |       "../api/units:time_delta", | 
 |       "../api/video:recordable_encoded_frame", | 
 |       "../api/video:video_frame", | 
 |       "../api/video/test:mock_recordable_encoded_frame", | 
 |       "../api/video_codecs:video_codecs_api", | 
 |       "../call:fake_payload_type_suggester", | 
 |       "../call:payload_type", | 
 |       "../call:payload_type_picker", | 
 |       "../call:rtp_interfaces", | 
 |       "../call:rtp_receiver", | 
 |       "../media:codec", | 
 |       "../media:codec_list", | 
 |       "../media:media_channel", | 
 |       "../media:media_constants", | 
 |       "../media:rid_description", | 
 |       "../media:rtc_data_sctp_transport_internal", | 
 |       "../media:rtc_media_tests_utils", | 
 |       "../media:stream_params", | 
 |       "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |       "../p2p:basic_packet_socket_factory", | 
 |       "../p2p:candidate_pair_interface", | 
 |       "../p2p:dtls_transport", | 
 |       "../p2p:dtls_transport_factory", | 
 |       "../p2p:dtls_transport_internal", | 
 |       "../p2p:fake_ice_transport", | 
 |       "../p2p:fake_port_allocator", | 
 |       "../p2p:ice_transport_internal", | 
 |       "../p2p:p2p_constants", | 
 |       "../p2p:p2p_test_utils", | 
 |       "../p2p:p2p_transport_channel", | 
 |       "../p2p:packet_transport_internal", | 
 |       "../p2p:port_allocator", | 
 |       "../p2p:port_interface", | 
 |       "../p2p:transport_description", | 
 |       "../p2p:transport_description_factory", | 
 |       "../p2p:transport_info", | 
 |       "../rtc_base:async_packet_socket", | 
 |       "../rtc_base:buffer", | 
 |       "../rtc_base:byte_order", | 
 |       "../rtc_base:checks", | 
 |       "../rtc_base:copy_on_write_buffer", | 
 |       "../rtc_base:gunit_helpers", | 
 |       "../rtc_base:logging", | 
 |       "../rtc_base:net_helper", | 
 |       "../rtc_base:network_route", | 
 |       "../rtc_base:rtc_base_tests_utils", | 
 |       "../rtc_base:rtc_event", | 
 |       "../rtc_base:socket", | 
 |       "../rtc_base:socket_address", | 
 |       "../rtc_base:socket_server", | 
 |       "../rtc_base:ssl", | 
 |       "../rtc_base:ssl_adapter", | 
 |       "../rtc_base:stringutils", | 
 |       "../rtc_base:task_queue_for_test", | 
 |       "../rtc_base:threading", | 
 |       "../rtc_base:unique_id_generator", | 
 |       "../rtc_base/containers:flat_set", | 
 |       "../rtc_base/network:received_packet", | 
 |       "../rtc_base/network:sent_packet", | 
 |       "../rtc_base/third_party/sigslot", | 
 |       "../system_wrappers:metrics", | 
 |       "../test:create_test_environment", | 
 |       "../test:create_test_field_trials", | 
 |       "../test:run_loop", | 
 |       "../test:test_main", | 
 |       "../test:test_support", | 
 |       "../test:wait_until", | 
 |       "//third_party/abseil-cpp/absl/algorithm:container", | 
 |       "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |       "//third_party/abseil-cpp/absl/memory", | 
 |       "//third_party/abseil-cpp/absl/strings", | 
 |       "//third_party/abseil-cpp/absl/strings:string_view", | 
 |     ] | 
 |  | 
 |     include_dirs = [] | 
 |     if (rtc_build_libsrtp) { | 
 |       include_dirs += [ "//third_party/libsrtp/srtp" ] | 
 |       deps += [ "//third_party/libsrtp" ] | 
 |       if (!rtc_build_ssl) { | 
 |         configs += [ "..:external_ssl_library" ] | 
 |       } | 
 |     } | 
 |  | 
 |     if (is_android) { | 
 |       use_default_launcher = false | 
 |       deps += [ "//build/android/gtest_apk:native_test_instrumentation_test_runner_java" ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_library("peerconnection_perf_tests") { | 
 |     testonly = true | 
 |     sources = [ | 
 |       "peer_connection_callsetup_perf_tests.cc", | 
 |       "peer_connection_rampup_tests.cc", | 
 |     ] | 
 |     deps = [ | 
 |       ":pc_test_utils", | 
 |       ":peer_connection", | 
 |       ":peerconnection_wrapper", | 
 |       ":sdp_utils", | 
 |       "../api:audio_options_api", | 
 |       "../api:create_modular_peer_connection_factory", | 
 |       "../api:enable_media_with_defaults", | 
 |       "../api:field_trials", | 
 |       "../api:field_trials_view", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:make_ref_counted", | 
 |       "../api:media_stream_interface", | 
 |       "../api:rtc_error", | 
 |       "../api:rtc_error_matchers", | 
 |       "../api:rtc_stats_api", | 
 |       "../api:scoped_refptr", | 
 |       "../api/audio_codecs:builtin_audio_decoder_factory", | 
 |       "../api/audio_codecs:builtin_audio_encoder_factory", | 
 |       "../api/environment", | 
 |       "../api/environment:environment_factory", | 
 |       "../api/test/metrics:global_metrics_logger_and_exporter", | 
 |       "../api/test/metrics:metric", | 
 |       "../api/units:time_delta", | 
 |       "../api/units:timestamp", | 
 |       "../api/video_codecs:video_decoder_factory_template", | 
 |       "../api/video_codecs:video_decoder_factory_template_dav1d_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_open_h264_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template", | 
 |       "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_open_h264_adapter", | 
 |       "../p2p:basic_packet_socket_factory", | 
 |       "../p2p:p2p_test_utils", | 
 |       "../p2p:port_interface", | 
 |       "../p2p:transport_description", | 
 |       "../rtc_base:checks", | 
 |       "../rtc_base:crypto_random", | 
 |       "../rtc_base:logging", | 
 |       "../rtc_base:rtc_base_tests_utils", | 
 |       "../rtc_base:socket_address", | 
 |       "../rtc_base:socket_factory", | 
 |       "../rtc_base:stringutils", | 
 |       "../rtc_base:task_queue_for_test", | 
 |       "../rtc_base:threading", | 
 |       "../rtc_base:timeutils", | 
 |       "../system_wrappers", | 
 |       "../test:create_test_environment", | 
 |       "../test:create_test_field_trials", | 
 |       "../test:test_support", | 
 |       "../test:wait_until", | 
 |       "//third_party/abseil-cpp/absl/strings", | 
 |       "//third_party/abseil-cpp/absl/strings:string_view", | 
 |     ] | 
 |   } | 
 |  | 
 |   rtc_library("peerconnection_wrapper") { | 
 |     testonly = true | 
 |     sources = [ | 
 |       "peer_connection_wrapper.cc", | 
 |       "peer_connection_wrapper.h", | 
 |     ] | 
 |     deps = [ | 
 |       ":pc_test_utils", | 
 |       ":peer_connection", | 
 |       ":peer_connection_proxy", | 
 |       ":sdp_utils", | 
 |       "../api:function_view", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:make_ref_counted", | 
 |       "../api:media_stream_interface", | 
 |       "../api:rtc_error", | 
 |       "../api:rtc_error_matchers", | 
 |       "../api:rtc_stats_api", | 
 |       "../api:rtp_parameters", | 
 |       "../api:scoped_refptr", | 
 |       "../rtc_base:checks", | 
 |       "../rtc_base:logging", | 
 |       "../test:test_support", | 
 |       "../test:wait_until", | 
 |     ] | 
 |   } | 
 |  | 
 |   rtc_test("slow_peer_connection_unittests") { | 
 |     testonly = true | 
 |     sources = [ "slow_peer_connection_integration_test.cc" ] | 
 |     deps = [ | 
 |       ":integration_test_helpers", | 
 |       ":pc_test_utils", | 
 |       "../api:dtmf_sender_interface", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:rtc_error_matchers", | 
 |       "../api:scoped_refptr", | 
 |       "../api/units:time_delta", | 
 |       "../p2p:connection", | 
 |       "../p2p:p2p_server_utils", | 
 |       "../p2p:p2p_test_utils", | 
 |       "../p2p:port_allocator", | 
 |       "../p2p:port_interface", | 
 |       "../rtc_base:gunit_helpers", | 
 |       "../rtc_base:logging", | 
 |       "../rtc_base:rtc_base_tests_utils", | 
 |       "../rtc_base:socket_address", | 
 |       "../rtc_base:ssl", | 
 |       "../test:test_main", | 
 |       "../test:test_support", | 
 |       "../test:wait_until", | 
 |       "../test/time_controller", | 
 |       "//third_party/abseil-cpp/absl/algorithm:container", | 
 |       "//third_party/abseil-cpp/absl/strings", | 
 |     ] | 
 |   } | 
 |  | 
 |   rtc_test("peerconnection_unittests") { | 
 |     testonly = true | 
 |     sources = [ | 
 |       "congestion_control_integrationtest.cc", | 
 |       "data_channel_integrationtest.cc", | 
 |       "data_channel_unittest.cc", | 
 |       "dtmf_sender_unittest.cc", | 
 |       "ice_server_parsing_unittest.cc", | 
 |       "jitter_buffer_delay_unittest.cc", | 
 |       "jsep_session_description_unittest.cc", | 
 |       "legacy_stats_collector_unittest.cc", | 
 |       "local_audio_source_unittest.cc", | 
 |       "media_stream_unittest.cc", | 
 |       "peer_connection_adaptation_integrationtest.cc", | 
 |       "peer_connection_bundle_unittest.cc", | 
 |       "peer_connection_crypto_unittest.cc", | 
 |       "peer_connection_data_channel_unittest.cc", | 
 |       "peer_connection_encodings_integrationtest.cc", | 
 |       "peer_connection_end_to_end_unittest.cc", | 
 |       "peer_connection_factory_unittest.cc", | 
 |       "peer_connection_field_trial_tests.cc", | 
 |       "peer_connection_header_extension_unittest.cc", | 
 |       "peer_connection_histogram_unittest.cc", | 
 |       "peer_connection_ice_unittest.cc", | 
 |       "peer_connection_integrationtest.cc", | 
 |       "peer_connection_interface_unittest.cc", | 
 |       "peer_connection_jsep_unittest.cc", | 
 |       "peer_connection_media_unittest.cc", | 
 |       "peer_connection_rtp_unittest.cc", | 
 |       "peer_connection_signaling_unittest.cc", | 
 |       "peer_connection_simulcast_unittest.cc", | 
 |       "peer_connection_stability_integrationtest.cc", | 
 |       "peer_connection_svc_integrationtest.cc", | 
 |       "pranswer_switch_integrationtest.cc", | 
 |       "proxy_unittest.cc", | 
 |       "rtc_stats_collector_unittest.cc", | 
 |       "rtc_stats_integrationtest.cc", | 
 |       "rtc_stats_traversal_unittest.cc", | 
 |       "rtp_media_utils_unittest.cc", | 
 |       "rtp_parameters_conversion_unittest.cc", | 
 |       "rtp_sender_receiver_unittest.cc", | 
 |       "rtp_transceiver_unittest.cc", | 
 |       "sctp_utils_unittest.cc", | 
 |       "sdp_munging_detector_unittest.cc", | 
 |       "sdp_offer_answer_unittest.cc", | 
 |       "simulcast_sdp_serializer_unittest.cc", | 
 |       "test/fake_audio_capture_module_unittest.cc", | 
 |       "test/test_sdp_strings.h", | 
 |       "track_media_info_map_unittest.cc", | 
 |       "video_rtp_track_source_unittest.cc", | 
 |       "video_track_unittest.cc", | 
 |       "webrtc_sdp_unittest.cc", | 
 |     ] | 
 |  | 
 |     deps = [ | 
 |       ":audio_rtp_receiver", | 
 |       ":audio_track", | 
 |       ":channel", | 
 |       ":channel_interface", | 
 |       ":codec_vendor", | 
 |       ":connection_context", | 
 |       ":dtls_srtp_transport", | 
 |       ":dtls_transport", | 
 |       ":dtmf_sender", | 
 |       ":enable_fake_media", | 
 |       ":fake_codec_lookup_helper", | 
 |       ":ice_server_parsing", | 
 |       ":integration_test_helpers", | 
 |       ":jitter_buffer_delay", | 
 |       ":legacy_stats_collector", | 
 |       ":local_audio_source", | 
 |       ":media_protocol_names", | 
 |       ":media_session", | 
 |       ":media_stream", | 
 |       ":pc_test_utils", | 
 |       ":peer_connection", | 
 |       ":peer_connection_factory", | 
 |       ":peer_connection_internal", | 
 |       ":peer_connection_proxy", | 
 |       ":peerconnection_wrapper", | 
 |       ":proxy", | 
 |       ":rtc_stats_collector", | 
 |       ":rtc_stats_traversal", | 
 |       ":rtp_media_utils", | 
 |       ":rtp_parameters_conversion", | 
 |       ":rtp_receiver", | 
 |       ":rtp_receiver_proxy", | 
 |       ":rtp_sender", | 
 |       ":rtp_sender_proxy", | 
 |       ":rtp_transceiver", | 
 |       ":rtp_transport_internal", | 
 |       ":sctp_data_channel", | 
 |       ":sctp_transport", | 
 |       ":sctp_utils", | 
 |       ":sdp_munging_detector", | 
 |       ":sdp_utils", | 
 |       ":session_description", | 
 |       ":simulcast_description", | 
 |       ":simulcast_sdp_serializer", | 
 |       ":stream_collection", | 
 |       ":track_media_info_map", | 
 |       ":transport_stats", | 
 |       ":usage_pattern", | 
 |       ":video_rtp_receiver", | 
 |       ":video_rtp_track_source", | 
 |       ":video_track", | 
 |       ":video_track_source", | 
 |       ":webrtc_sdp", | 
 |       "../api:array_view", | 
 |       "../api:audio_options_api", | 
 |       "../api:candidate", | 
 |       "../api:create_modular_peer_connection_factory", | 
 |       "../api:create_peerconnection_factory", | 
 |       "../api:dtls_transport_interface", | 
 |       "../api:enable_media", | 
 |       "../api:enable_media_with_defaults", | 
 |       "../api:fake_frame_decryptor", | 
 |       "../api:fake_frame_encryptor", | 
 |       "../api:field_trials", | 
 |       "../api:field_trials_view", | 
 |       "../api:ice_transport_interface", | 
 |       "../api:jsep", | 
 |       "../api:libjingle_logging_api", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:make_ref_counted", | 
 |       "../api:media_stream_interface", | 
 |       "../api:mock_async_dns_resolver", | 
 |       "../api:mock_encoder_selector", | 
 |       "../api:mock_packet_socket_factory", | 
 |       "../api:mock_video_track", | 
 |       "../api:packet_socket_factory", | 
 |       "../api:priority", | 
 |       "../api:ref_count", | 
 |       "../api:rtc_error", | 
 |       "../api:rtc_error_matchers", | 
 |       "../api:rtc_stats_api", | 
 |       "../api:rtp_parameters", | 
 |       "../api:rtp_sender_interface", | 
 |       "../api:rtp_transceiver_direction", | 
 |       "../api:scoped_refptr", | 
 |       "../api:sequence_checker", | 
 |       "../api/adaptation:resource_adaptation_api", | 
 |       "../api/audio:audio_device", | 
 |       "../api/audio:audio_mixer_api", | 
 |       "../api/audio:audio_processing", | 
 |       "../api/audio:audio_processing_statistics", | 
 |       "../api/audio_codecs:audio_codecs_api", | 
 |       "../api/audio_codecs:builtin_audio_decoder_factory", | 
 |       "../api/audio_codecs:builtin_audio_encoder_factory", | 
 |       "../api/audio_codecs:opus_audio_decoder_factory", | 
 |       "../api/audio_codecs:opus_audio_encoder_factory", | 
 |       "../api/audio_codecs/L16:audio_decoder_L16", | 
 |       "../api/audio_codecs/L16:audio_encoder_L16", | 
 |       "../api/crypto:frame_decryptor_interface", | 
 |       "../api/crypto:frame_encryptor_interface", | 
 |       "../api/crypto:options", | 
 |       "../api/environment", | 
 |       "../api/environment:environment_factory", | 
 |       "../api/rtc_event_log", | 
 |       "../api/rtc_event_log:rtc_event_log_factory", | 
 |       "../api/task_queue", | 
 |       "../api/task_queue:default_task_queue_factory", | 
 |       "../api/task_queue:pending_task_safety_flag", | 
 |       "../api/transport:bitrate_settings", | 
 |       "../api/transport:datagram_transport_interface", | 
 |       "../api/transport:enums", | 
 |       "../api/transport:sctp_transport_factory_interface", | 
 |       "../api/transport/rtp:rtp_source", | 
 |       "../api/units:data_rate", | 
 |       "../api/units:time_delta", | 
 |       "../api/units:timestamp", | 
 |       "../api/video:builtin_video_bitrate_allocator_factory", | 
 |       "../api/video:encoded_image", | 
 |       "../api/video:recordable_encoded_frame", | 
 |       "../api/video:video_bitrate_allocator_factory", | 
 |       "../api/video:video_codec_constants", | 
 |       "../api/video:video_frame", | 
 |       "../api/video:video_rtp_headers", | 
 |       "../api/video_codecs:builtin_video_decoder_factory", | 
 |       "../api/video_codecs:builtin_video_encoder_factory", | 
 |       "../api/video_codecs:scalability_mode", | 
 |       "../api/video_codecs:video_codecs_api", | 
 |       "../api/video_codecs:video_decoder_factory_template", | 
 |       "../api/video_codecs:video_decoder_factory_template_dav1d_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_open_h264_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template", | 
 |       "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_open_h264_adapter", | 
 |       "../call:call_interfaces", | 
 |       "../call/adaptation:resource_adaptation_test_utilities", | 
 |       "../common_video", | 
 |       "../logging:fake_rtc_event_log", | 
 |       "../media:codec", | 
 |       "../media:media_channel", | 
 |       "../media:media_constants", | 
 |       "../media:media_engine", | 
 |       "../media:rid_description", | 
 |       "../media:rtc_audio_video", | 
 |       "../media:rtc_data_sctp_transport_internal", | 
 |       "../media:rtc_media_config", | 
 |       "../media:rtc_media_tests_utils", | 
 |       "../media:stream_params", | 
 |       "../modules/audio_processing:mocks", | 
 |       "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |       "../p2p:basic_packet_socket_factory", | 
 |       "../p2p:connection_info", | 
 |       "../p2p:dtls_transport_internal", | 
 |       "../p2p:fake_port_allocator", | 
 |       "../p2p:ice_transport_internal", | 
 |       "../p2p:p2p_constants", | 
 |       "../p2p:p2p_test_utils", | 
 |       "../p2p:port", | 
 |       "../p2p:port_allocator", | 
 |       "../p2p:port_interface", | 
 |       "../p2p:transport_description", | 
 |       "../p2p:transport_info", | 
 |       "../rtc_base:base64", | 
 |       "../rtc_base:byte_buffer", | 
 |       "../rtc_base:checks", | 
 |       "../rtc_base:copy_on_write_buffer", | 
 |       "../rtc_base:crypto_random", | 
 |       "../rtc_base:digest", | 
 |       "../rtc_base:event_tracer", | 
 |       "../rtc_base:gunit_helpers", | 
 |       "../rtc_base:ip_address", | 
 |       "../rtc_base:logging", | 
 |       "../rtc_base:net_helper", | 
 |       "../rtc_base:network", | 
 |       "../rtc_base:network_constants", | 
 |       "../rtc_base:null_socket_server", | 
 |       "../rtc_base:random", | 
 |       "../rtc_base:refcount", | 
 |       "../rtc_base:rtc_base_tests_utils", | 
 |       "../rtc_base:rtc_certificate_generator", | 
 |       "../rtc_base:rtc_event", | 
 |       "../rtc_base:rtc_json", | 
 |       "../rtc_base:safe_conversions", | 
 |       "../rtc_base:socket_address", | 
 |       "../rtc_base:socket_server", | 
 |       "../rtc_base:ssl", | 
 |       "../rtc_base:ssl_adapter", | 
 |       "../rtc_base:stringutils", | 
 |       "../rtc_base:task_queue_for_test", | 
 |       "../rtc_base:threading", | 
 |       "../rtc_base:timeutils", | 
 |       "../rtc_base:unique_id_generator", | 
 |       "../rtc_base/containers:flat_map", | 
 |       "../rtc_base/synchronization:mutex", | 
 |       "../rtc_base/third_party/sigslot", | 
 |       "../system_wrappers", | 
 |       "../system_wrappers:metrics", | 
 |       "../test:audio_codec_mocks", | 
 |       "../test:create_test_environment", | 
 |       "../test:create_test_field_trials", | 
 |       "../test:rtc_expect_death", | 
 |       "../test:run_loop", | 
 |       "../test:test_support", | 
 |       "../test:wait_until", | 
 |       "../test/pc/sctp:fake_sctp_transport", | 
 |       "scenario_tests:pc_scenario_tests", | 
 |       "//third_party/abseil-cpp/absl/algorithm:container", | 
 |       "//third_party/abseil-cpp/absl/base:nullability", | 
 |       "//third_party/abseil-cpp/absl/memory", | 
 |       "//third_party/abseil-cpp/absl/strings", | 
 |       "//third_party/abseil-cpp/absl/strings:str_format", | 
 |       "//third_party/abseil-cpp/absl/strings:string_view", | 
 |       "//third_party/jsoncpp", | 
 |     ] | 
 |  | 
 |     # These deps are kept separately because they can't be automatically | 
 |     # regenerated by gn_check_autofix tool | 
 |     deps += [ | 
 |       ":data_channel_controller_unittest", | 
 |       "../test:test_main", | 
 |     ] | 
 |  | 
 |     if (is_android) { | 
 |       use_default_launcher = false | 
 |       deps += [ | 
 |         ":android_black_magic", | 
 |  | 
 |         # We need to depend on this one directly, or classloads will fail for | 
 |         # the voice engine BuildInfo, for instance. | 
 |         "../sdk/android:libjingle_peerconnection_java", | 
 |       ] | 
 |       shard_timeout = 900 | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_library("data_channel_controller_unittest") { | 
 |     testonly = true | 
 |     sources = [ "data_channel_controller_unittest.cc" ] | 
 |     deps = [ | 
 |       ":data_channel_controller", | 
 |       ":pc_test_utils", | 
 |       ":peer_connection_internal", | 
 |       ":sctp_data_channel", | 
 |       ":sctp_utils", | 
 |       "../api:data_channel_event_observer_interface", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:make_ref_counted", | 
 |       "../api:priority", | 
 |       "../api:rtc_error", | 
 |       "../api:scoped_refptr", | 
 |       "../api/transport:datagram_transport_interface", | 
 |       "../api/units:timestamp", | 
 |       "../media:rtc_data_sctp_transport_internal", | 
 |       "../rtc_base:copy_on_write_buffer", | 
 |       "../rtc_base:null_socket_server", | 
 |       "../rtc_base:rtc_base_tests_utils", | 
 |       "../rtc_base:ssl_adapter", | 
 |       "../rtc_base:threading", | 
 |       "../test:run_loop", | 
 |       "../test:test_support", | 
 |     ] | 
 |   } | 
 |  | 
 |   if (is_android) { | 
 |     rtc_library("android_black_magic") { | 
 |       # The android code uses hacky includes to ssl code. Having this in a | 
 |       # separate target enables us to keep the peerconnection unit tests clean. | 
 |       testonly = true | 
 |       sources = [ | 
 |         "test/android_test_initializer.cc", | 
 |         "test/android_test_initializer.h", | 
 |       ] | 
 |       deps = [ | 
 |         "../modules/utility", | 
 |         "../rtc_base:checks", | 
 |         "../rtc_base:ssl_adapter", | 
 |         "../sdk/android:internal_jni", | 
 |         "../sdk/android:libjingle_peerconnection_jni", | 
 |       ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_library("integration_test_helpers") { | 
 |     testonly = true | 
 |     sources = [ | 
 |       "test/integration_test_helpers.cc", | 
 |       "test/integration_test_helpers.h", | 
 |     ] | 
 |     deps = [ | 
 |       ":pc_test_utils", | 
 |       ":peer_connection", | 
 |       ":peer_connection_factory", | 
 |       ":peer_connection_proxy", | 
 |       ":session_description", | 
 |       ":video_track_source", | 
 |       "../api:audio_options_api", | 
 |       "../api:candidate", | 
 |       "../api:create_modular_peer_connection_factory", | 
 |       "../api:dtls_transport_interface", | 
 |       "../api:enable_media_with_defaults", | 
 |       "../api:field_trials", | 
 |       "../api:field_trials_view", | 
 |       "../api:ice_transport_interface", | 
 |       "../api:jsep", | 
 |       "../api:libjingle_logging_api", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:make_ref_counted", | 
 |       "../api:media_stream_interface", | 
 |       "../api:mock_async_dns_resolver", | 
 |       "../api:rtc_error", | 
 |       "../api:rtc_error_matchers", | 
 |       "../api:rtc_stats_api", | 
 |       "../api:rtp_parameters", | 
 |       "../api:rtp_transceiver_direction", | 
 |       "../api:scoped_refptr", | 
 |       "../api:sequence_checker", | 
 |       "../api/audio:builtin_audio_processing_builder", | 
 |       "../api/crypto:options", | 
 |       "../api/environment", | 
 |       "../api/environment:environment_factory", | 
 |       "../api/metronome", | 
 |       "../api/rtc_event_log:rtc_event_log_factory", | 
 |       "../api/task_queue", | 
 |       "../api/task_queue:pending_task_safety_flag", | 
 |       "../api/units:time_delta", | 
 |       "../api/video:video_rtp_headers", | 
 |       "../logging:fake_rtc_event_log", | 
 |       "../media:stream_params", | 
 |       "../p2p:fake_ice_transport", | 
 |       "../p2p:ice_transport_internal", | 
 |       "../p2p:p2p_test_utils", | 
 |       "../p2p:port", | 
 |       "../p2p:port_interface", | 
 |       "../rtc_base:checks", | 
 |       "../rtc_base:crypto_random", | 
 |       "../rtc_base:ip_address", | 
 |       "../rtc_base:logging", | 
 |       "../rtc_base:rtc_base_tests_utils", | 
 |       "../rtc_base:socket_address", | 
 |       "../rtc_base:socket_factory", | 
 |       "../rtc_base:socket_server", | 
 |       "../rtc_base:ssl_adapter", | 
 |       "../rtc_base:task_queue_for_test", | 
 |       "../rtc_base:threading", | 
 |       "../rtc_base:timeutils", | 
 |       "../system_wrappers", | 
 |       "../system_wrappers:metrics", | 
 |       "../test:create_test_environment", | 
 |       "../test:create_test_field_trials", | 
 |       "../test:test_support", | 
 |       "../test:wait_until", | 
 |       "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |       "//third_party/abseil-cpp/absl/memory", | 
 |       "//third_party/abseil-cpp/absl/strings:string_view", | 
 |     ] | 
 |   } | 
 |  | 
 |   rtc_library("enable_fake_media") { | 
 |     testonly = true | 
 |     visibility = [ ":*" ] | 
 |     sources = [ | 
 |       "test/enable_fake_media.cc", | 
 |       "test/enable_fake_media.h", | 
 |     ] | 
 |     deps = [ | 
 |       ":media_factory", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api/environment", | 
 |       "../call:call_interfaces", | 
 |       "../media:media_engine", | 
 |       "../media:rtc_media_tests_utils", | 
 |       "../rtc_base:checks", | 
 |       "//third_party/abseil-cpp/absl/base:nullability", | 
 |     ] | 
 |   } | 
 |  | 
 |   rtc_library("pc_test_utils") { | 
 |     testonly = true | 
 |     sources = [ | 
 |       "test/fake_audio_capture_module.cc", | 
 |       "test/fake_audio_capture_module.h", | 
 |       "test/fake_data_channel_controller.h", | 
 |       "test/fake_peer_connection_base.h", | 
 |       "test/fake_peer_connection_for_stats.h", | 
 |       "test/fake_periodic_video_source.h", | 
 |       "test/fake_periodic_video_track_source.h", | 
 |       "test/fake_rtc_certificate_generator.h", | 
 |       "test/fake_video_track_renderer.h", | 
 |       "test/fake_video_track_source.h", | 
 |       "test/frame_generator_capturer_video_track_source.h", | 
 |       "test/mock_channel_interface.h", | 
 |       "test/mock_data_channel.h", | 
 |       "test/mock_peer_connection_internal.h", | 
 |       "test/mock_peer_connection_observers.h", | 
 |       "test/mock_rtp_receiver_internal.h", | 
 |       "test/mock_rtp_sender_internal.h", | 
 |       "test/mock_voice_media_receive_channel_interface.h", | 
 |       "test/peer_connection_test_wrapper.cc", | 
 |       "test/peer_connection_test_wrapper.h", | 
 |       "test/rtc_stats_obtainer.h", | 
 |       "test/simulcast_layer_util.cc", | 
 |       "test/simulcast_layer_util.h", | 
 |       "test/test_sdp_strings.h", | 
 |     ] | 
 |  | 
 |     deps = [ | 
 |       ":channel", | 
 |       ":channel_interface", | 
 |       ":connection_context", | 
 |       ":data_channel_utils", | 
 |       ":enable_fake_media", | 
 |       ":fake_codec_lookup_helper", | 
 |       ":jitter_buffer_delay", | 
 |       ":jsep_transport_controller", | 
 |       ":libjingle_peerconnection", | 
 |       ":peer_connection_internal", | 
 |       ":peer_connection_message_handler", | 
 |       ":rtp_receiver", | 
 |       ":rtp_receiver_proxy", | 
 |       ":rtp_sender", | 
 |       ":rtp_sender_proxy", | 
 |       ":rtp_transceiver", | 
 |       ":rtp_transmission_manager", | 
 |       ":rtp_transport_internal", | 
 |       ":sctp_data_channel", | 
 |       ":sctp_utils", | 
 |       ":sdp_utils", | 
 |       ":session_description", | 
 |       ":simulcast_description", | 
 |       ":stream_collection", | 
 |       ":transport_stats", | 
 |       ":usage_pattern", | 
 |       ":video_track_source", | 
 |       "../api:audio_options_api", | 
 |       "../api:call_api", | 
 |       "../api:candidate", | 
 |       "../api:create_frame_generator", | 
 |       "../api:create_peerconnection_factory", | 
 |       "../api:data_channel_event_observer_interface", | 
 |       "../api:dtls_transport_interface", | 
 |       "../api:field_trials", | 
 |       "../api:field_trials_view", | 
 |       "../api:frame_transformer_interface", | 
 |       "../api:jsep", | 
 |       "../api:libjingle_logging_api", | 
 |       "../api:libjingle_peerconnection_api", | 
 |       "../api:make_ref_counted", | 
 |       "../api:media_stream_interface", | 
 |       "../api:priority", | 
 |       "../api:rtc_error", | 
 |       "../api:rtc_error_matchers", | 
 |       "../api:rtc_stats_api", | 
 |       "../api:rtp_headers", | 
 |       "../api:rtp_parameters", | 
 |       "../api:scoped_refptr", | 
 |       "../api:sequence_checker", | 
 |       "../api/adaptation:resource_adaptation_api", | 
 |       "../api/audio:audio_device", | 
 |       "../api/audio:audio_mixer_api", | 
 |       "../api/audio:audio_processing", | 
 |       "../api/audio_codecs:audio_codecs_api", | 
 |       "../api/crypto:frame_decryptor_interface", | 
 |       "../api/crypto:frame_encryptor_interface", | 
 |       "../api/crypto:options", | 
 |       "../api/environment", | 
 |       "../api/environment:environment_factory", | 
 |       "../api/task_queue", | 
 |       "../api/task_queue:default_task_queue_factory", | 
 |       "../api/task_queue:pending_task_safety_flag", | 
 |       "../api/transport:bandwidth_estimation_settings", | 
 |       "../api/transport:bitrate_settings", | 
 |       "../api/transport:datagram_transport_interface", | 
 |       "../api/transport:network_control", | 
 |       "../api/transport/rtp:rtp_source", | 
 |       "../api/units:time_delta", | 
 |       "../api/video:builtin_video_bitrate_allocator_factory", | 
 |       "../api/video:resolution", | 
 |       "../api/video:video_frame", | 
 |       "../api/video:video_rtp_headers", | 
 |       "../api/video_codecs:video_codecs_api", | 
 |       "../api/video_codecs:video_decoder_factory_template", | 
 |       "../api/video_codecs:video_decoder_factory_template_dav1d_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter", | 
 |       "../api/video_codecs:video_decoder_factory_template_open_h264_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template", | 
 |       "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter", | 
 |       "../api/video_codecs:video_encoder_factory_template_open_h264_adapter", | 
 |       "../call:call_interfaces", | 
 |       "../call:payload_type_picker", | 
 |       "../media:codec", | 
 |       "../media:media_channel", | 
 |       "../media:media_channel_impl", | 
 |       "../media:rtc_media", | 
 |       "../media:rtc_media_tests_utils", | 
 |       "../media:rtc_simulcast_encoder_adapter", | 
 |       "../media:stream_params", | 
 |       "../media:video_broadcaster", | 
 |       "../modules/audio_device", | 
 |       "../modules/audio_processing", | 
 |       "../modules/rtp_rtcp:rtp_rtcp_format", | 
 |       "../p2p:basic_packet_socket_factory", | 
 |       "../p2p:connection", | 
 |       "../p2p:fake_port_allocator", | 
 |       "../p2p:p2p_constants", | 
 |       "../p2p:p2p_test_utils", | 
 |       "../p2p:port", | 
 |       "../p2p:port_allocator", | 
 |       "../rtc_base:checks", | 
 |       "../rtc_base:copy_on_write_buffer", | 
 |       "../rtc_base:gunit_helpers", | 
 |       "../rtc_base:logging", | 
 |       "../rtc_base:macromagic", | 
 |       "../rtc_base:refcount", | 
 |       "../rtc_base:rtc_certificate_generator", | 
 |       "../rtc_base:socket_server", | 
 |       "../rtc_base:ssl", | 
 |       "../rtc_base:ssl_adapter", | 
 |       "../rtc_base:stringutils", | 
 |       "../rtc_base:task_queue_for_test", | 
 |       "../rtc_base:threading", | 
 |       "../rtc_base:timeutils", | 
 |       "../rtc_base:unique_id_generator", | 
 |       "../rtc_base:weak_ptr", | 
 |       "../rtc_base/synchronization:mutex", | 
 |       "../rtc_base/task_utils:repeating_task", | 
 |       "../rtc_base/third_party/sigslot", | 
 |       "../system_wrappers", | 
 |       "../test:create_test_field_trials", | 
 |       "../test:frame_generator_capturer", | 
 |       "../test:test_support", | 
 |       "../test:wait_until", | 
 |       "//testing/gmock", | 
 |       "//third_party/abseil-cpp/absl/algorithm:container", | 
 |       "//third_party/abseil-cpp/absl/strings", | 
 |     ] | 
 |   } | 
 |  | 
 |   svc_tests_resources = [ | 
 |     "../resources/difficult_photo_1850_1110.yuv", | 
 |     "../resources/photo_1850_1110.yuv", | 
 |     "../resources/presentation_1850_1110.yuv", | 
 |     "../resources/web_screenshot_1850_1110.yuv", | 
 |   ] | 
 |  | 
 |   if (is_ios) { | 
 |     bundle_data("svc_tests_bundle_data") { | 
 |       testonly = true | 
 |       sources = svc_tests_resources | 
 |       outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_test("svc_tests") { | 
 |     sources = [ "test/svc_e2e_tests.cc" ] | 
 |     data = svc_tests_resources | 
 |     deps = [ | 
 |       "../api:create_network_emulation_manager", | 
 |       "../api:create_peer_connection_quality_test_frame_generator", | 
 |       "../api:create_peerconnection_quality_test_fixture", | 
 |       "../api:field_trials", | 
 |       "../api:frame_generator_api", | 
 |       "../api:function_view", | 
 |       "../api:media_stream_interface", | 
 |       "../api:network_emulation_manager_api", | 
 |       "../api:peer_connection_quality_test_fixture_api", | 
 |       "../api:rtc_stats_api", | 
 |       "../api:rtp_parameters", | 
 |       "../api:scoped_refptr", | 
 |       "../api:simulated_network_api", | 
 |       "../api:time_controller", | 
 |       "../api:video_quality_analyzer_api", | 
 |       "../api/test/metrics:global_metrics_logger_and_exporter", | 
 |       "../api/test/pclf:media_configuration", | 
 |       "../api/test/pclf:media_quality_test_params", | 
 |       "../api/test/pclf:peer_configurer", | 
 |       "../api/units:time_delta", | 
 |       "../api/video:encoded_image", | 
 |       "../api/video_codecs:scalability_mode", | 
 |       "../api/video_codecs:video_codecs_api", | 
 |       "../media:media_constants", | 
 |       "../modules/video_coding:webrtc_vp9", | 
 |       "../modules/video_coding/svc:scalability_mode_util", | 
 |       "../rtc_base:checks", | 
 |       "../rtc_base:logging", | 
 |       "../rtc_base/containers:flat_map", | 
 |       "../system_wrappers", | 
 |       "../test:fileutils", | 
 |       "../test:test_main", | 
 |       "../test:test_support", | 
 |       "../test/network:simulated_network", | 
 |       "../test/pc/e2e:network_quality_metrics_reporter", | 
 |       "../test/pc/e2e/analyzer/video:default_video_quality_analyzer", | 
 |       "../test/pc/e2e/analyzer/video:default_video_quality_analyzer_shared", | 
 |       "//third_party/abseil-cpp/absl/strings:string_view", | 
 |     ] | 
 |  | 
 |     if (is_ios) { | 
 |       deps += [ ":svc_tests_bundle_data" ] | 
 |     } | 
 |   } | 
 | } |