# 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("//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_rtp_headers",
    "../../modules:module_api_public",
    "../../modules/rtp_rtcp:rtp_video_header",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base/experiments:alr_experiment",
    "../../rtc_base/experiments:rtt_mult_experiment",
    "../../rtc_base/system:rtc_export",
    "../../system_wrappers",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:variant",
  ]
}

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

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

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

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

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

  deps = [
    "..:module_api",
    "../../api:sequence_checker",
    "../../api/task_queue",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:rtc_task_queue",
    "../../rtc_base/experiments:field_trial_parser",
    "../../rtc_base/task_utils:pending_task_safety_flag",
    "../../rtc_base/task_utils:repeating_task",
    "../../system_wrappers",
    "../../system_wrappers:field_trial",
    "../utility",
  ]
}

rtc_library("packet_buffer") {
  sources = [
    "packet_buffer.cc",
    "packet_buffer.h",
  ]
  deps = [
    ":codec_globals_headers",
    "../../api:array_view",
    "../../api:rtp_packet_info",
    "../../api/units:timestamp",
    "../../api/video:encoded_image",
    "../../api/video:video_frame_type",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../rtp_rtcp:rtp_rtcp_format",
    "../rtp_rtcp:rtp_video_header",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/types:variant",
  ]
}

rtc_library("h264_packet_buffer") {
  sources = [
    "h264_packet_buffer.cc",
    "h264_packet_buffer.h",
  ]
  deps = [
    ":codec_globals_headers",
    ":packet_buffer",
    "../../api:array_view",
    "../../api:rtp_packet_info",
    "../../api/units:timestamp",
    "../../api/video:encoded_image",
    "../../api/video:video_frame_type",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../rtp_rtcp:rtp_rtcp_format",
    "../rtp_rtcp:rtp_video_header",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("frame_buffer") {
  sources = [
    "frame_buffer3.cc",
    "frame_buffer3.h",
  ]
  deps = [
    ":video_coding_utility",
    "../../api/units:timestamp",
    "../../api/video:encoded_frame",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_numerics",
    "../../system_wrappers:field_trial",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("video_coding") {
  visibility = [ "*" ]
  sources = [
    "codec_timer.cc",
    "codec_timer.h",
    "decoder_database.cc",
    "decoder_database.h",
    "fec_controller_default.cc",
    "fec_controller_default.h",
    "fec_rate_table.h",
    "frame_buffer2.cc",
    "frame_buffer2.h",
    "frame_object.cc",
    "frame_object.h",
    "generic_decoder.cc",
    "generic_decoder.h",
    "h264_sprop_parameter_sets.cc",
    "h264_sprop_parameter_sets.h",
    "h264_sps_pps_tracker.cc",
    "h264_sps_pps_tracker.h",
    "include/video_codec_initializer.h",
    "inter_frame_delay.cc",
    "inter_frame_delay.h",
    "internal_defines.h",
    "jitter_estimator.cc",
    "jitter_estimator.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",
    "rtt_filter.cc",
    "rtt_filter.h",
    "timestamp_map.cc",
    "timestamp_map.h",
    "timing.cc",
    "timing.h",
    "unique_timestamp_counter.cc",
    "unique_timestamp_counter.h",
    "video_codec_initializer.cc",
    "video_receiver2.cc",
    "video_receiver2.h",
  ]

  deps = [
    ":codec_globals_headers",
    ":encoded_frame",
    ":frame_buffer",
    ":packet_buffer",
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_vp9_helpers",
    "..:module_api",
    "..:module_api_public",
    "..:module_fec_api",
    "../../api:array_view",
    "../../api:fec_controller_api",
    "../../api:rtp_headers",
    "../../api:rtp_packet_info",
    "../../api:scoped_refptr",
    "../../api:sequence_checker",
    "../../api/units:data_rate",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../api/video:builtin_video_bitrate_allocator_factory",
    "../../api/video:encoded_frame",
    "../../api/video:encoded_image",
    "../../api/video:video_adaptation",
    "../../api/video:video_adaptation",
    "../../api/video:video_bitrate_allocation",
    "../../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",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:rtc_task_queue",
    "../../rtc_base:threading",
    "../../rtc_base/experiments:alr_experiment",
    "../../rtc_base/experiments:field_trial_parser",
    "../../rtc_base/experiments:jitter_upper_bound_experiment",
    "../../rtc_base/experiments:min_video_bitrate_experiment",
    "../../rtc_base/experiments:rate_control_settings",
    "../../rtc_base/experiments:rtt_mult_experiment",
    "../../rtc_base/synchronization:mutex",
    "../../rtc_base/system:no_unique_address",
    "../../rtc_base/task_utils:repeating_task",
    "../../rtc_base/task_utils:to_queued_task",
    "../../rtc_base/third_party/base64",
    "../../rtc_base/time:timestamp_extrapolator",
    "../../system_wrappers",
    "../../system_wrappers:field_trial",
    "../../system_wrappers:metrics",
    "../rtp_rtcp",
    "../rtp_rtcp:rtp_rtcp_format",
    "../rtp_rtcp:rtp_video_header",
    "codecs/av1:av1_svc_config",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:variant",
  ]
}

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",
    "video_coding_defines.cc",
  ]
  deps = [
    ":codec_globals_headers",
    "../../api/video:video_frame",
    "../../api/video:video_rtp_headers",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../common_video/generic_frame_descriptor",
    "../../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("video_coding_legacy") {
  visibility = [ ":video_coding_unittests" ]
  sources = [
    "decoding_state.cc",
    "decoding_state.h",
    "event_wrapper.cc",
    "event_wrapper.h",
    "frame_buffer.cc",
    "frame_buffer.h",
    "include/video_coding.h",
    "jitter_buffer.cc",
    "jitter_buffer.h",
    "jitter_buffer_common.h",
    "packet.cc",
    "packet.h",
    "receiver.cc",
    "receiver.h",
    "session_info.cc",
    "session_info.h",
    "video_coding_impl.cc",
    "video_coding_impl.h",
    "video_receiver.cc",
  ]
  deps = [
    ":codec_globals_headers",
    ":encoded_frame",
    ":video_codec_interface",
    ":video_coding",
    "..:module_api",
    "..:module_api_public",
    "../../api:rtp_headers",
    "../../api:rtp_packet_info",
    "../../api:sequence_checker",
    "../../api/units:timestamp",
    "../../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",
    "../../modules/rtp_rtcp:rtp_video_header",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_event",
    "../../rtc_base/synchronization:mutex",
    "../../system_wrappers",
    "../rtp_rtcp:rtp_rtcp_format",
    "../rtp_rtcp:rtp_video_header",
    "../utility",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:variant",
  ]
}

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" ]
}

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/simulcast_rate_allocator.cc",
    "utility/simulcast_rate_allocator.h",
    "utility/simulcast_utility.cc",
    "utility/simulcast_utility.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 = [
    ":video_codec_interface",
    "../../api:array_view",
    "../../api:scoped_refptr",
    "../../api:sequence_checker",
    "../../api/video:encoded_frame",
    "../../api/video:encoded_image",
    "../../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_codecs:video_codecs_api",
    "../../common_video",
    "../../modules/rtp_rtcp",
    "../../rtc_base:bitstream_reader",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:rtc_task_queue",
    "../../rtc_base:weak_ptr",
    "../../rtc_base/experiments:bandwidth_quality_scaler_settings",
    "../../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/experiments:stable_target_rate_experiment",
    "../../rtc_base/synchronization:mutex",
    "../../rtc_base/system:arch",
    "../../rtc_base/system:file_wrapper",
    "../../rtc_base/system:no_unique_address",
    "../../rtc_base/task_utils:repeating_task",
    "../../rtc_base/task_utils:to_queued_task",
    "../../system_wrappers:field_trial",
    "../rtp_rtcp:rtp_rtcp_format",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/numeric:bits",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

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 = [
    ":video_codec_interface",
    ":video_coding_utility",
    "../../api/video:video_frame",
    "../../api/video:video_frame_i010",
    "../../api/video:video_rtp_headers",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../media:rtc_media_base",
    "../../rtc_base",
    "../../rtc_base:checks",
    "../../rtc_base/system:rtc_export",
    "../../system_wrappers:field_trial",
    "../../system_wrappers:metrics",
    "//third_party/libyuv",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]

  if (rtc_use_h264) {
    deps += [
      "//third_party/ffmpeg",
      "//third_party/openh264:encoder",
    ]
    if (!build_with_mozilla) {
      deps += [ "../../media:rtc_media_base" ]
    }
  }
}

rtc_library("webrtc_multiplex") {
  sources = [
    "codecs/multiplex/augmented_video_frame_buffer.cc",
    "codecs/multiplex/include/augmented_video_frame_buffer.h",
    "codecs/multiplex/include/multiplex_decoder_adapter.h",
    "codecs/multiplex/include/multiplex_encoder_adapter.h",
    "codecs/multiplex/multiplex_decoder_adapter.cc",
    "codecs/multiplex/multiplex_encoded_image_packer.cc",
    "codecs/multiplex/multiplex_encoded_image_packer.h",
    "codecs/multiplex/multiplex_encoder_adapter.cc",
  ]

  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    "../../api:fec_controller_api",
    "../../api:scoped_refptr",
    "../../api/video:encoded_image",
    "../../api/video:video_frame",
    "../../api/video:video_rtp_headers",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../media:rtc_media_base",
    "../../rtc_base",
    "../../rtc_base:checks",
    "../../rtc_base/synchronization:mutex",
    "../rtp_rtcp:rtp_rtcp_format",
  ]
}

# 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",
  ]
}

# 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",
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_libvpx_interface",
    ":webrtc_vp8_temporal_layers",
    "../../api:fec_controller_api",
    "../../api:scoped_refptr",
    "../../api/video:encoded_image",
    "../../api/video:video_frame",
    "../../api/video:video_rtp_headers",
    "../../api/video_codecs:video_codecs_api",
    "../../api/video_codecs:vp8_temporal_layers_factory",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base/experiments:cpu_speed_experiment",
    "../../rtc_base/experiments:encoder_info_settings",
    "../../rtc_base/experiments:field_trial_parser",
    "../../rtc_base/experiments:rate_control_settings",
    "../../system_wrappers:field_trial",
    "../../system_wrappers:metrics",
    "//third_party/libyuv",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

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.h",
    "codecs/vp8/temporal_layers_checker.cc",
  ]

  deps = [
    ":codec_globals_headers",
    ":video_codec_interface",
    ":video_coding_utility",
    "../../api:fec_controller_api",
    "../../api/video_codecs:video_codecs_api",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../system_wrappers:field_trial",
    "../../system_wrappers:metrics",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

# 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",
    ":video_codec_interface",
    "../../api/video:video_bitrate_allocation",
    "../../api/video:video_bitrate_allocator",
    "../../api/video:video_codec_constants",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base/experiments:stable_target_rate_experiment",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ]
}

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 = [
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_libvpx_interface",
    ":webrtc_vp9_helpers",
    "../../api:fec_controller_api",
    "../../api:refcountedbase",
    "../../api:scoped_refptr",
    "../../api/transport:field_trial_based_config",
    "../../api/transport:webrtc_key_value_config",
    "../../api/video:video_frame",
    "../../api/video:video_frame_i010",
    "../../api/video:video_rtp_headers",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../media:rtc_media_base",
    "../../rtc_base",
    "../../rtc_base:checks",
    "../../rtc_base/experiments:encoder_info_settings",
    "../../rtc_base/experiments:field_trial_parser",
    "../../rtc_base/experiments:rate_control_settings",
    "../../rtc_base/synchronization:mutex",
    "../../system_wrappers:field_trial",
    "../rtp_rtcp:rtp_rtcp_format",
    "svc:scalability_structures",
    "svc:scalable_video_controller",
    "svc:svc_rate_allocator",
    "//third_party/libyuv",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings:strings",
  ]
  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",
        "../../rtc_base:checks",
        "../../rtc_base:ignore_wundef",
        "../../rtc_base:rtc_base_approved",
        "../../sdk/android:native_api_base",
        "../../sdk/android:native_api_codecs",
        "../../sdk/android:native_api_jni",
        "//base",
      ]
    }
  }

  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",
        "../../media:rtc_media_base",
        "../../rtc_base:rtc_base_approved",
        "../../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/transport/rtp:dependency_descriptor",
      "../../api/video:encoded_image",
      "../../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",
      ":video_coding_utility",
      "../../api:mock_video_decoder",
      "../../api:mock_video_encoder",
      "../../api:simulcast_test_fixture_api",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../test:test_support",
    ]
  }

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

    deps = [
      ":codec_globals_headers",
      ":video_codec_interface",
      ":video_coding",
      ":video_coding_utility",
      ":videocodec_test_stats_impl",
      ":webrtc_vp9_helpers",
      "..:module_api",
      "../../api:create_frame_generator",
      "../../api:frame_generator_api",
      "../../api:scoped_refptr",
      "../../api:sequence_checker",
      "../../api:videocodec_test_fixture_api",
      "../../api/task_queue",
      "../../api/video:builtin_video_bitrate_allocator_factory",
      "../../api/video:encoded_image",
      "../../api/video:video_bitrate_allocation",
      "../../api/video:video_bitrate_allocator",
      "../../api/video:video_bitrate_allocator_factory",
      "../../api/video:video_frame",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:rtc_task_queue",
      "../../rtc_base/synchronization:mutex",
      "../../rtc_base/system:no_unique_address",
      "../../rtc_base/task_utils:to_queued_task",
      "../../test:test_support",
      "../../test:video_test_common",
      "../../test:video_test_support",
      "../rtp_rtcp:rtp_rtcp_format",
      "//third_party/libyuv",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  video_coding_modules_tests_resources = []
  if (is_android) {
    video_coding_modules_tests_resources += [
      "../../resources/foreman_128x96.yuv",
      "../../resources/foreman_160x120.yuv",
      "../../resources/foreman_176x144.yuv",
      "../../resources/foreman_240x136.yuv",
      "../../resources/foreman_320x240.yuv",
      "../../resources/foreman_480x272.yuv",
    ]
  }
  if (!is_android) {
    video_coding_modules_tests_resources += [
      "../../resources/ConferenceMotion_1280_720_50.yuv",
      "../../resources/FourPeople_1280x720_30.yuv",
    ]
  }

  num_video_coding_modules_tests_resources = 0
  foreach(i, video_coding_modules_tests_resources) {
    num_video_coding_modules_tests_resources += 1
  }

  if (num_video_coding_modules_tests_resources > 0) {
    if (is_ios || is_mac) {
      bundle_data("video_coding_modules_tests_resources_bundle_data") {
        testonly = true
        sources = video_coding_modules_tests_resources
        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
      }
    }
  }

  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_codec_interface",
      ":video_codecs_test_framework",
      ":video_coding_utility",
      ":videocodec_test_stats_impl",
      ":webrtc_vp9_helpers",
      "../../api:array_view",
      "../../api:videocodec_test_fixture_api",
      "../../api/test/video:function_video_factory",
      "../../api/transport:field_trial_based_config",
      "../../api/video:video_bitrate_allocation",
      "../../api/video_codecs:video_codecs_api",
      "../../call:video_stream_api",
      "../../common_video",
      "../../media:rtc_audio_video",
      "../../media:rtc_internal_video_codecs",
      "../../media:rtc_media_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:rtc_base_tests_utils",
      "../../rtc_base:task_queue_for_test",
      "../../system_wrappers",
      "../../test:fileutils",
      "../../test:perf_test",
      "../../test:test_support",
      "../../test:video_test_common",
      "../../test:video_test_support",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings:strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  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_fixture_api",
      "../../api/numerics",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_numerics",
      "../../rtc_base:stringutils",
      "../../test:test_common",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
  }

  rtc_library("video_coding_modules_tests") {
    testonly = true
    defines = []

    sources = [
      "codecs/h264/test/h264_impl_unittest.cc",
      "codecs/multiplex/test/multiplex_adapter_unittest.cc",
      "codecs/test/video_encoder_decoder_instantiation_tests.cc",
      "codecs/test/videocodec_test_av1.cc",
      "codecs/test/videocodec_test_libvpx.cc",
      "codecs/vp8/test/vp8_impl_unittest.cc",
    ]

    if (rtc_libvpx_build_vp9) {
      sources += [ "codecs/vp9/test/vp9_impl_unittest.cc" ]
    }

    if (rtc_use_h264) {
      sources += [ "codecs/test/videocodec_test_openh264.cc" ]
    }

    deps = [
      ":encoded_video_frame_producer",
      ":mock_libvpx_interface",
      ":video_codec_interface",
      ":video_codecs_test_framework",
      ":video_coding_utility",
      ":videocodec_test_impl",
      ":webrtc_h264",
      ":webrtc_libvpx_interface",
      ":webrtc_multiplex",
      ":webrtc_vp8",
      ":webrtc_vp9",
      ":webrtc_vp9_helpers",
      "../../api:create_frame_generator",
      "../../api:create_videocodec_test_fixture_api",
      "../../api:frame_generator_api",
      "../../api:mock_video_codec_factory",
      "../../api:mock_video_decoder",
      "../../api:mock_video_encoder",
      "../../api:scoped_refptr",
      "../../api:videocodec_test_fixture_api",
      "../../api/test/video:function_video_factory",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:rtc_software_fallback_wrappers",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../common_video/test:utilities",
      "../../media:rtc_internal_video_codecs",
      "../../media:rtc_media_base",
      "../../media:rtc_simulcast_encoder_adapter",
      "../../rtc_base",
      "../../test:explicit_key_value_config",
      "../../test:field_trial",
      "../../test:fileutils",
      "../../test:test_support",
      "../../test:video_test_common",
      "../rtp_rtcp:rtp_rtcp_format",
      "codecs/av1:dav1d_decoder",
      "codecs/av1:libaom_av1_decoder",
      "//third_party/libyuv",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]

    data = video_coding_modules_tests_resources

    if (is_android) {
      sources += [ "codecs/test/videocodec_test_mediacodec.cc" ]

      deps += [ ":android_codec_factory_helper" ]
    }

    if (is_ios || is_mac) {
      sources += [ "codecs/test/videocodec_test_videotoolbox.cc" ]

      deps += [ ":objc_codec_factory_helper" ]

      if (num_video_coding_modules_tests_resources > 0) {
        deps += [ ":video_coding_modules_tests_resources_bundle_data" ]
      }
    }

    if (rtc_build_libvpx) {
      deps += [ rtc_libvpx_dir ]
    }
  }

  rtc_library("video_coding_unittests") {
    testonly = true

    sources = [
      "chain_diff_calculator_unittest.cc",
      "codecs/test/videocodec_test_fixture_config_unittest.cc",
      "codecs/test/videocodec_test_stats_impl_unittest.cc",
      "codecs/test/videoprocessor_unittest.cc",
      "codecs/vp8/default_temporal_layers_unittest.cc",
      "codecs/vp8/libvpx_vp8_simulcast_test.cc",
      "codecs/vp8/screenshare_layers_unittest.cc",
      "codecs/vp9/svc_config_unittest.cc",
      "decoding_state_unittest.cc",
      "fec_controller_unittest.cc",
      "frame_buffer2_unittest.cc",
      "frame_buffer3_unittest.cc",
      "frame_dependencies_calculator_unittest.cc",
      "generic_decoder_unittest.cc",
      "h264_packet_buffer_unittest.cc",
      "h264_sprop_parameter_sets_unittest.cc",
      "h264_sps_pps_tracker_unittest.cc",
      "histogram_unittest.cc",
      "jitter_buffer_unittest.cc",
      "jitter_estimator_tests.cc",
      "loss_notification_controller_unittest.cc",
      "nack_module_unittest.cc",
      "nack_requester_unittest.cc",
      "packet_buffer_unittest.cc",
      "receiver_unittest.cc",
      "rtp_frame_reference_finder_unittest.cc",
      "rtp_vp8_ref_finder_unittest.cc",
      "rtp_vp9_ref_finder_unittest.cc",
      "session_info_unittest.cc",
      "test/stream_generator.cc",
      "test/stream_generator.h",
      "timestamp_map_unittest.cc",
      "timing_unittest.cc",
      "unique_timestamp_counter_unittest.cc",
      "utility/bandwidth_quality_scaler_unittest.cc",
      "utility/decoded_frames_history_unittest.cc",
      "utility/frame_dropper_unittest.cc",
      "utility/framerate_controller_deprecated_unittest.cc",
      "utility/ivf_file_reader_unittest.cc",
      "utility/ivf_file_writer_unittest.cc",
      "utility/qp_parser_unittest.cc",
      "utility/quality_scaler_unittest.cc",
      "utility/simulcast_rate_allocator_unittest.cc",
      "utility/vp9_uncompressed_header_parser_unittest.cc",
      "video_codec_initializer_unittest.cc",
      "video_receiver_unittest.cc",
    ]
    if (rtc_use_h264) {
      sources += [
        "codecs/h264/h264_encoder_impl_unittest.cc",
        "codecs/h264/h264_simulcast_unittest.cc",
      ]
    }

    deps = [
      ":chain_diff_calculator",
      ":codec_globals_headers",
      ":encoded_frame",
      ":frame_buffer",
      ":frame_dependencies_calculator",
      ":h264_packet_buffer",
      ":nack_requester",
      ":packet_buffer",
      ":simulcast_test_fixture_impl",
      ":video_codec_interface",
      ":video_codecs_test_framework",
      ":video_coding",
      ":video_coding_legacy",
      ":video_coding_utility",
      ":videocodec_test_impl",
      ":videocodec_test_stats_impl",
      ":webrtc_h264",
      ":webrtc_vp8",
      ":webrtc_vp8_temporal_layers",
      ":webrtc_vp9",
      ":webrtc_vp9_helpers",
      "..:module_fec_api",
      "../../api:array_view",
      "../../api:create_simulcast_test_fixture_api",
      "../../api:fec_controller_api",
      "../../api:mock_fec_controller_override",
      "../../api:mock_video_decoder",
      "../../api:mock_video_encoder",
      "../../api:scoped_refptr",
      "../../api:simulcast_test_fixture_api",
      "../../api:videocodec_test_fixture_api",
      "../../api/task_queue:default_task_queue_factory",
      "../../api/test/video:function_video_factory",
      "../../api/video:builtin_video_bitrate_allocator_factory",
      "../../api/video:encoded_frame",
      "../../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_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:video_codecs_api",
      "../../api/video_codecs:vp8_temporal_layers_factory",
      "../../common_video",
      "../../common_video/generic_frame_descriptor",
      "../../common_video/test:utilities",
      "../../media:rtc_media_base",
      "../../rtc_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:rtc_base_tests_utils",
      "../../rtc_base:rtc_numerics",
      "../../rtc_base:rtc_task_queue",
      "../../rtc_base:task_queue_for_test",
      "../../rtc_base/experiments:encoder_info_settings",
      "../../rtc_base/experiments:jitter_upper_bound_experiment",
      "../../rtc_base/synchronization:mutex",
      "../../rtc_base/system:unused",
      "../../system_wrappers",
      "../../system_wrappers:field_trial",
      "../../system_wrappers:metrics",
      "../../test:fake_video_codecs",
      "../../test:field_trial",
      "../../test:fileutils",
      "../../test:test_common",
      "../../test:test_support",
      "../../test:video_test_common",
      "../../test:video_test_support",
      "../../test/time_controller:time_controller",
      "../rtp_rtcp:rtp_rtcp_format",
      "../rtp_rtcp:rtp_video_header",
      "codecs/av1:video_coding_codecs_av1_tests",
      "deprecated:nack_module",
      "svc:scalability_structure_tests",
      "svc:svc_rate_allocator_tests",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/abseil-cpp/absl/types:optional",
      "//third_party/abseil-cpp/absl/types:variant",
    ]
    if (rtc_build_libvpx) {
      deps += [ rtc_libvpx_dir ]
    }
  }
}
