# 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") rtc_library("rnn_vad") { visibility = [ "../*" ] sources = [ "features_extraction.cc", "features_extraction.h", "rnn.cc", "rnn.h", ] defines = [] if (rtc_build_with_neon && target_cpu != "arm64") { suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ] cflags = [ "-mfpu=neon" ] } deps = [ ":rnn_vad_common", ":rnn_vad_layers", ":rnn_vad_lp_residual", ":rnn_vad_pitch", ":rnn_vad_sequence_buffer", ":rnn_vad_spectral_features", "..:biquad_filter", "..:cpu_features", "../../../../api:array_view", "../../../../rtc_base:checks", "../../../../rtc_base:safe_compare", "../../../../rtc_base:safe_conversions", "//third_party/rnnoise:rnn_vad", ] } rtc_library("rnn_vad_auto_correlation") { sources = [ "auto_correlation.cc", "auto_correlation.h", ] deps = [ ":rnn_vad_common", "../../../../api:array_view", "../../../../rtc_base:checks", "../../utility:pffft_wrapper", ] } rtc_source_set("rnn_vad_common") { # TODO(alessiob): Make this target visibility private. visibility = [ ":*", "..:vad_wrapper", ] sources = [ "common.h" ] deps = [ "../../../../rtc_base/system:arch", "../../../../system_wrappers", ] } rtc_library("rnn_vad_lp_residual") { sources = [ "lp_residual.cc", "lp_residual.h", ] deps = [ "../../../../api:array_view", "../../../../rtc_base:checks", "../../../../rtc_base:safe_compare", ] } rtc_source_set("rnn_vad_layers") { sources = [ "rnn_fc.cc", "rnn_fc.h", "rnn_gru.cc", "rnn_gru.h", ] defines = [] if (rtc_build_with_neon && current_cpu != "arm64") { suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ] cflags = [ "-mfpu=neon" ] } deps = [ ":rnn_vad_common", ":vector_math", "..:cpu_features", "../../../../api:array_view", "../../../../api:function_view", "../../../../rtc_base:checks", "../../../../rtc_base:safe_conversions", "//third_party/rnnoise:rnn_vad", ] if (current_cpu == "x86" || current_cpu == "x64") { deps += [ ":vector_math_avx2" ] } absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] } rtc_source_set("vector_math") { sources = [ "vector_math.h" ] deps = [ "..:cpu_features", "../../../../api:array_view", "../../../../rtc_base:checks", "../../../../rtc_base:safe_conversions", "../../../../rtc_base/system:arch", ] } if (current_cpu == "x86" || current_cpu == "x64") { rtc_library("vector_math_avx2") { sources = [ "vector_math_avx2.cc" ] if (is_win && !build_with_mozilla) { cflags = [ "/arch:AVX2" ] } else { cflags = [ "-mavx2", "-mfma", ] } deps = [ ":vector_math", "../../../../api:array_view", "../../../../rtc_base:checks", "../../../../rtc_base:safe_conversions", ] } } rtc_library("rnn_vad_pitch") { sources = [ "pitch_search.cc", "pitch_search.h", "pitch_search_internal.cc", "pitch_search_internal.h", ] defines = [] if (rtc_build_with_neon && current_cpu != "arm64") { suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ] cflags = [ "-mfpu=neon" ] } deps = [ ":rnn_vad_auto_correlation", ":rnn_vad_common", ":vector_math", "..:cpu_features", "../../../../api:array_view", "../../../../rtc_base:checks", "../../../../rtc_base:gtest_prod", "../../../../rtc_base:safe_compare", "../../../../rtc_base:safe_conversions", "../../../../rtc_base/system:arch", ] if (current_cpu == "x86" || current_cpu == "x64") { deps += [ ":vector_math_avx2" ] } } rtc_source_set("rnn_vad_ring_buffer") { sources = [ "ring_buffer.h" ] deps = [ "../../../../api:array_view", "../../../../rtc_base:checks", ] } rtc_source_set("rnn_vad_sequence_buffer") { sources = [ "sequence_buffer.h" ] deps = [ "../../../../api:array_view", "../../../../rtc_base:checks", ] } rtc_library("rnn_vad_spectral_features") { sources = [ "spectral_features.cc", "spectral_features.h", "spectral_features_internal.cc", "spectral_features_internal.h", ] deps = [ ":rnn_vad_common", ":rnn_vad_ring_buffer", ":rnn_vad_symmetric_matrix_buffer", "../../../../api:array_view", "../../../../rtc_base:checks", "../../../../rtc_base:safe_compare", "../../utility:pffft_wrapper", ] } rtc_source_set("rnn_vad_symmetric_matrix_buffer") { sources = [ "symmetric_matrix_buffer.h" ] deps = [ "../../../../api:array_view", "../../../../rtc_base:checks", "../../../../rtc_base:safe_compare", ] } if (rtc_include_tests) { rtc_library("test_utils") { testonly = true sources = [ "test_utils.cc", "test_utils.h", ] deps = [ ":rnn_vad", ":rnn_vad_common", "../../../../api:array_view", "../../../../api:scoped_refptr", "../../../../rtc_base:checks", "../../../../rtc_base:safe_compare", "../../../../test:fileutils", "../../../../test:test_support", ] absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] } unittest_resources = [ "../../../../resources/audio_processing/agc2/rnn_vad/band_energies.dat", "../../../../resources/audio_processing/agc2/rnn_vad/pitch_buf_24k.dat", "../../../../resources/audio_processing/agc2/rnn_vad/pitch_lp_res.dat", "../../../../resources/audio_processing/agc2/rnn_vad/pitch_search_int.dat", "../../../../resources/audio_processing/agc2/rnn_vad/samples.pcm", "../../../../resources/audio_processing/agc2/rnn_vad/vad_prob.dat", ] if (is_ios) { bundle_data("unittests_bundle_data") { testonly = true sources = unittest_resources outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] } } rtc_library("unittests") { testonly = true sources = [ "auto_correlation_unittest.cc", "features_extraction_unittest.cc", "lp_residual_unittest.cc", "pitch_search_internal_unittest.cc", "pitch_search_unittest.cc", "ring_buffer_unittest.cc", "rnn_fc_unittest.cc", "rnn_gru_unittest.cc", "rnn_unittest.cc", "rnn_vad_unittest.cc", "sequence_buffer_unittest.cc", "spectral_features_internal_unittest.cc", "spectral_features_unittest.cc", "symmetric_matrix_buffer_unittest.cc", "vector_math_unittest.cc", ] defines = [] if (rtc_build_with_neon && current_cpu != "arm64") { suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ] cflags = [ "-mfpu=neon" ] } deps = [ ":rnn_vad", ":rnn_vad_auto_correlation", ":rnn_vad_common", ":rnn_vad_layers", ":rnn_vad_lp_residual", ":rnn_vad_pitch", ":rnn_vad_ring_buffer", ":rnn_vad_sequence_buffer", ":rnn_vad_spectral_features", ":rnn_vad_symmetric_matrix_buffer", ":test_utils", ":vector_math", "..:cpu_features", "../..:audioproc_test_utils", "../../../../api:array_view", "../../../../common_audio/", "../../../../rtc_base:checks", "../../../../rtc_base:logging", "../../../../rtc_base:safe_compare", "../../../../rtc_base:safe_conversions", "../../../../rtc_base:stringutils", "../../../../rtc_base/system:arch", "../../../../test:test_support", "../../utility:pffft_wrapper", "//third_party/rnnoise:rnn_vad", ] if (current_cpu == "x86" || current_cpu == "x64") { deps += [ ":vector_math_avx2" ] } absl_deps = [ "//third_party/abseil-cpp/absl/memory" ] data = unittest_resources if (is_ios) { deps += [ ":unittests_bundle_data" ] } } if (!build_with_chromium) { rtc_executable("rnn_vad_tool") { testonly = true sources = [ "rnn_vad_tool.cc" ] deps = [ ":rnn_vad", ":rnn_vad_common", "..:cpu_features", "../../../../api:array_view", "../../../../common_audio", "../../../../rtc_base:logging", "../../../../rtc_base:safe_compare", "../../../../test:test_support", "//third_party/abseil-cpp/absl/flags:flag", "//third_party/abseil-cpp/absl/flags:parse", ] } } }