# Copyright (c) 2014 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("video_stream_encoder_interface") {
  sources = [
    "video_stream_encoder_interface.h",
    "video_stream_encoder_observer.h",
  ]
  deps = [
    "../api:fec_controller_api",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:scoped_refptr",
    "../api/adaptation:resource_adaptation_api",
    "../api/units:data_rate",
    "../api/video:video_adaptation",
    "../api/video:video_bitrate_allocation",
    "../api/video:video_bitrate_allocator",
    "../api/video:video_codec_constants",
    "../api/video:video_frame",
    "../api/video:video_layers_allocation",
    "../api/video_codecs:video_codecs_api",
    "../video/config:encoder_config",
  ]
}

rtc_library("video") {
  sources = [
    "buffered_frame_decryptor.cc",
    "buffered_frame_decryptor.h",
    "call_stats2.cc",
    "call_stats2.h",
    "encoder_rtcp_feedback.cc",
    "encoder_rtcp_feedback.h",
    "quality_limitation_reason_tracker.cc",
    "quality_limitation_reason_tracker.h",
    "receive_statistics_proxy.cc",
    "receive_statistics_proxy.h",
    "report_block_stats.cc",
    "report_block_stats.h",
    "rtp_streams_synchronizer2.cc",
    "rtp_streams_synchronizer2.h",
    "rtp_video_stream_receiver2.cc",
    "rtp_video_stream_receiver2.h",
    "send_delay_stats.cc",
    "send_delay_stats.h",
    "send_statistics_proxy.cc",
    "send_statistics_proxy.h",
    "stats_counter.cc",
    "stats_counter.h",
    "stream_synchronization.cc",
    "stream_synchronization.h",
    "transport_adapter.cc",
    "transport_adapter.h",
    "video_quality_observer2.cc",
    "video_quality_observer2.h",
    "video_receive_stream2.cc",
    "video_receive_stream2.h",
    "video_send_stream_impl.cc",
    "video_send_stream_impl.h",
    "video_stream_decoder2.cc",
    "video_stream_decoder2.h",
  ]

  deps = [
    ":frame_cadence_adapter",
    ":frame_dumping_decoder",
    ":task_queue_frame_decode_scheduler",
    ":unique_timestamp_counter",
    ":video_stream_buffer_controller",
    ":video_stream_encoder_impl",
    ":video_stream_encoder_interface",
    "../api:array_view",
    "../api:bitrate_allocation",
    "../api:fec_controller_api",
    "../api:field_trials_view",
    "../api:frame_transformer_interface",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api:transport_api",
    "../api/adaptation:resource_adaptation_api",
    "../api/crypto:frame_decryptor_interface",
    "../api/crypto:options",
    "../api/environment",
    "../api/metronome",
    "../api/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../api/units:data_rate",
    "../api/units:frequency",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../api/video:encoded_image",
    "../api/video:recordable_encoded_frame",
    "../api/video:video_bitrate_allocation",
    "../api/video:video_bitrate_allocator",
    "../api/video:video_codec_constants",
    "../api/video:video_frame",
    "../api/video:video_frame_type",
    "../api/video:video_layers_allocation",
    "../api/video:video_rtp_headers",
    "../api/video:video_stream_encoder",
    "../api/video_codecs:video_codecs_api",
    "../call:bitrate_allocator",
    "../call:call_interfaces",
    "../call:rtp_interfaces",
    "../call:rtp_receiver",
    "../call:rtp_sender",
    "../call:video_stream_api",
    "../common_video",
    "../media:media_constants",
    "../media:rtc_sdp_video_format_utils",
    "../modules:module_api",
    "../modules:module_api_public",
    "../modules/pacing",
    "../modules/remote_bitrate_estimator",
    "../modules/rtp_rtcp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../modules/rtp_rtcp:rtp_video_header",
    "../modules/video_coding",
    "../modules/video_coding:h264_sprop_parameter_sets",
    "../modules/video_coding:h26x_packet_buffer",
    "../modules/video_coding:nack_requester",
    "../modules/video_coding:packet_buffer",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../modules/video_coding:webrtc_vp9_helpers",
    "../modules/video_coding/timing:timing_module",
    "../rtc_base:checks",
    "../rtc_base:event_tracer",
    "../rtc_base:histogram_percentile_counter",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:mod_ops",
    "../rtc_base:moving_max_counter",
    "../rtc_base:platform_thread",
    "../rtc_base:rate_statistics",
    "../rtc_base:rate_tracker",
    "../rtc_base:rtc_event",
    "../rtc_base:rtc_numerics",
    "../rtc_base:safe_conversions",
    "../rtc_base:sample_counter",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../rtc_base/experiments:alr_experiment",
    "../rtc_base/experiments:field_trial_parser",
    "../rtc_base/experiments:keyframe_interval_settings_experiment",
    "../rtc_base/experiments:min_video_bitrate_experiment",
    "../rtc_base/experiments:normalize_simulcast_size_experiment",
    "../rtc_base/experiments:rate_control_settings",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/system:no_unique_address",
    "../rtc_base/task_utils:repeating_task",
    "../system_wrappers",
    "../system_wrappers:field_trial",
    "../system_wrappers:metrics",
    "../video/config:encoder_config",
    "adaptation:video_adaptation",
    "render:incoming_video_stream",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]

  if (!build_with_mozilla) {
    deps += [ "../media:rtc_media_base" ]
  }
}

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

  sources = [
    "frame_dumping_decoder.cc",
    "frame_dumping_decoder.h",
  ]

  deps = [
    "../api/video:encoded_frame",
    "../api/video:encoded_image",
    "../api/video_codecs:video_codecs_api",
    "../modules/video_coding",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../rtc_base/system:file_wrapper",
  ]
}

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

  sources = [
    "frame_dumping_encoder.cc",
    "frame_dumping_encoder.h",
  ]

  deps = [
    "../api:field_trials_view",
    "../api:sequence_checker",
    "../api/video:encoded_frame",
    "../api/video:encoded_image",
    "../api/video:video_frame",
    "../api/video_codecs:video_codecs_api",
    "../modules/video_coding",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../rtc_base:stringutils",
    "../rtc_base:timeutils",
    "../rtc_base/system:file_wrapper",
    "//third_party/abseil-cpp/absl/algorithm:container",
  ]
}

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

  deps = [
    "../api:field_trials_view",
    "../api:sequence_checker",
    "../api/metronome",
    "../api/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../api/video:video_frame",
    "../rtc_base:checks",
    "../rtc_base:event_tracer",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:race_checker",
    "../rtc_base:rate_statistics",
    "../rtc_base:timeutils",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/system:no_unique_address",
    "../rtc_base/system:unused",
    "../rtc_base/task_utils:repeating_task",
    "../system_wrappers",
    "../system_wrappers:field_trial",
    "../system_wrappers:metrics",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/cleanup",
  ]
}

rtc_library("video_stream_buffer_controller") {
  sources = [
    "video_stream_buffer_controller.cc",
    "video_stream_buffer_controller.h",
  ]
  deps = [
    ":decode_synchronizer",
    ":frame_decode_scheduler",
    ":frame_decode_timing",
    ":task_queue_frame_decode_scheduler",
    ":video_receive_stream_timeout_tracker",
    "../api:field_trials_view",
    "../api:sequence_checker",
    "../api/metronome",
    "../api/task_queue",
    "../api/units:data_size",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../api/video:encoded_frame",
    "../api/video:frame_buffer",
    "../api/video:video_rtp_headers",
    "../modules/video_coding",
    "../modules/video_coding:frame_helpers",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding/timing:inter_frame_delay_variation_calculator",
    "../modules/video_coding/timing:jitter_estimator",
    "../modules/video_coding/timing:timing_module",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../system_wrappers",
    "../system_wrappers:field_trial",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/functional:bind_front",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("frame_decode_scheduler") {
  sources = [ "frame_decode_scheduler.h" ]
  deps = [
    ":frame_decode_timing",
    "../api/units:timestamp",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("task_queue_frame_decode_scheduler") {
  sources = [
    "task_queue_frame_decode_scheduler.cc",
    "task_queue_frame_decode_scheduler.h",
  ]
  deps = [
    ":frame_decode_scheduler",
    ":frame_decode_timing",
    "../api:sequence_checker",
    "../api/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../api/units:timestamp",
    "../rtc_base:checks",
    "../system_wrappers",
  ]
}

rtc_library("frame_decode_timing") {
  sources = [
    "frame_decode_timing.cc",
    "frame_decode_timing.h",
  ]
  deps = [
    "../api/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../api/units:time_delta",
    "../modules/video_coding/timing:timing_module",
    "../rtc_base:logging",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("video_receive_stream_timeout_tracker") {
  sources = [
    "video_receive_stream_timeout_tracker.cc",
    "video_receive_stream_timeout_tracker.h",
  ]
  deps = [
    "../api/task_queue",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../rtc_base:logging",
    "../rtc_base/task_utils:repeating_task",
    "../system_wrappers",
  ]
}

rtc_library("decode_synchronizer") {
  sources = [
    "decode_synchronizer.cc",
    "decode_synchronizer.h",
  ]
  deps = [
    ":frame_decode_scheduler",
    ":frame_decode_timing",
    "../api:sequence_checker",
    "../api/metronome",
    "../api/task_queue",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../rtc_base:checks",
    "../rtc_base:event_tracer",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

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

  # visibility = [ "../api/video:video_stream_encoder_create" ]
  sources = [
    "alignment_adjuster.cc",
    "alignment_adjuster.h",
    "encoder_bitrate_adjuster.cc",
    "encoder_bitrate_adjuster.h",
    "encoder_overshoot_detector.cc",
    "encoder_overshoot_detector.h",
    "frame_encode_metadata_writer.cc",
    "frame_encode_metadata_writer.h",
    "quality_convergence_monitor.cc",
    "quality_convergence_monitor.h",
    "video_source_sink_controller.cc",
    "video_source_sink_controller.h",
    "video_stream_encoder.cc",
    "video_stream_encoder.h",
  ]

  deps = [
    ":frame_cadence_adapter",
    ":frame_dumping_encoder",
    ":video_stream_encoder_interface",
    "../api:field_trials_view",
    "../api:rtp_parameters",
    "../api:rtp_sender_interface",
    "../api:sequence_checker",
    "../api/adaptation:resource_adaptation_api",
    "../api/environment",
    "../api/task_queue:pending_task_safety_flag",
    "../api/task_queue:task_queue",
    "../api/units:data_rate",
    "../api/video:encoded_image",
    "../api/video:render_resolution",
    "../api/video:video_adaptation",
    "../api/video:video_bitrate_allocation",
    "../api/video:video_bitrate_allocator",
    "../api/video:video_bitrate_allocator_factory",
    "../api/video:video_codec_constants",
    "../api/video:video_frame",
    "../api/video:video_layers_allocation",
    "../api/video:video_rtp_headers",
    "../api/video:video_stream_encoder",
    "../api/video_codecs:video_codecs_api",
    "../call/adaptation:resource_adaptation",
    "../common_video",
    "../media:media_channel",
    "../modules:module_api_public",
    "../modules/video_coding",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../modules/video_coding:webrtc_vp9_helpers",
    "../modules/video_coding/svc:scalability_mode_util",
    "../modules/video_coding/svc:scalability_structures",
    "../modules/video_coding/svc:svc_rate_allocator",
    "../rtc_base:checks",
    "../rtc_base:criticalsection",
    "../rtc_base:event_tracer",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:race_checker",
    "../rtc_base:rate_statistics",
    "../rtc_base:refcount",
    "../rtc_base:rtc_event",
    "../rtc_base:rtc_numerics",
    "../rtc_base:safe_conversions",
    "../rtc_base:stringutils",
    "../rtc_base:timeutils",
    "../rtc_base/experiments:balanced_degradation_settings",
    "../rtc_base/experiments:encoder_info_settings",
    "../rtc_base/experiments:field_trial_parser",
    "../rtc_base/experiments:quality_scaler_settings",
    "../rtc_base/experiments:quality_scaling_experiment",
    "../rtc_base/experiments:rate_control_settings",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/system:no_unique_address",
    "../rtc_base/task_utils:repeating_task",
    "../system_wrappers",
    "../system_wrappers:metrics",
    "adaptation:video_adaptation",
    "config:encoder_config",
    "config:streams_config",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/cleanup",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("unique_timestamp_counter") {
  sources = [
    "unique_timestamp_counter.cc",
    "unique_timestamp_counter.h",
  ]
}

if (rtc_include_tests) {
  rtc_library("video_mocks") {
    testonly = true
    sources = [ "test/mock_video_stream_encoder.h" ]
    deps = [
      ":video_stream_encoder_interface",
      "../api/video:video_stream_encoder",
      "../test:test_support",
    ]
  }
  if (!build_with_chromium) {
    rtc_library("video_quality_test") {
      testonly = true

      # Only targets in this file and api/ can depend on this.
      visibility = [
        ":*",
        "../api:create_video_quality_test_fixture_api",
      ]
      sources = [
        "video_analyzer.cc",
        "video_analyzer.h",
        "video_quality_test.cc",
        "video_quality_test.h",
      ]
      deps = [
        ":frame_dumping_decoder",
        "..//test/network:simulated_network",
        "../api:create_frame_generator",
        "../api:fec_controller_api",
        "../api:frame_generator_api",
        "../api:libjingle_peerconnection_api",
        "../api:rtc_event_log_output_file",
        "../api:test_dependency_factory",
        "../api:video_quality_test_fixture_api",
        "../api/audio:audio_device",
        "../api/environment",
        "../api/numerics",
        "../api/rtc_event_log:rtc_event_log_factory",
        "../api/task_queue",
        "../api/task_queue:default_task_queue_factory",
        "../api/test/metrics:global_metrics_logger_and_exporter",
        "../api/test/metrics:metric",
        "../api/video:builtin_video_bitrate_allocator_factory",
        "../api/video:video_bitrate_allocator_factory",
        "../api/video:video_frame",
        "../api/video:video_rtp_headers",
        "../api/video_codecs:video_codecs_api",
        "../call:fake_network",
        "../common_video",
        "../media:media_constants",
        "../media:rtc_audio_video",
        "../media:rtc_internal_video_codecs",
        "../media:rtc_simulcast_encoder_adapter",
        "../modules/audio_device:audio_device_module_from_input_and_output",
        "../modules/audio_device:windows_core_audio_utility",
        "../modules/audio_mixer:audio_mixer_impl",
        "../modules/rtp_rtcp",
        "../modules/rtp_rtcp:rtp_rtcp_format",
        "../modules/video_coding",
        "../modules/video_coding:video_coding_utility",
        "../modules/video_coding:webrtc_h264",
        "../modules/video_coding:webrtc_vp8",
        "../modules/video_coding:webrtc_vp9",
        "../rtc_base:macromagic",
        "../rtc_base:platform_thread",
        "../rtc_base:rtc_base_tests_utils",
        "../rtc_base:rtc_event",
        "../rtc_base:rtc_numerics",
        "../rtc_base:stringutils",
        "../rtc_base:task_queue_for_test",
        "../rtc_base:timeutils",
        "../rtc_base/synchronization:mutex",
        "../rtc_base/task_utils:repeating_task",
        "../system_wrappers",
        "../test:fake_video_codecs",
        "../test:fileutils",
        "../test:platform_video_capturer",
        "../test:rtp_test_utils",
        "../test:test_common",
        "../test:test_flags",
        "../test:test_renderer",
        "../test:test_support",
        "../test:test_support_test_artifacts",
        "../test:video_frame_writer",
        "../test:video_test_common",
        "../test:video_test_constants",
        "config:streams_config",
        "//third_party/abseil-cpp/absl/algorithm:container",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]

      if (is_mac || is_ios) {
        deps += [ "../test:video_test_mac" ]
      }
      if (is_win) {
        deps += [ "../rtc_base/win:scoped_com_initializer" ]
      }
    }

    rtc_library("video_full_stack_tests") {
      testonly = true

      sources = [ "full_stack_tests.cc" ]
      deps = [
        ":video_quality_test",
        "../api:simulated_network_api",
        "../api:test_dependency_factory",
        "../api:video_quality_test_fixture_api",
        "../api/units:data_rate",
        "../api/video_codecs:video_codecs_api",
        "../modules/pacing",
        "../modules/video_coding:webrtc_vp9",
        "../rtc_base/experiments:alr_experiment",
        "../system_wrappers:field_trial",
        "../test:field_trial",
        "../test:fileutils",
        "../test:test_common",
        "../test:test_support",
        "../video/config:encoder_config",
        "//testing/gtest",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }

    rtc_library("video_pc_full_stack_tests") {
      testonly = true

      sources = [ "pc_full_stack_tests.cc" ]
      deps = [
        "..//test/network:simulated_network",
        "../api:create_network_emulation_manager",
        "../api:create_peer_connection_quality_test_frame_generator",
        "../api:create_peerconnection_quality_test_fixture",
        "../api:frame_generator_api",
        "../api:media_stream_interface",
        "../api:network_emulation_manager_api",
        "../api:peer_connection_quality_test_fixture_api",
        "../api:simulated_network_api",
        "../api:time_controller",
        "../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/video_codecs:video_codecs_api",
        "../modules/video_coding:webrtc_vp9",
        "../system_wrappers:field_trial",
        "../test:field_trial",
        "../test:fileutils",
        "../test:test_support",
        "../test/pc/e2e:network_quality_metrics_reporter",
      ]
    }

    rtc_library("video_loopback_lib") {
      testonly = true
      sources = [
        "video_loopback.cc",
        "video_loopback.h",
      ]
      deps = [
        ":video_quality_test",
        "../api:libjingle_peerconnection_api",
        "../api:simulated_network_api",
        "../api:video_quality_test_fixture_api",
        "../api/transport:bitrate_settings",
        "../api/units:data_rate",
        "../api/video_codecs:video_codecs_api",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../system_wrappers:field_trial",
        "../test:field_trial",
        "../test:run_test",
        "../test:run_test_interface",
        "../test:test_common",
        "../test:test_flags",
        "../test:test_renderer",
        "../test:test_support",
        "//testing/gtest",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }

    if (is_mac) {
      mac_app_bundle("video_loopback") {
        testonly = true
        sources = [ "video_loopback_main.mm" ]
        info_plist = "../test/mac/Info.plist"
        deps = [ ":video_loopback_lib" ]
      }
    } else {
      rtc_executable("video_loopback") {
        testonly = true
        sources = [ "video_loopback_main.cc" ]
        deps = [ ":video_loopback_lib" ]
      }
    }

    rtc_executable("screenshare_loopback") {
      testonly = true
      sources = [ "screenshare_loopback.cc" ]

      deps = [
        ":video_quality_test",
        "../api:libjingle_peerconnection_api",
        "../api:simulated_network_api",
        "../api:video_quality_test_fixture_api",
        "../api/transport:bitrate_settings",
        "../api/units:data_rate",
        "../api/video_codecs:video_codecs_api",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:stringutils",
        "../system_wrappers:field_trial",
        "../test:field_trial",
        "../test:run_test",
        "../test:run_test_interface",
        "../test:test_common",
        "../test:test_flags",
        "../test:test_renderer",
        "../test:test_support",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }

    rtc_executable("sv_loopback") {
      testonly = true
      sources = [ "sv_loopback.cc" ]
      deps = [
        ":video_quality_test",
        "../api:libjingle_peerconnection_api",
        "../api:simulated_network_api",
        "../api:video_quality_test_fixture_api",
        "../api/transport:bitrate_settings",
        "../api/units:data_rate",
        "../api/video_codecs:video_codecs_api",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:stringutils",
        "../system_wrappers:field_trial",
        "../test:field_trial",
        "../test:run_test",
        "../test:run_test_interface",
        "../test:test_common",
        "../test:test_flags",
        "../test:test_renderer",
        "../test:test_support",
        "//testing/gtest",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }
  }

  # TODO(pbos): Rename test suite.
  rtc_library("video_tests") {
    testonly = true

    defines = []
    sources = [
      "alignment_adjuster_unittest.cc",
      "buffered_frame_decryptor_unittest.cc",
      "call_stats2_unittest.cc",
      "cpu_scaling_tests.cc",
      "decode_synchronizer_unittest.cc",
      "encoder_bitrate_adjuster_unittest.cc",
      "encoder_overshoot_detector_unittest.cc",
      "encoder_rtcp_feedback_unittest.cc",
      "end_to_end_tests/bandwidth_tests.cc",
      "end_to_end_tests/call_operation_tests.cc",
      "end_to_end_tests/codec_tests.cc",
      "end_to_end_tests/config_tests.cc",
      "end_to_end_tests/extended_reports_tests.cc",
      "end_to_end_tests/fec_tests.cc",
      "end_to_end_tests/frame_encryption_tests.cc",
      "end_to_end_tests/histogram_tests.cc",
      "end_to_end_tests/multi_codec_receive_tests.cc",
      "end_to_end_tests/multi_stream_tester.cc",
      "end_to_end_tests/multi_stream_tester.h",
      "end_to_end_tests/multi_stream_tests.cc",
      "end_to_end_tests/network_state_tests.cc",
      "end_to_end_tests/resolution_bitrate_limits_tests.cc",
      "end_to_end_tests/retransmission_tests.cc",
      "end_to_end_tests/rtp_rtcp_tests.cc",
      "end_to_end_tests/ssrc_tests.cc",
      "end_to_end_tests/stats_tests.cc",
      "end_to_end_tests/transport_feedback_tests.cc",
      "frame_cadence_adapter_unittest.cc",
      "frame_decode_timing_unittest.cc",
      "frame_encode_metadata_writer_unittest.cc",
      "picture_id_tests.cc",
      "quality_convergence_monitor_unittest.cc",
      "quality_limitation_reason_tracker_unittest.cc",
      "quality_scaling_tests.cc",
      "receive_statistics_proxy_unittest.cc",
      "report_block_stats_unittest.cc",
      "rtp_video_stream_receiver2_unittest.cc",
      "send_delay_stats_unittest.cc",
      "send_statistics_proxy_unittest.cc",
      "stats_counter_unittest.cc",
      "stream_synchronization_unittest.cc",
      "task_queue_frame_decode_scheduler_unittest.cc",
      "unique_timestamp_counter_unittest.cc",
      "video_receive_stream2_unittest.cc",
      "video_receive_stream_timeout_tracker_unittest.cc",
      "video_send_stream_impl_unittest.cc",
      "video_send_stream_tests.cc",
      "video_source_sink_controller_unittest.cc",
      "video_stream_buffer_controller_unittest.cc",
      "video_stream_encoder_unittest.cc",
    ]
    deps = [
      ":decode_synchronizer",
      ":frame_cadence_adapter",
      ":frame_decode_scheduler",
      ":frame_decode_timing",
      ":task_queue_frame_decode_scheduler",
      ":unique_timestamp_counter",
      ":video",
      ":video_mocks",
      ":video_receive_stream_timeout_tracker",
      ":video_stream_buffer_controller",
      ":video_stream_encoder_impl",
      ":video_stream_encoder_interface",
      "..//test/network:simulated_network",
      "../api:array_view",
      "../api:bitrate_allocation",
      "../api:create_frame_generator",
      "../api:fake_frame_decryptor",
      "../api:fake_frame_encryptor",
      "../api:field_trials_view",
      "../api:frame_generator_api",
      "../api:libjingle_peerconnection_api",
      "../api:mock_fec_controller_override",
      "../api:mock_frame_decryptor",
      "../api:mock_frame_transformer",
      "../api:mock_video_codec_factory",
      "../api:mock_video_decoder",
      "../api:mock_video_encoder",
      "../api:rtp_headers",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api:sequence_checker",
      "../api:simulated_network_api",
      "../api:time_controller",
      "../api:transport_api",
      "../api/adaptation:resource_adaptation_api",
      "../api/adaptation:resource_adaptation_api",
      "../api/crypto:options",
      "../api/environment",
      "../api/environment:environment_factory",
      "../api/metronome/test:fake_metronome",
      "../api/rtc_event_log",
      "../api/task_queue",
      "../api/task_queue:default_task_queue_factory",
      "../api/test/metrics:global_metrics_logger_and_exporter",
      "../api/test/metrics:metric",
      "../api/test/video:function_video_factory",
      "../api/units:data_rate",
      "../api/units:frequency",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../api/video:builtin_video_bitrate_allocator_factory",
      "../api/video:encoded_image",
      "../api/video:recordable_encoded_frame",
      "../api/video:resolution",
      "../api/video:video_adaptation",
      "../api/video:video_bitrate_allocation",
      "../api/video:video_frame",
      "../api/video:video_frame_type",
      "../api/video:video_layers_allocation",
      "../api/video:video_rtp_headers",
      "../api/video/test:video_frame_matchers",
      "../api/video_codecs:scalability_mode",
      "../api/video_codecs:video_codecs_api",
      "../api/video_codecs:vp8_temporal_layers_factory",
      "../call:bitrate_allocator",
      "../call:call_interfaces",
      "../call:fake_network",
      "../call:mock_bitrate_allocator",
      "../call:mock_rtp_interfaces",
      "../call:rtp_interfaces",
      "../call:rtp_receiver",
      "../call:rtp_sender",
      "../call:simulated_packet_receiver",
      "../call:video_stream_api",
      "../call/adaptation:resource_adaptation",
      "../call/adaptation:resource_adaptation_test_utilities",
      "../common_video",
      "../common_video/test:utilities",
      "../media:codec",
      "../media:media_constants",
      "../media:rtc_audio_video",
      "../media:rtc_internal_video_codecs",
      "../media:rtc_media",
      "../media:rtc_media_tests_utils",
      "../media:rtc_simulcast_encoder_adapter",
      "../media:video_adapter",
      "../modules:module_api_public",
      "../modules/pacing",
      "../modules/rtp_rtcp",
      "../modules/rtp_rtcp:mock_rtp_rtcp",
      "../modules/rtp_rtcp:rtp_rtcp_format",
      "../modules/utility:utility",
      "../modules/video_coding",
      "../modules/video_coding:codec_globals_headers",
      "../modules/video_coding:encoded_frame",
      "../modules/video_coding:h26x_packet_buffer",
      "../modules/video_coding:packet_buffer",
      "../modules/video_coding:video_codec_interface",
      "../modules/video_coding:video_coding_utility",
      "../modules/video_coding:webrtc_h264",
      "../modules/video_coding:webrtc_vp8",
      "../modules/video_coding:webrtc_vp9",
      "../modules/video_coding:webrtc_vp9_helpers",
      "../modules/video_coding/codecs/av1:libaom_av1_encoder",
      "../modules/video_coding/svc:scalability_mode_util",
      "../modules/video_coding/svc:scalability_structures",
      "../modules/video_coding/svc:scalable_video_controller",
      "../modules/video_coding/timing:timing_module",
      "../rtc_base:byte_buffer",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:logging",
      "../rtc_base:macromagic",
      "../rtc_base:platform_thread",
      "../rtc_base:rate_limiter",
      "../rtc_base:rate_statistics",
      "../rtc_base:refcount",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:rtc_event",
      "../rtc_base:rtc_numerics",
      "../rtc_base:safe_conversions",
      "../rtc_base:stringutils",
      "../rtc_base:task_queue_for_test",
      "../rtc_base:threading",
      "../rtc_base:timeutils",
      "../rtc_base:unique_id_generator",
      "../rtc_base/containers:flat_map",
      "../rtc_base/experiments:alr_experiment",
      "../rtc_base/experiments:encoder_info_settings",
      "../rtc_base/synchronization:mutex",
      "../system_wrappers",
      "../system_wrappers:field_trial",
      "../system_wrappers:metrics",
      "../test:direct_transport",
      "../test:encoder_settings",
      "../test:fake_encoded_frame",
      "../test:fake_video_codecs",
      "../test:field_trial",
      "../test:fileutils",
      "../test:frame_generator_capturer",
      "../test:frame_utils",
      "../test:mock_transport",
      "../test:null_transport",
      "../test:rtp_test_utils",
      "../test:run_loop",
      "../test:scoped_key_value_config",
      "../test:test_common",
      "../test:test_support",
      "../test:video_test_common",
      "../test:video_test_constants",
      "../test/time_controller",
      "adaptation:video_adaptation",
      "config:encoder_config",
      "config:streams_config",
      "config:video_config_tests",
      "//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/types:optional",
      "//third_party/abseil-cpp/absl/types:variant",
    ]
    if (!build_with_mozilla) {
      deps += [ "../media:rtc_media_base" ]
    }
  }
}
