# Copyright (c) 2015 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.

import("../webrtc.gni")
if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
}

group("api") {
  visibility = [ "*" ]
  deps = []

  if (!build_with_mozilla) {
    deps += [ ":libjingle_peerconnection_api" ]
  }
}

rtc_source_set("call_api") {
  visibility = [ "*" ]
  sources = [ "call/audio_sink.h" ]
}

rtc_source_set("callfactory_api") {
  visibility = [ "*" ]
  sources = [ "call/call_factory_interface.h" ]
  deps = [
    "../call:rtp_interfaces",
    "../rtc_base/system:rtc_export",
  ]
}

if (!build_with_chromium) {
  rtc_library("create_peerconnection_factory") {
    visibility = [ "*" ]
    allow_poison = [ "default_task_queue" ]
    sources = [
      "create_peerconnection_factory.cc",
      "create_peerconnection_factory.h",
    ]
    deps = [
      ":callfactory_api",
      ":libjingle_peerconnection_api",
      ":scoped_refptr",
      "../api/rtc_event_log:rtc_event_log_factory",
      "../media:rtc_audio_video",
      "../media:rtc_media_base",
      "../modules/audio_device:audio_device_api",
      "../modules/audio_processing:api",
      "../pc:peer_connection_factory",
      "../pc:webrtc_sdp",
      "../rtc_base:threading",
      "../stats:rtc_stats",
      "audio:audio_mixer_api",
      "audio_codecs:audio_codecs_api",
      "task_queue:default_task_queue_factory",
      "transport:field_trial_based_config",
      "video_codecs:video_codecs_api",
    ]
  }
}

rtc_library("location") {
  visibility = [ "*" ]
  deps = [ "../rtc_base/system:rtc_export" ]
  if (build_with_chromium) {
    sources = [ "../../webrtc_overrides/api/location.h" ]
    deps += [ "//base" ]
  } else {
    sources = [ "location.h" ]
  }
}

rtc_library("rtp_headers") {
  visibility = [ "*" ]
  sources = [
    "rtp_headers.cc",
    "rtp_headers.h",
  ]
  deps = [
    ":array_view",
    "units:timestamp",
    "video:video_rtp_headers",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("rtp_packet_info") {
  visibility = [ "*" ]
  sources = [
    "rtp_packet_info.cc",
    "rtp_packet_info.h",
    "rtp_packet_infos.h",
  ]
  deps = [
    ":array_view",
    ":make_ref_counted",
    ":refcountedbase",
    ":rtp_headers",
    ":scoped_refptr",
    "../rtc_base/system:rtc_export",
    "units:time_delta",
    "units:timestamp",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_source_set("video_track_source_constraints") {
  visibility = [ "*" ]
  sources = [ "video_track_source_constraints.h" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("media_stream_interface") {
  visibility = [ "*" ]
  sources = [
    "media_stream_interface.cc",
    "media_stream_interface.h",
    "media_stream_track.h",
    "notifier.h",
  ]
  deps = [
    ":audio_options_api",
    ":make_ref_counted",
    ":rtp_parameters",
    ":scoped_refptr",
    ":sequence_checker",
    ":video_track_source_constraints",
    "../modules/audio_processing:audio_processing_statistics",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base/system:no_unique_address",
    "../rtc_base/system:rtc_export",
    "video:recordable_encoded_frame",
    "video:video_frame",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("candidate") {
  visibility = [ "*" ]

  sources = [
    "candidate.cc",
    "candidate.h",
  ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:ip_address",
    "../rtc_base:logging",
    "../rtc_base:network_constants",
    "../rtc_base:socket_address",
    "../rtc_base:ssl",
    "../rtc_base:stringutils",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

rtc_source_set("turn_customizer") {
  visibility = [ "*" ]
  sources = [ "turn_customizer.h" ]
  deps = [ "transport:stun_types" ]
}

rtc_source_set("ice_transport_interface") {
  visibility = [ "*" ]

  sources = [ "ice_transport_interface.h" ]
  deps = [
    ":async_dns_resolver",
    ":packet_socket_factory",
    ":rtc_error",
    ":scoped_refptr",
    "../rtc_base:refcount",
    "rtc_event_log:rtc_event_log",
  ]
}

rtc_library("dtls_transport_interface") {
  visibility = [ "*" ]

  sources = [
    "dtls_transport_interface.cc",
    "dtls_transport_interface.h",
  ]
  deps = [
    ":ice_transport_interface",
    ":rtc_error",
    ":scoped_refptr",
    "../rtc_base:refcount",
    "../rtc_base:ssl",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("dtmf_sender_interface") {
  visibility = [ "*" ]

  sources = [ "dtmf_sender_interface.h" ]
  deps = [
    ":media_stream_interface",
    "../rtc_base:refcount",
  ]
}

rtc_library("rtp_sender_interface") {
  visibility = [ "*" ]

  sources = [
    "rtp_sender_interface.cc",
    "rtp_sender_interface.h",
  ]
  deps = [
    ":dtls_transport_interface",
    ":dtmf_sender_interface",
    ":frame_transformer_interface",
    ":media_stream_interface",
    ":rtc_error",
    ":rtp_parameters",
    ":scoped_refptr",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base/system:rtc_export",
    "crypto:frame_encryptor_interface",
    "video_codecs:video_codecs_api",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ]
}

rtc_library("libjingle_peerconnection_api") {
  visibility = [ "*" ]
  cflags = []
  sources = [
    "crypto_params.h",
    "data_channel_interface.cc",
    "data_channel_interface.h",
    "jsep.cc",
    "jsep.h",
    "jsep_ice_candidate.cc",
    "jsep_ice_candidate.h",
    "jsep_session_description.h",
    "legacy_stats_types.cc",
    "legacy_stats_types.h",
    "peer_connection_interface.cc",
    "peer_connection_interface.h",
    "rtp_receiver_interface.cc",
    "rtp_receiver_interface.h",
    "rtp_transceiver_interface.cc",
    "rtp_transceiver_interface.h",
    "sctp_transport_interface.cc",
    "sctp_transport_interface.h",
    "set_local_description_observer_interface.h",
    "set_remote_description_observer_interface.h",
    "uma_metrics.h",
    "video_track_source_proxy_factory.h",

    # Remove when downstream has been updated
    "dtmf_sender_interface.h",
    "rtp_sender_interface.h",
  ]
  public_deps += [  # no-presubmit-check TODO(webrtc:8603)
    # Remove when downstream has been updated
    ":dtmf_sender_interface",
    ":rtp_sender_interface",
  ]
  deps = [
    ":array_view",
    ":async_dns_resolver",
    ":audio_options_api",
    ":callfactory_api",
    ":candidate",
    ":dtls_transport_interface",
    ":fec_controller_api",
    ":field_trials",
    ":field_trials_view",
    ":frame_transformer_interface",
    ":ice_transport_interface",
    ":libjingle_logging_api",
    ":make_ref_counted",
    ":media_stream_interface",
    ":network_state_predictor_api",
    ":packet_socket_factory",
    ":priority",
    ":rtc_error",
    ":rtc_stats_api",
    ":rtp_packet_info",
    ":rtp_parameters",
    ":rtp_sender_interface",
    ":rtp_transceiver_direction",
    ":scoped_refptr",
    ":sequence_checker",
    ":turn_customizer",
    "../call:rtp_interfaces",
    "../p2p:rtc_p2p",
    "../rtc_base:copy_on_write_buffer",
    "../rtc_base:logging",
    "../rtc_base:network",
    "../rtc_base:network_constants",
    "../rtc_base:refcount",
    "../rtc_base:rtc_certificate_generator",
    "../rtc_base:ssl",
    "../rtc_base:stringutils",
    "adaptation:resource_adaptation_api",
    "audio:audio_mixer_api",
    "audio_codecs:audio_codecs_api",
    "crypto:frame_decryptor_interface",
    "crypto:frame_encryptor_interface",
    "crypto:options",
    "metronome",
    "neteq:neteq_api",
    "rtc_event_log",
    "task_queue",
    "transport:bitrate_settings",
    "transport:enums",
    "transport:network_control",
    "transport:sctp_transport_factory_interface",
    "transport/rtp:rtp_source",
    "units:data_rate",
    "units:timestamp",
    "video:encoded_image",
    "video:video_bitrate_allocator_factory",
    "video:video_frame",
    "video:video_rtp_headers",
    "video_codecs:video_codecs_api",

    # Basically, don't add stuff here. You might break sensitive downstream
    # targets like pnacl. API should not depend on anything outside of this
    # file, really. All these should arguably go away in time.
    "../media:rtc_media_base",
    "../media:rtc_media_config",
    "../modules/audio_processing:audio_processing_statistics",
    "../rtc_base:checks",
    "../rtc_base:ip_address",
    "../rtc_base:socket_address",
    "../rtc_base:threading",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//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/types:optional",
  ]
}

rtc_source_set("frame_transformer_interface") {
  visibility = [ "*" ]
  sources = [ "frame_transformer_interface.h" ]
  deps = [
    ":make_ref_counted",
    ":scoped_refptr",
    "../rtc_base:refcount",
    "video:encoded_frame",
    "video:video_frame_metadata",
  ]
}

rtc_library("rtc_error") {
  visibility = [ "*" ]
  sources = [
    "rtc_error.cc",
    "rtc_error.h",
  ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("packet_socket_factory") {
  visibility = [ "*" ]
  sources = [
    "async_resolver_factory.h",
    "packet_socket_factory.h",
  ]
  deps = [
    ":async_dns_resolver",
    ":wrapping_async_dns_resolver",
    "../rtc_base:async_packet_socket",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:proxy_info",
    "../rtc_base:socket_address",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("async_dns_resolver") {
  visibility = [ "*" ]
  sources = [ "async_dns_resolver.h" ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:socket_address",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ]
}

rtc_source_set("wrapping_async_dns_resolver") {
  visibility = [
    ":*",
    "../p2p:rtc_p2p",
  ]
  sources = [
    "wrapping_async_dns_resolver.cc",
    "wrapping_async_dns_resolver.h",
  ]
  deps = [
    ":async_dns_resolver",
    ":sequence_checker",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:checks",
    "../rtc_base:macromagic",
    "../rtc_base:socket_address",
    "../rtc_base:threading",
    "../rtc_base/third_party/sigslot",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
}

rtc_source_set("ref_count") {
  visibility = [ "*" ]
  sources = [ "ref_count.h" ]
}

rtc_source_set("scoped_refptr") {
  visibility = [ "*" ]
  sources = [ "scoped_refptr.h" ]
}

rtc_source_set("make_ref_counted") {
  visibility = [ "*" ]
  sources = [ "make_ref_counted.h" ]
  deps = [ "../rtc_base:refcount" ]
}

rtc_source_set("video_quality_analyzer_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/video_quality_analyzer_interface.h" ]

  deps = [
    ":array_view",
    ":stats_observer_interface",
    "../rtc_base:checks",
    "video:encoded_image",
    "video:video_frame",
    "video:video_rtp_headers",
    "video_codecs:video_codecs_api",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("track_id_stream_info_map") {
  visibility = [ "*" ]
  sources = [ "test/track_id_stream_info_map.h" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_source_set("rtp_transceiver_direction") {
  visibility = [ "*" ]
  sources = [ "rtp_transceiver_direction.h" ]
}

rtc_source_set("priority") {
  visibility = [ "*" ]
  sources = [ "priority.h" ]
}

rtc_library("rtp_parameters") {
  visibility = [ "*" ]
  sources = [
    "media_types.cc",
    "media_types.h",
    "rtp_parameters.cc",
    "rtp_parameters.h",
  ]
  deps = [
    ":array_view",
    ":priority",
    ":rtp_transceiver_direction",
    "../rtc_base:checks",
    "../rtc_base:stringutils",
    "../rtc_base/system:rtc_export",
    "video:resolution",
    "video_codecs:scalability_mode",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

if (is_android) {
  java_cpp_enum("priority_enums") {
    sources = [ "priority.h" ]
  }
}

rtc_source_set("audio_quality_analyzer_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/audio_quality_analyzer_interface.h" ]

  deps = [
    ":stats_observer_interface",
    ":track_id_stream_info_map",
  ]
}

rtc_source_set("stats_observer_interface") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/stats_observer_interface.h" ]

  deps = [ ":rtc_stats_api" ]

  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_source_set("peer_network_dependencies") {
  visibility = [ "*" ]
  sources = [ "test/peer_network_dependencies.h" ]
  deps = [
    ":packet_socket_factory",
    "../rtc_base:network",
    "../rtc_base:threading",
  ]
}

rtc_source_set("peer_connection_quality_test_fixture_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/peerconnection_quality_test_fixture.h" ]

  deps = [
    ":array_view",
    ":audio_quality_analyzer_api",
    ":callfactory_api",
    ":fec_controller_api",
    ":frame_generator_api",
    ":function_view",
    ":libjingle_peerconnection_api",
    ":media_stream_interface",
    ":network_state_predictor_api",
    ":packet_socket_factory",
    ":peer_network_dependencies",
    ":rtp_parameters",
    ":simulated_network_api",
    ":stats_observer_interface",
    ":track_id_stream_info_map",
    ":video_quality_analyzer_api",
    "../media:media_constants",
    "../media:rtc_media_base",
    "../modules/audio_processing:api",
    "../rtc_base:checks",
    "../rtc_base:network",
    "../rtc_base:rtc_certificate_generator",
    "../rtc_base:ssl",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
    "../test:fileutils",
    "audio:audio_mixer_api",
    "rtc_event_log",
    "task_queue",
    "test/pclf:media_configuration",
    "test/pclf:media_quality_test_params",
    "test/pclf:peer_configurer",
    "test/video:video_frame_writer",
    "transport:network_control",
    "units:time_delta",
    "video:video_frame",
    "video_codecs:video_codecs_api",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("frame_generator_api") {
  visibility = [ "*" ]
  sources = [
    "test/frame_generator_interface.cc",
    "test/frame_generator_interface.h",
  ]

  deps = [
    ":scoped_refptr",
    "video:video_frame",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

if (rtc_include_tests) {
  # TODO(srte): Move to network_emulation sub directory.
  rtc_library("create_network_emulation_manager") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_network_emulation_manager.cc",
      "test/create_network_emulation_manager.h",
    ]
    deps = [
      ":network_emulation_manager_api",
      "../test/network:emulated_network",
    ]
  }

  if (!build_with_chromium) {
    rtc_source_set("video_quality_test_fixture_api") {
      visibility = [ "*" ]
      testonly = true
      sources = [ "test/video_quality_test_fixture.h" ]
      deps = [
        ":fec_controller_api",
        ":libjingle_peerconnection_api",
        ":network_state_predictor_api",
        ":rtp_parameters",
        ":simulated_network_api",
        "../call:fake_network",
        "../call:rtp_interfaces",
        "../test:test_common",
        "../test:video_test_common",
        "../video/config:encoder_config",
        "transport:bitrate_settings",
        "transport:network_control",
        "video_codecs:video_codecs_api",
      ]
    }

    rtc_library("test_dependency_factory") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/test_dependency_factory.cc",
        "test/test_dependency_factory.h",
      ]
      deps = [
        ":video_quality_test_fixture_api",
        "../rtc_base:checks",
        "../rtc_base:platform_thread_types",
      ]
    }

    rtc_library("create_video_quality_test_fixture_api") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/create_video_quality_test_fixture.cc",
        "test/create_video_quality_test_fixture.h",
      ]
      deps = [
        ":fec_controller_api",
        ":network_state_predictor_api",
        ":scoped_refptr",
        ":video_quality_test_fixture_api",
        "../video:video_quality_test",
      ]
    }

    rtc_library("create_peerconnection_quality_test_fixture") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/create_peerconnection_quality_test_fixture.cc",
        "test/create_peerconnection_quality_test_fixture.h",
      ]

      deps = [
        ":audio_quality_analyzer_api",
        ":peer_connection_quality_test_fixture_api",
        ":time_controller",
        ":video_quality_analyzer_api",
        "../test/pc/e2e:peerconnection_quality_test",
        "test/metrics:global_metrics_logger_and_exporter",
      ]
    }
  }
}

rtc_library("create_frame_generator") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/create_frame_generator.cc",
    "test/create_frame_generator.h",
  ]
  deps = [
    ":frame_generator_api",
    "../rtc_base:checks",
    "../system_wrappers",
    "../test:frame_generator_impl",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("create_peer_connection_quality_test_frame_generator") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/create_peer_connection_quality_test_frame_generator.cc",
    "test/create_peer_connection_quality_test_frame_generator.h",
  ]
  deps = [
    ":create_frame_generator",
    ":frame_generator_api",
    "../rtc_base:checks",
    "../test:fileutils",
    "test/pclf:media_configuration",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_source_set("libjingle_logging_api") {
  visibility = [ "*" ]
  sources = [ "rtc_event_log_output.h" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings:strings" ]
}

rtc_library("rtc_event_log_output_file") {
  visibility = [ "*" ]
  sources = [
    "rtc_event_log_output_file.cc",
    "rtc_event_log_output_file.h",
  ]

  deps = [
    ":libjingle_logging_api",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base/system:file_wrapper",
    "rtc_event_log",
  ]
}

rtc_source_set("rtc_stats_api") {
  visibility = [ "*" ]
  cflags = []
  sources = [
    "stats/rtc_stats.h",
    "stats/rtc_stats_collector_callback.h",
    "stats/rtc_stats_report.h",
    "stats/rtcstats_objects.h",
  ]

  deps = [
    ":make_ref_counted",
    ":scoped_refptr",
    "../api:refcountedbase",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base/system:rtc_export",
    "units:timestamp",
  ]

  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("audio_options_api") {
  visibility = [ "*" ]
  sources = [
    "audio_options.cc",
    "audio_options.h",
  ]

  deps = [
    ":array_view",
    "../rtc_base:stringutils",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("transport_api") {
  visibility = [ "*" ]
  sources = [
    "call/transport.cc",
    "call/transport.h",
  ]
  deps = [
    ":array_view",
    ":refcountedbase",
    ":scoped_refptr",
  ]
}

rtc_source_set("bitrate_allocation") {
  visibility = [ "*" ]
  sources = [ "call/bitrate_allocation.h" ]
  deps = [
    "units:data_rate",
    "units:time_delta",
  ]
}

# TODO(srte): Move to network_emulation sub directory.
rtc_source_set("simulated_network_api") {
  visibility = [ "*" ]
  sources = [ "test/simulated_network.h" ]
  deps = [
    "../rtc_base:macromagic",
    "../rtc_base:random",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

# TODO(srte): Move to network_emulation sub directory.
rtc_source_set("network_emulation_manager_api") {
  visibility = [ "*" ]
  sources = [
    "test/network_emulation_manager.cc",
    "test/network_emulation_manager.h",
  ]
  deps = [
    ":array_view",
    ":packet_socket_factory",
    ":peer_network_dependencies",
    ":simulated_network_api",
    ":time_controller",
    "../call:simulated_network",
    "../rtc_base:checks",
    "../rtc_base:network",
    "../rtc_base:network_constants",
    "../rtc_base:threading",
    "test/network_emulation",
    "units:data_rate",
    "units:data_size",
    "units:timestamp",
  ]
}

rtc_source_set("time_controller") {
  visibility = [ "*" ]
  sources = [
    "test/time_controller.cc",
    "test/time_controller.h",
  ]

  deps = [
    "../rtc_base:threading",
    "../rtc_base/synchronization:yield_policy",
    "../system_wrappers",
    "task_queue",
    "units:time_delta",
    "units:timestamp",
  ]
}

rtc_source_set("fec_controller_api") {
  visibility = [ "*" ]
  sources = [
    "fec_controller.h",
    "fec_controller_override.h",
  ]

  deps = [
    "../modules:module_fec_api",
    "video:video_frame_type",
  ]
}

rtc_source_set("network_state_predictor_api") {
  visibility = [ "*" ]
  sources = [ "network_state_predictor.h" ]
}

rtc_source_set("array_view") {
  visibility = [ "*" ]
  sources = [ "array_view.h" ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:type_traits",
  ]
}

rtc_source_set("refcountedbase") {
  visibility = [ "*" ]
  sources = [ "ref_counted_base.h" ]
  deps = [
    "../rtc_base:macromagic",
    "../rtc_base:refcount",
  ]
}

rtc_library("ice_transport_factory") {
  visibility = [ "*" ]
  sources = [
    "ice_transport_factory.cc",
    "ice_transport_factory.h",
  ]
  deps = [
    ":ice_transport_interface",
    ":libjingle_peerconnection_api",
    ":make_ref_counted",
    ":packet_socket_factory",
    ":scoped_refptr",
    "../p2p:rtc_p2p",
    "../rtc_base:threading",
    "../rtc_base/system:rtc_export",
    "rtc_event_log:rtc_event_log",
  ]
}

rtc_library("neteq_simulator_api") {
  visibility = [ "*" ]
  sources = [
    "test/neteq_simulator.cc",
    "test/neteq_simulator.h",
  ]
}

rtc_source_set("function_view") {
  visibility = [ "*" ]
  sources = [ "function_view.h" ]
  deps = [ "../rtc_base:checks" ]
}

rtc_source_set("sequence_checker") {
  visibility = [ "*" ]
  sources = [ "sequence_checker.h" ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:macromagic",
    "../rtc_base/synchronization:sequence_checker_internal",
  ]
}

if (rtc_include_tests) {
  if (rtc_enable_protobuf && !build_with_chromium) {
    rtc_library("audioproc_f_api") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/audioproc_float.cc",
        "test/audioproc_float.h",
      ]

      deps = [
        "../modules/audio_processing",
        "../modules/audio_processing:api",
        "../modules/audio_processing:audioproc_f_impl",
      ]
    }

    rtc_library("neteq_simulator_factory") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/neteq_simulator_factory.cc",
        "test/neteq_simulator_factory.h",
      ]
      deps = [
        ":neteq_simulator_api",
        "../modules/audio_coding:neteq_test_factory",
        "../rtc_base:checks",
        "neteq:neteq_api",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }
  }

  rtc_source_set("simulcast_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/simulcast_test_fixture.h" ]
  }

  rtc_library("create_simulcast_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_simulcast_test_fixture.cc",
      "test/create_simulcast_test_fixture.h",
    ]
    deps = [
      ":simulcast_test_fixture_api",
      "../modules/video_coding:simulcast_test_fixture_impl",
      "video_codecs:video_codecs_api",
    ]
  }

  rtc_library("videocodec_test_stats_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/videocodec_test_stats.cc",
      "test/videocodec_test_stats.h",
    ]
    deps = [
      "../api/units:data_rate",
      "../api/units:frequency",
      "../rtc_base:stringutils",
      "video:video_frame_type",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_library("video_codec_stats_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/video_codec_stats.cc",
      "test/video_codec_stats.h",
    ]
    deps = [
      "../api/numerics:numerics",
      "../api/units:data_rate",
      "../api/units:data_size",
      "../api/units:frequency",
      "test/metrics:metric",
      "test/metrics:metrics_logger",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_library("videocodec_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/videocodec_test_fixture.h" ]
    deps = [
      ":videocodec_test_stats_api",
      "../modules/video_coding:video_codec_interface",
      "video_codecs:video_codecs_api",
    ]
  }

  rtc_library("video_codec_tester_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/video_codec_tester.h" ]
    deps = [
      ":video_codec_stats_api",
      "../modules/video_coding/svc:scalability_mode_util",
      "video:encoded_image",
      "video:resolution",
      "video:video_frame",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/functional:any_invocable",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("create_videocodec_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_videocodec_test_fixture.cc",
      "test/create_videocodec_test_fixture.h",
    ]
    deps = [
      ":videocodec_test_fixture_api",
      "../modules/video_coding:video_codecs_test_framework",
      "../modules/video_coding:videocodec_test_impl",
      "video_codecs:video_codecs_api",
    ]
  }

  rtc_library("create_video_codec_tester_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_video_codec_tester.cc",
      "test/create_video_codec_tester.h",
    ]
    deps = [
      ":video_codec_tester_api",
      "../modules/video_coding:video_codec_tester",
    ]
  }

  rtc_source_set("mock_audio_mixer") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_audio_mixer.h" ]

    deps = [
      "../test:test_support",
      "audio:audio_mixer_api",
    ]
  }

  rtc_source_set("mock_audio_sink") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_audio_sink.h" ]

    deps = [
      "../api:media_stream_interface",
      "../test:test_support",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_source_set("mock_data_channel") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_data_channel.h" ]

    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_dtmf_sender") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_dtmf_sender.h" ]

    deps = [
      ":dtmf_sender_interface",
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_fec_controller_override") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_fec_controller_override.h" ]
    deps = [
      ":fec_controller_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_frame_encryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_frame_encryptor.h" ]
    deps = [
      # For api/crypto/frame_encryptor_interface.h
      ":libjingle_peerconnection_api",
      "../test:test_support",
      "crypto:frame_encryptor_interface",
    ]
  }

  rtc_library("mock_frame_decryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_frame_decryptor.h" ]
    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
      "crypto:frame_decryptor_interface",
    ]
  }

  rtc_library("mock_encoder_selector") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_encoder_selector.h" ]
    deps = [
      ":libjingle_peerconnection_api",
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("fake_frame_encryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/fake_frame_encryptor.cc",
      "test/fake_frame_encryptor.h",
    ]
    deps = [
      ":array_view",
      ":libjingle_peerconnection_api",
      ":make_ref_counted",
      ":rtp_parameters",
      "../rtc_base:checks",
      "../rtc_base:refcount",
      "crypto:frame_encryptor_interface",
    ]
  }

  rtc_library("fake_frame_decryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/fake_frame_decryptor.cc",
      "test/fake_frame_decryptor.h",
    ]
    deps = [
      ":array_view",
      ":libjingle_peerconnection_api",
      ":make_ref_counted",
      ":rtp_parameters",
      "../rtc_base:checks",
      "crypto:frame_decryptor_interface",
    ]
  }

  rtc_source_set("mock_media_stream_interface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_media_stream_interface.h" ]

    deps = [
      ":media_stream_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_packet_socket_factory") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_packet_socket_factory.h" ]

    deps = [
      ":packet_socket_factory",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_peerconnectioninterface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_peerconnectioninterface.h" ]

    deps = [
      ":libjingle_peerconnection_api",
      "../api:scoped_refptr",
      "../rtc_base:refcount",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_peer_connection_factory_interface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_peer_connection_factory_interface.h" ]

    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_session_description_interface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_session_description_interface.h" ]
    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_async_dns_resolver") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_async_dns_resolver.h" ]
    deps = [
      ":async_dns_resolver",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_rtp") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/mock_rtp_transceiver.h",
      "test/mock_rtpreceiver.h",
      "test/mock_rtpsender.h",
    ]

    deps = [
      ":libjingle_peerconnection_api",
      ":rtp_sender_interface",
      "../api/crypto:frame_decryptor_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_transformable_audio_frame") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_transformable_audio_frame.h" ]

    deps = [
      ":frame_transformer_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_transformable_video_frame") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_transformable_video_frame.h" ]

    deps = [
      ":frame_transformer_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_bitrate_allocator") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_bitrate_allocator.h" ]

    deps = [
      "../api/video:video_bitrate_allocator",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_bitrate_allocator_factory") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_bitrate_allocator_factory.h" ]

    deps = [
      "../api/video:video_bitrate_allocator_factory",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_codec_factory") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/mock_video_decoder_factory.h",
      "test/mock_video_encoder_factory.h",
    ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_video_decoder") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_decoder.h" ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_video_encoder") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_encoder.h" ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_video_track") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_track.h" ]

    deps = [
      "../api:media_stream_interface",
      "../api:scoped_refptr",
      "../rtc_base:refcount",
      "../test:test_support",
    ]
  }

  rtc_library("create_time_controller") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_time_controller.cc",
      "test/create_time_controller.h",
    ]

    deps = [
      ":callfactory_api",
      ":time_controller",
      "../call",
      "../call:call_interfaces",
      "../call:rtp_interfaces",
      "../test/time_controller",
    ]
  }

  rtc_library("rtc_api_unittests") {
    testonly = true

    sources = [
      "array_view_unittest.cc",
      "field_trials_unittest.cc",
      "function_view_unittest.cc",
      "rtc_error_unittest.cc",
      "rtc_event_log_output_file_unittest.cc",
      "rtp_packet_info_unittest.cc",
      "rtp_packet_infos_unittest.cc",
      "rtp_parameters_unittest.cc",
      "scoped_refptr_unittest.cc",
      "sequence_checker_unittest.cc",
      "test/create_time_controller_unittest.cc",
      "test/peerconnection_quality_test_fixture_unittest.cc",
    ]

    deps = [
      ":array_view",
      ":create_time_controller",
      ":field_trials",
      ":field_trials_view",
      ":function_view",
      ":libjingle_peerconnection_api",
      ":peer_connection_quality_test_fixture_api",
      ":rtc_error",
      ":rtc_event_log_output_file",
      ":rtp_packet_info",
      ":rtp_parameters",
      ":scoped_refptr",
      ":sequence_checker",
      ":time_controller",
      "../rtc_base:buffer",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:platform_thread",
      "../rtc_base:rtc_event",
      "../rtc_base:rtc_task_queue",
      "../rtc_base:task_queue_for_test",
      "../rtc_base/containers:flat_set",
      "../rtc_base/task_utils:repeating_task",
      "../system_wrappers:field_trial",
      "../test:field_trial",
      "../test:fileutils",
      "../test:rtc_expect_death",
      "../test:test_support",
      "task_queue:task_queue_default_factory_unittests",
      "test/pclf:media_configuration",
      "test/video:video_frame_writer",
      "transport:field_trial_based_config",
      "units:time_delta",
      "units:timestamp",
      "units:units_unittests",
      "video:frame_buffer_unittest",
      "video:rtp_video_frame_assembler_unittests",
      "video:video_frame_metadata_unittest",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("compile_all_headers") {
    testonly = true

    sources = [ "test/compile_all_headers.cc" ]

    deps = [
      ":fake_frame_decryptor",
      ":fake_frame_encryptor",
      ":mock_async_dns_resolver",
      ":mock_audio_mixer",
      ":mock_audio_sink",
      ":mock_data_channel",
      ":mock_dtmf_sender",
      ":mock_frame_decryptor",
      ":mock_frame_encryptor",
      ":mock_media_stream_interface",
      ":mock_packet_socket_factory",
      ":mock_peer_connection_factory_interface",
      ":mock_peerconnectioninterface",
      ":mock_rtp",
      ":mock_session_description_interface",
      ":mock_transformable_audio_frame",
      ":mock_transformable_video_frame",
      ":mock_video_bitrate_allocator",
      ":mock_video_bitrate_allocator_factory",
      ":mock_video_codec_factory",
      ":mock_video_decoder",
      ":mock_video_encoder",
      ":mock_video_track",
      ":rtc_api_unittests",
      "units:units_unittests",
    ]
  }
}

rtc_source_set("field_trials_registry") {
  visibility = [ "*" ]
  sources = [
    "field_trials_registry.cc",
    "field_trials_registry.h",
  ]
  deps = [
    ":field_trials_view",
    "../experiments:registered_field_trials",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base/containers:flat_set",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

rtc_source_set("field_trials_view") {
  visibility = [ "*" ]
  sources = [ "field_trials_view.h" ]
  deps = [ "../rtc_base/system:rtc_export" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_source_set("webrtc_key_value_config") {
  visibility = [ "*" ]
  sources = [ "webrtc_key_value_config.h" ]
  deps = [ ":field_trials_view" ]
}

rtc_library("field_trials") {
  visibility = [ "*" ]
  sources = [
    "field_trials.cc",
    "field_trials.h",
  ]
  deps = [
    ":field_trials_registry",
    "../rtc_base:checks",
    "../rtc_base/containers:flat_map",
    "../system_wrappers:field_trial",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_library("frame_transformer_factory") {
  visibility = [ "*" ]
  sources = [
    "frame_transformer_factory.cc",
    "frame_transformer_factory.h",
  ]
  deps = [
    ":frame_transformer_interface",
    ":scoped_refptr",
    "../audio:audio",
    "../modules/rtp_rtcp",
    "../rtc_base:refcount",
    "video:encoded_frame",
    "video:video_frame_metadata",
  ]
}
