Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/libwebrtc/pc/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 137 kB image not shown  

Quelle  BUILD.gn   Sprache: unbekannt

 
Spracherkennung für: .gn vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

# 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("//chromium/build/config/android/config.gni")
  import("//chromium/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 = [
    "../rtc_base:event_tracer",
    "../rtc_base:rtc_event",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
  ]
}

rtc_library("channel") {
  visibility = [
    ":*",
    "../test/peer_scenario",
  ]
  sources = [
    "channel.cc",
    "channel.h",
  ]
  deps = [
    ":channel_interface",
    ":rtp_media_utils",
    ":rtp_transport_internal",
    ":session_description",
    "../api:jsep",
    "../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: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/cleanup",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings:str_format",
    "//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:jsep",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../media:media_channel",
    "../media:stream_params",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//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",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
  ]
}

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("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",
    ":transport_stats",
    "../api:candidate",
    "../api:dtls_transport_interface",
    "../api:ice_transport_interface",
    "../api:jsep",
    "../api:make_ref_counted",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/transport:datagram_transport_interface",
    "../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:event_tracer",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:ssl",
    "../rtc_base:ssl_adapter",
    "../rtc_base:stringutils",
    "../rtc_base/system:no_unique_address",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("jsep_transport_collection") {
  visibility = [ ":*" ]
  sources = [
    "jsep_transport_collection.cc",
    "jsep_transport_collection.h",
  ]
  deps = [
    ":jsep_transport",
    ":session_description",
    "../api:function_view",
    "../api:jsep",
    "../api:peer_connection_interface",
    "../api:sequence_checker",
    "../p2p:p2p_constants",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base/containers:flat_map",
    "../rtc_base/system:no_unique_address",
    "../system_wrappers:metrics",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//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",
    ":transport_stats",
    "../api:async_dns_resolver",
    "../api:candidate",
    "../api:dtls_transport_interface",
    "../api:ice_transport_interface",
    "../api:jsep",
    "../api:local_network_access_permission",
    "../api:make_ref_counted",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_transport_factory",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/crypto:options",
    "../api/environment",
    "../api/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../api/transport:datagram_transport_interface",
    "../api/transport:ecn_marking",
    "../api/transport:enums",
    "../api/transport:sctp_transport_factory_interface",
    "../api/units:timestamp",
    "../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:packet_transport_internal",
    "../p2p:port",
    "../p2p:port_allocator",
    "../p2p:transport_description",
    "../p2p:transport_info",
    "../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/containers:flat_map",
    "//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:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_transceiver_direction",
    "../api:sctp_transport_interface",
    "../api/environment",
    "../api/transport:sctp_transport_factory_interface",
    "../call:payload_type",
    "../media:codec",
    "../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:threading",
    "../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/base:nullability",
    "//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",
    "../rtc_base/system:plan_b_only",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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:payload_type",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_transceiver_direction",
    "../api:sequence_checker",
    "../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:macromagic",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
    "../rtc_base/system:no_unique_address",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//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:checks",
    "//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:media_stream_interface",
    "../api:peer_connection_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:data_channel_event_observer_interface",
    "../api:data_channel_interface",
    "../api:dtls_transport_interface",
    "../api:jsep",
    "../api:libjingle_logging_api",
    "../api:media_stream_interface",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:rtc_stats_api",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../api:rtp_sender_interface",
    "../api:rtp_transceiver_interface",
    "../api:scoped_refptr",
    "../api:sctp_transport_interface",
    "../api:set_local_description_observer_interface",
    "../api:set_remote_description_observer_interface",
    "../api/adaptation:resource_adaptation_api",
    "../api/transport:bandwidth_estimation_settings",
    "../api/transport:bitrate_settings",
    "../rtc_base:threading",
    "../rtc_base/system:plan_b_only",
  ]
}

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:media_stream_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../api:scoped_refptr",
    "../api:sframe_decrypter_interface",
    "../api:sframe_types",
    "../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:dtmf_sender_interface",
    "../api:frame_transformer_interface",
    "../api:media_stream_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:scoped_refptr",
    "../api:sframe_encrypter_interface",
    "../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:field_trials_view",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:sequence_checker",
    "../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:macromagic",
    "../rtc_base:network_route",
    "../rtc_base:socket",
    "../rtc_base:stringutils",
    "../rtc_base/containers:flat_map",
    "../rtc_base/containers:flat_set",
    "../rtc_base/network:received_packet",
    "../rtc_base/network:sent_packet",
    "../rtc_base/system:no_unique_address",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:flat_hash_map",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_source_set("rtp_transport_internal") {
  visibility = [
    ":*",
    "../test/peer_scenario",
  ]
  sources = [ "rtp_transport_internal.h" ]
  deps = [
    ":session_description",
    "../api:rtc_error",
    "../api/task_queue:pending_task_safety_flag",
    "../api/transport:ecn_marking",
    "../api/units:timestamp",
    "../call:rtp_receiver",
    "../rtc_base:async_packet_socket",
    "../rtc_base:callback_list",
    "../rtc_base:copy_on_write_buffer",
    "../rtc_base:network_route",
    "../rtc_base:socket",
    "../rtc_base/network:sent_packet",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("sctp_transport") {
  visibility = [ ":*" ]
  sources = [
    "sctp_transport.cc",
    "sctp_transport.h",
  ]
  deps = [
    ":dtls_transport",
    "../api:dtls_transport_interface",
    "../api:priority",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../api:sctp_transport_interface",
    "../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:ssl_adapter",
    "../rtc_base:threading",
  ]
}

rtc_library("sctp_utils") {
  visibility = [
    ":*",
    "../test/fuzzers:*",
  ]
  sources = [
    "sctp_utils.cc",
    "sctp_utils.h",
  ]
  deps = [
    "../api:data_channel_interface",
    "../api:priority",
    "../net/dcsctp/public:types",
    "../rtc_base:byte_buffer",
    "../rtc_base:copy_on_write_buffer",
    "../rtc_base:logging",
  ]
}
rtc_library("srtp_session") {
  visibility = [ ":*" ]
  sources = [
    "srtp_session.cc",
    "srtp_session.h",
  ]
  deps = [
    "../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:text2pcap",
    "../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_library("video_track_source_proxy") {
  visibility = [ "*" ]  # Used by Chrome
  sources = [
    "video_track_source_proxy.cc",
    "video_track_source_proxy.h",
  ]
  deps = [
    ":proxy",
    "../api:media_stream_interface",
    "../api:scoped_refptr",
    "../api:video_track_source_constraints",
    "../api:video_track_source_proxy_factory",
    "../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 = [
    ":*",
    "../api:jsep",
    "../api:rtc_api_unittests",
  ]
  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:data_channel_interface",
    "../api:make_ref_counted",
    "../api:priority",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../api:sctp_transport_interface",
    "../api:sequence_checker",
    "../api/task_queue:pending_task_safety_flag",
    "../api/transport:datagram_transport_interface",
    "../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",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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:data_channel_interface",
    "../rtc_base:checks",
  ]
}

rtc_library("connection_context") {
  sources = [
    "connection_context.cc",
    "connection_context.h",
  ]
  deps = [
    ":media_factory",
    "../api:packet_socket_factory",
    "../api:peer_connection_interface",
    "../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:data_channel_event_observer_interface",
    "../api:data_channel_interface",
    "../api:priority",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../api:sctp_transport_interface",
    "../api:sequence_checker",
    "../api/task_queue:pending_task_safety_flag",
    "../api/transport:datagram_transport_interface",
    "../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",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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:data_channel_interface",
    "../api:field_trials_view",
    "../api:jsep",
    "../api:media_stream_interface",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_transceiver_interface",
    "../api:scoped_refptr",
    "../api:sctp_transport_interface",
    "../api/audio:audio_device",
    "../api/crypto:options",
    "../api/environment",
    "../call:call_interfaces",
    "../call:payload_type_picker",
    "../p2p:port",
    "../p2p:port_allocator",
    "../rtc_base:ssl",
    "../rtc_base:ssl_adapter",
    "../rtc_base:threading",
    "../rtc_base/containers:flat_map",
    "//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",
    ":scoped_operations_batcher",
    ":track_media_info_map",
    ":transport_stats",
    "../api:candidate",
    "../api:data_channel_interface",
    "../api:dtls_transport_interface",
    "../api:media_stream_interface",
    "../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/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../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: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/system:plan_b_only",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//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",
    "../stats:rtc_stats",
  ]
}

rtc_library("scoped_operations_batcher") {
  visibility = [ ":*" ]
  sources = [
    "scoped_operations_batcher.cc",
    "scoped_operations_batcher.h",
  ]
  deps = [
    "../api:rtc_error",
    "../api:sequence_checker",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:threading",
    "../rtc_base/system:no_unique_address",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
  ]
}

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:rtp_parameters",
    "../api:uma_metrics",
    "../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",
    ":rtp_transport_internal",
    ":scoped_operations_batcher",
    ":sdp_munging_detector",
    ":sdp_payload_type_suggester",
    ":sdp_state_provider",
    ":session_description",
    ":simulcast_description",
    ":stream_collection",
    ":transceiver_list",
    ":usage_pattern",
    ":webrtc_session_description_factory",
    "../api:audio_options_api",
    "../api:candidate",
    "../api:jsep",
    "../api:make_ref_counted",
    "../api:media_stream_interface",
    "../api:payload_type",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../api:rtp_sender_interface",
    "../api:rtp_transceiver_direction",
    "../api:rtp_transceiver_interface",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api:set_local_description_observer_interface",
    "../api:set_remote_description_observer_interface",
    "../api:uma_metrics",
    "../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",
    "../rtc_base/containers:flat_map",
    "../rtc_base/containers:flat_set",
    "../rtc_base/system:plan_b_only",
    "../system_wrappers:metrics",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/cleanup",
    "//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_library("sdp_payload_type_suggester") {
  sources = [
    "sdp_payload_type_suggester.cc",
    "sdp_payload_type_suggester.h",
  ]
  deps = [
    ":jsep_transport_collection",
    ":session_description",
    "../api:jsep",
    "../api:payload_type",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../call:payload_type",
    "../call:payload_type_picker",
    "../media:codec",
    "../rtc_base:checks",
    "../rtc_base:event_tracer",
    "../rtc_base:logging",
    "../rtc_base:threading",
    "//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",
    ":media_session",
    ":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",
    ":scoped_operations_batcher",
    ":sctp_data_channel",
    ":sctp_transport",
    ":sdp_offer_answer",
    ":sdp_state_provider",
    ":session_description",
    ":transceiver_list",
    ":transport_stats",
    ":usage_pattern",
    "../api:async_dns_resolver",
    "../api:candidate",
    "../api:data_channel_event_observer_interface",
    "../api:data_channel_interface",
    "../api:dtls_transport_interface",
    "../api:field_trials_view",
    "../api:ice_transport_interface",
    "../api:jsep",
    "../api:libjingle_logging_api",
    "../api:local_network_access_permission",
    "../api:make_ref_counted",
    "../api:media_stream_interface",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:rtc_stats_api",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../api:rtp_sender_interface",
    "../api:rtp_transceiver_direction",
    "../api:rtp_transceiver_interface",
    "../api:rtp_transport_factory",
    "../api:scoped_refptr",
    "../api:sctp_transport_interface",
    "../api:sequence_checker",
    "../api:set_local_description_observer_interface",
    "../api:set_remote_description_observer_interface",
    "../api:turn_customizer",
    "../api:uma_metrics",
    "../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/units:time_delta",
    "../api/video:video_codec_constants",
    "../call:call_interfaces",
    "../call:payload_type",
    "../call:payload_type_picker",
    "../media:codec",
    "../media:media_engine",
    "../media:rtc_media_config",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../p2p:connection_info",
    "../p2p:dtls_transport_factory",
    "../p2p:dtls_transport_internal",
    "../p2p:ice_transport_internal",
    "../p2p:p2p_constants",
    "../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:threading",
    "../rtc_base:unique_id_generator",
    "../rtc_base:weak_ptr",
    "../rtc_base/containers:flat_map",
    "../rtc_base/system:plan_b_only",
    "../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 = [
    ":*",
    "../api:jsep",
  ]

  sources = [
    "simulcast_sdp_serializer.cc",
    "simulcast_sdp_serializer.h",
  ]
  deps = [
    ":session_description",
    ":simulcast_description",
    "../api:payload_type",
    "../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",
    "../p2p:transport_info",
    "../rtc_base:checks",
    "../rtc_base/system:rtc_export",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
}
rtc_library("legacy_stats_collector") {
  visibility = [ ":*" ]
  sources = [
    "legacy_stats_collector.cc",
    "legacy_stats_collector.h",
  ]
  deps = [
    ":channel_interface",
    ":data_channel_utils",
    ":jsep_transport_controller",
    ":legacy_stats_collector_interface",
    ":peer_connection_internal",
    ":rtp_receiver",
    ":rtp_receiver_proxy",
    ":rtp_sender_proxy",
    ":rtp_transceiver",
    ":transport_stats",
    "../api:candidate",
    "../api:data_channel_interface",
    "../api:field_trials_view",
    "../api:legacy_stats_types",
    "../api:media_stream_interface",
    "../api:peer_connection_interface",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../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:dtls_transport_internal",
    "../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:threading",
    "../rtc_base:timeutils",
    "../rtc_base/system:plan_b_only",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/container:flat_hash_set",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//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:make_ref_counted",
    "../api:media_stream_interface",
    "../api:peer_connection_interface",
    "../api:scoped_refptr",
  ]
}
rtc_library("track_media_info_map") {
  visibility = [ ":*" ]
  sources = [
    "track_media_info_map.cc",
    "track_media_info_map.h",
  ]
  deps = [
    "../api:rtp_parameters",
    "../media:media_channel",
    "../rtc_base:checks",
    "../rtc_base/containers:flat_map",
  ]
}

# TODO(bugs.webrtc.org/42222470): Remove this target.
rtc_library("webrtc_sdp") {
  visibility = [ "*" ]  # Used by Chrome and more
  sources = [ "webrtc_sdp.h" ]
  deps = [ "../api:jsep" ]
}

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:jsep",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/environment",
    "../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:threading",
    "../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:peer_connection_interface",
    "../api:rtc_error",
    "../p2p:p2p_constants",
    "../p2p:port",
    "../p2p:port_allocator",
    "../rtc_base:checks",
    "../rtc_base:ip_address",
    "../rtc_base:logging",
    "../rtc_base:net_helper",
    "../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:make_ref_counted",
    "../api:media_stream_interface",
    "../api:network_state_predictor_api",
    "../api:peer_connection_interface",
    "../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",
    "../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:jsep",
    "../api:legacy_stats_types",
    "../api:media_stream_interface",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../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:peer_connection_interface",
    "../rtc_base:logging",
    "../system_wrappers:metrics",
  ]
}

rtc_library("rtp_transceiver") {
  visibility = [ ":*" ]
  sources = [
    "rtp_transceiver.cc",
    "rtp_transceiver.h",
  ]
  deps = [
    ":audio_rtp_receiver",
    ":channel",
    ":channel_interface",
    ":codec_vendor",
    ":connection_context",
    ":dtls_transport",
    ":legacy_stats_collector_interface",
    ":proxy",
    ":rtp_media_utils",
    ":rtp_receiver",
    ":rtp_receiver_proxy",
    ":rtp_sender",
    ":rtp_sender_proxy",
    ":rtp_transport_internal",
    ":scoped_operations_batcher",
    ":session_description",
    ":simulcast_description",
    ":video_rtp_receiver",
    "../api:audio_options_api",
    "../api:jsep",
    "../api:make_ref_counted",
    "../api:media_stream_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../api:rtp_sender_interface",
    "../api:rtp_transceiver_direction",
    "../api:rtp_transceiver_interface",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../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",
    "../call:call_interfaces",
    "../media:codec",
    "../media:media_channel",
    "../media:media_engine",
    "../media:rtc_media_config",
    "../media:stream_params",
    "../rtc_base:checks",
    "../rtc_base:crypto_random",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:network_route",
    "../rtc_base:threading",
    "../rtc_base/system:plan_b_only",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/functional:bind_front",
    "//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",
    ":scoped_operations_batcher",
    ":simulcast_description",
    ":transceiver_list",
    ":usage_pattern",
    ":video_rtp_receiver",
    "../api:audio_options_api",
    "../api:make_ref_counted",
    "../api:media_stream_interface",
    "../api:peer_connection_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../api:rtp_sender_interface",
    "../api:rtp_transceiver_direction",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/crypto:options",
    "../api/environment",
    "../api/video:video_bitrate_allocator_factory",
    "../call:call_interfaces",
    "../media:media_channel",
    "../media:media_engine",
    "../media:rtc_media_config",
    "../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",
    "../rtc_base/system:plan_b_only",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("transceiver_list") {
  visibility = [ ":*" ]
  sources = [
    "transceiver_list.cc",
    "transceiver_list.h",
  ]
  deps = [
    ":rtp_transceiver",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:rtp_transceiver_direction",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../rtc_base:checks",
    "../rtc_base:macromagic",
    "../rtc_base/system:no_unique_address",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("rtp_receiver") {
  visibility = [ ":*" ]
  sources = [
    "rtp_receiver.cc",
    "rtp_receiver.h",
  ]
  deps = [
    ":media_stream",
    ":media_stream_proxy",
    "../api:dtls_transport_interface",
    "../api:frame_transformer_interface",
    "../api:media_stream_interface",
    "../api:rtc_error",
    "../api:rtp_receiver_interface",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api:sframe_decrypter_interface",
    "../api:sframe_types",
    "../api/crypto:frame_decryptor_interface",
    "../media:media_channel",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:threading",
    "../rtc_base/system:no_unique_address",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
  ]
}

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:make_ref_counted",
    "../api:media_stream_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../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",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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:make_ref_counted",
    "../api:media_stream_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_receiver_interface",
    "../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",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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/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: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:peer_connection_interface",
    "../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: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",
    ":scoped_operations_batcher",
    ":simulcast_description",
    "../api:audio_options_api",
    "../api:dtls_transport_interface",
    "../api:dtmf_sender_interface",
    "../api:frame_transformer_interface",
    "../api:make_ref_counted",
    "../api:media_stream_interface",
    "../api:priority",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api:sframe_encrypter_interface",
    "../api/crypto:frame_encryptor_interface",
    "../api/environment",
    "../api/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../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",
    "../rtc_base/system:plan_b_only",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("rtp_parameters_conversion") {
  visibility = [ ":*" ]
  sources = [
    "rtp_parameters_conversion.cc",
    "rtp_parameters_conversion.h",
  ]
  deps = [
    ":session_description",
    "../api:rtp_parameters",
    "../media:codec",
    "../media:media_constants",
    "../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_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:legacy_stats_types",
    "../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",
    ":webrtc_sdp",
    "../stats",
  ]
}

rtc_library("datagram_connection_internal") {
  sources = [
    "datagram_connection_internal.cc",
    "datagram_connection_internal.h",
  ]
  deps = [
    ":dtls_srtp_transport",
    ":dtls_transport",
    ":ice_transport",
    "../api:candidate",
    "../api:datagram_connection",
    "../api:dtls_transport_interface",
    "../api:ice_transport_interface",
    "../api:make_ref_counted",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/crypto:options",
    "../api/environment",
    "../api/transport:ecn_marking",
    "../api/transport:enums",
    "../api/units:timestamp",
    "../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_allocator",
    "../p2p:transport_description",
    "../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/network:sent_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",
      "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: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:make_ref_counted",
      "../api:media_stream_interface",
      "../api:mock_datagram_connection_observer",
      "../api:payload_type",
      "../api:peer_connection_interface",
      "../api:priority",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_headers",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transport_factory",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../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/units:timestamp",
      "../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: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: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:packet_transport_internal",
      "../p2p:port_allocator",
      "../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:logging",
      "../rtc_base:net_helper",
      "../rtc_base:network_route",
      "../rtc_base:rtc_base_tests_utils",
      "../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/system:plan_b_only",
      "../system_wrappers:metrics",
      "../test:create_test_environment",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "../test/pc/sctp:fake_sctp_transport",
      "../test/time_controller",
      "//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",
      ":session_description",
      "../api:audio_options_api",
      "../api:create_modular_peer_connection_factory",
      "../api:data_channel_interface",
      "../api:enable_media_with_defaults",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_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/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:p2p_test_utils",
      "../p2p:port_interface",
      "../p2p:transport_description",
      "../rtc_base:checks",
      "../rtc_base:crypto_random",
      "../rtc_base:net_helper",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket_address",
      "../rtc_base:socket_factory",
      "../rtc_base:task_queue_for_test",
      "../rtc_base:threading",
      "../system_wrappers",
      "../test:create_test_environment",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../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",
      "../api:data_channel_interface",
      "../api:function_view",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/units:time_delta",
      "../rtc_base:checks",
      "../rtc_base:logging",
      "../rtc_base:rtc_event",
      "../test:run_loop",
      "../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:peer_connection_interface",
      "../api:rtc_error_matchers",
      "../api:rtp_receiver_interface",
      "../api:scoped_refptr",
      "../api:time_controller",
      "../api/units:time_delta",
      "../p2p:p2p_server_utils",
      "../p2p:p2p_test_utils",
      "../p2p:port_allocator",
      "../p2p:port_interface",
      "../rtc_base:logging",
      "../rtc_base:net_helper",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket_address",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }
  rtc_cc_test("dtmf_sender_unittest") {
    sources = [ "dtmf_sender_unittest.cc" ]
    deps = [
      ":dtmf_sender",
      "../api:dtmf_sender_interface",
      "../api:rtc_error_matchers",
      "../api:scoped_refptr",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../rtc_base:timeutils",
      "../test:test_support",
      "../test:wait_until",
      "../test/time_controller",
    ]
  }

  rtc_cc_test("ice_server_parsing_unittest") {
    sources = [ "ice_server_parsing_unittest.cc" ]
    deps = [
      ":ice_server_parsing",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../p2p:port",
      "../p2p:port_allocator",
      "../p2p:port_interface",
      "../rtc_base:ip_address",
      "../rtc_base:socket_address",
      "../test:test_support",
    ]
  }

  rtc_cc_test("jitter_buffer_delay_unittest") {
    sources = [ "jitter_buffer_delay_unittest.cc" ]
    deps = [
      ":jitter_buffer_delay",
      "../test:test_support",
    ]
  }

  rtc_cc_test("jsep_session_description_unittest") {
    sources = [ "jsep_session_description_unittest.cc" ]
    deps = [
      ":session_description",
      "../api:candidate",
      "../api:jsep",
      "../media:codec",
      "../p2p:p2p_constants",
      "../p2p:transport_description",
      "../p2p:transport_info",
      "../rtc_base:crypto_random",
      "../rtc_base:net_helper",
      "../rtc_base:socket_address",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_cc_test("legacy_stats_collector_unittest") {
    sources = [ "legacy_stats_collector_unittest.cc" ]
    deps = [
      ":legacy_stats_collector",
      ":media_stream",
      ":pc_test_utils",
      ":peer_connection_internal",
      ":sctp_data_channel",
      ":transport_stats",
      ":video_track",
      "../api:candidate",
      "../api:data_channel_interface",
      "../api:legacy_stats_types",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtp_parameters",
      "../api:rtp_sender_interface",
      "../api:scoped_refptr",
      "../api/audio:audio_processing_statistics",
      "../api/audio_codecs:audio_codecs_api",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../call:call_interfaces",
      "../media:media_channel",
      "../p2p:connection_info",
      "../p2p:ice_transport_internal",
      "../rtc_base:base64",
      "../rtc_base:checks",
      "../rtc_base:digest",
      "../rtc_base:net_helper",
      "../rtc_base:network_constants",
      "../rtc_base:null_socket_server",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket_address",
      "../rtc_base:ssl",
      "../rtc_base:ssl_adapter",
      "../rtc_base:threading",
      "../rtc_base/system:plan_b_only",
      "../system_wrappers",
      "../test:create_test_environment",
      "../test:run_loop",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("local_audio_source_unittest") {
    sources = [ "local_audio_source_unittest.cc" ]
    deps = [
      ":local_audio_source",
      "../api:audio_options_api",
      "../api:scoped_refptr",
      "../test:test_support",
    ]
  }

  rtc_cc_test("media_stream_unittest") {
    sources = [ "media_stream_unittest.cc" ]
    deps = [
      ":audio_track",
      ":media_stream",
      ":pc_test_utils",
      ":video_track",
      "../api:media_stream_interface",
      "../api:scoped_refptr",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
    ]
  }

  rtc_cc_test("peer_connection_audio_options_unittest") {
    sources = [ "peer_connection_audio_options_unittest.cc" ]
    deps = [
      ":enable_fake_media",
      ":pc_test_utils",
      ":peer_connection",
      ":peer_connection_proxy",
      ":rtp_transceiver",
      "../api:audio_options_api",
      "../api:create_modular_peer_connection_factory",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api:set_local_description_observer_interface",
      "../media:rtc_media_tests_utils",
      "../rtc_base:checks",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
    ]
  }

  rtc_cc_test("peer_connection_bundle_unittest") {
    sources = [ "peer_connection_bundle_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":integration_test_helpers",
      ":jsep_transport_controller",
      ":pc_test_utils",
      ":peer_connection",
      ":peerconnection_wrapper",
      ":rtp_transceiver",
      ":rtp_transport_internal",
      ":sdp_utils",
      ":session_description",
      "../api:candidate",
      "../api:create_modular_peer_connection_factory",
      "../api:enable_media_with_defaults",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../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",
      "../media:stream_params",
      "../p2p:p2p_constants",
      "../p2p:port_allocator",
      "../p2p:transport_info",
      "../rtc_base:checks",
      "../rtc_base:logging",
      "../rtc_base:net_helper",
      "../rtc_base:network",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket_address",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
    ]
  }

  rtc_cc_test("peer_connection_crypto_unittest") {
    sources = [ "peer_connection_crypto_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":media_protocol_names",
      ":media_session",
      ":pc_test_utils",
      ":peerconnection_wrapper",
      ":sdp_utils",
      ":session_description",
      "../api:create_peerconnection_factory",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:peer_connection_interface",
      "../api:rtc_error_matchers",
      "../api:scoped_refptr",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/environment:environment_factory",
      "../api/units:time_delta",
      "../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:fake_port_allocator",
      "../p2p:transport_description",
      "../p2p:transport_info",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:rtc_certificate_generator",
      "../rtc_base:ssl",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
    ]
  }

  rtc_cc_test("peer_connection_data_channel_unittest") {
    sources = [ "peer_connection_data_channel_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":enable_fake_media",
      ":media_session",
      ":pc_test_utils",
      ":peer_connection",
      ":peerconnection_wrapper",
      ":sctp_transport",
      ":session_description",
      "../api:create_modular_peer_connection_factory",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../rtc_base:checks",
      "../rtc_base:logging",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
      "../test/pc/sctp:fake_sctp_transport",
    ]
  }

  rtc_cc_test("peer_connection_end_to_end_unittest") {
    sources = [ "peer_connection_end_to_end_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":pc_test_utils",
      "../api:audio_options_api",
      "../api:data_channel_interface",
      "../api:make_ref_counted",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../api/audio_codecs:audio_codecs_api",
      "../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/environment",
      "../api/units:time_delta",
      "../rtc_base:checks",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:threading",
      "../test:audio_codec_mocks",
      "../test:create_test_environment",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_cc_test("peer_connection_factory_unittest") {
    sources = [ "peer_connection_factory_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":connection_context",
      ":pc_test_utils",
      ":peer_connection_factory",
      "../api:create_modular_peer_connection_factory",
      "../api:create_peerconnection_factory",
      "../api:data_channel_interface",
      "../api:enable_media",
      "../api:enable_media_with_defaults",
      "../api:field_trials",
      "../api:field_trials_view",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:mock_packet_socket_factory",
      "../api:peer_connection_interface",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api/audio:audio_device",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/environment",
      "../api/environment:environment_factory",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../api/video_codecs:scalability_mode",
      "../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",
      "../media:media_constants",
      "../media:rtc_media_tests_utils",
      "../modules/audio_processing:mocks",
      "../p2p:fake_port_allocator",
      "../p2p:port",
      "../p2p:port_allocator",
      "../rtc_base:net_helper",
      "../rtc_base:network",
      "../rtc_base:rtc_event",
      "../rtc_base:socket_address",
      "../rtc_base:socket_server",
      "../rtc_base:threading",
      "../test:fileutils",
      "../test:run_loop",
      "../test:test_support",
    ]
  }

  rtc_cc_test("peer_connection_header_extension_unittest") {
    sources = [ "peer_connection_header_extension_unittest.cc" ]
    deps = [
      ":enable_fake_media",
      ":pc_test_utils",
      ":peerconnection_wrapper",
      ":session_description",
      "../api:create_modular_peer_connection_factory",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/environment:environment_factory",
      "../api/rtc_event_log:rtc_event_log_factory",
      "../media:rtc_media_tests_utils",
      "../p2p:fake_port_allocator",
      "../rtc_base:socket_server",
      "../rtc_base:stringutils",
      "../rtc_base:threading",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("peer_connection_histogram_unittest") {
    sources = [ "peer_connection_histogram_unittest.cc" ]
    deps = [
      ":enable_fake_media",
      ":pc_test_utils",
      ":peer_connection",
      ":peerconnection_wrapper",
      ":usage_pattern",
      "../api:create_modular_peer_connection_factory",
      "../api:jsep",
      "../api:mock_async_dns_resolver",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:scoped_refptr",
      "../api/units:time_delta",
      "../rtc_base:checks",
      "../rtc_base:ip_address",
      "../rtc_base:network",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket_address",
      "../rtc_base:threading",
      "../system_wrappers:metrics",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings:str_format",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("peer_connection_ice_unittest") {
    sources = [ "peer_connection_ice_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":dtls_transport",
      ":media_session",
      ":pc_test_utils",
      ":peer_connection",
      ":peer_connection_proxy",
      ":peerconnection_wrapper",
      ":rtp_transceiver",
      ":session_description",
      "../api:candidate",
      "../api:create_modular_peer_connection_factory",
      "../api:create_peerconnection_factory",
      "../api:enable_media_with_defaults",
      "../api:ice_transport_interface",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api:uma_metrics",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/environment:environment_factory",
      "../api/units:time_delta",
      "../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:fake_port_allocator",
      "../p2p:ice_transport_internal",
      "../p2p:p2p_constants",
      "../p2p:port_allocator",
      "../p2p:transport_description",
      "../p2p:transport_info",
      "../rtc_base:checks",
      "../rtc_base:ip_address",
      "../rtc_base:logging",
      "../rtc_base:net_helper",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket_address",
      "../rtc_base:socket_server",
      "../rtc_base:stringutils",
      "../rtc_base:threading",
      "../system_wrappers:metrics",
      "../test:run_loop",
      "../test:test_support",
    ]
  }

  rtc_cc_test("peer_connection_interface_unittest") {
    sources = [ "peer_connection_interface_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":audio_track",
      ":media_session",
      ":media_stream",
      ":pc_test_utils",
      ":peer_connection",
      ":peer_connection_factory",
      ":rtp_media_utils",
      ":rtp_sender",
      ":rtp_sender_proxy",
      ":session_description",
      ":stream_collection",
      ":video_track",
      "../api:create_peerconnection_factory",
      "../api:data_channel_interface",
      "../api:enable_media_with_defaults",
      "../api:jsep",
      "../api:libjingle_logging_api",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../api/audio:audio_device",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/crypto:options",
      "../api/environment:environment_factory",
      "../api/rtc_event_log",
      "../api/rtc_event_log:rtc_event_log_factory",
      "../api/transport:bitrate_settings",
      "../api/transport:enums",
      "../api/units:time_delta",
      "../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",
      "../media:codec",
      "../media:rtc_media_config",
      "../media:stream_params",
      "../p2p:fake_port_allocator",
      "../p2p:p2p_constants",
      "../p2p:port",
      "../p2p:port_allocator",
      "../p2p:transport_description",
      "../p2p:transport_info",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:rtc_certificate_generator",
      "../rtc_base:socket_address",
      "../rtc_base:socket_server",
      "../rtc_base:threading",
      "../rtc_base:weak_ptr",
      "../rtc_base/system:plan_b_only",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("peer_connection_jsep_unittest") {
    sources = [ "peer_connection_jsep_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":media_session",
      ":pc_test_utils",
      ":peer_connection",
      ":peerconnection_wrapper",
      ":session_description",
      "../api:create_modular_peer_connection_factory",
      "../api:enable_media_with_defaults",
      "../api:jsep",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../media:stream_params",
      "../p2p:p2p_constants",
      "../p2p:transport_info",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
      "../test/pc/sctp:fake_sctp_transport",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("peer_connection_media_unittest") {
    sources = [ "peer_connection_media_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":enable_fake_media",
      ":media_session",
      ":pc_test_utils",
      ":peerconnection_wrapper",
      ":rtp_media_utils",
      ":rtp_transceiver",
      ":session_description",
      "../api:create_modular_peer_connection_factory",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/environment:environment_factory",
      "../api/rtc_event_log:rtc_event_log_factory",
      "../media:codec",
      "../media:media_channel",
      "../media:media_constants",
      "../media:media_engine",
      "../media:rtc_media_tests_utils",
      "../media:stream_params",
      "../p2p:fake_port_allocator",
      "../p2p:p2p_constants",
      "../p2p:transport_info",
      "../rtc_base:checks",
      "../rtc_base:refcount",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/algorithm:container",
    ]
  }

  rtc_cc_test("peer_connection_rtp_unittest") {
    sources = [ "peer_connection_rtp_unittest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":media_session",
      ":pc_test_utils",
      ":peerconnection_wrapper",
      ":rtp_transceiver",
      ":session_description",
      "../api:create_peerconnection_factory",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api:set_remote_description_observer_interface",
      "../api:sframe_encrypter_interface",
      "../api:sframe_types",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/units:data_rate",
      "../api/video:render_resolution",
      "../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",
      "../media:codec",
      "../media:media_channel",
      "../media:rtc_audio_video",
      "../media:stream_params",
      "../rtc_base:checks",
      "../rtc_base:threading",
      "../rtc_base/system:plan_b_only",
      "../system_wrappers:metrics",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
    ]
  }

  rtc_cc_test("peer_connection_signaling_unittest") {
    sources = [ "peer_connection_signaling_unittest.cc" ]
    deps = [
      ":android_black_magic",
      ":pc_test_utils",
      ":peer_connection",
      ":peerconnection_wrapper",
      ":sdp_utils",
      ":session_description",
      "../api:create_peerconnection_factory",
      "../api:dtls_transport_interface",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/audio:audio_device",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/units:time_delta",
      "../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",
      "../media:codec",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:stringutils",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_cc_test("peer_connection_simulcast_unittest") {
    sources = [ "peer_connection_simulcast_unittest.cc" ]
    deps = [
      ":pc_test_utils",
      ":peerconnection_wrapper",
      ":session_description",
      ":simulcast_description",
      "../api:create_peerconnection_factory",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtp_parameters",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/video:video_codec_constants",
      "../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",
      "../media:rid_description",
      "../media:stream_params",
      "../rtc_base:checks",
      "../rtc_base:threading",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/algorithm:container",
    ]
  }

  rtc_cc_test("proxy_unittest") {
    sources = [ "proxy_unittest.cc" ]
    deps = [
      ":proxy",
      "../api:make_ref_counted",
      "../api:ref_count",
      "../api:scoped_refptr",
      "../rtc_base:threading",
      "../test:test_support",
    ]
  }

  rtc_cc_test("rtc_stats_collector_unittest") {
    sources = [ "rtc_stats_collector_unittest.cc" ]
    deps = [
      ":media_stream",
      ":pc_test_utils",
      ":peer_connection_internal",
      ":rtc_stats_collector",
      ":rtp_sender",
      ":rtp_transceiver",
      ":scoped_operations_batcher",
      ":sctp_data_channel",
      ":stream_collection",
      ":transport_stats",
      "../api:audio_options_api",
      "../api:candidate",
      "../api:data_channel_interface",
      "../api:dtls_transport_interface",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_direction",
      "../api:scoped_refptr",
      "../api/audio:audio_device",
      "../api/audio:audio_processing_statistics",
      "../api/environment",
      "../api/task_queue:pending_task_safety_flag",
      "../api/transport:enums",
      "../api/units:data_rate",
      "../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:rtc_media_tests_utils",
      "../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:network_constants",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:rtc_event",
      "../rtc_base:socket_address",
      "../rtc_base:ssl",
      "../rtc_base:ssl_adapter",
      "../rtc_base:threading",
      "../rtc_base:timeutils",
      "../rtc_base/synchronization:mutex",
      "../rtc_base/system:plan_b_only",
      "../system_wrappers",
      "../test:create_test_environment",
      "../test:run_loop",
      "../test:test_support",
      "../test/time_controller",
      "//third_party/abseil-cpp/absl/functional:any_invocable",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/jsoncpp",
    ]
  }

  rtc_stats_traversal_unittest = [ "rtc_stats_traversal_unittest.cc" ]
  rtc_cc_test("rtc_stats_traversal_unittest") {
    sources = rtc_stats_traversal_unittest
    deps = [
      ":rtc_stats_traversal",
      "../api:rtc_stats_api",
      "../api:scoped_refptr",
      "../api/units:timestamp",
      "../test:test_support",
    ]
  }

  rtc_cc_test("rtp_media_utils_unittest") {
    sources = [ "rtp_media_utils_unittest.cc" ]
    deps = [
      ":rtp_media_utils",
      "../api:rtp_transceiver_direction",
      "../test:test_support",
    ]
  }

  rtc_cc_test("rtp_parameters_conversion_unittest") {
    sources = [ "rtp_parameters_conversion_unittest.cc" ]
    deps = [
      ":rtp_parameters_conversion",
      ":session_description",
      "../api:rtp_parameters",
      "../media:codec",
      "../media:media_constants",
      "../test:test_support",
    ]
  }

  rtc_cc_test("rtp_sender_receiver_unittest") {
    sources = [ "rtp_sender_receiver_unittest.cc" ]
    deps = [
      ":audio_rtp_receiver",
      ":audio_track",
      ":dtls_srtp_transport",
      ":local_audio_source",
      ":media_stream",
      ":pc_test_utils",
      ":rtp_sender",
      ":rtp_transport_internal",
      ":scoped_operations_batcher",
      ":video_rtp_receiver",
      ":video_track",
      "../api:audio_options_api",
      "../api:dtmf_sender_interface",
      "../api:fake_frame_decryptor",
      "../api:fake_frame_encryptor",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:scoped_refptr",
      "../api:sframe_encrypter_interface",
      "../api:sframe_types",
      "../api/crypto:frame_decryptor_interface",
      "../api/crypto:frame_encryptor_interface",
      "../api/crypto:options",
      "../api/environment",
      "../api/environment:environment_factory",
      "../api/task_queue",
      "../api/video:builtin_video_bitrate_allocator_factory",
      "../api/video:video_bitrate_allocator_factory",
      "../api/video:video_codec_constants",
      "../media:codec",
      "../media:media_channel",
      "../media:media_engine",
      "../media:rid_description",
      "../media:rtc_media_config",
      "../media:rtc_media_tests_utils",
      "../media:stream_params",
      "../p2p:dtls_transport_internal",
      "../p2p:p2p_constants",
      "../p2p:p2p_test_utils",
      "../rtc_base:checks",
      "../rtc_base:threading",
      "../rtc_base:unique_id_generator",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/functional:any_invocable",
    ]
  }

  rtc_cc_test("rtp_transceiver_unittest") {
    sources = [ "rtp_transceiver_unittest.cc" ]
    deps = [
      ":codec_vendor",
      ":connection_context",
      ":dtls_transport",
      ":enable_fake_media",
      ":fake_codec_lookup_helper",
      ":pc_test_utils",
      ":rtp_parameters_conversion",
      ":rtp_receiver",
      ":rtp_receiver_proxy",
      ":rtp_sender",
      ":rtp_sender_proxy",
      ":rtp_transceiver",
      ":rtp_transport",
      ":rtp_transport_internal",
      ":scoped_operations_batcher",
      ":session_description",
      ":simulcast_description",
      "../api:audio_options_api",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_direction",
      "../api:scoped_refptr",
      "../api/crypto:options",
      "../api/environment",
      "../api/video_codecs:scalability_mode",
      "../api/video_codecs:video_codecs_api",
      "../call:call_interfaces",
      "../media:codec",
      "../media:media_channel",
      "../media:rtc_media_config",
      "../media:rtc_media_tests_utils",
      "../p2p:p2p_test_utils",
      "../rtc_base:checks",
      "../rtc_base:logging",
      "../rtc_base:network_route",
      "../rtc_base:threading",
      "../test:create_test_environment",
      "../test:run_loop",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/functional:any_invocable",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("scoped_operations_batcher_unittest") {
    sources = [ "scoped_operations_batcher_unittest.cc" ]
    deps = [
      ":scoped_operations_batcher",
      "../api:rtc_error",
      "../rtc_base:threading",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/functional:any_invocable",
    ]
  }

  rtc_cc_test("sctp_data_channel_unittest") {
    sources = [ "sctp_data_channel_unittest.cc" ]
    deps = [
      ":pc_test_utils",
      ":sctp_data_channel",
      ":sctp_utils",
      "../api:data_channel_interface",
      "../api:make_ref_counted",
      "../api:priority",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../api:sequence_checker",
      "../api/task_queue:pending_task_safety_flag",
      "../api/transport:datagram_transport_interface",
      "../rtc_base:checks",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:null_socket_server",
      "../rtc_base:ssl_adapter",
      "../rtc_base:threading",
      "../test:rtc_expect_death",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
    ]
  }

  rtc_cc_test("sctp_utils_unittest") {
    sources = [ "sctp_utils_unittest.cc" ]
    deps = [
      ":sctp_utils",
      "../api:priority",
      "../media:rtc_data_sctp_transport_internal",
      "../rtc_base:byte_buffer",
      "../rtc_base:copy_on_write_buffer",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("sdp_munging_detector_unittest") {
    sources = [ "sdp_munging_detector_unittest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":pc_test_utils",
      ":peer_connection",
      ":peerconnection_wrapper",
      ":rtp_transceiver",
      ":sdp_munging_detector",
      ":session_description",
      "../api:candidate",
      "../api:create_peerconnection_factory",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_direction",
      "../api:scoped_refptr",
      "../api:uma_metrics",
      "../api/audio_codecs:audio_codecs_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../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",
      "../media:codec",
      "../media:media_constants",
      "../media:stream_params",
      "../p2p:p2p_constants",
      "../p2p:transport_description",
      "../rtc_base:rtc_event",
      "../rtc_base:stringutils",
      "../rtc_base:threading",
      "../system_wrappers:metrics",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("sdp_offer_answer_unittest") {
    sources = [ "sdp_offer_answer_unittest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":pc_test_utils",
      ":peerconnection_wrapper",
      ":rtp_transceiver",
      ":session_description",
      "../api:create_peerconnection_factory",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../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",
      "../media:codec",
      "../media:media_constants",
      "../media:stream_params",
      "../rtc_base:threading",
      "../system_wrappers:metrics",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("sdp_payload_type_suggester_unittest") {
    sources = [ "sdp_payload_type_suggester_unittest.cc" ]
    deps = [
      ":sdp_payload_type_suggester",
      ":session_description",
      "../api:jsep",
      "../api:payload_type",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../media:codec",
      "../media:media_constants",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("simulcast_sdp_serializer_unittest") {
    sources = [ "simulcast_sdp_serializer_unittest.cc" ]
    deps = [
      ":session_description",
      ":simulcast_description",
      ":simulcast_sdp_serializer",
      "../media:codec",
      "../media:rid_description",
      "../test:test_support",
    ]
  }

  rtc_cc_test("fake_audio_capture_module_unittest") {
    sources = [ "test/fake_audio_capture_module_unittest.cc" ]
    deps = [
      ":pc_test_utils",
      "../api:rtc_error_matchers",
      "../api:scoped_refptr",
      "../api/audio:audio_device",
      "../api/units:time_delta",
      "../rtc_base/synchronization:mutex",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
    ]
  }

  rtc_cc_test("track_media_info_map_unittest") {
    sources = [ "track_media_info_map_unittest.cc" ]
    deps = [
      ":audio_track",
      ":pc_test_utils",
      ":track_media_info_map",
      ":video_track",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:mock_video_track",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../media:media_channel",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
    ]
  }

  rtc_cc_test("video_rtp_track_source_unittest") {
    sources = [ "video_rtp_track_source_unittest.cc" ]
    deps = [
      ":video_rtp_track_source",
      "../api:make_ref_counted",
      "../api:scoped_refptr",
      "../api/units:timestamp",
      "../api/video:encoded_image",
      "../api/video:recordable_encoded_frame",
      "../api/video:video_frame",
      "../api/video:video_rtp_headers",
      "../test:test_support",
    ]
  }

  rtc_cc_test("video_track_unittest") {
    sources = [ "video_track_unittest.cc" ]
    deps = [
      ":pc_test_utils",
      ":video_track",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:scoped_refptr",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../media:rtc_media_tests_utils",
      "../rtc_base:threading",
      "../test:run_loop",
      "../test:test_support",
    ]
  }

  rtc_cc_test("congestion_control_integrationtest") {
    sources = [ "congestion_control_integrationtest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":session_description",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_direction",
      "../system_wrappers:metrics",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_cc_test("data_channel_integrationtest") {
    sources = [ "data_channel_integrationtest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":media_session",
      ":pc_test_utils",
      ":session_description",
      "../api:data_channel_interface",
      "../api:dtls_transport_interface",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../api/units:time_delta",
      "../p2p:p2p_test_utils",
      "../p2p:transport_description",
      "../p2p:transport_info",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:crypto_random",
      "../rtc_base:logging",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:safe_conversions",
      "../rtc_base:socket_address",
      "../rtc_base:ssl_adapter",
      "../rtc_base:stringutils",
      "../rtc_base:task_queue_for_test",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_cc_test("peer_connection_adaptation_integrationtest") {
    sources = [ "peer_connection_adaptation_integrationtest.cc" ]
    deps = [
      ":pc_test_utils",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_sender_interface",
      "../api:scoped_refptr",
      "../api/adaptation:resource_adaptation_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/environment",
      "../api/units:time_delta",
      "../api/video:video_frame",
      "../call/adaptation:resource_adaptation_test_utilities",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:threading",
      "../system_wrappers",
      "../test:create_test_environment",
      "../test:test_support",
      "../test:wait_until",
    ]
  }

  rtc_cc_test("peer_connection_encodings_integrationtest") {
    sources = [ "peer_connection_encodings_integrationtest.cc" ]
    deps = [
      ":pc_test_utils",
      ":session_description",
      ":simulcast_description",
      "../api:audio_options_api",
      "../api:field_trials_view",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/environment",
      "../api/units:data_rate",
      "../api/units:time_delta",
      "../api/video_codecs:scalability_mode",
      "../api/video_codecs:video_codecs_api",
      "../media:codec",
      "../media:rtc_media_tests_utils",
      "../rtc_base:checks",
      "../rtc_base:logging",
      "../rtc_base:threading",
      "../rtc_base/containers:flat_map",
      "../test:create_test_environment",
      "../test:create_test_field_trials",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("peer_connection_integrationtest") {
    sources = [ "peer_connection_integrationtest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":media_session",
      ":pc_test_utils",
      ":peer_connection",
      ":peer_connection_factory",
      ":sctp_transport",
      ":session_description",
      "../api:candidate",
      "../api:data_channel_interface",
      "../api:dtmf_sender_interface",
      "../api:jsep",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:mock_async_dns_resolver",
      "../api:mock_encoder_selector",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api:uma_metrics",
      "../api/crypto:options",
      "../api/rtc_event_log",
      "../api/transport/rtp:rtp_source",
      "../api/units:data_rate",
      "../api/units:time_delta",
      "../api/video:video_rtp_headers",
      "../api/video_codecs:video_codecs_api",
      "../logging:fake_rtc_event_log",
      "../media:codec",
      "../media:media_constants",
      "../media:stream_params",
      "../p2p:dtls_transport_internal",
      "../p2p:p2p_constants",
      "../p2p:p2p_test_utils",
      "../p2p:port",
      "../p2p:port_allocator",
      "../p2p:transport_description",
      "../p2p:transport_info",
      "../rtc_base:logging",
      "../rtc_base:net_helper",
      "../rtc_base:random",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket_address",
      "../rtc_base:ssl",
      "../rtc_base:ssl_adapter",
      "../rtc_base:stringutils",
      "../rtc_base:task_queue_for_test",
      "../rtc_base:threading",
      "../rtc_base/system:plan_b_only",
      "../system_wrappers:metrics",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("peer_connection_stability_integrationtest") {
    sources = [ "peer_connection_stability_integrationtest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":session_description",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error_matchers",
      "../api:scoped_refptr",
      "../api/audio_codecs:audio_codecs_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/video_codecs:builtin_video_decoder_factory",
      "../api/video_codecs:builtin_video_encoder_factory",
      "../api/video_codecs:video_codecs_api",
      "../rtc_base:logging",
      "../rtc_base:stringutils",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_cc_test("peer_connection_svc_integrationtest") {
    sources = [ "peer_connection_svc_integrationtest.cc" ]
    deps = [
      ":integration_test_helpers",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtp_parameters",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../media:media_constants",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("pranswer_switch_integrationtest") {
    sources = [ "pranswer_switch_integrationtest.cc" ]
    deps = [
      ":integration_test_helpers",
      ":pc_test_utils",
      ":peer_connection",
      "../api:data_channel_interface",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../p2p:p2p_test_utils",
      "../rtc_base:socket_address",
      "../rtc_base:task_queue_for_test",
      "../test:test_support",
      "../test:wait_until",
    ]
  }

  rtc_cc_test("rtc_stats_integrationtest") {
    sources = [ "rtc_stats_integrationtest.cc" ]
    deps = [
      ":pc_test_utils",
      ":rtc_stats_traversal",
      "../api:audio_options_api",
      "../api:data_channel_interface",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/environment",
      "../api/units:time_delta",
      "../rtc_base:checks",
      "../rtc_base:event_tracer",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:threading",
      "../test:create_test_environment",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_cc_test("peer_connection_field_trial_tests") {
    sources = [ "peer_connection_field_trial_tests.cc" ]
    deps = [
      ":android_black_magic",
      ":pc_test_utils",
      ":peerconnection_wrapper",
      ":session_description",
      "../api:create_modular_peer_connection_factory",
      "../api:enable_media_with_defaults",
      "../api:jsep",
      "../api:peer_connection_interface",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api/environment:environment_factory",
      "../rtc_base:checks",
      "../rtc_base:socket_server",
      "../rtc_base:threading",
      "../system_wrappers",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_test_suite("peerconnection_unittests") {
    testonly = true
    tests = [
      ":dtmf_sender_unittest",
      ":ice_server_parsing_unittest",
      ":jitter_buffer_delay_unittest",
      ":jsep_session_description_unittest",
      ":legacy_stats_collector_unittest",
      ":local_audio_source_unittest",
      ":media_stream_unittest",
      ":peer_connection_audio_options_unittest",
      ":peer_connection_bundle_unittest",
      ":peer_connection_crypto_unittest",
      ":peer_connection_data_channel_unittest",
      ":peer_connection_end_to_end_unittest",
      ":peer_connection_factory_unittest",
      ":peer_connection_header_extension_unittest",
      ":peer_connection_histogram_unittest",
      ":peer_connection_ice_unittest",
      ":peer_connection_interface_unittest",
      ":peer_connection_jsep_unittest",
      ":peer_connection_media_unittest",
      ":peer_connection_rtp_unittest",
      ":peer_connection_signaling_unittest",
      ":peer_connection_simulcast_unittest",
      ":proxy_unittest",
      ":rtc_stats_collector_unittest",
      ":rtc_stats_traversal_unittest",
      ":rtp_media_utils_unittest",
      ":rtp_parameters_conversion_unittest",
      ":rtp_sender_receiver_unittest",
      ":rtp_transceiver_unittest",
      ":scoped_operations_batcher_unittest",
      ":sctp_data_channel_unittest",
      ":sctp_utils_unittest",
      ":sdp_munging_detector_unittest",
      ":sdp_offer_answer_unittest",
      ":sdp_payload_type_suggester_unittest",
      ":simulcast_sdp_serializer_unittest",
      ":fake_audio_capture_module_unittest",
      ":track_media_info_map_unittest",
      ":video_rtp_track_source_unittest",
      ":video_track_unittest",
      ":data_channel_controller_unittest",
      ":congestion_control_integrationtest",
      ":data_channel_integrationtest",
      ":peer_connection_adaptation_integrationtest",
      ":peer_connection_encodings_integrationtest",
      ":peer_connection_integrationtest",
      ":peer_connection_stability_integrationtest",
      ":peer_connection_svc_integrationtest",
      ":pranswer_switch_integrationtest",
      ":rtc_stats_integrationtest",
      ":peer_connection_field_trial_tests",
    ]
    if (is_android) {
      shard_timeout = 900
    }
  }

  rtc_cc_test("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:data_channel_interface",
      "../api:make_ref_counted",
      "../api:priority",
      "../api:rtc_error",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../api/transport:datagram_transport_interface",
      "../api/units:timestamp",
      "../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",
    ]
  }

  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
    if (is_android) {
      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:data_channel_interface",
      "../api:dtls_transport_interface",
      "../api:enable_media_with_defaults",
      "../api:field_trials",
      "../api:ice_transport_interface",
      "../api:jsep",
      "../api:libjingle_logging_api",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:mock_async_dns_resolver",
      "../api:peer_connection_interface",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api:sequence_checker",
      "../api:time_controller",
      "../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/units:timestamp",
      "../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_allocator",
      "../rtc_base:checks",
      "../rtc_base:crypto_random",
      "../rtc_base:ip_address",
      "../rtc_base:logging",
      "../rtc_base:net_helper",
      "../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/system:plan_b_only",
      "../system_wrappers",
      "../system_wrappers:metrics",
      "../test:create_test_environment",
      "../test:create_test_field_trials",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "../test/time_controller",
      "//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:peer_connection_interface",
      "../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_audio_track.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.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",
      ":dtls_transport",
      ":enable_fake_media",
      ":fake_codec_lookup_helper",
      ":jsep_transport_controller",
      ":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",
      ":scoped_operations_batcher",
      ":sctp_data_channel",
      ":sctp_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:data_channel_interface",
      "../api:dtls_transport_interface",
      "../api:dtmf_sender_interface",
      "../api:field_trials_view",
      "../api:frame_transformer_interface",
      "../api:ice_transport_interface",
      "../api:jsep",
      "../api:legacy_stats_types",
      "../api:libjingle_logging_api",
      "../api:make_ref_counted",
      "../api:media_stream_interface",
      "../api:peer_connection_interface",
      "../api:priority",
      "../api:rtc_error",
      "../api:rtc_error_matchers",
      "../api:rtc_stats_api",
      "../api:rtp_headers",
      "../api:rtp_parameters",
      "../api:rtp_receiver_interface",
      "../api:rtp_sender_interface",
      "../api:rtp_transceiver_direction",
      "../api:rtp_transceiver_interface",
      "../api:scoped_refptr",
      "../api:sctp_transport_interface",
      "../api:sequence_checker",
      "../api:set_local_description_observer_interface",
      "../api:set_remote_description_observer_interface",
      "../api/adaptation:resource_adaptation_api",
      "../api/audio:audio_device",
      "../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/rtp:rtp_source",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../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:rtc_media_base",
      "../media:rtc_media_tests_utils",
      "../media:rtc_simulcast_encoder_adapter",
      "../media:stream_params",
      "../modules/rtp_rtcp:rtp_rtcp_format",
      "../p2p:fake_ice_transport",
      "../p2p:fake_port_allocator",
      "../p2p:p2p_constants",
      "../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: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/containers:flat_map",
      "../rtc_base/synchronization:mutex",
      "../rtc_base/system:plan_b_only",
      "../rtc_base/task_utils:repeating_task",
      "../system_wrappers",
      "../test:frame_generator_capturer",
      "../test:run_loop",
      "../test:test_support",
      "../test:wait_until",
      "//testing/gmock",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/functional:any_invocable",
      "//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:function_view",
      "../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/svc:scalability_mode_util",
      "../rtc_base:checks",
      "../rtc_base:logging",
      "../rtc_base/containers:flat_map",
      "../system_wrappers",
      "../test:run_loop",
      "../test:test_support",
      "../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" ]
    }
  }
}

[Dauer der Verarbeitung: 0.126 Sekunden]