# 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/arm.gni")
import("../../build/webrtc.gni")

build_video_processing_sse2 = current_cpu == "x86" || current_cpu == "x64"

rtc_static_library("video_processing") {
  sources = [
    "frame_preprocessor.cc",
    "frame_preprocessor.h",
    "include/video_processing.h",
    "include/video_processing_defines.h",
    "spatial_resampler.cc",
    "spatial_resampler.h",
    "util/denoiser_filter.cc",
    "util/denoiser_filter.h",
    "util/denoiser_filter_c.cc",
    "util/denoiser_filter_c.h",
    "util/noise_estimation.cc",
    "util/noise_estimation.h",
    "util/skin_detection.cc",
    "util/skin_detection.h",
    "video_decimator.cc",
    "video_decimator.h",
    "video_denoiser.cc",
    "video_denoiser.h",
    "video_processing_impl.cc",
    "video_processing_impl.h",
  ]

  deps = [
    "../../common_audio",
    "../../common_video",
    "../../modules/utility",
    "../../system_wrappers",
  ]
  if (build_video_processing_sse2) {
    deps += [ ":video_processing_sse2" ]
  }
  if (rtc_build_with_neon) {
    deps += [ ":video_processing_neon" ]
  }

  if (is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }
}

if (build_video_processing_sse2) {
  rtc_static_library("video_processing_sse2") {
    sources = [
      "util/denoiser_filter_sse2.cc",
      "util/denoiser_filter_sse2.h",
    ]

    if (is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    if (is_posix) {
      cflags = [ "-msse2" ]
    }
  }
}

if (rtc_build_with_neon) {
  rtc_static_library("video_processing_neon") {
    sources = [
      "util/denoiser_filter_neon.cc",
      "util/denoiser_filter_neon.h",
    ]
    if (current_cpu != "arm64") {
      suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
      cflags = [ "-mfpu=neon" ]
    }
  }
}
