BUILD.gn (19294B)
1 # Copyright (c) 2014 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 if (rtc_enable_protobuf) { 11 import("//third_party/protobuf/proto_library.gni") 12 } 13 14 config("apm_debug_dump") { 15 if (apm_debug_dump) { 16 defines = [ "WEBRTC_APM_DEBUG_DUMP=1" ] 17 } else { 18 defines = [ "WEBRTC_APM_DEBUG_DUMP=0" ] 19 } 20 } 21 22 rtc_library("api") { 23 visibility = [ "*" ] 24 sources = [ "include/audio_processing.h" ] 25 deps = [ "../../api/audio:audio_processing" ] 26 } 27 28 rtc_library("audio_frame_proxies") { 29 visibility = [ "*" ] 30 sources = [ 31 "include/audio_frame_proxies.cc", 32 "include/audio_frame_proxies.h", 33 ] 34 deps = [ 35 ":audio_frame_view", 36 "../../api/audio:audio_frame_api", 37 "../../api/audio:audio_processing", 38 "../../api/audio:audio_processing_statistics", 39 "../../rtc_base:checks", 40 ] 41 } 42 43 rtc_library("audio_buffer") { 44 visibility = [ "*" ] 45 46 configs += [ ":apm_debug_dump" ] 47 48 sources = [ 49 "audio_buffer.cc", 50 "audio_buffer.h", 51 "splitting_filter.cc", 52 "splitting_filter.h", 53 "three_band_filter_bank.cc", 54 "three_band_filter_bank.h", 55 ] 56 57 defines = [] 58 59 deps = [ 60 "../../api:array_view", 61 "../../api/audio:audio_frame_api", 62 "../../api/audio:audio_processing", 63 "../../common_audio", 64 "../../common_audio:common_audio_c", 65 "../../rtc_base:checks", 66 "../../rtc_base:gtest_prod", 67 ] 68 } 69 70 rtc_library("high_pass_filter") { 71 visibility = [ "*" ] 72 73 sources = [ 74 "high_pass_filter.cc", 75 "high_pass_filter.h", 76 ] 77 78 defines = [] 79 80 deps = [ 81 ":audio_buffer", 82 "../../api:array_view", 83 "../../rtc_base:checks", 84 "utility:cascaded_biquad_filter", 85 ] 86 } 87 88 rtc_library("post_filter") { 89 visibility = [ "*" ] 90 91 sources = [ 92 "post_filter.cc", 93 "post_filter.h", 94 ] 95 96 defines = [] 97 98 deps = [ 99 ":audio_buffer", 100 "../../api:array_view", 101 "../../rtc_base:checks", 102 "utility:cascaded_biquad_filter", 103 ] 104 } 105 106 rtc_library("aec_dump_interface") { 107 visibility = [ "*" ] 108 sources = [ 109 "include/aec_dump.cc", 110 "include/aec_dump.h", 111 ] 112 113 deps = [ 114 ":audio_frame_view", 115 "../../api/audio:audio_frame_api", 116 "../../api/audio:audio_processing", 117 "//third_party/abseil-cpp/absl/base:core_headers", 118 ] 119 } 120 121 rtc_library("gain_controller2") { 122 configs += [ ":apm_debug_dump" ] 123 sources = [ 124 "gain_controller2.cc", 125 "gain_controller2.h", 126 ] 127 defines = [] 128 deps = [ 129 ":aec_dump_interface", 130 ":apm_logging", 131 ":audio_buffer", 132 ":audio_frame_view", 133 "../../api:field_trials_view", 134 "../../api/audio:audio_frame_api", 135 "../../api/audio:audio_processing", 136 "../../api/environment", 137 "../../common_audio", 138 "../../rtc_base:checks", 139 "../../rtc_base:logging", 140 "../../rtc_base:stringutils", 141 "agc2:adaptive_digital_gain_controller", 142 "agc2:common", 143 "agc2:cpu_features", 144 "agc2:fixed_digital", 145 "agc2:gain_applier", 146 "agc2:input_volume_controller", 147 "agc2:noise_level_estimator", 148 "agc2:saturation_protector", 149 "agc2:speech_level_estimator", 150 "agc2:vad_wrapper", 151 ] 152 } 153 154 rtc_library("audio_processing") { 155 visibility = [ "*" ] 156 configs += [ ":apm_debug_dump" ] 157 sources = [ 158 "audio_processing_impl.cc", 159 "audio_processing_impl.h", 160 "echo_control_mobile_impl.cc", 161 "echo_control_mobile_impl.h", 162 "gain_control_impl.cc", 163 "gain_control_impl.h", 164 "render_queue_item_verifier.h", 165 ] 166 167 defines = [] 168 deps = [ 169 ":aec_dump_interface", 170 ":apm_logging", 171 ":audio_buffer", 172 ":audio_frame_proxies", 173 ":audio_frame_view", 174 ":gain_controller2", 175 ":high_pass_filter", 176 ":post_filter", 177 ":rms_level", 178 "../../api:array_view", 179 "../../api:field_trials_view", 180 "../../api:function_view", 181 "../../api:make_ref_counted", 182 "../../api:scoped_refptr", 183 "../../api/audio:aec3_config", 184 "../../api/audio:audio_frame_api", 185 "../../api/audio:audio_processing", 186 "../../api/audio:audio_processing_statistics", 187 "../../api/audio:echo_control", 188 "../../api/audio:neural_residual_echo_estimator_api", 189 "../../api/environment", 190 "../../api/task_queue", 191 "../../audio/utility:audio_frame_operations", 192 "../../common_audio", 193 "../../common_audio:common_audio_c", 194 "../../common_audio:fir_filter", 195 "../../common_audio:fir_filter_factory", 196 "../../common_audio/third_party/ooura:fft_size_256", 197 "../../rtc_base:checks", 198 "../../rtc_base:denormal_disabler", 199 "../../rtc_base:event_tracer", 200 "../../rtc_base:gtest_prod", 201 "../../rtc_base:logging", 202 "../../rtc_base:macromagic", 203 "../../rtc_base:safe_minmax", 204 "../../rtc_base:sanitizer", 205 "../../rtc_base:swap_queue", 206 "../../rtc_base:timeutils", 207 "../../rtc_base/synchronization:mutex", 208 "../../rtc_base/system:rtc_export", 209 "../../system_wrappers", 210 "../../system_wrappers:metrics", 211 "aec3", 212 "aec_dump", 213 "aecm:aecm_core", 214 "agc", 215 "agc:gain_control_interface", 216 "agc:legacy_agc", 217 "agc2:input_volume_controller", 218 "agc2:input_volume_stats_reporter", 219 "capture_levels_adjuster", 220 "ns", 221 "vad", 222 "//third_party/abseil-cpp/absl/base:nullability", 223 "//third_party/abseil-cpp/absl/strings:string_view", 224 ] 225 226 if (rtc_enable_protobuf) { 227 deps += [ "aec_dump:aec_dump_impl" ] 228 } else { 229 deps += [ "aec_dump:null_aec_dump_factory" ] 230 } 231 } 232 233 rtc_library("residual_echo_detector") { 234 poisonous = [ "default_echo_detector" ] 235 configs += [ ":apm_debug_dump" ] 236 sources = [ 237 "echo_detector/circular_buffer.cc", 238 "echo_detector/circular_buffer.h", 239 "echo_detector/mean_variance_estimator.cc", 240 "echo_detector/mean_variance_estimator.h", 241 "echo_detector/moving_max.cc", 242 "echo_detector/moving_max.h", 243 "echo_detector/normalized_covariance_estimator.cc", 244 "echo_detector/normalized_covariance_estimator.h", 245 "residual_echo_detector.cc", 246 "residual_echo_detector.h", 247 ] 248 deps = [ 249 ":apm_logging", 250 "../../api:array_view", 251 "../../api/audio:audio_processing", 252 "../../rtc_base:checks", 253 "../../rtc_base:logging", 254 "../../system_wrappers:metrics", 255 ] 256 } 257 258 rtc_library("rms_level") { 259 visibility = [ "*" ] 260 sources = [ 261 "rms_level.cc", 262 "rms_level.h", 263 ] 264 deps = [ 265 "../../api:array_view", 266 "../../rtc_base:checks", 267 ] 268 } 269 270 rtc_library("audio_processing_statistics") { 271 visibility = [ "*" ] 272 sources = [ "include/audio_processing_statistics.h" ] 273 deps = [ "../../api/audio:audio_processing_statistics" ] 274 } 275 276 rtc_source_set("audio_frame_view") { 277 sources = [ "include/audio_frame_view.h" ] 278 deps = [ 279 "../../api/audio:audio_frame_api", 280 "../../rtc_base:checks", 281 ] 282 } 283 284 if (rtc_enable_protobuf) { 285 proto_library("audioproc_debug_proto") { 286 sources = [ "debug.proto" ] 287 288 proto_out_dir = "modules/audio_processing" 289 } 290 } 291 292 rtc_library("apm_logging") { 293 configs += [ ":apm_debug_dump" ] 294 sources = [ 295 "logging/apm_data_dumper.cc", 296 "logging/apm_data_dumper.h", 297 ] 298 deps = [ 299 "../../api:array_view", 300 "../../common_audio", 301 "../../rtc_base:checks", 302 "../../rtc_base:stringutils", 303 "//third_party/abseil-cpp/absl/strings:string_view", 304 ] 305 defines = [] 306 } 307 308 if (rtc_include_tests) { 309 rtc_source_set("mocks") { 310 testonly = true 311 sources = [ "include/mock_audio_processing.h" ] 312 deps = [ 313 ":aec_dump_interface", 314 ":audio_buffer", 315 ":audio_processing", 316 "../../api:array_view", 317 "../../api:scoped_refptr", 318 "../../api/audio:audio_processing", 319 "../../api/audio:audio_processing_statistics", 320 "../../api/audio:echo_control", 321 "../../api/environment", 322 "../../api/task_queue", 323 "../../test:test_support", 324 "//third_party/abseil-cpp/absl/base:nullability", 325 "//third_party/abseil-cpp/absl/strings:string_view", 326 ] 327 } 328 329 if (!build_with_chromium) { 330 group("audio_processing_tests") { 331 testonly = true 332 deps = [ ":audioproc_test_utils" ] 333 334 if (rtc_enable_protobuf) { 335 deps += [ 336 ":audioproc_unittest_proto", 337 "aec_dump:aec_dump_unittests", 338 "test/conversational_speech", 339 ] 340 } 341 } 342 343 rtc_library("audio_processing_unittests") { 344 testonly = true 345 346 configs += [ ":apm_debug_dump" ] 347 sources = [ 348 "audio_buffer_unittest.cc", 349 "audio_frame_view_unittest.cc", 350 "echo_control_mobile_unittest.cc", 351 "gain_controller2_unittest.cc", 352 "splitting_filter_unittest.cc", 353 "test/echo_canceller3_config_json_unittest.cc", 354 "test/fake_recording_device_unittest.cc", 355 ] 356 357 deps = [ 358 ":aec3_config_json", 359 ":analog_mic_simulation", 360 ":apm_logging", 361 ":audio_buffer", 362 ":audio_frame_view", 363 ":audio_processing", 364 ":audioproc_test_utils", 365 ":gain_controller2", 366 ":high_pass_filter", 367 ":mocks", 368 ":post_filter", 369 "../../api:array_view", 370 "../../api:make_ref_counted", 371 "../../api:ref_count", 372 "../../api:scoped_refptr", 373 "../../api/audio:aec3_config", 374 "../../api/audio:aec3_factory", 375 "../../api/audio:audio_frame_api", 376 "../../api/audio:audio_processing", 377 "../../api/audio:audio_processing_statistics", 378 "../../api/audio:builtin_audio_processing_builder", 379 "../../api/audio:echo_detector_creator", 380 "../../api/environment", 381 "../../api/environment:environment_factory", 382 "../../api/units:time_delta", 383 "../../common_audio", 384 "../../common_audio:common_audio_c", 385 "../../rtc_base:checks", 386 "../../rtc_base:cpu_info", 387 "../../rtc_base:denormal_disabler", 388 "../../rtc_base:gtest_prod", 389 "../../rtc_base:macromagic", 390 "../../rtc_base:platform_thread", 391 "../../rtc_base:protobuf_utils", 392 "../../rtc_base:random", 393 "../../rtc_base:rtc_base_tests_utils", 394 "../../rtc_base:rtc_event", 395 "../../rtc_base:safe_conversions", 396 "../../rtc_base:safe_minmax", 397 "../../rtc_base:stringutils", 398 "../../rtc_base:swap_queue", 399 "../../rtc_base:task_queue_for_test", 400 "../../rtc_base:threading", 401 "../../rtc_base/synchronization:mutex", 402 "../../rtc_base/system:arch", 403 "../../rtc_base/system:file_wrapper", 404 "../../test:fileutils", 405 "../../test:rtc_expect_death", 406 "../../test:test_support", 407 "../audio_coding:neteq_input_audio_tools", 408 "aec_dump:mock_aec_dump_unittests", 409 "agc:agc_unittests", 410 "agc:gain_control_interface", 411 "agc2:adaptive_digital_gain_controller_unittest", 412 "agc2:biquad_filter_unittests", 413 "agc2:cpu_features", 414 "agc2:fixed_digital_unittests", 415 "agc2:gain_applier_unittest", 416 "agc2:input_volume_controller", 417 "agc2:input_volume_controller_unittests", 418 "agc2:input_volume_stats_reporter_unittests", 419 "agc2:noise_estimator_unittests", 420 "agc2:saturation_protector_unittest", 421 "agc2:speech_level_estimator_unittest", 422 "agc2:test_utils", 423 "agc2:vad_wrapper", 424 "agc2:vad_wrapper_unittests", 425 "agc2/rnn_vad:unittests", 426 "capture_levels_adjuster", 427 "capture_levels_adjuster:capture_levels_adjuster_unittests", 428 "test/conversational_speech:unittest", 429 "utility:cascaded_biquad_filter_unittest", 430 "utility:legacy_delay_estimator_unittest", 431 "utility:pffft_wrapper_unittest", 432 "vad:vad_unittests", 433 "//testing/gtest", 434 "//third_party/abseil-cpp/absl/strings:string_view", 435 ] 436 437 defines = [] 438 439 if (rtc_prefer_fixed_point) { 440 defines += [ "WEBRTC_AUDIOPROC_FIXED_PROFILE" ] 441 } else { 442 defines += [ "WEBRTC_AUDIOPROC_FLOAT_PROFILE" ] 443 } 444 445 if (rtc_enable_protobuf) { 446 defines += [ "WEBRTC_AUDIOPROC_DEBUG_DUMP" ] 447 deps += [ 448 ":audioproc_debug_proto", 449 ":audioproc_protobuf_utils", 450 ":audioproc_test_utils", 451 ":audioproc_unittest_proto", 452 ":residual_echo_detector", 453 ":rms_level", 454 ":runtime_settings_protobuf_utils", 455 "../../api/audio:audio_frame_api", 456 "../../api/audio:echo_control", 457 "../../api/audio:neural_residual_echo_estimator_api", 458 "../../rtc_base:rtc_base_tests_utils", 459 "aec_dump", 460 "aec_dump:aec_dump_unittests", 461 "//third_party/abseil-cpp/absl/flags:flag", 462 ] 463 sources += [ 464 "audio_processing_impl_locking_unittest.cc", 465 "audio_processing_impl_unittest.cc", 466 "audio_processing_unittest.cc", 467 "echo_control_mobile_bit_exact_unittest.cc", 468 "echo_detector/circular_buffer_unittest.cc", 469 "echo_detector/mean_variance_estimator_unittest.cc", 470 "echo_detector/moving_max_unittest.cc", 471 "echo_detector/normalized_covariance_estimator_unittest.cc", 472 "gain_control_unittest.cc", 473 "high_pass_filter_unittest.cc", 474 "post_filter_unittest.cc", 475 "residual_echo_detector_unittest.cc", 476 "rms_level_unittest.cc", 477 "test/debug_dump_replayer.cc", 478 "test/debug_dump_replayer.h", 479 "test/debug_dump_test.cc", 480 "test/echo_canceller_test_tools.cc", 481 "test/echo_canceller_test_tools.h", 482 "test/echo_canceller_test_tools_unittest.cc", 483 "test/echo_control_mock.h", 484 ] 485 } 486 } 487 } 488 489 rtc_library("audio_processing_perf_tests") { 490 testonly = true 491 configs += [ ":apm_debug_dump" ] 492 493 sources = [ "audio_processing_performance_unittest.cc" ] 494 deps = [ 495 ":audio_processing", 496 ":audioproc_test_utils", 497 "../../api:array_view", 498 "../../api:scoped_refptr", 499 "../../api/audio:audio_processing", 500 "../../api/audio:builtin_audio_processing_builder", 501 "../../api/environment:environment_factory", 502 "../../api/numerics", 503 "../../api/test/metrics:global_metrics_logger_and_exporter", 504 "../../api/test/metrics:metric", 505 "../../api/units:time_delta", 506 "../../rtc_base:checks", 507 "../../rtc_base:platform_thread", 508 "../../rtc_base:protobuf_utils", 509 "../../rtc_base:random", 510 "../../rtc_base:rtc_event", 511 "../../rtc_base:safe_conversions", 512 "../../system_wrappers", 513 "../../test:test_support", 514 "//third_party/abseil-cpp/absl/strings:string_view", 515 ] 516 } 517 518 rtc_library("analog_mic_simulation") { 519 sources = [ 520 "test/fake_recording_device.cc", 521 "test/fake_recording_device.h", 522 ] 523 deps = [ 524 "../../api:array_view", 525 "../../api/audio:audio_frame_api", 526 "../../common_audio", 527 "../../rtc_base:checks", 528 "../../rtc_base:logging", 529 "../../rtc_base:safe_conversions", 530 "../../rtc_base:safe_minmax", 531 "agc2:gain_map", 532 ] 533 } 534 535 if (rtc_enable_protobuf && !build_with_chromium) { 536 rtc_library("audioproc_f_impl") { 537 testonly = true 538 configs += [ ":apm_debug_dump" ] 539 sources = [ 540 "test/aec_dump_based_simulator.cc", 541 "test/aec_dump_based_simulator.h", 542 "test/api_call_statistics.cc", 543 "test/api_call_statistics.h", 544 "test/audio_processing_simulator.cc", 545 "test/audio_processing_simulator.h", 546 "test/audioproc_float_impl.cc", 547 "test/audioproc_float_impl.h", 548 "test/wav_based_simulator.cc", 549 "test/wav_based_simulator.h", 550 ] 551 552 deps = [ 553 ":aec3_config_json", 554 ":analog_mic_simulation", 555 ":apm_logging", 556 ":audio_processing", 557 ":audioproc_debug_proto", 558 ":audioproc_protobuf_utils", 559 ":audioproc_test_utils", 560 "../../api:field_trials", 561 "../../api:scoped_refptr", 562 "../../api/audio:aec3_config", 563 "../../api/audio:aec3_factory", 564 "../../api/audio:audio_processing", 565 "../../api/audio:builtin_audio_processing_builder", 566 "../../api/audio:echo_detector_creator", 567 "../../api/environment", 568 "../../api/environment:environment_factory", 569 "../../common_audio", 570 "../../rtc_base:checks", 571 "../../rtc_base:logging", 572 "../../rtc_base:safe_conversions", 573 "../../rtc_base:stringutils", 574 "../../rtc_base:task_queue_for_test", 575 "../../rtc_base:timeutils", 576 "../../rtc_base/system:file_wrapper", 577 "aec3:neural_residual_echo_estimator_impl", 578 "aec_dump", 579 "//third_party/abseil-cpp/absl/base:nullability", 580 "//third_party/abseil-cpp/absl/flags:flag", 581 "//third_party/abseil-cpp/absl/flags:parse", 582 "//third_party/abseil-cpp/absl/strings:string_view", 583 ] 584 } # audioproc_f_impl 585 } 586 587 if (rtc_enable_protobuf) { 588 proto_library("audioproc_unittest_proto") { 589 sources = [ "test/unittest.proto" ] 590 proto_out_dir = "modules/audio_processing/test" 591 } 592 593 rtc_library("audioproc_protobuf_utils") { 594 sources = [ 595 "test/protobuf_utils.cc", 596 "test/protobuf_utils.h", 597 ] 598 599 deps = [ 600 ":audioproc_debug_proto", 601 "../../rtc_base:checks", 602 "../../rtc_base:protobuf_utils", 603 "../../rtc_base/system:arch", 604 ] 605 } 606 607 rtc_library("runtime_settings_protobuf_utils") { 608 testonly = true 609 sources = [ 610 "test/runtime_setting_util.cc", 611 "test/runtime_setting_util.h", 612 ] 613 614 deps = [ 615 ":audioproc_debug_proto", 616 ":audioproc_protobuf_utils", 617 "../../api/audio:audio_processing", 618 "../../rtc_base:checks", 619 ] 620 } 621 } 622 } 623 624 rtc_library("audioproc_test_utils") { 625 visibility = [ "*" ] 626 testonly = true 627 sources = [ 628 "test/audio_buffer_tools.cc", 629 "test/audio_buffer_tools.h", 630 "test/bitexactness_tools.cc", 631 "test/bitexactness_tools.h", 632 "test/performance_timer.cc", 633 "test/performance_timer.h", 634 "test/simulator_buffers.cc", 635 "test/simulator_buffers.h", 636 "test/test_utils.cc", 637 "test/test_utils.h", 638 ] 639 640 configs += [ ":apm_debug_dump" ] 641 642 deps = [ 643 ":audio_buffer", 644 ":audio_processing", 645 "../../api:array_view", 646 "../../api/audio:audio_frame_api", 647 "../../api/audio:audio_processing", 648 "../../common_audio", 649 "../../rtc_base:checks", 650 "../../rtc_base:random", 651 "../../rtc_base/system:arch", 652 "../../system_wrappers", 653 "../../test:fileutils", 654 "../../test:test_support", 655 "../audio_coding:neteq_input_audio_tools", 656 "//testing/gtest", 657 "//third_party/abseil-cpp/absl/strings:string_view", 658 ] 659 } 660 661 rtc_library("aec3_config_json") { 662 visibility = [ "*" ] 663 testonly = true 664 sources = [ 665 "test/echo_canceller3_config_json.cc", 666 "test/echo_canceller3_config_json.h", 667 ] 668 deps = [ 669 "../../api/audio:aec3_config", 670 "../../rtc_base:checks", 671 "../../rtc_base:logging", 672 "../../rtc_base:rtc_json", 673 "../../rtc_base:stringutils", 674 "../../rtc_base/system:rtc_export", 675 "//third_party/abseil-cpp/absl/strings:string_view", 676 ] 677 }