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

config("apm_debug_dump") {
  if (apm_debug_dump) {
    defines = [ "WEBRTC_APM_DEBUG_DUMP=1" ]
  } else {
    defines = [ "WEBRTC_APM_DEBUG_DUMP=0" ]
  }
}

rtc_library("config") {
  visibility = [ ":*" ]
  sources = [
    "include/config.cc",
    "include/config.h",
  ]
  deps = [
    "../../rtc_base:macromagic",
    "../../rtc_base/system:rtc_export",
  ]
}

rtc_library("api") {
  visibility = [ "*" ]
  sources = [
    "include/audio_processing.cc",
    "include/audio_processing.h",
  ]
  deps = [
    ":audio_frame_view",
    ":audio_generator_interface",
    ":audio_processing_statistics",
    ":config",
    "../../api:scoped_refptr",
    "../../api/audio:aec3_config",
    "../../api/audio:echo_control",
    "../../rtc_base:deprecation",
    "../../rtc_base:macromagic",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base/system:arch",
    "../../rtc_base/system:rtc_export",
    "agc:gain_control_interface",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("audio_buffer") {
  visibility = [ "*" ]

  configs += [ ":apm_debug_dump" ]

  sources = [
    "audio_buffer.cc",
    "audio_buffer.h",
    "splitting_filter.cc",
    "splitting_filter.h",
    "three_band_filter_bank.cc",
    "three_band_filter_bank.h",
  ]

  defines = []

  deps = [
    ":api",
    "../../api/audio:audio_frame_api",
    "../../common_audio",
    "../../common_audio:common_audio_c",
    "../../rtc_base:checks",
  ]
}

rtc_library("high_pass_filter") {
  visibility = [ "*" ]

  sources = [
    "high_pass_filter.cc",
    "high_pass_filter.h",
  ]

  defines = []

  deps = [
    ":audio_buffer",
    "../../api:array_view",
    "../../rtc_base:checks",
    "utility:cascaded_biquad_filter",
  ]
}

rtc_library("audio_processing") {
  visibility = [ "*" ]
  configs += [ ":apm_debug_dump" ]
  sources = [
    "audio_processing_impl.cc",
    "audio_processing_impl.h",
    "common.h",
    "echo_control_mobile_impl.cc",
    "echo_control_mobile_impl.h",
    "echo_detector/circular_buffer.cc",
    "echo_detector/circular_buffer.h",
    "echo_detector/mean_variance_estimator.cc",
    "echo_detector/mean_variance_estimator.h",
    "echo_detector/moving_max.cc",
    "echo_detector/moving_max.h",
    "echo_detector/normalized_covariance_estimator.cc",
    "echo_detector/normalized_covariance_estimator.h",
    "gain_control_impl.cc",
    "gain_control_impl.h",
    "gain_controller2.cc",
    "gain_controller2.h",
    "include/aec_dump.cc",
    "include/aec_dump.h",
    "level_estimator.cc",
    "level_estimator.h",
    "render_queue_item_verifier.h",
    "residual_echo_detector.cc",
    "residual_echo_detector.h",
    "rms_level.cc",
    "rms_level.h",
    "transient/common.h",
    "transient/daubechies_8_wavelet_coeffs.h",
    "transient/dyadic_decimator.h",
    "transient/moving_moments.cc",
    "transient/moving_moments.h",
    "transient/transient_detector.cc",
    "transient/transient_detector.h",
    "transient/transient_suppressor.cc",
    "transient/transient_suppressor.h",
    "transient/wpd_node.cc",
    "transient/wpd_node.h",
    "transient/wpd_tree.cc",
    "transient/wpd_tree.h",
    "typing_detection.cc",
    "typing_detection.h",
    "voice_detection.cc",
    "voice_detection.h",
  ]

  defines = []
  deps = [
    ":api",
    ":apm_logging",
    ":audio_buffer",
    ":audio_frame_view",
    ":audio_generator_interface",
    ":audio_processing_statistics",
    ":config",
    ":high_pass_filter",
    "../../api:array_view",
    "../../api:function_view",
    "../../api/audio:aec3_config",
    "../../api/audio:audio_frame_api",
    "../../api/audio:echo_control",
    "../../audio/utility:audio_frame_operations",
    "../../common_audio:common_audio_c",
    "../../common_audio/third_party/fft4g",
    "../../rtc_base:checks",
    "../../rtc_base:deprecation",
    "../../rtc_base:gtest_prod",
    "../../rtc_base:ignore_wundef",
    "../../rtc_base:safe_minmax",
    "../../rtc_base:sanitizer",
    "../../rtc_base/system:rtc_export",
    "../../system_wrappers:cpu_features_api",
    "../../system_wrappers:field_trial",
    "../../system_wrappers:metrics",
    "aec3",
    "aecm:aecm_core",
    "agc",
    "agc:agc_legacy_c",
    "agc:gain_control_interface",
    "agc2:adaptive_digital",
    "agc2:fixed_digital",
    "agc2:gain_applier",
    "legacy_ns:legacy_ns",
    "legacy_ns:legacy_ns_c",
    "ns",
    "vad",
    "//third_party/abseil-cpp/absl/types:optional",
  ]

  deps += [
    "../../common_audio",
    "../../common_audio:fir_filter",
    "../../common_audio:fir_filter_factory",
    "../../rtc_base:rtc_base_approved",
    "../../system_wrappers",
  ]
}

rtc_library("audio_processing_statistics") {
  visibility = [ "*" ]
  sources = [
    "include/audio_processing_statistics.cc",
    "include/audio_processing_statistics.h",
  ]
  deps = [
    "../../rtc_base/system:rtc_export",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("audio_frame_view") {
  sources = [ "include/audio_frame_view.h" ]
  deps = [ "../../api:array_view" ]
}

rtc_source_set("audio_generator_interface") {
  visibility = [ "*" ]
  sources = [ "include/audio_generator.h" ]
  deps = [
    ":audio_frame_view",
    "../../rtc_base:rtc_base_approved",
    "../../system_wrappers",
  ]
}

rtc_library("audio_generator_factory") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "include/audio_generator_factory.cc",
    "include/audio_generator_factory.h",
  ]
  deps = [
    ":audio_generator_interface",
    ":file_audio_generator",
    "../../common_audio",
    "../../rtc_base:rtc_base_approved",
    "../../system_wrappers",
  ]
}

rtc_library("file_audio_generator") {
  sources = [
    "audio_generator/file_audio_generator.cc",
    "audio_generator/file_audio_generator.h",
  ]
  deps = [
    ":audio_generator_interface",
    "../../common_audio",
    "../../rtc_base:rtc_base_approved",
    "../../system_wrappers",
  ]
}

if (rtc_enable_protobuf) {
  proto_library("audioproc_debug_proto") {
    sources = [ "debug.proto" ]

    proto_out_dir = "modules/audio_processing"
  }
}

rtc_library("apm_logging") {
  configs += [ ":apm_debug_dump" ]
  sources = [
    "logging/apm_data_dumper.cc",
    "logging/apm_data_dumper.h",
  ]
  deps = [
    "../../api:array_view",
    "../../common_audio",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
  ]
  defines = []
}

if (rtc_include_tests) {
  rtc_source_set("mocks") {
    testonly = true
    sources = [ "include/mock_audio_processing.h" ]
    deps = [
      ":api",
      ":audio_buffer",
      ":audio_processing",
      ":audio_processing_statistics",
      "../../test:test_support",
    ]
  }

  group("audio_processing_tests") {
    testonly = true
    deps = [
      ":audioproc_test_utils",
      ":click_annotate",
      ":transient_suppression_test",
    ]

    if (rtc_enable_protobuf) {
      deps += [
        ":audioproc_unittest_proto",
        "aec_dump:aec_dump_unittests",
        "test/conversational_speech",
        "test/py_quality_assessment",
      ]
    }
  }

  rtc_library("audio_processing_unittests") {
    testonly = true

    configs += [ ":apm_debug_dump" ]
    sources = [
      "audio_buffer_unittest.cc",
      "audio_frame_view_unittest.cc",
      "config_unittest.cc",
      "echo_control_mobile_unittest.cc",
      "gain_controller2_unittest.cc",
      "splitting_filter_unittest.cc",
      "test/fake_recording_device_unittest.cc",
      "transient/dyadic_decimator_unittest.cc",
      "transient/file_utils.cc",
      "transient/file_utils.h",
      "transient/file_utils_unittest.cc",
      "transient/moving_moments_unittest.cc",
      "transient/transient_detector_unittest.cc",
      "transient/transient_suppressor_unittest.cc",
      "transient/wpd_node_unittest.cc",
      "transient/wpd_tree_unittest.cc",
    ]

    deps = [
      ":analog_mic_simulation",
      ":api",
      ":apm_logging",
      ":audio_buffer",
      ":audio_frame_view",
      ":audio_processing",
      ":audioproc_test_utils",
      ":config",
      ":file_audio_generator_unittests",
      ":high_pass_filter",
      ":mocks",
      "../../api:array_view",
      "../../api:scoped_refptr",
      "../../api/audio:aec3_config",
      "../../api/audio:aec3_factory",
      "../../common_audio",
      "../../common_audio:common_audio_c",
      "../../rtc_base",
      "../../rtc_base:checks",
      "../../rtc_base:gtest_prod",
      "../../rtc_base:ignore_wundef",
      "../../rtc_base:protobuf_utils",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:rtc_base_tests_utils",
      "../../rtc_base:safe_minmax",
      "../../rtc_base:task_queue_for_test",
      "../../rtc_base/system:arch",
      "../../rtc_base/system:file_wrapper",
      "../../system_wrappers",
      "../../system_wrappers:cpu_features_api",
      "../../test:fileutils",
      "../../test:rtc_expect_death",
      "../../test:test_support",
      "../audio_coding:neteq_input_audio_tools",
      "aec_dump:mock_aec_dump_unittests",
      "agc:agc_unittests",
      "agc2:adaptive_digital_unittests",
      "agc2:biquad_filter_unittests",
      "agc2:fixed_digital_unittests",
      "agc2:noise_estimator_unittests",
      "agc2:rnn_vad_with_level_unittests",
      "agc2:test_utils",
      "agc2/rnn_vad:unittests",
      "legacy_ns:legacy_ns",
      "test/conversational_speech:unittest",
      "utility:legacy_delay_estimator_unittest",
      "utility:pffft_wrapper_unittest",
      "vad:vad_unittests",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/types:optional",
    ]

    defines = []

    if (rtc_prefer_fixed_point) {
      defines += [ "WEBRTC_AUDIOPROC_FIXED_PROFILE" ]
    } else {
      defines += [ "WEBRTC_AUDIOPROC_FLOAT_PROFILE" ]
    }

    if (rtc_enable_protobuf) {
      defines += [ "WEBRTC_AUDIOPROC_DEBUG_DUMP" ]
      deps += [
        ":audioproc_debug_proto",
        ":audioproc_protobuf_utils",
        ":audioproc_test_utils",
        ":audioproc_unittest_proto",
        ":runtime_settings_protobuf_utils",
        "../../api/audio:audio_frame_api",
        "../../api/audio:echo_control",
        "../../rtc_base:rtc_base_tests_utils",
        "../../rtc_base:rtc_task_queue",
        "aec_dump",
        "aec_dump:aec_dump_unittests",
        "//third_party/abseil-cpp/absl/flags:flag",
      ]
      sources += [
        "audio_processing_impl_locking_unittest.cc",
        "audio_processing_impl_unittest.cc",
        "audio_processing_unittest.cc",
        "echo_control_mobile_bit_exact_unittest.cc",
        "echo_detector/circular_buffer_unittest.cc",
        "echo_detector/mean_variance_estimator_unittest.cc",
        "echo_detector/moving_max_unittest.cc",
        "echo_detector/normalized_covariance_estimator_unittest.cc",
        "gain_control_unittest.cc",
        "high_pass_filter_unittest.cc",
        "level_estimator_unittest.cc",
        "residual_echo_detector_unittest.cc",
        "rms_level_unittest.cc",
        "test/debug_dump_replayer.cc",
        "test/debug_dump_replayer.h",
        "test/debug_dump_test.cc",
        "test/echo_canceller_test_tools.cc",
        "test/echo_canceller_test_tools.h",
        "test/echo_canceller_test_tools_unittest.cc",
        "test/echo_control_mock.h",
        "test/test_utils.h",
        "voice_detection_unittest.cc",
      ]
    }
  }

  rtc_library("audio_processing_perf_tests") {
    testonly = true
    configs += [ ":apm_debug_dump" ]

    sources = [ "audio_processing_performance_unittest.cc" ]
    deps = [
      ":audio_processing",
      ":audioproc_test_utils",
      "../../api:array_view",
      "../../rtc_base:protobuf_utils",
      "../../rtc_base:rtc_base_approved",
      "../../system_wrappers",
      "../../test:perf_test",
      "../../test:test_support",
    ]
  }

  rtc_library("file_audio_generator_unittests") {
    testonly = true

    sources = [ "audio_generator/file_audio_generator_unittest.cc" ]

    deps = [
      ":api",
      ":audio_generator_factory",
      ":audio_processing",
      ":file_audio_generator",
      "../../rtc_base:rtc_base_approved",
      "../../test:fileutils",
      "../../test:test_support",
    ]
  }

  rtc_library("analog_mic_simulation") {
    sources = [
      "test/fake_recording_device.cc",
      "test/fake_recording_device.h",
    ]
    deps = [
      "../../api:array_view",
      "../../api/audio:audio_frame_api",
      "../../common_audio",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:safe_minmax",
      "agc:gain_map",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  if (rtc_enable_protobuf) {
    rtc_library("audioproc_f_impl") {
      testonly = true
      configs += [ ":apm_debug_dump" ]
      sources = [
        "test/aec_dump_based_simulator.cc",
        "test/aec_dump_based_simulator.h",
        "test/api_call_statistics.cc",
        "test/api_call_statistics.h",
        "test/audio_processing_simulator.cc",
        "test/audio_processing_simulator.h",
        "test/audioproc_float_impl.cc",
        "test/audioproc_float_impl.h",
        "test/wav_based_simulator.cc",
        "test/wav_based_simulator.h",
      ]

      deps = [
        ":analog_mic_simulation",
        ":api",
        ":apm_logging",
        ":audio_processing",
        ":audioproc_debug_proto",
        ":audioproc_protobuf_utils",
        ":audioproc_test_utils",
        ":runtime_settings_protobuf_utils",
        "../../api/audio:aec3_config_json",
        "../../api/audio:aec3_factory",
        "../../common_audio",
        "../../rtc_base:checks",
        "../../rtc_base:ignore_wundef",
        "../../rtc_base:protobuf_utils",
        "../../rtc_base:rtc_base_approved",
        "../../rtc_base:rtc_json",
        "../../rtc_base:task_queue_for_test",
        "../../system_wrappers",
        "../../test:test_support",
        "aec_dump",
        "aec_dump:aec_dump_impl",
        "//testing/gtest",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }  # audioproc_f_impl
  }

  rtc_library("audioproc_test_utils") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/audio_buffer_tools.cc",
      "test/audio_buffer_tools.h",
      "test/bitexactness_tools.cc",
      "test/bitexactness_tools.h",
      "test/performance_timer.cc",
      "test/performance_timer.h",
      "test/simulator_buffers.cc",
      "test/simulator_buffers.h",
      "test/test_utils.cc",
      "test/test_utils.h",
    ]

    deps = [
      ":api",
      ":audio_buffer",
      ":audio_processing",
      "../../api:array_view",
      "../../api/audio:audio_frame_api",
      "../../common_audio",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base/system:arch",
      "../../system_wrappers",
      "../../test:fileutils",
      "../../test:test_support",
      "../audio_coding:neteq_input_audio_tools",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_executable("transient_suppression_test") {
    testonly = true
    sources = [
      "transient/file_utils.cc",
      "transient/file_utils.h",
      "transient/transient_suppression_test.cc",
    ]
    deps = [
      ":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_executable("click_annotate") {
    testonly = true
    sources = [
      "transient/click_annotate.cc",
      "transient/file_utils.cc",
      "transient/file_utils.h",
    ]
    deps = [
      ":audio_processing",
      "../../rtc_base/system:file_wrapper",
      "../../system_wrappers",
    ]
  }

  if (rtc_enable_protobuf) {
    proto_library("audioproc_unittest_proto") {
      sources = [ "test/unittest.proto" ]
      proto_out_dir = "modules/audio_processing/test"
    }

    rtc_library("audioproc_protobuf_utils") {
      sources = [
        "test/protobuf_utils.cc",
        "test/protobuf_utils.h",
      ]

      deps = [
        ":audioproc_debug_proto",
        "../../rtc_base:checks",
        "../../rtc_base:ignore_wundef",
        "../../rtc_base:protobuf_utils",
        "../../rtc_base:rtc_base_approved",
        "../../rtc_base/system:arch",
      ]
    }

    rtc_library("runtime_settings_protobuf_utils") {
      testonly = true
      sources = [
        "test/runtime_setting_util.cc",
        "test/runtime_setting_util.h",
      ]

      deps = [
        ":api",
        ":audio_processing",
        ":audioproc_debug_proto",
        ":audioproc_protobuf_utils",
        "../../rtc_base:checks",
      ]
    }
  }
}
