# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../webrtc.gni")

rtc_static_library("encoded_frame") {
  visibility = [ "*" ]
  sources = [
    "encoded_frame.cc",
    "encoded_frame.h",
  ]
  deps = [
    ":video_codec_interface",
    "../../:webrtc_common",
    "../../api:optional",
    "../../api/video:video_frame_i420",
    "../../common_video:common_video",
    "../../modules:module_api",
    "../../modules:module_api_public",
    "../../modules/video_coding:video_coding_utility",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base/experiments:alr_experiment",
    "../../system_wrappers:field_trial_api",
    "../../system_wrappers:system_wrappers",
  ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }
}

rtc_static_library("video_coding") {
  visibility = [ "*" ]
  allow_poison = [ "software_video_codecs" ]  # TODO(bugs.webrtc.org/7925): Remove.
  deps = []

  sources = [
    "codec_timer.cc",
    "codec_timer.h",
    "decoder_database.cc",
    "decoder_database.h",
    "decoding_state.cc",
    "decoding_state.h",
    "encoder_database.cc",
    "encoder_database.h",
    "fec_controller_default.cc",
    "fec_controller_default.h",
    "fec_rate_table.h",
    "frame_buffer.cc",
    "frame_buffer.h",
    "frame_buffer2.cc",
    "frame_buffer2.h",
    "frame_object.cc",
    "frame_object.h",
    "generic_decoder.cc",
    "generic_decoder.h",
    "generic_encoder.cc",
    "generic_encoder.h",
    "h264_sprop_parameter_sets.cc",
    "h264_sprop_parameter_sets.h",
    "h264_sps_pps_tracker.cc",
    "h264_sps_pps_tracker.h",
    "histogram.cc",
    "histogram.h",
    "include/video_codec_initializer.h",
    "include/video_coding.h",
    "inter_frame_delay.cc",
    "inter_frame_delay.h",
    "internal_defines.h",
    "jitter_buffer.cc",
    "jitter_buffer.h",
    "jitter_buffer_common.h",
    "jitter_estimator.cc",
    "jitter_estimator.h",
    "media_opt_util.cc",
    "media_opt_util.h",
    "media_optimization.cc",
    "media_optimization.h",
    "nack_fec_tables.h",
    "nack_module.cc",
    "nack_module.h",
    "packet.cc",
    "packet.h",
    "packet_buffer.cc",
    "packet_buffer.h",
    "qp_parser.cc",
    "qp_parser.h",
    "receiver.cc",
    "receiver.h",
    "rtp_frame_reference_finder.cc",
    "rtp_frame_reference_finder.h",
    "rtt_filter.cc",
    "rtt_filter.h",
    "session_info.cc",
    "session_info.h",
    "timestamp_map.cc",
    "timestamp_map.h",
    "timing.cc",
    "timing.h",
    "video_codec_initializer.cc",
    "video_coding_impl.cc",
    "video_coding_impl.h",
    "video_receiver.cc",
    "video_sender.cc",
  ]

  # TODO(jschuh): Bug 1348: fix this warning.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  if (rtc_use_builtin_sw_codecs) {
    deps += [
      ":webrtc_i420",
      ":webrtc_vp8",
      ":webrtc_vp9",
    ]
  }

  deps += [
    ":codec_globals_headers",
    ":encoded_frame",
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_h264",
    ":webrtc_vp8_helpers",
    ":webrtc_vp9_helpers",
    "..:module_api",
    "..:module_api_public",
    "../..:webrtc_common",
    "../../:typedefs",
    "../../api:fec_controller_api",
    "../../api:optional",
    "../../api/video:encoded_frame",
    "../../api/video:video_frame",
    "../../api/video:video_frame_i420",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:rtc_task_queue",
    "../../rtc_base:sequenced_task_checker",
    "../../rtc_base/experiments:alr_experiment",
    "../../rtc_base/system:fallthrough",
    "../../rtc_base/time:timestamp_extrapolator",
    "../../system_wrappers",
    "../../system_wrappers:field_trial_api",
    "../../system_wrappers:metrics_api",
    "../rtp_rtcp:rtp_rtcp_format",
    "../utility:utility",
  ]
}

rtc_source_set("video_codec_interface") {
  visibility = [ "*" ]
  sources = [
    "include/video_codec_interface.h",
    "include/video_coding_defines.h",
    "include/video_error_codes.h",
    "video_coding_defines.cc",
  ]
  deps = [
    "..:module_api",
    "../..:typedefs",
    "../..:webrtc_common",
    "../../api/video:video_frame",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video:common_video",
  ]
}

rtc_source_set("mock_headers") {
  testonly = true
  sources = [
    "include/mock/mock_video_codec_interface.h",
  ]
  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    "../..:webrtc_common",
    "../../:typedefs",
    "../../test:test_support",
  ]
}

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

rtc_source_set("video_coding_utility") {
  visibility = [ "*" ]
  sources = [
    "utility/default_video_bitrate_allocator.cc",
    "utility/default_video_bitrate_allocator.h",
    "utility/frame_dropper.cc",
    "utility/frame_dropper.h",
    "utility/ivf_file_writer.cc",
    "utility/ivf_file_writer.h",
    "utility/moving_average.cc",
    "utility/moving_average.h",
    "utility/quality_scaler.cc",
    "utility/quality_scaler.h",
    "utility/vp8_header_parser.cc",
    "utility/vp8_header_parser.h",
    "utility/vp9_uncompressed_header_parser.cc",
    "utility/vp9_uncompressed_header_parser.h",
  ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codec_interface",
    "..:module_api",
    "../..:webrtc_common",
    "../../:typedefs",
    "../../api:optional",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../modules/rtp_rtcp",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:rtc_task_queue",
    "../../rtc_base:sequenced_task_checker",
    "../../rtc_base/experiments:quality_scaling_experiment",
    "../../system_wrappers",
    "../rtp_rtcp:rtp_rtcp_format",
  ]
}

rtc_static_library("webrtc_h264") {
  visibility = [ "*" ]
  sources = [
    "codecs/h264/h264.cc",
    "codecs/h264/include/h264.h",
  ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  defines = []
  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    "../../api/video:video_frame_i420",
    "../../api/video_codecs:video_codecs_api",
    "../../media:rtc_h264_profile_id",
    "../../media:rtc_media_base",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base",
    "../../system_wrappers:metrics_api",
  ]

  if (rtc_use_h264) {
    defines += [ "WEBRTC_USE_H264" ]
    if (rtc_initialize_ffmpeg) {
      defines += [ "WEBRTC_INITIALIZE_FFMPEG" ]
    }
    sources += [
      "codecs/h264/h264_decoder_impl.cc",
      "codecs/h264/h264_decoder_impl.h",
      "codecs/h264/h264_encoder_impl.cc",
      "codecs/h264/h264_encoder_impl.h",
    ]
    deps += [
      "../../common_video",
      "//third_party/ffmpeg:ffmpeg",
      "//third_party/openh264:encoder",
    ]

    # TODO(bugs.webrtc.org/8745): stop using av_lockmgr_register
    if (!is_win) {
      cflags = [ "-Wno-deprecated-declarations" ]
    }

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

rtc_static_library("webrtc_i420") {
  visibility = [ "*" ]
  sources = [
    "codecs/i420/i420.cc",
    "codecs/i420/include/i420.h",
  ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    "../..:webrtc_common",
    "../../:typedefs",
    "../../api/video:video_frame_i420",
    "../../common_video:common_video",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../system_wrappers",
    "//third_party/libyuv",
  ]
}

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

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    "..:module_api",
    "../..:webrtc_common",
    "../../api/video:video_frame",
    "../../api/video:video_frame_i420",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video:common_video",
    "../../rtc_base:rtc_base",
    "../../system_wrappers",
    "../rtp_rtcp:rtp_rtcp_format",
  ]
}

# This target includes VP8 files that may be used for any VP8 codec, internal SW or external HW.
rtc_static_library("webrtc_vp8_helpers") {
  visibility = [ "*" ]
  sources = [
    "codecs/vp8/default_temporal_layers.cc",
    "codecs/vp8/default_temporal_layers.h",
    "codecs/vp8/include/vp8.h",
    "codecs/vp8/include/vp8_common_types.h",
    "codecs/vp8/screenshare_layers.cc",
    "codecs/vp8/screenshare_layers.h",
    "codecs/vp8/simulcast_rate_allocator.cc",
    "codecs/vp8/simulcast_rate_allocator.h",
    "codecs/vp8/temporal_layers.cc",
    "codecs/vp8/temporal_layers.h",
  ]

  # TODO(jschuh): Bug 1348: fix this warning.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    "..:module_api",
    "../..:webrtc_common",
    "../../:typedefs",
    "../../api:optional",
    "../../api/video:video_frame",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../system_wrappers",
    "../../system_wrappers:field_trial_api",
    "../../system_wrappers:metrics_api",
    "//third_party/libyuv",
  ]
}

# This target includes the internal SW codec.
rtc_static_library("webrtc_vp8") {
  visibility = [ "*" ]
  poisonous = [ "software_video_codecs" ]
  sources = [
    "codecs/vp8/include/vp8.h",
    "codecs/vp8/include/vp8_common_types.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",
  ]

  # TODO(jschuh): Bug 1348: fix this warning.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_vp8_helpers",
    "..:module_api",
    "../..:webrtc_common",
    "../../:typedefs",
    "../../api:optional",
    "../../api/video:video_frame",
    "../../api/video_codecs:video_codecs_api",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base:rtc_numerics",
    "../../system_wrappers",
    "../../system_wrappers:field_trial_api",
    "../../system_wrappers:metrics_api",
    "//third_party/libyuv",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

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

  # TODO(jschuh): Bug 1348: fix this warning.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codec_interface",
    "../..:webrtc_common",
    "../../common_video",
    "../../rtc_base:checks",
  ]
}

rtc_static_library("webrtc_vp9") {
  visibility = [ "*" ]
  poisonous = [ "software_video_codecs" ]
  if (rtc_libvpx_build_vp9) {
    sources = [
      "codecs/vp9/include/vp9.h",
      "codecs/vp9/vp9_frame_buffer_pool.cc",
      "codecs/vp9/vp9_frame_buffer_pool.h",
      "codecs/vp9/vp9_impl.cc",
      "codecs/vp9/vp9_impl.h",
    ]
  } else {
    sources = [
      "codecs/vp9/vp9_noop.cc",
    ]
  }

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codec_interface",
    ":video_coding_utility",
    ":webrtc_vp9_helpers",
    "..:module_api",
    "../..:webrtc_common",
    "../../common_video",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base",
    "../../system_wrappers",
    "../rtp_rtcp:rtp_rtcp_format",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

if (rtc_include_tests) {
  if (is_android) {
    rtc_static_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: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_static_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_codecs:video_codecs_api",
        "../../media:rtc_audio_video",
        "../../media:rtc_media_base",
        "../../modules:module_api",
        "../../rtc_base:rtc_base_approved",
        "../../sdk:common_objc",
        "../../sdk:native_api",
        "../../sdk:peerconnectionfactory_base_objc",
        "../../sdk:videocodec_objc",
        "../../sdk:videosource_objc",
        "../../sdk:videotoolbox_objc",
      ]

      if (!build_with_chromium && is_clang) {
        # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
        suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
      }
    }
  }

  rtc_source_set("simulcast_test_utility") {
    testonly = true
    sources = [
      "codecs/vp8/simulcast_test_utility.h",
    ]

    if (!build_with_chromium && is_clang) {
      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      ":mock_headers",
      ":video_codec_interface",
      ":video_coding",
      ":webrtc_vp8_helpers",
      "../../api/video:video_frame",
      "../../api/video:video_frame_i420",
      "../../common_video:common_video",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../test:test_support",
    ]
  }

  rtc_source_set("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",
    ]

    if (!build_with_chromium && is_clang) {
      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      ":video_codec_interface",
      ":video_coding",
      ":video_coding_utility",
      ":webrtc_vp8_helpers",
      ":webrtc_vp9_helpers",
      "../..:webrtc_common",
      "../../:typedefs",
      "../../api:videocodec_test_fixture_api",
      "../../api/video:video_frame",
      "../../api/video:video_frame_i420",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video:common_video",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:rtc_task_queue",
      "../../rtc_base:rtc_task_queue_for_test",
      "../../rtc_base:sequenced_task_checker",
      "../../test:test_support",
      "../../test:video_test_common",
      "../../test:video_test_support",
      "../rtp_rtcp:rtp_rtcp_format",
      "//third_party/libyuv",
    ]
  }

  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/FourPeople_1280x720_30.yuv",
      "../../resources/ConferenceMotion_1280_720_50.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_source_set("videocodec_test_impl") {
    testonly = true
    sources = [
      "codecs/test/videocodec_test_fixture_impl.cc",
      "codecs/test/videocodec_test_fixture_impl.h",
      "codecs/test/videocodec_test_stats_impl.cc",
      "codecs/test/videocodec_test_stats_impl.h",
    ]
    deps = [
      ":video_codec_interface",
      ":video_codecs_test_framework",
      ":video_coding",
      ":video_coding_utility",
      ":webrtc_multiplex",
      ":webrtc_vp8_helpers",
      ":webrtc_vp9_helpers",
      "../..:webrtc_common",
      "../../api:videocodec_test_fixture_api",
      "../../api/video_codecs:video_codecs_api",
      "../../call:video_stream_api",
      "../../common_video",
      "../../media:rtc_audio_video",
      "../../media:rtc_h264_profile_id",
      "../../media:rtc_internal_video_codecs",
      "../../media:rtc_software_fallback_wrappers",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base",
      "../../rtc_base:rtc_base_tests_utils",
      "../../rtc_base:rtc_task_queue_for_test",
      "../../system_wrappers",
      "../../test:fileutils",
      "../../test:test_common",
      "../../test:test_support",
      "../../test:video_test_common",
      "../../test:video_test_support",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
    if (!build_with_chromium && is_clang) {
      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }
    if (is_android) {
      deps += [ ":android_codec_factory_helper" ]
    }
  }

  rtc_source_set("video_coding_modules_tests") {
    testonly = true

    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_libvpx.cc",
      "codecs/test/videocodec_test_parameterized.cc",
      "codecs/vp8/test/vp8_impl_unittest.cc",
      "codecs/vp9/test/vp9_impl_unittest.cc",
    ]
    if (rtc_use_h264) {
      sources += [ "codecs/test/videocodec_test_openh264.cc" ]
    }

    deps = [
      ":video_codecs_test_framework",
      ":video_coding_utility",
      ":videocodec_test_impl",
      ":webrtc_h264",
      ":webrtc_multiplex",
      ":webrtc_vp8_helpers",
      ":webrtc_vp9",
      ":webrtc_vp9_helpers",
      "../..:webrtc_common",
      "../../api:create_videocodec_test_fixture_api",
      "../../api:mock_video_codec_factory",
      "../../api:optional",
      "../../api:videocodec_test_fixture_api",
      "../../api/video:video_frame_i420",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../media:rtc_h264_profile_id",
      "../../media:rtc_internal_video_codecs",
      "../../media:rtc_media_base",
      "../../rtc_base:rtc_base",
      "../../test:fileutils",
      "../../test:test_support",
      "../../test:video_test_common",
      "../rtp_rtcp:rtp_rtcp_format",
    ]

    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 (!build_with_chromium && is_clang) {
      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }
  }

  rtc_source_set("video_coding_unittests") {
    testonly = true

    sources = [
      "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/screenshare_layers_unittest.cc",
      "codecs/vp8/simulcast_unittest.cc",
      "codecs/vp9/svc_config_unittest.cc",
      "codecs/vp9/svc_rate_allocator_unittest.cc",
      "decoding_state_unittest.cc",
      "fec_controller_unittest.cc",
      "frame_buffer2_unittest.cc",
      "generic_encoder_unittest.cc",
      "h264_sprop_parameter_sets_unittest.cc",
      "h264_sps_pps_tracker_unittest.cc",
      "histogram_unittest.cc",
      "include/mock/mock_vcm_callbacks.h",
      "jitter_buffer_unittest.cc",
      "jitter_estimator_tests.cc",
      "nack_module_unittest.cc",
      "receiver_unittest.cc",
      "rtp_frame_reference_finder_unittest.cc",
      "session_info_unittest.cc",
      "test/stream_generator.cc",
      "test/stream_generator.h",
      "test/test_util.h",
      "timing_unittest.cc",
      "utility/default_video_bitrate_allocator_unittest.cc",
      "utility/frame_dropper_unittest.cc",
      "utility/ivf_file_writer_unittest.cc",
      "utility/mock/mock_frame_dropper.h",
      "utility/moving_average_unittest.cc",
      "utility/quality_scaler_unittest.cc",
      "utility/simulcast_rate_allocator_unittest.cc",
      "video_codec_initializer_unittest.cc",
      "video_packet_buffer_unittest.cc",
      "video_receiver_unittest.cc",
      "video_sender_unittest.cc",
    ]
    if (rtc_use_h264) {
      sources += [ "codecs/h264/h264_encoder_impl_unittest.cc" ]
    }

    deps = [
      ":codec_globals_headers",
      ":encoded_frame",
      ":mock_headers",
      ":simulcast_test_utility",
      ":video_codec_interface",
      ":video_codecs_test_framework",
      ":video_coding",
      ":video_coding_utility",
      ":videocodec_test_impl",
      ":webrtc_h264",
      ":webrtc_vp8",
      ":webrtc_vp8_helpers",
      ":webrtc_vp9",
      ":webrtc_vp9_helpers",
      "..:module_api",
      "../..:webrtc_common",
      "../../:typedefs",
      "../../api:videocodec_test_fixture_api",
      "../../api/video:video_frame",
      "../../api/video:video_frame_i420",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video:common_video",
      "../../media:rtc_media_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:rtc_base_tests_utils",
      "../../rtc_base:rtc_numerics",
      "../../rtc_base:rtc_task_queue",
      "../../rtc_base:rtc_task_queue_for_test",
      "../../system_wrappers",
      "../../system_wrappers:field_trial_api",
      "../../system_wrappers:metrics_api",
      "../../system_wrappers:metrics_default",
      "../../test:field_trial",
      "../../test:fileutils",
      "../../test:test_support",
      "../../test:video_test_common",
      "../../test:video_test_support",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
    if (rtc_build_libvpx) {
      deps += [ rtc_libvpx_dir ]
    }

    # TODO(jschuh): bugs.webrtc.org/1348: fix this warning.
    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
    if (!build_with_chromium && is_clang) {
      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }
  }
}
