# 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("//build/config/linux/pkg_config.gni")
import("//third_party/libaom/options.gni")
import("../../webrtc.gni")

rtc_library("encoded_frame") {
  visibility = [ "*" ]
  sources = [
    "encoded_frame.cc",
    "encoded_frame.h",
  ]
  deps = [
    ":codec_globals_headers",
    ":video_codec_interface",
    "../../api/video:encoded_image",
    "../../api/video:video_frame",
    "../../api/video:video_frame_type",
    "../../api/video:video_rtp_headers",
    "../../rtc_base/system:rtc_export",
    "../rtp_rtcp:rtp_video_header",
  ]
}

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

  deps = [
    "../../rtc_base:logging",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
  ]
}

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

  deps = [
    "../../common_video/generic_frame_descriptor",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
  ]
}

rtc_library("nack_requester") {
  sources = [
    "histogram.cc",
    "histogram.h",
    "nack_requester.cc",
    "nack_requester.h",
  ]

  deps = [
    "..:module_api",
    "../../api:field_trials_view",
    "../../api:sequence_checker",
    "../../api/task_queue",
    "../../api/task_queue:pending_task_safety_flag",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:mod_ops",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base/system:no_unique_address",
    "../../rtc_base/task_utils:repeating_task",
    "../../system_wrappers",
  ]
}

rtc_library("packet_buffer") {
  sources = [
    "packet_buffer.cc",
    "packet_buffer.h",
  ]
  deps = [
    ":codec_globals_headers",
    "../../api:rtp_packet_info",
    "../../api/video:video_frame",
    "../../api/video:video_frame_type",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:copy_on_write_buffer",
    "../../rtc_base:logging",
    "../../rtc_base:mod_ops",
    "../../rtc_base:rtc_numerics",
    "../rtp_rtcp:rtp_rtcp_format",
    "../rtp_rtcp:rtp_video_header",
  ]
}

rtc_library("h26x_packet_buffer") {
  sources = [
    "h26x_packet_buffer.cc",
    "h26x_packet_buffer.h",
  ]
  deps = [
    ":codec_globals_headers",
    ":h264_sprop_parameter_sets",
    ":packet_buffer",
    "../../api/video:video_frame",
    "../../api/video:video_frame_type",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:copy_on_write_buffer",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_numerics",
    "../rtp_rtcp:rtp_video_header",
    "//third_party/abseil-cpp/absl/algorithm:container",
  ]
}

rtc_library("sframe_packet_buffer") {
  sources = [
    "sframe_packet_buffer.cc",
    "sframe_packet_buffer.h",
  ]
  deps = [
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_numerics",
    "../rtp_rtcp:rtp_rtcp_format",
    "../rtp_rtcp:sframe_descriptor",
    "../rtp_rtcp:sframe_rtp_packet_received",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("frame_helpers") {
  sources = [
    "frame_helpers.cc",
    "frame_helpers.h",
  ]
  deps = [
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../api/video:encoded_frame",
    "../../api/video:encoded_image",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
  ]
}

rtc_library("h264_sprop_parameter_sets") {
  sources = [
    "h264_sprop_parameter_sets.cc",
    "h264_sprop_parameter_sets.h",
  ]
  deps = [
    "../../rtc_base:base64",
    "../../rtc_base:logging",
  ]
}

rtc_library("video_coding") {
  visibility = [ "*" ]
  sources = [
    "decoder_database.cc",
    "decoder_database.h",
    "fec_controller_default.cc",
    "fec_controller_default.h",
    "fec_rate_table.h",
    "generic_decoder.cc",
    "generic_decoder.h",
    "h264_sps_pps_tracker.cc",
    "h264_sps_pps_tracker.h",
    "include/video_codec_initializer.h",
    "internal_defines.h",
    "loss_notification_controller.cc",
    "loss_notification_controller.h",
    "media_opt_util.cc",
    "media_opt_util.h",
    "rtp_frame_id_only_ref_finder.cc",
    "rtp_frame_id_only_ref_finder.h",
    "rtp_frame_reference_finder.cc",
    "rtp_frame_reference_finder.h",
    "rtp_generic_ref_finder.cc",
    "rtp_generic_ref_finder.h",
    "rtp_seq_num_only_ref_finder.cc",
    "rtp_seq_num_only_ref_finder.h",
    "rtp_vp8_ref_finder.cc",
    "rtp_vp8_ref_finder.h",
    "rtp_vp9_ref_finder.cc",
    "rtp_vp9_ref_finder.h",
    "video_codec_initializer.cc",
    "video_receiver2.cc",
    "video_receiver2.h",
  ]

  deps = [
    ":codec_globals_headers",
    ":encoded_frame",
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_vp8_scalability",
    ":webrtc_vp9_helpers",
    "..:module_api",
    "..:module_api_public",
    "..:module_fec_api",
    "../../api:fec_controller_api",
    "../../api:field_trials_view",
    "../../api:rtp_packet_info",
    "../../api:scoped_refptr",
    "../../api:sequence_checker",
    "../../api/environment",
    "../../api/task_queue",
    "../../api/units:data_rate",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../api/video:encoded_frame",
    "../../api/video:encoded_image",
    "../../api/video:render_resolution",
    "../../api/video:video_codec_constants",
    "../../api/video:video_frame",
    "../../api/video:video_frame_type",
    "../../api/video:video_rtp_headers",
    "../../api/video/corruption_detection:frame_instrumentation_data",
    "../../api/video_codecs:scalability_mode",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../common_video:corruption_score_calculator",
    "../../rtc_base:buffer",
    "../../rtc_base:byte_buffer",
    "../../rtc_base:checks",
    "../../rtc_base:copy_on_write_buffer",
    "../../rtc_base:event_tracer",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:mod_ops",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../rtc_base/experiments:min_video_bitrate_experiment",
    "../../rtc_base/experiments:rate_control_settings",
    "../../rtc_base/synchronization:mutex",
    "../../rtc_base/system:no_unique_address",
    "../../system_wrappers",
    "../../system_wrappers:metrics",
    "../../video/config:encoder_config",
    "../rtp_rtcp",
    "../rtp_rtcp:rtp_video_header",
    "codecs/av1:av1_svc_config",
    "svc:scalability_mode_util",
    "timing:timing_module",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
  ]
}

rtc_library("video_codec_interface") {
  visibility = [ "*" ]
  sources = [
    "include/video_codec_interface.cc",
    "include/video_codec_interface.h",
    "include/video_coding_defines.h",
    "include/video_error_codes.h",
    "include/video_error_codes_utils.cc",
    "include/video_error_codes_utils.h",
    "video_coding_defines.cc",
  ]
  deps = [
    ":codec_globals_headers",
    "../../api/transport/rtp:dependency_descriptor",
    "../../api/units:time_delta",
    "../../api/video:video_frame",
    "../../api/video:video_frame_type",
    "../../api/video:video_rtp_headers",
    "../../api/video/corruption_detection:frame_instrumentation_data",
    "../../api/video_codecs:scalability_mode",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video/generic_frame_descriptor",
    "../../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("codec_globals_headers") {
  visibility = [ "*" ]
  sources = [
    "codecs/h264/include/h264_globals.h",
    "codecs/interface/common_constants.h",
    "codecs/vp8/include/vp8_globals.h",
    "codecs/vp9/include/vp9_globals.h",
  ]

  deps = [ "../../rtc_base:checks" ]
}

if (rtc_use_h264 && rtc_system_openh264) {
  pkg_config("openh264") {
    packages = [ "openh264" ]
  }
}

rtc_library("frame_sampler") {
  visibility = [ "*" ]
  sources = [
    "utility/frame_sampler.cc",
    "utility/frame_sampler.h",
  ]
  deps = [
    "..:module_api_public",
    "../../api/units:time_delta",
    "../../api/video:video_frame",
  ]
}

rtc_library("video_coding_utility") {
  visibility = [ "*" ]
  sources = [
    "utility/bandwidth_quality_scaler.cc",
    "utility/bandwidth_quality_scaler.h",
    "utility/decoded_frames_history.cc",
    "utility/decoded_frames_history.h",
    "utility/frame_dropper.cc",
    "utility/frame_dropper.h",
    "utility/framerate_controller_deprecated.cc",
    "utility/framerate_controller_deprecated.h",
    "utility/ivf_defines.h",
    "utility/ivf_file_reader.cc",
    "utility/ivf_file_reader.h",
    "utility/ivf_file_writer.cc",
    "utility/ivf_file_writer.h",
    "utility/qp_parser.cc",
    "utility/qp_parser.h",
    "utility/quality_scaler.cc",
    "utility/quality_scaler.h",
    "utility/reference_buffer_tracker.cc",
    "utility/reference_buffer_tracker.h",
    "utility/simulcast_rate_allocator.cc",
    "utility/simulcast_rate_allocator.h",
    "utility/simulcast_utility.cc",
    "utility/simulcast_utility.h",
    "utility/temporal_layer_rate_tracker.cc",
    "utility/temporal_layer_rate_tracker.h",
    "utility/vp8_constants.h",
    "utility/vp8_header_parser.cc",
    "utility/vp8_header_parser.h",
    "utility/vp9_constants.h",
    "utility/vp9_uncompressed_header_parser.cc",
    "utility/vp9_uncompressed_header_parser.h",
  ]

  deps = [
    "../../api:field_trials_view",
    "../../api:scoped_refptr",
    "../../api:sequence_checker",
    "../../api/environment",
    "../../api/task_queue",
    "../../api/units:data_rate",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../api/video:encoded_image",
    "../../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_codecs:video_codecs_api",
    "../../common_video",
    "../../rtc_base:bitstream_reader",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:rate_statistics",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:stringutils",
    "../../rtc_base:weak_ptr",
    "../../rtc_base/experiments:encoder_info_settings",
    "../../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:file_wrapper",
    "../../rtc_base/system:no_unique_address",
    "../../rtc_base/system:rtc_export",
    "../../video/config:encoder_config",
    "../rtp_rtcp:rtp_rtcp_format",
    "svc:scalability_mode_util",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/numeric:bits",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("av1_qp_parser") {
  testonly = true
  sources = [
    "utility/av1_qp_parser.cc",
    "utility/av1_qp_parser.h",
  ]
  deps = [
    "../../api/video:video_frame",
    "../../api/video:video_frame_type",
    "//third_party/libgav1:libgav1_decoder",
    "//third_party/libgav1:libgav1_parser",
  ]
  public_configs = [ "//third_party/libgav1:libgav1_public_config" ]
}

rtc_library("encoder_speed_controller_impl") {
  visibility = [ "*" ]
  sources = [
    "utility/encoder_speed_controller_impl.cc",
    "utility/encoder_speed_controller_impl.h",
  ]
  deps = [
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../api/video_codecs:video_codecs_api",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
  ]
}

rtc_library("webrtc_h264") {
  visibility = [ "*" ]
  sources = [
    "codecs/h264/h264.cc",
    "codecs/h264/h264_color_space.cc",
    "codecs/h264/h264_color_space.h",
    "codecs/h264/h264_decoder_impl.cc",
    "codecs/h264/h264_decoder_impl.h",
    "codecs/h264/h264_encoder_impl.cc",
    "codecs/h264/h264_encoder_impl.h",
    "codecs/h264/include/h264.h",
  ]

  defines = []
  deps = [
    ":codec_globals_headers",
    ":frame_sampler",
    ":video_codec_interface",
    ":video_coding_utility",
    "../../api:scoped_refptr",
    "../../api/environment",
    "../../api/units:data_rate",
    "../../api/units:time_delta",
    "../../api/video:encoded_image",
    "../../api/video:render_resolution",
    "../../api/video:video_bitrate_allocation",
    "../../api/video:video_bitrate_allocator",
    "../../api/video:video_codec_constants",
    "../../api/video:video_frame",
    "../../api/video:video_frame_i010",
    "../../api/video:video_frame_type",
    "../../api/video:video_rtp_headers",
    "../../api/video_codecs:scalability_mode",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../media:media_constants",
    "../../rtc_base:checks",
    "../../rtc_base:event_tracer",
    "../../rtc_base:logging",
    "../../rtc_base/system:rtc_export",
    "../../system_wrappers:metrics",
    "svc:scalability_structures",
    "svc:scalable_video_controller",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/libyuv",
  ]

  if (rtc_use_h264) {
    deps += [ "//third_party/ffmpeg" ]
    if (rtc_system_openh264) {
      configs += [ ":openh264" ]
    } else {
      deps += [ "//third_party/openh264:encoder" ]
    }
  }
}

# This target defines a bare-bones interface towards libvpx, used by the
# VP8 and VP9 wrappers below.
rtc_library("webrtc_libvpx_interface") {
  visibility = [ "*" ]
  sources = [
    "codecs/interface/libvpx_interface.cc",
    "codecs/interface/libvpx_interface.h",
  ]
  deps = [ "../../rtc_base:checks" ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

rtc_library("mock_libvpx_interface") {
  testonly = true
  sources = [ "codecs/interface/mock_libvpx_interface.h" ]
  deps = [
    ":webrtc_libvpx_interface",
    "../../test:test_support",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

# This target includes the internal SW codec.
rtc_library("webrtc_vp8") {
  visibility = [ "*" ]
  poisonous = [ "software_video_codecs" ]
  sources = [
    "codecs/vp8/include/vp8.h",
    "codecs/vp8/libvpx_vp8_decoder.cc",
    "codecs/vp8/libvpx_vp8_decoder.h",
    "codecs/vp8/libvpx_vp8_encoder.cc",
    "codecs/vp8/libvpx_vp8_encoder.h",
  ]

  deps = [
    ":codec_globals_headers",
    ":frame_sampler",
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_libvpx_interface",
    ":webrtc_vp8_scalability",
    "../../api:fec_controller_api",
    "../../api:field_trials_view",
    "../../api:scoped_refptr",
    "../../api/environment",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../api/video:encoded_image",
    "../../api/video:render_resolution",
    "../../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_rtp_headers",
    "../../api/video/corruption_detection:corruption_detection_settings_generator",
    "../../api/video_codecs:encoder_speed_controller_factory",
    "../../api/video_codecs:scalability_mode",
    "../../api/video_codecs:video_codecs_api",
    "../../api/video_codecs:vp8_temporal_layers_factory",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:event_tracer",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../rtc_base/experiments:encoder_info_settings",
    "../../rtc_base/experiments:field_trial_parser",
    "../../rtc_base/experiments:rate_control_settings",
    "../../system_wrappers:metrics",
    "../rtp_rtcp:rtp_rtcp_format",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/libyuv",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

rtc_library("webrtc_vp8_scalability") {
  sources = [
    "codecs/vp8/vp8_scalability.cc",
    "codecs/vp8/vp8_scalability.h",
  ]
  deps = [ "../../api/video_codecs:scalability_mode" ]
}

rtc_library("webrtc_vp8_temporal_layers") {
  visibility = [ "*" ]
  sources = [
    "codecs/vp8/default_temporal_layers.cc",
    "codecs/vp8/default_temporal_layers.h",
    "codecs/vp8/include/temporal_layers_checker.h",
    "codecs/vp8/screenshare_layers.cc",
    "codecs/vp8/screenshare_layers.h",
    "codecs/vp8/temporal_layers_checker.cc",
  ]

  deps = [
    ":codec_globals_headers",
    ":video_codec_interface",
    "../../api/environment",
    "../../api/transport/rtp:dependency_descriptor",
    "../../api/video:video_codec_constants",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video/generic_frame_descriptor",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:rate_statistics",
    "../../rtc_base:rtc_numerics",
    "../../system_wrappers:metrics",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

# This target includes VP9 files that may be used for any VP9 codec, internal SW
# or external HW.
rtc_library("webrtc_vp9_helpers") {
  sources = [
    "codecs/vp9/svc_config.cc",
    "codecs/vp9/svc_config.h",
  ]

  deps = [
    ":codec_globals_headers",
    "../../api/video:video_frame",
    "../../api/video_codecs:scalability_mode",
    "../../api/video_codecs:video_codecs_api",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "svc:scalability_mode_util",
    "svc:scalability_structures",
    "svc:scalable_video_controller",
  ]
}

rtc_library("webrtc_vp9") {
  visibility = [ "*" ]
  poisonous = [ "software_video_codecs" ]
  sources = [
    "codecs/vp9/include/vp9.h",
    "codecs/vp9/libvpx_vp9_decoder.cc",
    "codecs/vp9/libvpx_vp9_decoder.h",
    "codecs/vp9/libvpx_vp9_encoder.cc",
    "codecs/vp9/libvpx_vp9_encoder.h",
    "codecs/vp9/vp9.cc",
    "codecs/vp9/vp9_frame_buffer_pool.cc",
    "codecs/vp9/vp9_frame_buffer_pool.h",
  ]

  deps = [
    ":codec_globals_headers",
    ":frame_sampler",
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_libvpx_interface",
    "../../api:fec_controller_api",
    "../../api:field_trials_view",
    "../../api:refcountedbase",
    "../../api:scoped_refptr",
    "../../api/environment",
    "../../api/transport/rtp:dependency_descriptor",
    "../../api/units:time_delta",
    "../../api/video:encoded_image",
    "../../api/video:render_resolution",
    "../../api/video:video_bitrate_allocation",
    "../../api/video:video_bitrate_allocator",
    "../../api/video:video_codec_constants",
    "../../api/video:video_frame",
    "../../api/video:video_frame_i010",
    "../../api/video:video_frame_type",
    "../../api/video:video_rtp_headers",
    "../../api/video_codecs:scalability_mode",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:event_tracer",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../rtc_base/containers:flat_map",
    "../../rtc_base/experiments:encoder_info_settings",
    "../../rtc_base/experiments:field_trial_parser",
    "../../rtc_base/experiments:rate_control_settings",
    "../../rtc_base/synchronization:mutex",
    "../rtp_rtcp:rtp_rtcp_format",
    "svc:scalability_mode_util",
    "svc:scalability_structures",
    "svc:scalable_video_controller",
    "svc:simulcast_to_svc_converter",
    "svc:svc_rate_allocator",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/libyuv",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

if (rtc_include_tests) {
  if (is_android) {
    rtc_library("android_codec_factory_helper") {
      sources = [
        "codecs/test/android_codec_factory_helper.cc",
        "codecs/test/android_codec_factory_helper.h",
      ]

      deps = [
        "../../api/video_codecs:video_codecs_api",
        "../../modules/utility",
        "../../rtc_base:checks",
        "../../sdk/android:internal_jni",
        "../../sdk/android:native_api_base",
        "../../sdk/android:native_api_codecs",
        "../../sdk/android:native_api_jni",
      ]
    }

    rtc_test("videocodec_test_mediacodec") {
      sources = [ "codecs/test/videocodec_test_mediacodec.cc" ]
      deps = [
        ":android_codec_factory_helper",
        ":video_codecs_test_framework",
        ":videocodec_test_impl",
        "../../api:create_videocodec_test_fixture_api",
        "../../api:videocodec_test_fixture_api",
        "../../api/video_codecs:video_codecs_api",
        "../../media:media_constants",
        "../../rtc_base:stringutils",
        "../../sdk/android:libjingle_peerconnection_java",
        "../../test:fileutils",
        "../../test:test_support",
      ]
      data_deps = [ "../../resources:video_coding_tests_data" ]
    }
  }

  if (is_ios || is_mac) {
    rtc_library("objc_codec_factory_helper") {
      sources = [
        "codecs/test/objc_codec_factory_helper.h",
        "codecs/test/objc_codec_factory_helper.mm",
      ]

      deps = [
        "../../api/video:video_frame",
        "../../api/video:video_rtp_headers",
        "../../api/video_codecs:video_codecs_api",
        "../../media:rtc_audio_video",
        "../../sdk:native_api",
        "../../sdk:peerconnectionfactory_base_objc",
        "../../sdk:videocodec_objc",
        "../../sdk:videosource_objc",
        "../../sdk:videotoolbox_objc",
      ]
    }
  }

  rtc_library("encoded_video_frame_producer") {
    testonly = true
    sources = [
      "codecs/test/encoded_video_frame_producer.cc",
      "codecs/test/encoded_video_frame_producer.h",
    ]
    deps = [
      ":video_codec_interface",
      "../../api:create_frame_generator",
      "../../api:frame_generator_api",
      "../../api/units:timestamp",
      "../../api/video:encoded_image",
      "../../api/video:render_resolution",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
    ]
  }

  rtc_library("simulcast_test_fixture_impl") {
    testonly = true
    sources = [
      "utility/simulcast_test_fixture_impl.cc",
      "utility/simulcast_test_fixture_impl.h",
    ]

    deps = [
      ":video_codec_interface",
      ":video_coding_utility",
      "../../api:mock_video_decoder",
      "../../api:mock_video_encoder",
      "../../api:scoped_refptr",
      "../../api:simulcast_test_fixture_api",
      "../../api/environment",
      "../../api/video:encoded_image",
      "../../api/video:video_bitrate_allocator",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_library("video_codecs_test_framework") {
    testonly = true
    sources = [
      "codecs/test/video_codec_unittest.cc",
      "codecs/test/video_codec_unittest.h",
    ]

    deps = [
      ":video_codec_interface",
      ":video_coding_utility",
      "../../api:create_frame_generator",
      "../../api:field_trials",
      "../../api:frame_generator_api",
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../api/units:time_delta",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
      "../../rtc_base:macromagic",
      "../../rtc_base:rtc_event",
      "../../rtc_base/synchronization:mutex",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:test_support",
      "../../test:video_test_common",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
  }

  rtc_library("videoprocessor") {
    testonly = true
    sources = [
      "codecs/test/videoprocessor.cc",
      "codecs/test/videoprocessor.h",
    ]

    deps = [
      ":codec_globals_headers",
      ":simulcast_test_fixture_impl",
      ":video_codec_interface",
      ":video_coding_utility",
      ":videocodec_test_stats_impl",
      "../../api:create_frame_generator",
      "../../api:field_trials",
      "../../api:frame_generator_api",
      "../../api:scoped_refptr",
      "../../api:sequence_checker",
      "../../api:videocodec_test_fixture_api",
      "../../api:videocodec_test_stats_api",
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../api/task_queue",
      "../../api/units:time_delta",
      "../../api/video:builtin_video_bitrate_allocator_factory",
      "../../api/video:encoded_image",
      "../../api/video:resolution",
      "../../api/video:video_bitrate_allocator",
      "../../api/video:video_bitrate_allocator_factory",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../rtc_base:checks",
      "../../rtc_base:macromagic",
      "../../rtc_base:rtc_event",
      "../../rtc_base:task_queue_for_test",
      "../../rtc_base:timeutils",
      "../../rtc_base/synchronization:mutex",
      "../../rtc_base/system:no_unique_address",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:test_support",
      "../../test:video_frame_writer",
      "../../test:video_test_common",
      "../../test:video_test_support",
      "../rtp_rtcp:rtp_rtcp_format",
      "//third_party/libyuv",
    ]
  }

  rtc_library("videocodec_test_impl") {
    testonly = true
    sources = [
      "codecs/test/videocodec_test_fixture_impl.cc",
      "codecs/test/videocodec_test_fixture_impl.h",
    ]
    deps = [
      ":codec_globals_headers",
      ":video_coding_utility",
      ":videocodec_test_stats_impl",
      ":videoprocessor",
      ":webrtc_vp9_helpers",
      "../../api:field_trials_view",
      "../../api:make_ref_counted",
      "../../api:rtp_parameters",
      "../../api:videocodec_test_fixture_api",
      "../../api:videocodec_test_stats_api",
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../api/task_queue",
      "../../api/test/metrics:global_metrics_logger_and_exporter",
      "../../api/test/metrics:metric",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video:encoded_image",
      "../../api/video:resolution",
      "../../api/video:video_codec_constants",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../api/video_codecs:video_decoder_factory_template",
      "../../api/video_codecs:video_decoder_factory_template_dav1d_adapter",
      "../../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter",
      "../../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter",
      "../../api/video_codecs:video_decoder_factory_template_open_h264_adapter",
      "../../api/video_codecs:video_encoder_factory_template",
      "../../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
      "../../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
      "../../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
      "../../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
      "../../common_video",
      "../../media:media_constants",
      "../../rtc_base:checks",
      "../../rtc_base:cpu_info",
      "../../rtc_base:logging",
      "../../rtc_base:rtc_base_tests_utils",
      "../../rtc_base:stringutils",
      "../../rtc_base:task_queue_for_test",
      "../../rtc_base:threading",
      "../../rtc_base:timeutils",
      "../../system_wrappers",
      "../../test:create_test_field_trials",
      "../../test:fileutils",
      "../../test:test_support",
      "../../test:video_frame_writer",
      "../../test:video_test_common",
      "../../test:video_test_support",
      "../../video/config:encoder_config",
      "../../video/config:streams_config",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_library("videocodec_test_stats_impl") {
    testonly = true
    sources = [
      "codecs/test/videocodec_test_stats_impl.cc",
      "codecs/test/videocodec_test_stats_impl.h",
    ]
    deps = [
      "../../api:videocodec_test_stats_api",
      "../../api/units:data_rate",
      "../../api/units:frequency",
      "../../api/video:video_frame_type",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_numerics",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
  }

  rtc_test("video_codec_perf_tests") {
    testonly = true

    sources = [ "codecs/test/video_codec_test.cc" ]

    deps = [
      "../../api/environment",
      "../../api/test/metrics:global_metrics_logger_and_exporter",
      "../../api/units:data_rate",
      "../../api/units:frequency",
      "../../api/video:resolution",
      "../../api/video_codecs:builtin_video_decoder_factory",
      "../../api/video_codecs:builtin_video_encoder_factory",
      "../../api/video_codecs:scalability_mode",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
      "../../rtc_base:logging",
      "../../rtc_base:stringutils",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:fileutils",
      "../../test:test_flags",
      "../../test:test_support",
      "../../test:video_codec_tester",
      "svc:scalability_mode_util",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/functional:any_invocable",
    ]

    if (is_android) {
      deps += [
        ":android_codec_factory_helper",
        "../../sdk/android:hwcodecs_java",
      ]
    }

    data = [ "../../resources/FourPeople_1280x720_30.yuv" ]
  }

  rtc_test_suite("video_coding_unittests") {
    tests = [
      ":av1_qp_parser_unittest",
      ":bandwidth_quality_scaler_unittest",
      ":chain_diff_calculator_unittest",
      ":decoded_frames_history_unittest",
      ":default_temporal_layers_unittest",
      ":encoder_speed_controller_impl_unittest",
      ":fec_controller_unittest",
      ":frame_dependencies_calculator_unittest",
      ":frame_dropper_unittest",
      ":frame_helpers_unittest",
      ":framerate_controller_deprecated_unittest",
      ":generic_decoder_unittest",
      ":h264_impl_unittest",
      ":h264_sprop_parameter_sets_unittest",
      ":h264_sps_pps_tracker_unittest",
      ":h26x_packet_buffer_unittest",
      ":ivf_file_reader_unittest",
      ":ivf_file_writer_unittest",
      ":libvpx_vp8_simulcast_test",
      ":loss_notification_controller_unittest",
      ":nack_requester_unittest",
      ":qp_parser_unittest",
      ":quality_scaler_unittest",
      ":reference_buffer_tracker_unittest",
      ":rtp_frame_reference_finder_unittest",
      ":rtp_vp8_ref_finder_unittest",
      ":rtp_vp9_ref_finder_unittest",
      ":screenshare_layers_unittest",
      ":sframe_packet_buffer_unittest",
      ":simulcast_rate_allocator_unittest",
      ":svc_config_unittest",
      ":temporal_layer_rate_tracker_unittest",
      ":video_codec_initializer_unittest",
      ":video_decoder_database_unittest",
      ":video_encoder_decoder_instantiation_tests",
      ":video_histogram_unittest",
      ":video_packet_buffer_unittest",
      ":video_receiver2_unittest",
      ":videocodec_test_av1",
      ":videocodec_test_fixture_config_unittest",
      ":videocodec_test_libvpx",
      ":videocodec_test_stats_impl_unittest",
      ":videoprocessor_unittest",
      ":vp8_impl_unittest",
      ":vp9_uncompressed_header_parser_unittest",
      "codecs/av1:av1_svc_config_unittest",
      "codecs/av1:dav1d_decoder_unittest",
      "timing:decode_time_percentile_filter_unittest",
      "timing:timing_unittest",
    ]
    if (enable_libaom) {
      tests += [
        "codecs/av1:libaom_av1_encoder_unittest",
        "codecs/av1:libaom_av1_unittest",
        "codecs/av1:libaom_speed_config_factory_unittest",
      ]
    }
    if (rtc_use_h264) {
      tests += [
        ":h264_encoder_impl_unittest",
        ":h264_simulcast_unittest",
        ":videocodec_test_openh264",
      ]
    }
    if (rtc_libvpx_build_vp9) {
      tests += [
        ":vp9_frame_buffer_pool_unittest",
        ":vp9_impl_unittest",
      ]
    }
    if (is_ios || is_mac) {
      tests += [ ":videocodec_test_videotoolbox" ]
    }
  }

  rtc_cc_test("chain_diff_calculator_unittest") {
    sources = [ "chain_diff_calculator_unittest.cc" ]
    deps = [
      ":chain_diff_calculator",
      "../../test:test_support",
    ]
  }
  if (rtc_use_h264) {
    rtc_cc_test("h264_encoder_impl_unittest") {
      sources = [ "codecs/h264/h264_encoder_impl_unittest.cc" ]
      deps = [
        ":codec_globals_headers",
        ":video_codec_interface",
        ":webrtc_h264",
        "../../api:create_frame_generator",
        "../../api:frame_generator_api",
        "../../api:make_ref_counted",
        "../../api:mock_video_encoder",
        "../../api:scoped_refptr",
        "../../api/video:video_frame",
        "../../api/video_codecs:video_codecs_api",
        "../../test:create_test_environment",
        "../../test:test_support",
      ]
    }

    rtc_cc_test("h264_simulcast_unittest") {
      sources = [ "codecs/h264/h264_simulcast_unittest.cc" ]
      deps = [
        ":webrtc_h264",
        "../../api:create_simulcast_test_fixture_api",
        "../../api:simulcast_test_fixture_api",
        "../../api/environment",
        "../../api/test/video:function_video_factory",
        "../../api/video_codecs:video_codecs_api",
        "../../test:test_support",
      ]
    }
  }

  rtc_cc_test("videocodec_test_fixture_config_unittest") {
    sources = [ "codecs/test/videocodec_test_fixture_config_unittest.cc" ]
    deps = [
      "../../api:create_videocodec_test_fixture_api",
      "../../api:videocodec_test_fixture_api",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../test:test_support",
      "../../test:video_test_common",
    ]
  }

  rtc_cc_test("videocodec_test_stats_impl_unittest") {
    sources = [ "codecs/test/videocodec_test_stats_impl_unittest.cc" ]
    deps = [
      ":videocodec_test_stats_impl",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("videoprocessor_unittest") {
    sources = [ "codecs/test/videoprocessor_unittest.cc" ]
    deps = [
      ":videocodec_test_stats_impl",
      ":videoprocessor",
      "../../api:create_videocodec_test_fixture_api",
      "../../api:mock_video_decoder",
      "../../api:mock_video_encoder",
      "../../api:videocodec_test_fixture_api",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../media:media_constants",
      "../../rtc_base:task_queue_for_test",
      "../../test:create_test_environment",
      "../../test:test_support",
      "../../test:video_test_support",
    ]
  }

  rtc_cc_test("default_temporal_layers_unittest") {
    sources = [ "codecs/vp8/default_temporal_layers_unittest.cc" ]
    deps = [
      ":video_codec_interface",
      ":video_coding_utility",
      ":webrtc_vp8",
      ":webrtc_vp8_temporal_layers",
      "../../api/transport/rtp:dependency_descriptor",
      "../../api/video:video_bitrate_allocation",
      "../../api/video:video_bitrate_allocator",
      "../../api/video:video_codec_constants",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
    if (rtc_build_libvpx) {
      deps += [ rtc_libvpx_dir ]
    }
  }

  rtc_cc_test("libvpx_vp8_simulcast_test") {
    sources = [ "codecs/vp8/libvpx_vp8_simulcast_test.cc" ]
    deps = [
      ":webrtc_vp8",
      "../../api:create_simulcast_test_fixture_api",
      "../../api:simulcast_test_fixture_api",
      "../../api/environment",
      "../../api/test/video:function_video_factory",
      "../../api/video_codecs:video_codecs_api",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("screenshare_layers_unittest") {
    sources = [ "codecs/vp8/screenshare_layers_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":video_codec_interface",
      ":webrtc_vp8",
      ":webrtc_vp8_temporal_layers",
      "../../api/environment",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
      "../../system_wrappers:metrics",
      "../../test:create_test_environment",
      "../../test:test_support",
      "../../test/time_controller",
    ]
    if (rtc_build_libvpx) {
      deps += [ rtc_libvpx_dir ]
    }
  }

  rtc_cc_test("svc_config_unittest") {
    sources = [ "codecs/vp9/svc_config_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":webrtc_vp9_helpers",
      "../../api/video:video_frame",
      "../../api/video_codecs:scalability_mode",
      "../../api/video_codecs:video_codecs_api",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("video_decoder_database_unittest") {
    sources = [ "decoder_database_unittest.cc" ]
    deps = [
      ":video_coding",
      "../../api:mock_video_decoder",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("fec_controller_unittest") {
    sources = [ "fec_controller_unittest.cc" ]
    deps = [
      ":video_coding",
      "..:module_fec_api",
      "../../api:fec_controller_api",
      "../../system_wrappers",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("frame_dependencies_calculator_unittest") {
    sources = [ "frame_dependencies_calculator_unittest.cc" ]
    deps = [
      ":frame_dependencies_calculator",
      "../../common_video/generic_frame_descriptor",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("frame_helpers_unittest") {
    sources = [ "frame_helpers_unittest.cc" ]
    deps = [
      ":frame_helpers",
      "../../api:scoped_refptr",
      "../../api/units:timestamp",
      "../../api/video:encoded_frame",
      "../../api/video:encoded_image",
      "../../api/video/corruption_detection:frame_instrumentation_data",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/container:inlined_vector",
    ]
  }

  rtc_cc_test("generic_decoder_unittest") {
    sources = [ "generic_decoder_unittest.cc" ]
    deps = [
      ":video_codec_interface",
      ":video_coding",
      "../../api:field_trials",
      "../../api:rtp_packet_info",
      "../../api:scoped_refptr",
      "../../api/environment",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video:encoded_frame",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../api/video/corruption_detection:frame_instrumentation_data",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video:corruption_score_calculator",
      "../../common_video/test:utilities",
      "../../system_wrappers",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:fake_video_codecs",
      "../../test:test_support",
      "../../test/time_controller",
      "timing:timing_module",
    ]
  }

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

  rtc_cc_test("h264_sps_pps_tracker_unittest") {
    sources = [ "h264_sps_pps_tracker_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":video_coding",
      "../../api/video:video_frame",
      "../../common_video",
      "../../test:test_support",
      "../rtp_rtcp:rtp_video_header",
    ]
  }

  rtc_cc_test("h26x_packet_buffer_unittest") {
    sources = [ "h26x_packet_buffer_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":h26x_packet_buffer",
      "../../api/video:render_resolution",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../common_video",
      "../../rtc_base:checks",
      "../../rtc_base:copy_on_write_buffer",
      "../../rtc_base/system:unused",
      "../../test:test_support",
      "../rtp_rtcp:rtp_video_header",
    ]
  }

  rtc_cc_test("video_histogram_unittest") {
    sources = [ "histogram_unittest.cc" ]
    deps = [
      ":nack_requester",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("loss_notification_controller_unittest") {
    sources = [ "loss_notification_controller_unittest.cc" ]
    deps = [
      ":video_coding",
      "..:module_api",
      "../../rtc_base:checks",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("nack_requester_unittest") {
    sources = [ "nack_requester_unittest.cc" ]
    deps = [
      ":nack_requester",
      "..:module_api",
      "../../api/task_queue",
      "../../api/units:time_delta",
      "../../rtc_base:checks",
      "../../system_wrappers",
      "../../test:create_test_field_trials",
      "../../test:run_loop",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("video_packet_buffer_unittest") {
    sources = [ "packet_buffer_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":packet_buffer",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../common_video",
      "../../rtc_base:checks",
      "../../rtc_base:copy_on_write_buffer",
      "../../rtc_base:random",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("rtp_frame_reference_finder_unittest") {
    sources = [ "rtp_frame_reference_finder_unittest.cc" ]
    deps = [
      ":video_coding",
      "../../api:rtp_packet_info",
      "../../api/video:encoded_frame",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../rtc_base:random",
      "../../test:test_support",
      "../rtp_rtcp",
      "../rtp_rtcp:rtp_video_header",
    ]
  }

  rtc_cc_test("rtp_vp8_ref_finder_unittest") {
    sources = [ "rtp_vp8_ref_finder_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":video_coding",
      "../../api:rtp_packet_info",
      "../../api/video:encoded_frame",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../test:test_support",
      "../rtp_rtcp",
      "../rtp_rtcp:rtp_video_header",
    ]
  }

  rtc_cc_test("rtp_vp9_ref_finder_unittest") {
    sources = [ "rtp_vp9_ref_finder_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":video_coding",
      "../../api:rtp_packet_info",
      "../../api/video:encoded_frame",
      "../../api/video:encoded_image",
      "../../api/video:video_codec_constants",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../rtc_base:checks",
      "../../test:test_support",
      "../rtp_rtcp",
      "../rtp_rtcp:rtp_video_header",
    ]
  }

  rtc_cc_test("sframe_packet_buffer_unittest") {
    sources = [ "sframe_packet_buffer_unittest.cc" ]
    deps = [
      ":sframe_packet_buffer",
      "../../test:test_support",
      "../rtp_rtcp:rtp_rtcp_format",
      "../rtp_rtcp:sframe_descriptor",
      "../rtp_rtcp:sframe_rtp_packet_received",
    ]
  }

  rtc_cc_test("av1_qp_parser_unittest") {
    sources = [ "utility/av1_qp_parser_unittest.cc" ]
    deps = [
      ":av1_qp_parser",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("bandwidth_quality_scaler_unittest") {
    sources = [ "utility/bandwidth_quality_scaler_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api/task_queue",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_event",
      "../../rtc_base:task_queue_for_test",
      "../../rtc_base/experiments:encoder_info_settings",
      "../../test:test_support",
      "../../test/time_controller",
    ]
  }

  rtc_cc_test("decoded_frames_history_unittest") {
    sources = [ "utility/decoded_frames_history_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("encoder_speed_controller_impl_unittest") {
    sources = [ "utility/encoder_speed_controller_impl_unittest.cc" ]
    deps = [
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video_codecs:encoder_speed_controller_factory",
      "../../api/video_codecs:video_codecs_api",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("frame_dropper_unittest") {
    sources = [ "utility/frame_dropper_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("framerate_controller_deprecated_unittest") {
    sources = [ "utility/framerate_controller_deprecated_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("ivf_file_reader_unittest") {
    sources = [ "utility/ivf_file_reader_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api:scoped_refptr",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../rtc_base/system:file_wrapper",
      "../../test:fileutils",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("ivf_file_writer_unittest") {
    sources = [ "utility/ivf_file_writer_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../rtc_base/system:file_wrapper",
      "../../test:fileutils",
      "../../test:test_support",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
  }

  rtc_cc_test("qp_parser_unittest") {
    sources = [ "utility/qp_parser_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api/video:video_codec_constants",
      "../../api/video:video_frame",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("quality_scaler_unittest") {
    sources = [ "utility/quality_scaler_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api:field_trials",
      "../../api:field_trials_view",
      "../../api/units:time_delta",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:rtc_event",
      "../../rtc_base:task_queue_for_test",
      "../../test:create_test_field_trials",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("reference_buffer_tracker_unittest") {
    sources = [ "utility/reference_buffer_tracker_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api/units:timestamp",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("simulcast_rate_allocator_unittest") {
    sources = [ "utility/simulcast_rate_allocator_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api:field_trials",
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../api/units:data_rate",
      "../../api/video:video_bitrate_allocation",
      "../../api/video:video_bitrate_allocator",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("temporal_layer_rate_tracker_unittest") {
    sources = [ "utility/temporal_layer_rate_tracker_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api/units:data_rate",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("vp9_uncompressed_header_parser_unittest") {
    sources = [ "utility/vp9_uncompressed_header_parser_unittest.cc" ]
    deps = [
      ":video_coding_utility",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("video_codec_initializer_unittest") {
    sources = [ "video_codec_initializer_unittest.cc" ]
    deps = [
      ":codec_globals_headers",
      ":video_coding",
      "../../api:make_ref_counted",
      "../../api:mock_fec_controller_override",
      "../../api:scoped_refptr",
      "../../api/environment",
      "../../api/video:builtin_video_bitrate_allocator_factory",
      "../../api/video:video_bitrate_allocation",
      "../../api/video:video_bitrate_allocator",
      "../../api/video:video_bitrate_allocator_factory",
      "../../api/video:video_frame",
      "../../api/video_codecs:scalability_mode",
      "../../api/video_codecs:video_codecs_api",
      "../../api/video_codecs:vp8_temporal_layers_factory",
      "../../rtc_base:checks",
      "../../test:create_test_environment",
      "../../test:test_support",
      "../../video/config:encoder_config",
    ]
  }

  rtc_cc_test("video_receiver2_unittest") {
    sources = [ "video_receiver2_unittest.cc" ]
    deps = [
      ":video_codec_interface",
      ":video_coding",
      "../../api:field_trials",
      "../../api:mock_video_decoder",
      "../../api/environment",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video:encoded_frame",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video/test:utilities",
      "../../system_wrappers",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:test_support",
      "timing:timing_module",
    ]
  }

  rtc_cc_test("h264_impl_unittest") {
    sources = [ "codecs/h264/test/h264_impl_unittest.cc" ]
    deps = [
      ":video_codec_interface",
      ":video_codecs_test_framework",
      ":webrtc_h264",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../test:test_support",
      "../../test:video_test_common",
    ]
  }

  rtc_cc_test("video_encoder_decoder_instantiation_tests") {
    sources = [ "codecs/test/video_encoder_decoder_instantiation_tests.cc" ]
    deps = [
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../rtc_base:checks",
      "../../test:test_support",
      "../../test:video_test_common",
    ]
    if (is_android) {
      deps += [ ":android_codec_factory_helper" ]
    }
    if (is_ios || is_mac) {
      deps += [ ":objc_codec_factory_helper" ]
    }
  }

  rtc_cc_test("videocodec_test_av1") {
    sources = [ "codecs/test/videocodec_test_av1.cc" ]
    deps = [
      "../../api:create_videocodec_test_fixture_api",
      "../../api:videocodec_test_fixture_api",
      "../../api/video_codecs:scalability_mode",
      "../../media:media_constants",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:video_coding_tests_data" ]
    if (is_ios) {
      deps += [ "../../resources:video_coding_tests_bundle_data" ]
    }
  }

  rtc_cc_test("videocodec_test_libvpx") {
    sources = [ "codecs/test/videocodec_test_libvpx.cc" ]
    deps = [
      ":video_coding_utility",
      "../../api:create_videocodec_test_fixture_api",
      "../../api:videocodec_test_fixture_api",
      "../../api:videocodec_test_stats_api",
      "../../api/environment",
      "../../api/test/video:function_video_factory",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../media:media_constants",
      "../../media:rtc_internal_video_codecs",
      "../../media:rtc_simulcast_encoder_adapter",
      "../../rtc_base:checks",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:video_coding_tests_data" ]
    if (is_ios) {
      deps += [ "../../resources:video_coding_tests_bundle_data" ]
    }
  }

  if (rtc_use_h264) {
    rtc_cc_test("videocodec_test_openh264") {
      sources = [ "codecs/test/videocodec_test_openh264.cc" ]
      deps = [
        ":codec_globals_headers",
        ":videocodec_test_impl",
        "../../api:create_videocodec_test_fixture_api",
        "../../api:videocodec_test_fixture_api",
        "../../media:media_constants",
        "../../test:fileutils",
        "../../test:test_support",
      ]
    }
  }

  if (is_ios || is_mac) {
    rtc_cc_test("videocodec_test_videotoolbox") {
      sources = [ "codecs/test/videocodec_test_videotoolbox.cc" ]
      deps = [
        ":objc_codec_factory_helper",
        ":videocodec_test_impl",
        "../../api:create_videocodec_test_fixture_api",
        "../../api:videocodec_test_fixture_api",
        "../../api/video_codecs:video_codecs_api",
        "../../media:media_constants",
        "../../test:fileutils",
        "../../test:test_support",
      ]
    }
  }

  rtc_cc_test("vp8_impl_unittest") {
    sources = [ "codecs/vp8/test/vp8_impl_unittest.cc" ]
    deps = [
      ":mock_libvpx_interface",
      ":video_codec_interface",
      ":video_codecs_test_framework",
      ":video_coding_utility",
      ":webrtc_vp8",
      "../../api:create_frame_generator",
      "../../api:field_trials",
      "../../api:frame_generator_api",
      "../../api:make_ref_counted",
      "../../api:mock_video_decoder",
      "../../api:mock_video_encoder",
      "../../api:scoped_refptr",
      "../../api/environment:environment_factory",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video:encoded_image",
      "../../api/video:render_resolution",
      "../../api/video:video_bitrate_allocation",
      "../../api/video:video_codec_constants",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../rtc_base:timeutils",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:test_support",
      "../../test:video_test_common",
      "//third_party/abseil-cpp/absl/container:inlined_vector",
      "//third_party/abseil-cpp/absl/memory",
    ]
    if (rtc_build_libvpx) {
      deps += [ rtc_libvpx_dir ]
    }
  }

  if (rtc_libvpx_build_vp9) {
    rtc_cc_test("vp9_frame_buffer_pool_unittest") {
      sources = [ "codecs/vp9/vp9_frame_buffer_pool_unittest.cc" ]
      deps = [
        ":webrtc_vp9",
        "../../api/video:video_codec_constants",
        "../../test:test_support",
      ]
      if (rtc_build_libvpx) {
        deps += [ rtc_libvpx_dir ]
      }
    }

    rtc_cc_test("vp9_impl_unittest") {
      sources = [ "codecs/vp9/test/vp9_impl_unittest.cc" ]
      deps = [
        ":codec_globals_headers",
        ":encoded_video_frame_producer",
        ":mock_libvpx_interface",
        ":video_codec_interface",
        ":video_codecs_test_framework",
        ":video_coding_utility",
        ":webrtc_libvpx_interface",
        ":webrtc_vp9",
        ":webrtc_vp9_helpers",
        "../../api:create_frame_generator",
        "../../api:field_trials",
        "../../api:frame_generator_api",
        "../../api:make_ref_counted",
        "../../api:mock_video_encoder",
        "../../api:scoped_refptr",
        "../../api/environment:environment_factory",
        "../../api/units:data_rate",
        "../../api/units:timestamp",
        "../../api/video:encoded_image",
        "../../api/video:video_bitrate_allocation",
        "../../api/video:video_codec_constants",
        "../../api/video:video_frame",
        "../../api/video:video_frame_type",
        "../../api/video:video_rtp_headers",
        "../../api/video_codecs:scalability_mode",
        "../../api/video_codecs:video_codecs_api",
        "../../common_video",
        "../../test:create_test_environment",
        "../../test:create_test_field_trials",
        "../../test:fileutils",
        "../../test:test_support",
        "../../test:video_test_common",
        "../../test:video_test_support",
        "../rtp_rtcp:rtp_rtcp_format",
        "svc:scalability_mode_util",
        "//third_party/abseil-cpp/absl/container:inlined_vector",
        "//third_party/abseil-cpp/absl/memory",
      ]
      if (rtc_build_libvpx) {
        deps += [ rtc_libvpx_dir ]
      }
      data_deps = [ "../../resources:video_coding_tests_data" ]
      if (is_ios) {
        deps += [ "../../resources:video_coding_tests_bundle_data" ]
      }
    }
  }
}
