# Copyright (c) 2018 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")
if (rtc_enable_protobuf) {
  import("//third_party/protobuf/proto_library.gni")
}

rtc_library("aec3") {
  visibility = [ "*" ]
  configs += [ "..:apm_debug_dump" ]
  sources = [
    "adaptive_fir_filter.cc",
    "adaptive_fir_filter_erl.cc",
    "aec3_common.cc",
    "aec3_fft.cc",
    "aec_state.cc",
    "aec_state.h",
    "alignment_mixer.cc",
    "alignment_mixer.h",
    "api_call_jitter_metrics.cc",
    "api_call_jitter_metrics.h",
    "block_buffer.cc",
    "block_delay_buffer.cc",
    "block_delay_buffer.h",
    "block_framer.cc",
    "block_framer.h",
    "block_processor.cc",
    "block_processor.h",
    "block_processor_metrics.cc",
    "block_processor_metrics.h",
    "clockdrift_detector.cc",
    "clockdrift_detector.h",
    "coarse_filter_update_gain.cc",
    "coarse_filter_update_gain.h",
    "comfort_noise_generator.cc",
    "comfort_noise_generator.h",
    "config_selector.cc",
    "config_selector.h",
    "decimator.cc",
    "decimator.h",
    "delay_estimate.h",
    "dominant_nearend_detector.cc",
    "dominant_nearend_detector.h",
    "downsampled_render_buffer.cc",
    "downsampled_render_buffer.h",
    "echo_audibility.cc",
    "echo_audibility.h",
    "echo_canceller3.cc",
    "echo_canceller3.h",
    "echo_path_delay_estimator.cc",
    "echo_path_delay_estimator.h",
    "echo_path_variability.cc",
    "echo_path_variability.h",
    "echo_remover.cc",
    "echo_remover.h",
    "echo_remover_metrics.cc",
    "echo_remover_metrics.h",
    "erl_estimator.cc",
    "erl_estimator.h",
    "erle_estimator.cc",
    "erle_estimator.h",
    "fft_buffer.cc",
    "filter_analyzer.cc",
    "filter_analyzer.h",
    "frame_blocker.cc",
    "frame_blocker.h",
    "fullband_erle_estimator.cc",
    "fullband_erle_estimator.h",
    "matched_filter.cc",
    "matched_filter_lag_aggregator.cc",
    "matched_filter_lag_aggregator.h",
    "moving_average_spectrum.cc",
    "moving_average_spectrum.h",
    "multi_channel_content_detector.cc",
    "multi_channel_content_detector.h",
    "nearend_detector.h",
    "refined_filter_update_gain.cc",
    "refined_filter_update_gain.h",
    "render_buffer.cc",
    "render_delay_buffer.cc",
    "render_delay_buffer.h",
    "render_delay_controller.cc",
    "render_delay_controller.h",
    "render_delay_controller_metrics.cc",
    "render_delay_controller_metrics.h",
    "render_signal_analyzer.cc",
    "render_signal_analyzer.h",
    "residual_echo_estimator.cc",
    "residual_echo_estimator.h",
    "reverb_decay_estimator.cc",
    "reverb_decay_estimator.h",
    "reverb_frequency_response.cc",
    "reverb_frequency_response.h",
    "reverb_model.cc",
    "reverb_model.h",
    "reverb_model_estimator.cc",
    "reverb_model_estimator.h",
    "signal_dependent_erle_estimator.cc",
    "signal_dependent_erle_estimator.h",
    "spectrum_buffer.cc",
    "stationarity_estimator.cc",
    "stationarity_estimator.h",
    "subband_erle_estimator.cc",
    "subband_erle_estimator.h",
    "subband_nearend_detector.cc",
    "subband_nearend_detector.h",
    "subtractor.cc",
    "subtractor.h",
    "subtractor_output.cc",
    "subtractor_output.h",
    "subtractor_output_analyzer.cc",
    "subtractor_output_analyzer.h",
    "suppression_filter.cc",
    "suppression_filter.h",
    "suppression_gain.cc",
    "suppression_gain.h",
    "transparent_mode.cc",
    "transparent_mode.h",
  ]

  defines = []
  if (rtc_build_with_neon && current_cpu != "arm64") {
    suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
    cflags = [ "-mfpu=neon" ]
  }

  deps = [
    ":adaptive_fir_filter",
    ":adaptive_fir_filter_erl",
    ":aec3_block",
    ":aec3_common",
    ":aec3_fft",
    ":fft_data",
    ":matched_filter",
    ":render_buffer",
    ":vector_math",
    "..:apm_logging",
    "..:audio_buffer",
    "..:high_pass_filter",
    "../../../api:field_trials_view",
    "../../../api/audio:aec3_config",
    "../../../api/audio:echo_control",
    "../../../api/audio:neural_residual_echo_estimator_api",
    "../../../api/environment",
    "../../../rtc_base:checks",
    "../../../rtc_base:cpu_info",
    "../../../rtc_base:gtest_prod",
    "../../../rtc_base:logging",
    "../../../rtc_base:macromagic",
    "../../../rtc_base:race_checker",
    "../../../rtc_base:safe_minmax",
    "../../../rtc_base:swap_queue",
    "../../../rtc_base/experiments:field_trial_parser",
    "../../../rtc_base/system:arch",
    "../../../system_wrappers:metrics",
    "../utility:cascaded_biquad_filter",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]

  if (current_cpu == "x86" || current_cpu == "x64") {
    deps += [ ":aec3_avx2" ]
  }
}

rtc_source_set("aec3_common") {
  sources = [ "aec3_common.h" ]
}

rtc_source_set("aec3_block") {
  sources = [ "block.h" ]
  deps = [ ":aec3_common" ]
}

rtc_source_set("aec3_fft") {
  sources = [ "aec3_fft.h" ]
  deps = [
    ":aec3_common",
    ":fft_data",
    "../../../common_audio/third_party/ooura:fft_size_128",
    "../../../rtc_base:checks",
  ]
}

rtc_source_set("render_buffer") {
  sources = [
    "block_buffer.h",
    "fft_buffer.h",
    "render_buffer.h",
    "spectrum_buffer.h",
  ]
  deps = [
    ":aec3_block",
    ":aec3_common",
    ":fft_data",
    "../../../rtc_base:checks",
  ]
}

rtc_source_set("adaptive_fir_filter") {
  sources = [ "adaptive_fir_filter.h" ]
  deps = [
    ":aec3_common",
    ":aec3_fft",
    ":fft_data",
    ":render_buffer",
    "..:apm_logging",
    "../../../rtc_base/system:arch",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_source_set("adaptive_fir_filter_erl") {
  sources = [ "adaptive_fir_filter_erl.h" ]
  deps = [
    ":aec3_common",
    "../../../rtc_base/system:arch",
  ]
}

rtc_source_set("matched_filter") {
  sources = [ "matched_filter.h" ]
  deps = [
    ":aec3_common",
    "../../../rtc_base/system:arch",
  ]
}

rtc_source_set("vector_math") {
  sources = [ "vector_math.h" ]
  deps = [
    ":aec3_common",
    "../../../rtc_base:checks",
    "../../../rtc_base/system:arch",
  ]
}

rtc_source_set("fft_data") {
  sources = [ "fft_data.h" ]
  deps = [
    ":aec3_common",
    "../../../rtc_base:checks",
    "../../../rtc_base/system:arch",
  ]
}

if (current_cpu == "x86" || current_cpu == "x64") {
  rtc_library("aec3_avx2") {
    configs += [ "..:apm_debug_dump" ]
    sources = [
      "adaptive_fir_filter_avx2.cc",
      "adaptive_fir_filter_erl_avx2.cc",
      "fft_data_avx2.cc",
      "matched_filter_avx2.cc",
      "vector_math_avx2.cc",
    ]

    if (is_win) {
      cflags = [ "/arch:AVX2" ]
    } else {
      cflags = [
        "-mavx2",
        "-mfma",
      ]
    }

    deps = [
      ":adaptive_fir_filter",
      ":adaptive_fir_filter_erl",
      ":aec3_common",
      ":fft_data",
      ":matched_filter",
      ":render_buffer",
      ":vector_math",
      "../../../rtc_base:checks",
    ]
  }
}

if (rtc_include_tests) {
  rtc_library("aec3_unittests") {
    testonly = true

    configs += [ "..:apm_debug_dump" ]
    sources = [
      "mock/mock_block_processor.cc",
      "mock/mock_block_processor.h",
      "mock/mock_echo_remover.cc",
      "mock/mock_echo_remover.h",
      "mock/mock_render_delay_buffer.cc",
      "mock/mock_render_delay_buffer.h",
      "mock/mock_render_delay_controller.cc",
      "mock/mock_render_delay_controller.h",
    ]

    deps = [
      ":adaptive_fir_filter",
      ":adaptive_fir_filter_erl",
      ":aec3",
      ":aec3_block",
      ":aec3_common",
      ":aec3_fft",
      ":fft_data",
      ":matched_filter",
      ":render_buffer",
      ":vector_math",
      "..:apm_logging",
      "..:audio_buffer",
      "..:high_pass_filter",
      "../../../api:field_trials",
      "../../../api/audio:aec3_config",
      "../../../api/audio:echo_control",
      "../../../api/audio:neural_residual_echo_estimator_api",
      "../../../api/environment",
      "../../../api/environment:environment_factory",
      "../../../rtc_base:checks",
      "../../../rtc_base:cpu_info",
      "../../../rtc_base:random",
      "../../../rtc_base:safe_minmax",
      "../../../rtc_base:stringutils",
      "../../../rtc_base/system:arch",
      "../../../system_wrappers:metrics",
      "../../../test:create_test_environment",
      "../../../test:create_test_field_trials",
      "../../../test:test_support",
      "../utility:cascaded_biquad_filter",
    ]

    defines = []

    if (rtc_enable_protobuf) {
      configs += [ "//third_party/tflite:tflite_config_no_undef" ]
      sources += [
        "adaptive_fir_filter_erl_unittest.cc",
        "adaptive_fir_filter_unittest.cc",
        "aec3_fft_unittest.cc",
        "aec_state_unittest.cc",
        "alignment_mixer_unittest.cc",
        "api_call_jitter_metrics_unittest.cc",
        "block_delay_buffer_unittest.cc",
        "block_framer_unittest.cc",
        "block_processor_metrics_unittest.cc",
        "block_processor_unittest.cc",
        "clockdrift_detector_unittest.cc",
        "coarse_filter_update_gain_unittest.cc",
        "comfort_noise_generator_unittest.cc",
        "config_selector_unittest.cc",
        "decimator_unittest.cc",
        "echo_canceller3_unittest.cc",
        "echo_path_delay_estimator_unittest.cc",
        "echo_path_variability_unittest.cc",
        "echo_remover_metrics_unittest.cc",
        "echo_remover_unittest.cc",
        "erl_estimator_unittest.cc",
        "erle_estimator_unittest.cc",
        "fft_data_unittest.cc",
        "filter_analyzer_unittest.cc",
        "frame_blocker_unittest.cc",
        "matched_filter_lag_aggregator_unittest.cc",
        "matched_filter_unittest.cc",
        "moving_average_spectrum_unittest.cc",
        "multi_channel_content_detector_unittest.cc",
        "refined_filter_update_gain_unittest.cc",
        "render_buffer_unittest.cc",
        "render_delay_buffer_unittest.cc",
        "render_delay_controller_metrics_unittest.cc",
        "render_delay_controller_unittest.cc",
        "render_signal_analyzer_unittest.cc",
        "residual_echo_estimator_unittest.cc",
        "reverb_model_estimator_unittest.cc",
        "signal_dependent_erle_estimator_unittest.cc",
        "subtractor_unittest.cc",
        "suppression_filter_unittest.cc",
        "suppression_gain_unittest.cc",
        "vector_math_unittest.cc",
      ]
    }
    if (!build_with_chromium) {
      deps += [ "..:audio_processing_unittests" ]
    }
  }
}
