# 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")

rtc_library("version") {
  sources = [
    "version.cc",
    "version.h",
  ]
  visibility = [ ":*" ]
}

rtc_library("call_interfaces") {
  sources = [
    "audio_receive_stream.cc",
    "audio_receive_stream.h",
    "audio_send_stream.h",
    "audio_state.cc",
    "audio_state.h",
    "call.h",
    "call_config.cc",
    "call_config.h",
    "flexfec_receive_stream.cc",
    "flexfec_receive_stream.h",
    "packet_receiver.h",
    "syncable.cc",
    "syncable.h",
  ]
  if (!build_with_mozilla) {
    sources += [ "audio_send_stream.cc" ]
  }

  deps = [
    ":audio_sender_interface",
    ":receive_stream_interface",
    ":rtp_interfaces",
    ":video_stream_api",
    "../api:fec_controller_api",
    "../api:frame_transformer_interface",
    "../api:network_state_predictor_api",
    "../api:rtp_headers",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:scoped_refptr",
    "../api:transport_api",
    "../api/adaptation:resource_adaptation_api",
    "../api/audio:audio_device",
    "../api/audio:audio_frame_processor",
    "../api/audio:audio_mixer_api",
    "../api/audio:audio_processing",
    "../api/audio:audio_processing_statistics",
    "../api/audio_codecs:audio_codecs_api",
    "../api/crypto:frame_encryptor_interface",
    "../api/crypto:options",
    "../api/environment",
    "../api/metronome",
    "../api/neteq:neteq_api",
    "../api/task_queue",
    "../api/transport:bitrate_settings",
    "../api/transport:network_control",
    "../modules/async_audio_processing",
    "../modules/audio_device",
    "../modules/audio_processing",
    "../modules/rtp_rtcp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../rtc_base:audio_format_to_string",
    "../rtc_base:checks",
    "../rtc_base:copy_on_write_buffer",
    "../rtc_base:network_route",
    "../rtc_base:refcount",
    "../rtc_base:stringutils",
    "../rtc_base/network:sent_packet",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/functional:bind_front",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("audio_sender_interface") {
  visibility = [ "*" ]
  sources = [ "audio_sender.h" ]
  deps = [ "../api/audio:audio_frame_api" ]
}

# TODO(nisse): These RTP targets should be moved elsewhere
# when interfaces have stabilized. See also TODO for `mock_rtp_interfaces`.
rtc_library("rtp_interfaces") {
  # Client code SHOULD NOT USE THIS TARGET, but for now it needs to be public
  # because there exists client code that uses it.
  # TODO(bugs.webrtc.org/9808): Move to private visibility as soon as that
  # client code gets updated.
  visibility = [ "*" ]
  sources = [
    "rtp_config.cc",
    "rtp_config.h",
    "rtp_packet_sink_interface.h",
    "rtp_stream_receiver_controller_interface.h",
    "rtp_transport_config.h",
    "rtp_transport_controller_send_factory_interface.h",
    "rtp_transport_controller_send_interface.h",
  ]
  deps = [
    "../api:array_view",
    "../api:fec_controller_api",
    "../api:frame_transformer_interface",
    "../api:network_state_predictor_api",
    "../api:rtp_headers",
    "../api:rtp_parameters",
    "../api/crypto:options",
    "../api/environment",
    "../api/transport:bandwidth_estimation_settings",
    "../api/transport:bitrate_settings",
    "../api/transport:network_control",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../common_video:frame_counts",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../rtc_base:checks",
    "../rtc_base:stringutils",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("rtp_receiver") {
  visibility = [ "*" ]
  sources = [
    "rtp_demuxer.cc",
    "rtp_demuxer.h",
    "rtp_stream_receiver_controller.cc",
    "rtp_stream_receiver_controller.h",
    "rtx_receive_stream.cc",
    "rtx_receive_stream.h",
  ]
  deps = [
    ":rtp_interfaces",
    "../api:array_view",
    "../api:rtp_headers",
    "../api:sequence_checker",
    "../modules/rtp_rtcp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:stringutils",
    "../rtc_base/containers:flat_map",
    "../rtc_base/containers:flat_set",
    "../rtc_base/system:no_unique_address",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("rtp_sender") {
  sources = [
    "rtp_payload_params.cc",
    "rtp_payload_params.h",
    "rtp_transport_controller_send.cc",
    "rtp_transport_controller_send.h",
    "rtp_transport_controller_send_factory.h",
    "rtp_video_sender.cc",
    "rtp_video_sender.h",
    "rtp_video_sender_interface.h",
  ]
  deps = [
    ":bitrate_configurator",
    ":rtp_interfaces",
    "../api:array_view",
    "../api:bitrate_allocation",
    "../api:fec_controller_api",
    "../api:field_trials_view",
    "../api:network_state_predictor_api",
    "../api:rtp_parameters",
    "../api:sequence_checker",
    "../api:transport_api",
    "../api/environment",
    "../api/rtc_event_log",
    "../api/task_queue:pending_task_safety_flag",
    "../api/task_queue:task_queue",
    "../api/transport:field_trial_based_config",
    "../api/transport:goog_cc",
    "../api/transport:network_control",
    "../api/units:data_rate",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../api/video:video_frame",
    "../api/video:video_layers_allocation",
    "../api/video:video_rtp_headers",
    "../api/video_codecs:video_codecs_api",
    "../logging:rtc_event_bwe",
    "../modules/congestion_controller",
    "../modules/congestion_controller/rtp:control_handler",
    "../modules/congestion_controller/rtp:transport_feedback",
    "../modules/pacing",
    "../modules/rtp_rtcp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../modules/rtp_rtcp:rtp_video_header",
    "../modules/video_coding:chain_diff_calculator",
    "../modules/video_coding:codec_globals_headers",
    "../modules/video_coding:frame_dependencies_calculator",
    "../modules/video_coding:video_codec_interface",
    "../rtc_base:checks",
    "../rtc_base:event_tracer",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:network_route",
    "../rtc_base:race_checker",
    "../rtc_base:random",
    "../rtc_base:rate_limiter",
    "../rtc_base:timeutils",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/task_utils:repeating_task",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:variant",
  ]
}

rtc_library("bitrate_configurator") {
  sources = [
    "rtp_bitrate_configurator.cc",
    "rtp_bitrate_configurator.h",
  ]
  deps = [
    ":rtp_interfaces",

    # For api/bitrate_constraints.h
    "../api:libjingle_peerconnection_api",
    "../api/transport:bitrate_settings",
    "../api/units:data_rate",
    "../rtc_base:checks",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("bitrate_allocator") {
  sources = [
    "bitrate_allocator.cc",
    "bitrate_allocator.h",
  ]
  deps = [
    "../api:bitrate_allocation",
    "../api:sequence_checker",
    "../api/transport:network_control",
    "../api/units:data_rate",
    "../api/units:time_delta",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:safe_minmax",
    "../rtc_base/system:no_unique_address",
    "../system_wrappers",
    "../system_wrappers:field_trial",
    "../system_wrappers:metrics",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
}

rtc_library("call") {
  sources = [
    "call.cc",
    "create_call.cc",
    "create_call.h",
    "degraded_call.cc",
    "degraded_call.h",
    "flexfec_receive_stream_impl.cc",
    "flexfec_receive_stream_impl.h",
    "receive_time_calculator.cc",
    "receive_time_calculator.h",
  ]

  deps = [
    ":bitrate_allocator",
    ":call_interfaces",
    ":fake_network",
    ":rtp_interfaces",
    ":rtp_receiver",
    ":rtp_sender",
    ":simulated_network",
    ":version",
    ":video_stream_api",
    "../api:array_view",
    "../api:fec_controller_api",
    "../api:field_trials_view",
    "../api:rtp_headers",
    "../api:rtp_parameters",
    "../api:sequence_checker",
    "../api:simulated_network_api",
    "../api:transport_api",
    "../api/rtc_event_log",
    "../api/task_queue:pending_task_safety_flag",
    "../api/transport:network_control",
    "../api/units:time_delta",
    "../api/video_codecs:video_codecs_api",
    "../audio",
    "../logging:rtc_event_audio",
    "../logging:rtc_event_rtp_rtcp",
    "../logging:rtc_event_video",
    "../logging:rtc_stream_config",
    "../modules/congestion_controller",
    "../modules/pacing",
    "../modules/rtp_rtcp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../modules/video_coding",
    "../rtc_base:checks",
    "../rtc_base:copy_on_write_buffer",
    "../rtc_base:event_tracer",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:rate_limiter",
    "../rtc_base:rtc_event",
    "../rtc_base:safe_minmax",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../rtc_base/experiments:field_trial_parser",
    "../rtc_base/network:sent_packet",
    "../rtc_base/system:no_unique_address",
    "../rtc_base/task_utils:repeating_task",
    "../system_wrappers",
    "../system_wrappers:field_trial",
    "../system_wrappers:metrics",
    "../test/network:simulated_network",
    "../video",
    "../video:decode_synchronizer",
    "../video/config:encoder_config",
    "adaptation:resource_adaptation",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/functional:bind_front",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("receive_stream_interface") {
  sources = [ "receive_stream.h" ]
  deps = [
    "../api:frame_transformer_interface",
    "../api:rtp_parameters",
    "../api:scoped_refptr",
    "../api/crypto:frame_decryptor_interface",
    "../api/transport/rtp:rtp_source",
    "../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

rtc_library("video_stream_api") {
  sources = [
    "video_receive_stream.cc",
    "video_receive_stream.h",
    "video_send_stream.cc",
    "video_send_stream.h",
  ]
  deps = [
    ":receive_stream_interface",
    ":rtp_interfaces",
    "../api:frame_transformer_interface",
    "../api:rtp_headers",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:scoped_refptr",
    "../api:transport_api",
    "../api/adaptation:resource_adaptation_api",
    "../api/crypto:frame_encryptor_interface",
    "../api/crypto:options",
    "../api/video:recordable_encoded_frame",
    "../api/video:video_frame",
    "../api/video:video_rtp_headers",
    "../api/video:video_stream_encoder",
    "../api/video_codecs:scalability_mode",
    "../api/video_codecs:video_codecs_api",
    "../common_video",
    "../common_video:frame_counts",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../rtc_base:checks",
    "../rtc_base:stringutils",
    "../video/config:encoder_config",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("simulated_network") {
  # TODO(bugs.webrtc.org/14525): Remove target and directly depend on test/network:simulated_network.
  sources = [ "simulated_network.h" ]
  deps = [ "../test/network:simulated_network" ]
}

rtc_source_set("simulated_packet_receiver") {
  sources = [ "simulated_packet_receiver.h" ]
  deps = [
    ":call_interfaces",
    "../api:simulated_network_api",
  ]
}

rtc_library("fake_network") {
  sources = [
    "fake_network_pipe.cc",
    "fake_network_pipe.h",
  ]
  deps = [
    ":call_interfaces",
    ":simulated_packet_receiver",
    "../api:rtp_parameters",
    "../api:sequence_checker",
    "../api:simulated_network_api",
    "../api:transport_api",
    "../api/units:timestamp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base/synchronization:mutex",
    "../system_wrappers",
    "../test/network:simulated_network",
  ]
}

if (rtc_include_tests) {
  if (!build_with_chromium) {
    rtc_library("call_tests") {
      testonly = true

      sources = [
        "bitrate_allocator_unittest.cc",
        "bitrate_estimator_tests.cc",
        "call_unittest.cc",
        "flexfec_receive_stream_unittest.cc",
        "receive_time_calculator_unittest.cc",
        "rtp_bitrate_configurator_unittest.cc",
        "rtp_demuxer_unittest.cc",
        "rtp_payload_params_unittest.cc",
        "rtp_video_sender_unittest.cc",
        "rtx_receive_stream_unittest.cc",
      ]
      deps = [
        ":bitrate_allocator",
        ":bitrate_configurator",
        ":call",
        ":call_interfaces",
        ":mock_rtp_interfaces",
        ":rtp_interfaces",
        ":rtp_receiver",
        ":rtp_sender",
        ":simulated_network",
        "../api:array_view",
        "../api:create_frame_generator",
        "../api:mock_audio_mixer",
        "../api:mock_frame_transformer",
        "../api:rtp_headers",
        "../api:rtp_parameters",
        "../api:transport_api",
        "../api/audio_codecs:builtin_audio_decoder_factory",
        "../api/environment",
        "../api/environment:environment_factory",
        "../api/test/video:function_video_factory",
        "../api/transport:field_trial_based_config",
        "../api/units:timestamp",
        "../api/video:builtin_video_bitrate_allocator_factory",
        "../api/video:video_frame",
        "../api/video:video_rtp_headers",
        "../audio",
        "../modules/audio_device:mock_audio_device",
        "../modules/audio_mixer",
        "../modules/audio_mixer:audio_mixer_impl",
        "../modules/audio_processing:mocks",
        "../modules/congestion_controller",
        "../modules/pacing",
        "../modules/rtp_rtcp",
        "../modules/rtp_rtcp:mock_rtp_rtcp",
        "../modules/rtp_rtcp:rtp_rtcp_format",
        "../modules/video_coding",
        "../modules/video_coding:codec_globals_headers",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:macromagic",
        "../rtc_base:random",
        "../rtc_base:rate_limiter",
        "../rtc_base:rtc_event",
        "../rtc_base:safe_conversions",
        "../rtc_base:task_queue_for_test",
        "../rtc_base:threading",
        "../rtc_base:timeutils",
        "../rtc_base/synchronization:mutex",
        "../system_wrappers",
        "../test:audio_codec_mocks",
        "../test:direct_transport",
        "../test:encoder_settings",
        "../test:explicit_key_value_config",
        "../test:fake_video_codecs",
        "../test:field_trial",
        "../test:frame_generator_capturer",
        "../test:mock_transport",
        "../test:run_loop",
        "../test:scoped_key_value_config",
        "../test:test_common",
        "../test:test_support",
        "../test:video_test_constants",
        "../test/scenario",
        "../test/time_controller:time_controller",
        "../video",
        "adaptation:resource_adaptation_test_utilities",
        "//testing/gmock",
        "//testing/gtest",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/container:inlined_vector",
        "//third_party/abseil-cpp/absl/functional:any_invocable",
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/types:optional",
        "//third_party/abseil-cpp/absl/types:variant",
      ]
    }

    rtc_library("call_perf_tests") {
      testonly = true

      sources = [
        "call_perf_tests.cc",
        "rampup_tests.cc",
        "rampup_tests.h",
      ]
      deps = [
        ":call_interfaces",
        ":simulated_network",
        ":video_stream_api",
        "../api:rtc_event_log_output_file",
        "../api:simulated_network_api",
        "../api/audio:audio_device",
        "../api/audio_codecs:builtin_audio_encoder_factory",
        "../api/numerics",
        "../api/rtc_event_log",
        "../api/rtc_event_log:rtc_event_log_factory",
        "../api/task_queue",
        "../api/task_queue:pending_task_safety_flag",
        "../api/test/metrics:global_metrics_logger_and_exporter",
        "../api/test/metrics:metric",
        "../api/video:builtin_video_bitrate_allocator_factory",
        "../api/video:video_bitrate_allocation",
        "../api/video_codecs:video_codecs_api",
        "../media:rtc_internal_video_codecs",
        "../media:rtc_simulcast_encoder_adapter",
        "../modules/audio_coding",
        "../modules/audio_device",
        "../modules/audio_device:test_audio_device_module",
        "../modules/audio_mixer:audio_mixer_impl",
        "../modules/rtp_rtcp",
        "../modules/rtp_rtcp:rtp_rtcp_format",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:macromagic",
        "../rtc_base:platform_thread",
        "../rtc_base:rtc_event",
        "../rtc_base:stringutils",
        "../rtc_base:task_queue_for_test",
        "../rtc_base:threading",
        "../rtc_base:timeutils",
        "../rtc_base/synchronization:mutex",
        "../rtc_base/task_utils:repeating_task",
        "../system_wrappers",
        "../system_wrappers:metrics",
        "../test:direct_transport",
        "../test:encoder_settings",
        "../test:fake_video_codecs",
        "../test:field_trial",
        "../test:fileutils",
        "../test:frame_generator_capturer",
        "../test:null_transport",
        "../test:test_common",
        "../test:test_flags",
        "../test:test_support",
        "../test:video_test_common",
        "../test:video_test_constants",
        "../test/network:simulated_network",
        "../video",
        "../video/config:encoder_config",
        "//testing/gtest",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/strings",
      ]
    }
  }

  # TODO(eladalon): This should be moved, as with the TODO for `rtp_interfaces`.
  rtc_source_set("mock_rtp_interfaces") {
    testonly = true

    sources = [
      "test/mock_rtp_packet_sink_interface.h",
      "test/mock_rtp_transport_controller_send.h",
    ]
    deps = [
      ":rtp_interfaces",
      "../api:frame_transformer_interface",
      "../api:libjingle_peerconnection_api",
      "../api/crypto:frame_encryptor_interface",
      "../api/crypto:options",
      "../api/transport:bitrate_settings",
      "../modules/pacing",
      "../modules/rtp_rtcp",
      "../rtc_base:network_route",
      "../rtc_base:rate_limiter",
      "../rtc_base/network:sent_packet",
      "../test:test_support",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }
  rtc_source_set("mock_bitrate_allocator") {
    testonly = true

    sources = [ "test/mock_bitrate_allocator.h" ]
    deps = [
      ":bitrate_allocator",
      "../test:test_support",
    ]
  }
  rtc_source_set("mock_call_interfaces") {
    testonly = true

    sources = [ "test/mock_audio_send_stream.h" ]
    deps = [
      ":call_interfaces",
      "../test:test_support",
    ]
  }

  rtc_library("fake_network_pipe_unittests") {
    testonly = true

    sources = [ "fake_network_pipe_unittest.cc" ]
    deps = [
      ":fake_network",
      "../api:simulated_network_api",
      "../api/units:data_rate",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../modules/rtp_rtcp:rtp_rtcp_format",
      "../rtc_base:checks",
      "../system_wrappers",
      "../test:test_support",
      "../test/network:simulated_network",
      "//testing/gtest",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
  }
}
