BUILD.gn (8719B)
1 # Copyright (c) 2018 The WebRTC project authors. All Rights Reserved. 2 # 3 # Use of this source code is governed by a BSD-style license 4 # that can be found in the LICENSE file in the root of the source 5 # tree. An additional intellectual property rights grant can be found 6 # in the file PATENTS. All contributing project authors may 7 # be found in the AUTHORS file in the root of the source tree. 8 9 import("../../../../webrtc.gni") 10 11 rtc_library("rnn_vad") { 12 visibility = [ "../*" ] 13 sources = [ 14 "features_extraction.cc", 15 "features_extraction.h", 16 "rnn.cc", 17 "rnn.h", 18 ] 19 20 defines = [] 21 if (rtc_build_with_neon && target_cpu != "arm64") { 22 suppressed_configs += [ "//chromium/build/config/compiler:compiler_arm_fpu" ] 23 cflags = [ "-mfpu=neon" ] 24 } 25 26 deps = [ 27 ":rnn_vad_common", 28 ":rnn_vad_layers", 29 ":rnn_vad_lp_residual", 30 ":rnn_vad_pitch", 31 ":rnn_vad_sequence_buffer", 32 ":rnn_vad_spectral_features", 33 "..:biquad_filter", 34 "..:cpu_features", 35 "../../../../api:array_view", 36 "../../../../rtc_base:checks", 37 "../../../../rtc_base:safe_compare", 38 "../../../../rtc_base:safe_conversions", 39 "//third_party/rnnoise:rnn_vad", 40 ] 41 } 42 43 rtc_library("rnn_vad_auto_correlation") { 44 sources = [ 45 "auto_correlation.cc", 46 "auto_correlation.h", 47 ] 48 deps = [ 49 ":rnn_vad_common", 50 "../../../../api:array_view", 51 "../../../../rtc_base:checks", 52 "../../utility:pffft_wrapper", 53 ] 54 } 55 56 rtc_source_set("rnn_vad_common") { 57 visibility = [ 58 ":*", 59 "..:vad_wrapper", 60 ] 61 sources = [ "common.h" ] 62 deps = [ 63 "../../../../rtc_base/system:arch", 64 "../../../../system_wrappers", 65 ] 66 } 67 68 rtc_library("rnn_vad_lp_residual") { 69 sources = [ 70 "lp_residual.cc", 71 "lp_residual.h", 72 ] 73 deps = [ 74 "../../../../api:array_view", 75 "../../../../rtc_base:checks", 76 "../../../../rtc_base:safe_compare", 77 ] 78 } 79 80 rtc_library("rnn_vad_layers") { 81 sources = [ 82 "rnn_fc.cc", 83 "rnn_fc.h", 84 "rnn_gru.cc", 85 "rnn_gru.h", 86 ] 87 88 defines = [] 89 if (rtc_build_with_neon && current_cpu != "arm64") { 90 suppressed_configs += [ "//chromium/build/config/compiler:compiler_arm_fpu" ] 91 cflags = [ "-mfpu=neon" ] 92 } 93 94 deps = [ 95 ":rnn_vad_common", 96 ":vector_math", 97 "..:cpu_features", 98 "../../../../api:array_view", 99 "../../../../api:function_view", 100 "../../../../rtc_base:checks", 101 "../../../../rtc_base:safe_conversions", 102 "//third_party/abseil-cpp/absl/strings:string_view", 103 "//third_party/rnnoise:rnn_vad", 104 ] 105 if (current_cpu == "x86" || current_cpu == "x64") { 106 deps += [ ":vector_math_avx2" ] 107 } 108 } 109 110 rtc_source_set("vector_math") { 111 sources = [ "vector_math.h" ] 112 deps = [ 113 "..:cpu_features", 114 "../../../../api:array_view", 115 "../../../../rtc_base:checks", 116 "../../../../rtc_base:safe_conversions", 117 "../../../../rtc_base/system:arch", 118 ] 119 } 120 121 if (current_cpu == "x86" || current_cpu == "x64") { 122 rtc_library("vector_math_avx2") { 123 sources = [ "vector_math_avx2.cc" ] 124 if (is_win && !build_with_mozilla) { 125 cflags = [ "/arch:AVX2" ] 126 } else { 127 cflags = [ 128 "-mavx2", 129 "-mfma", 130 ] 131 } 132 deps = [ 133 ":vector_math", 134 "../../../../api:array_view", 135 "../../../../rtc_base:checks", 136 "../../../../rtc_base:safe_conversions", 137 ] 138 } 139 } 140 141 rtc_library("rnn_vad_pitch") { 142 sources = [ 143 "pitch_search.cc", 144 "pitch_search.h", 145 "pitch_search_internal.cc", 146 "pitch_search_internal.h", 147 ] 148 149 defines = [] 150 if (rtc_build_with_neon && current_cpu != "arm64") { 151 suppressed_configs += [ "//chromium/build/config/compiler:compiler_arm_fpu" ] 152 cflags = [ "-mfpu=neon" ] 153 } 154 155 deps = [ 156 ":rnn_vad_auto_correlation", 157 ":rnn_vad_common", 158 ":vector_math", 159 "..:cpu_features", 160 "../../../../api:array_view", 161 "../../../../rtc_base:checks", 162 "../../../../rtc_base:gtest_prod", 163 "../../../../rtc_base:safe_compare", 164 "../../../../rtc_base:safe_conversions", 165 "../../../../rtc_base/system:arch", 166 ] 167 if (current_cpu == "x86" || current_cpu == "x64") { 168 deps += [ ":vector_math_avx2" ] 169 } 170 } 171 172 rtc_source_set("rnn_vad_ring_buffer") { 173 sources = [ "ring_buffer.h" ] 174 deps = [ 175 "../../../../api:array_view", 176 "../../../../rtc_base:checks", 177 ] 178 } 179 180 rtc_source_set("rnn_vad_sequence_buffer") { 181 sources = [ "sequence_buffer.h" ] 182 deps = [ 183 "../../../../api:array_view", 184 "../../../../rtc_base:checks", 185 ] 186 } 187 188 rtc_library("rnn_vad_spectral_features") { 189 sources = [ 190 "spectral_features.cc", 191 "spectral_features.h", 192 "spectral_features_internal.cc", 193 "spectral_features_internal.h", 194 ] 195 deps = [ 196 ":rnn_vad_common", 197 ":rnn_vad_ring_buffer", 198 ":rnn_vad_symmetric_matrix_buffer", 199 "../../../../api:array_view", 200 "../../../../rtc_base:checks", 201 "../../../../rtc_base:safe_compare", 202 "../../utility:pffft_wrapper", 203 ] 204 } 205 206 rtc_source_set("rnn_vad_symmetric_matrix_buffer") { 207 sources = [ "symmetric_matrix_buffer.h" ] 208 deps = [ 209 "../../../../api:array_view", 210 "../../../../rtc_base:checks", 211 "../../../../rtc_base:safe_compare", 212 ] 213 } 214 215 if (rtc_include_tests) { 216 rtc_library("test_utils") { 217 testonly = true 218 sources = [ 219 "test_utils.cc", 220 "test_utils.h", 221 ] 222 deps = [ 223 ":rnn_vad", 224 ":rnn_vad_common", 225 "../../../../api:array_view", 226 "../../../../api:scoped_refptr", 227 "../../../../rtc_base:checks", 228 "../../../../rtc_base:safe_compare", 229 "../../../../test:fileutils", 230 "../../../../test:test_support", 231 "//third_party/abseil-cpp/absl/strings:string_view", 232 ] 233 } 234 235 unittest_resources = [ 236 "../../../../resources/audio_processing/agc2/rnn_vad/band_energies.dat", 237 "../../../../resources/audio_processing/agc2/rnn_vad/pitch_buf_24k.dat", 238 "../../../../resources/audio_processing/agc2/rnn_vad/pitch_lp_res.dat", 239 "../../../../resources/audio_processing/agc2/rnn_vad/pitch_search_int.dat", 240 "../../../../resources/audio_processing/agc2/rnn_vad/samples.pcm", 241 "../../../../resources/audio_processing/agc2/rnn_vad/vad_prob.dat", 242 ] 243 244 if (is_ios) { 245 bundle_data("unittests_bundle_data") { 246 testonly = true 247 sources = unittest_resources 248 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] 249 } 250 } 251 252 rtc_library("unittests") { 253 testonly = true 254 sources = [ 255 "auto_correlation_unittest.cc", 256 "features_extraction_unittest.cc", 257 "lp_residual_unittest.cc", 258 "pitch_search_internal_unittest.cc", 259 "pitch_search_unittest.cc", 260 "ring_buffer_unittest.cc", 261 "rnn_fc_unittest.cc", 262 "rnn_gru_unittest.cc", 263 "rnn_unittest.cc", 264 "rnn_vad_unittest.cc", 265 "sequence_buffer_unittest.cc", 266 "spectral_features_internal_unittest.cc", 267 "spectral_features_unittest.cc", 268 "symmetric_matrix_buffer_unittest.cc", 269 "vector_math_unittest.cc", 270 ] 271 272 defines = [] 273 if (rtc_build_with_neon && current_cpu != "arm64") { 274 suppressed_configs += [ "//chromium/build/config/compiler:compiler_arm_fpu" ] 275 cflags = [ "-mfpu=neon" ] 276 } 277 278 deps = [ 279 ":rnn_vad", 280 ":rnn_vad_auto_correlation", 281 ":rnn_vad_common", 282 ":rnn_vad_layers", 283 ":rnn_vad_lp_residual", 284 ":rnn_vad_pitch", 285 ":rnn_vad_ring_buffer", 286 ":rnn_vad_sequence_buffer", 287 ":rnn_vad_spectral_features", 288 ":rnn_vad_symmetric_matrix_buffer", 289 ":test_utils", 290 ":vector_math", 291 "..:cpu_features", 292 "../..:audioproc_test_utils", 293 "../../../../api:array_view", 294 "../../../../common_audio/", 295 "../../../../rtc_base:checks", 296 "../../../../rtc_base:logging", 297 "../../../../rtc_base:safe_compare", 298 "../../../../rtc_base:safe_conversions", 299 "../../../../rtc_base:stringutils", 300 "../../../../rtc_base/system:arch", 301 "../../../../test:test_support", 302 "../../utility:pffft_wrapper", 303 "//third_party/rnnoise:rnn_vad", 304 ] 305 if (current_cpu == "x86" || current_cpu == "x64") { 306 deps += [ ":vector_math_avx2" ] 307 } 308 data = unittest_resources 309 if (is_ios) { 310 deps += [ ":unittests_bundle_data" ] 311 } 312 } 313 314 if (!build_with_chromium) { 315 rtc_executable("rnn_vad_tool") { 316 testonly = true 317 sources = [ "rnn_vad_tool.cc" ] 318 deps = [ 319 ":rnn_vad", 320 ":rnn_vad_common", 321 "..:cpu_features", 322 "../../../../api:array_view", 323 "../../../../common_audio", 324 "../../../../rtc_base:checks", 325 "../../../../rtc_base:logging", 326 "../../../../rtc_base:safe_compare", 327 "../../../../test:test_support", 328 "//third_party/abseil-cpp/absl/flags:flag", 329 "//third_party/abseil-cpp/absl/flags:parse", 330 ] 331 } 332 } 333 }