# Copyright (c) 2020 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_source_set("transient_suppressor_api") {
  sources = [ "transient_suppressor.h" ]
}

rtc_library("transient_suppressor_impl") {
  visibility = [
    "..:optionally_built_submodule_creators",
    ":transient_suppression_test",
    ":transient_suppression_unittests",
    ":click_annotate",
  ]
  sources = [
    "common.h",
    "daubechies_8_wavelet_coeffs.h",
    "dyadic_decimator.h",
    "moving_moments.cc",
    "moving_moments.h",
    "transient_detector.cc",
    "transient_detector.h",
    "transient_suppressor_impl.cc",
    "transient_suppressor_impl.h",
    "windows_private.h",
    "wpd_node.cc",
    "wpd_node.h",
    "wpd_tree.cc",
    "wpd_tree.h",
  ]
  deps = [
    ":transient_suppressor_api",
    "../../../common_audio:common_audio",
    "../../../common_audio:common_audio_c",
    "../../../common_audio:fir_filter",
    "../../../common_audio:fir_filter_factory",
    "../../../common_audio/third_party/ooura:fft_size_256",
    "../../../rtc_base:checks",
    "../../../rtc_base:gtest_prod",
    "../../../rtc_base:logging",
  ]
}

if (rtc_include_tests) {
  rtc_executable("click_annotate") {
    testonly = true
    sources = [
      "click_annotate.cc",
      "file_utils.cc",
      "file_utils.h",
    ]
    deps = [
      ":transient_suppressor_impl",
      "..:audio_processing",
      "../../../rtc_base/system:file_wrapper",
      "../../../system_wrappers",
    ]
  }

  rtc_executable("transient_suppression_test") {
    testonly = true
    sources = [
      "file_utils.cc",
      "file_utils.h",
      "transient_suppression_test.cc",
    ]
    deps = [
      ":transient_suppressor_impl",
      "..:audio_processing",
      "../../../common_audio",
      "../../../rtc_base:rtc_base_approved",
      "../../../rtc_base/system:file_wrapper",
      "../../../system_wrappers",
      "../../../test:fileutils",
      "../../../test:test_support",
      "../agc:level_estimation",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/flags:parse",
    ]
  }

  rtc_library("transient_suppression_unittests") {
    testonly = true
    sources = [
      "dyadic_decimator_unittest.cc",
      "file_utils.cc",
      "file_utils.h",
      "file_utils_unittest.cc",
      "moving_moments_unittest.cc",
      "transient_detector_unittest.cc",
      "transient_suppressor_unittest.cc",
      "wpd_node_unittest.cc",
      "wpd_tree_unittest.cc",
    ]
    deps = [
      ":transient_suppressor_impl",
      "../../../rtc_base:stringutils",
      "../../../rtc_base/system:file_wrapper",
      "../../../test:fileutils",
      "../../../test:test_support",
      "//testing/gtest",
    ]
  }
}