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 9import("../../webrtc.gni") 10 11group("audio_mixer") { 12 deps = [ 13 ":audio_frame_manipulator", 14 ":audio_mixer_impl", 15 ] 16} 17 18rtc_library("audio_mixer_impl") { 19 visibility = [ "*" ] 20 sources = [ 21 "audio_mixer_impl.cc", 22 "audio_mixer_impl.h", 23 "default_output_rate_calculator.cc", 24 "default_output_rate_calculator.h", 25 "frame_combiner.cc", 26 "frame_combiner.h", 27 "output_rate_calculator.h", 28 ] 29 30 public = [ 31 "audio_mixer_impl.h", 32 "default_output_rate_calculator.h", # For creating a mixer with limiter 33 # disabled. 34 "frame_combiner.h", 35 ] 36 37 configs += [ "../audio_processing:apm_debug_dump" ] 38 39 deps = [ 40 ":audio_frame_manipulator", 41 "../../api:array_view", 42 "../../api:scoped_refptr", 43 "../../api/audio:audio_frame_api", 44 "../../api/audio:audio_mixer_api", 45 "../../audio/utility:audio_frame_operations", 46 "../../common_audio", 47 "../../rtc_base:checks", 48 "../../rtc_base:rtc_base_approved", 49 "../../rtc_base/synchronization:mutex", 50 "../../system_wrappers", 51 "../../system_wrappers:metrics", 52 "../audio_processing:api", 53 "../audio_processing:apm_logging", 54 "../audio_processing:audio_frame_view", 55 "../audio_processing/agc2:fixed_digital", 56 ] 57} 58 59rtc_library("audio_frame_manipulator") { 60 visibility = [ 61 ":*", 62 "../../modules:*", 63 ] 64 65 sources = [ 66 "audio_frame_manipulator.cc", 67 "audio_frame_manipulator.h", 68 ] 69 70 deps = [ 71 "../../api/audio:audio_frame_api", 72 "../../audio/utility:audio_frame_operations", 73 "../../rtc_base:checks", 74 "../../rtc_base:rtc_base_approved", 75 ] 76} 77 78if (rtc_include_tests) { 79 rtc_library("audio_mixer_test_utils") { 80 testonly = true 81 82 sources = [ 83 "gain_change_calculator.cc", 84 "gain_change_calculator.h", 85 "sine_wave_generator.cc", 86 "sine_wave_generator.h", 87 ] 88 89 deps = [ 90 ":audio_frame_manipulator", 91 ":audio_mixer_impl", 92 "../../api:array_view", 93 "../../api/audio:audio_frame_api", 94 "../../rtc_base:checks", 95 "../../rtc_base:rtc_base_approved", 96 ] 97 } 98 99 rtc_library("audio_mixer_unittests") { 100 testonly = true 101 102 sources = [ 103 "audio_frame_manipulator_unittest.cc", 104 "audio_mixer_impl_unittest.cc", 105 "frame_combiner_unittest.cc", 106 ] 107 108 deps = [ 109 ":audio_frame_manipulator", 110 ":audio_mixer_impl", 111 ":audio_mixer_test_utils", 112 "../../api:array_view", 113 "../../api/audio:audio_mixer_api", 114 "../../audio/utility:audio_frame_operations", 115 "../../rtc_base:checks", 116 "../../rtc_base:rtc_base_approved", 117 "../../rtc_base:task_queue_for_test", 118 "../../test:test_support", 119 ] 120 } 121 122 rtc_executable("audio_mixer_test") { 123 testonly = true 124 sources = [ "audio_mixer_test.cc" ] 125 126 deps = [ 127 ":audio_mixer_impl", 128 "../../api/audio:audio_mixer_api", 129 "../../common_audio", 130 "../../rtc_base:stringutils", 131 "//third_party/abseil-cpp/absl/flags:flag", 132 "//third_party/abseil-cpp/absl/flags:parse", 133 ] 134 } 135} 136