blob: ccbf9fd2e3b785e5ca39cdd36832024219463255 [file] [log] [blame]
Peter Boström5c389d32015-09-25 11:58:301# Copyright (c) 2015 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
mbonadei9aa3f0a2017-01-24 14:58:229import("../webrtc.gni")
kjellander8f8d1a02017-03-06 12:01:1610if (is_android) {
11 import("//build/config/android/config.gni")
12 import("//build/config/android/rules.gni")
13}
Peter Boström5c389d32015-09-25 11:58:3014
Mirko Bonadei86d053c2019-10-17 19:32:0415rtc_library("audio") {
Peter Boström5c389d32015-09-25 11:58:3016 sources = [
Fredrik Solenberga8b7c7f2018-01-17 10:18:3117 "audio_level.cc",
18 "audio_level.h",
Peter Boström5c389d32015-09-25 11:58:3019 "audio_receive_stream.cc",
20 "audio_receive_stream.h",
solenbergc7a8b082015-10-16 21:35:0721 "audio_send_stream.cc",
22 "audio_send_stream.h",
solenberg566ef242015-11-06 23:34:4923 "audio_state.cc",
24 "audio_state.h",
Fredrik Solenberg2a877972017-12-15 15:42:1525 "audio_transport_impl.cc",
26 "audio_transport_impl.h",
Niels Möller530ead42018-10-04 12:28:3927 "channel_receive.cc",
28 "channel_receive.h",
Marina Ciocea48623202020-04-01 08:19:4429 "channel_receive_frame_transformer_delegate.cc",
30 "channel_receive_frame_transformer_delegate.h",
Niels Möller530ead42018-10-04 12:28:3931 "channel_send.cc",
32 "channel_send.h",
Marina Ciocea65674d82020-03-31 20:41:3033 "channel_send_frame_transformer_delegate.cc",
34 "channel_send_frame_transformer_delegate.h",
Fredrik Solenberg4f4ec0a2015-10-22 08:49:2735 "conversion.h",
Sebastian Janssonfdbbada2020-01-30 18:13:5436 "null_audio_poller.cc",
37 "null_audio_poller.h",
Fredrik Solenberga8b7c7f2018-01-17 10:18:3138 "remix_resample.cc",
39 "remix_resample.h",
Peter Boström5c389d32015-09-25 11:58:3040 ]
41
Peter Boström5c389d32015-09-25 11:58:3042 deps = [
Fredrik Solenberga8b7c7f2018-01-17 10:18:3143 "../api:array_view",
kjellander676e08f2016-12-07 16:23:2744 "../api:call_api",
Marina Ciocead2aa8f92020-03-31 09:29:5645 "../api:frame_transformer_interface",
Artem Titov741daaf2019-03-21 13:37:3646 "../api:function_view",
Niels Mölleref1052a2019-03-20 07:40:2347 "../api:rtp_headers",
Niels Möller6dcd4dc2019-08-26 08:45:2848 "../api:rtp_parameters",
Mirko Bonadeid9708072019-01-25 19:26:4849 "../api:scoped_refptr",
Artem Titovd15a5752021-02-10 13:31:2450 "../api:sequence_checker",
Fredrik Solenberga8b7c7f2018-01-17 10:18:3151 "../api:transport_api",
Gustaf Ullbergf35c6662018-02-23 12:18:2952 "../api/audio:aec3_factory",
Fredrik Solenbergbbf21a32018-04-12 20:44:0953 "../api/audio:audio_frame_api",
Olga Sharonova09ceed22020-09-30 16:27:3954 "../api/audio:audio_frame_processor",
Gustaf Ullberg2ae140a2018-02-16 12:43:4955 "../api/audio:audio_mixer_api",
ossueb1fde42017-05-02 13:46:3056 "../api/audio_codecs:audio_codecs_api",
Mirko Bonadeieaaaf412019-09-13 12:42:1557 "../api/crypto:frame_decryptor_interface",
58 "../api/crypto:frame_encryptor_interface",
59 "../api/crypto:options",
Ivo Creusenc3d1f9b2019-11-01 10:47:5160 "../api/neteq:neteq_api",
Danil Chapovalov83bbe912019-08-07 10:24:5361 "../api/rtc_event_log",
Sebastian Jansson0b698262019-03-07 08:17:1962 "../api/task_queue",
Niels Möllera8370302019-09-02 13:16:4963 "../api/transport/rtp:rtp_source",
Tim Nab8c775a2020-01-10 18:33:0564 "../call:audio_sender_interface",
Mirko Bonadei245660a2017-10-10 12:38:1165 "../call:bitrate_allocator",
ossuf515ab82016-12-07 12:52:5866 "../call:call_interfaces",
nissed76b7b22017-06-01 11:02:3567 "../call:rtp_interfaces",
aleloi04c07222016-11-22 14:42:5368 "../common_audio",
Mirko Bonadeidbbb33c2018-02-05 14:50:4169 "../common_audio:common_audio_c",
Qingsi Wang970b0882018-02-01 19:04:4670 "../logging:rtc_event_audio",
Oskar Sundbom56ef3052018-10-30 15:11:0271 "../logging:rtc_stream_config",
Olga Sharonova09ceed22020-09-30 16:27:3972 "../modules/async_audio_processing",
Fredrik Solenberga8b7c7f2018-01-17 10:18:3173 "../modules/audio_coding",
Niels Möllered44f542019-07-30 13:15:5974 "../modules/audio_coding:audio_coding_module_typedefs",
Karl Wiberg23659362018-11-01 10:13:4475 "../modules/audio_coding:audio_encoder_cng",
Fredrik Solenberga8b7c7f2018-01-17 10:18:3176 "../modules/audio_coding:audio_network_adaptor_config",
Philipp Hanckeedcd9662020-06-24 10:52:4277 "../modules/audio_coding:red",
aleloidd310712016-11-17 14:28:5978 "../modules/audio_device",
79 "../modules/audio_processing",
Alessio Bazzicab768e882018-11-07 14:29:5480 "../modules/audio_processing:api",
Per Åhgren71652f42020-03-17 12:23:5881 "../modules/audio_processing:audio_frame_proxies",
Sam Zackrisson7eab0a82020-03-20 14:55:2982 "../modules/audio_processing:rms_level",
Artem Titov94b57c02019-03-21 12:35:1083 "../modules/pacing",
Mirko Bonadeib5728d92017-12-06 06:51:3384 "../modules/rtp_rtcp",
Fredrik Solenberga8b7c7f2018-01-17 10:18:3185 "../modules/rtp_rtcp:rtp_rtcp_format",
86 "../modules/utility",
Artem Titov94b57c02019-03-21 12:35:1087 "../rtc_base",
Jonas Olssonabbe8412018-04-03 11:40:0588 "../rtc_base:audio_format_to_string",
Patrik Höglunda8005cf2017-12-13 15:05:4289 "../rtc_base:checks",
Fredrik Solenberga8b7c7f2018-01-17 10:18:3190 "../rtc_base:rate_limiter",
ehmaldonadof6a861a2017-07-19 17:40:4791 "../rtc_base:rtc_base_approved",
92 "../rtc_base:rtc_task_queue",
Karl Wiberg12edf4c2018-03-07 13:18:5693 "../rtc_base:safe_minmax",
Mirko Bonadeie5f4c6b2021-01-15 09:41:0194 "../rtc_base:threading",
Sebastian Janssonf23131f2019-10-03 08:03:5595 "../rtc_base/experiments:field_trial_parser",
Markus Handell62872802020-07-06 13:15:0796 "../rtc_base/synchronization:mutex",
Mirko Bonadei20e4c802020-11-23 10:07:4297 "../rtc_base/system:no_unique_address",
Marina Ciocea48623202020-04-01 08:19:4498 "../rtc_base/task_utils:to_queued_task",
Peter Boström5c389d32015-09-25 11:58:3099 "../system_wrappers",
Mirko Bonadei17f48782018-09-28 06:51:10100 "../system_wrappers:field_trial",
101 "../system_wrappers:metrics",
Fredrik Solenberg2a877972017-12-15 15:42:15102 "utility:audio_frame_operations",
Mirko Bonadei2dcf3482020-06-05 12:30:41103 ]
104 absl_deps = [
Karl Wiberg918f50c2018-07-05 09:40:33105 "//third_party/abseil-cpp/absl/memory",
Danil Chapovalovb9b146c2018-06-15 10:28:07106 "//third_party/abseil-cpp/absl/types:optional",
Peter Boström5c389d32015-09-25 11:58:30107 ]
108}
Peter Boström02083222016-06-14 10:52:54109if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 19:32:04110 rtc_library("audio_end_to_end_test") {
Fredrik Solenberg73276ad2017-09-14 12:46:47111 testonly = true
112
113 sources = [
114 "test/audio_end_to_end_test.cc",
115 "test/audio_end_to_end_test.h",
116 ]
117 deps = [
118 ":audio",
Artem Titov46c4e602018-08-17 12:26:54119 "../api:simulated_network_api",
Danil Chapovalov44db4362019-09-30 02:16:28120 "../api/task_queue",
Artem Titov4e199e92018-08-20 11:30:39121 "../call:fake_network",
122 "../call:simulated_network",
Artem Titov94b57c02019-03-21 12:35:10123 "../system_wrappers",
Fredrik Solenberg73276ad2017-09-14 12:46:47124 "../test:test_common",
125 "../test:test_support",
126 ]
Fredrik Solenberg73276ad2017-09-14 12:46:47127 }
128
Mirko Bonadei86d053c2019-10-17 19:32:04129 rtc_library("audio_tests") {
Peter Boström02083222016-06-14 10:52:54130 testonly = true
kjellander676e08f2016-12-07 16:23:27131
Peter Boström02083222016-06-14 10:52:54132 sources = [
133 "audio_receive_stream_unittest.cc",
solenberg18f54272017-09-15 16:56:08134 "audio_send_stream_tests.cc",
Peter Boström02083222016-06-14 10:52:54135 "audio_send_stream_unittest.cc",
136 "audio_state_unittest.cc",
Marina Ciocea701ccf92020-05-04 14:08:32137 "channel_receive_frame_transformer_delegate_unittest.cc",
Marina Ciocead7197082020-05-04 15:50:38138 "channel_send_frame_transformer_delegate_unittest.cc",
Fredrik Solenberga8b7c7f2018-01-17 10:18:31139 "mock_voe_channel_proxy.h",
140 "remix_resample_unittest.cc",
Mirko Bonadei264bee82018-08-07 06:53:41141 "test/audio_stats_test.cc",
Peter Boström02083222016-06-14 10:52:54142 ]
143 deps = [
144 ":audio",
Fredrik Solenberg73276ad2017-09-14 12:46:47145 ":audio_end_to_end_test",
Anton Sukhanov4f08faa2019-05-21 18:12:57146 "../api:libjingle_peerconnection_api",
aleloi04c07222016-11-22 14:42:53147 "../api:mock_audio_mixer",
Benjamin Wright78410ad2018-10-25 16:52:57148 "../api:mock_frame_decryptor",
149 "../api:mock_frame_encryptor",
Fredrik Solenbergbbf21a32018-04-12 20:44:09150 "../api/audio:audio_frame_api",
Niels Möller7d76a312018-10-26 10:57:07151 "../api/audio_codecs:audio_codecs_api",
152 "../api/audio_codecs/opus:audio_decoder_opus",
153 "../api/audio_codecs/opus:audio_encoder_opus",
Danil Chapovalov83bbe912019-08-07 10:24:53154 "../api/rtc_event_log",
Danil Chapovalov31660fd2019-03-22 11:59:48155 "../api/task_queue:default_task_queue_factory",
Sebastian Jansson5f83cf02018-05-08 12:52:22156 "../api/units:time_delta",
Niels Möller7d76a312018-10-26 10:57:07157 "../call:mock_bitrate_allocator",
Fredrik Solenberg2a877972017-12-15 15:42:15158 "../call:mock_call_interfaces",
Sebastian Janssonef9daee2018-02-22 13:49:02159 "../call:mock_rtp_interfaces",
Patrik Höglundc0e68042017-11-13 16:04:05160 "../call:rtp_interfaces",
nisse0f15f922017-06-21 08:05:22161 "../call:rtp_receiver",
Sebastian Jansson0b698262019-03-07 08:17:19162 "../call:rtp_sender",
Fredrik Solenberga8b7c7f2018-01-17 10:18:31163 "../common_audio",
Patrik Höglund731082c2018-01-03 08:08:20164 "../logging:mocks",
Danil Chapovalov31660fd2019-03-22 11:59:48165 "../modules/audio_device:audio_device_impl", # For TestAudioDeviceModule
aleloidd310712016-11-17 14:28:59166 "../modules/audio_device:mock_audio_device",
aleloi04c07222016-11-22 14:42:53167 "../modules/audio_mixer:audio_mixer_impl",
Henrik Boströmd2c336f2019-07-03 15:11:10168 "../modules/audio_mixer:audio_mixer_test_utils",
Ivo Creusen56d460902017-11-24 16:29:59169 "../modules/audio_processing:audio_processing_statistics",
Patrik Höglund62139292017-12-19 15:44:45170 "../modules/audio_processing:mocks",
Artem Titov94b57c02019-03-21 12:35:10171 "../modules/pacing",
Patrik Höglundc0e68042017-11-13 16:04:05172 "../modules/rtp_rtcp:mock_rtp_rtcp",
173 "../modules/rtp_rtcp:rtp_rtcp_format",
Niels Möller7d76a312018-10-26 10:57:07174 "../modules/utility",
Fredrik Solenberga8b7c7f2018-01-17 10:18:31175 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 17:40:47176 "../rtc_base:rtc_base_approved",
Danil Chapovalov31660fd2019-03-22 11:59:48177 "../rtc_base:rtc_base_tests_utils",
Patrik Höglunda8005cf2017-12-13 15:05:42178 "../rtc_base:safe_compare",
Danil Chapovalov31660fd2019-03-22 11:59:48179 "../rtc_base:task_queue_for_test",
Bjorn Terelius5c2f1f02019-01-16 16:45:05180 "../rtc_base:timeutils",
Artem Titov94b57c02019-03-21 12:35:10181 "../system_wrappers",
Patrik Höglundc0e68042017-11-13 16:04:05182 "../test:audio_codec_mocks",
Danil Chapovalov31660fd2019-03-22 11:59:48183 "../test:field_trial",
Marina Ciocea701ccf92020-05-04 14:08:32184 "../test:mock_frame_transformer",
185 "../test:mock_transformable_frame",
Tim Na9526c552020-02-20 19:53:13186 "../test:mock_transport",
Patrik Höglundc0e68042017-11-13 16:04:05187 "../test:rtp_test_utils",
aleloi10111bc2016-11-17 14:48:48188 "../test:test_common",
aleloi6321b492016-12-05 09:46:09189 "../test:test_support",
ehmaldonado894c2bb2017-01-05 14:03:24190 "utility:utility_tests",
Peter Boström02083222016-06-14 10:52:54191 "//testing/gtest",
192 ]
Peter Boström02083222016-06-14 10:52:54193 }
kjellander8f8d1a02017-03-06 12:01:16194
Andrey Logvine7c79fd2021-02-01 09:56:37195 if (rtc_enable_protobuf && !build_with_chromium) {
oprypin6d305ba2017-03-30 11:01:30196 rtc_test("low_bandwidth_audio_test") {
kjellander8f8d1a02017-03-06 12:01:16197 testonly = true
198
199 sources = [
200 "test/low_bandwidth_audio_test.cc",
Artem Titovb1f2d602019-07-10 12:40:58201 "test/low_bandwidth_audio_test_flags.cc",
Artem Titovc8263e02019-07-05 10:34:36202 "test/pc_low_bandwidth_audio_test.cc",
kjellander8f8d1a02017-03-06 12:01:16203 ]
204
oprypin92220ff2017-03-23 10:40:03205 deps = [
Fredrik Solenberg73276ad2017-09-14 12:46:47206 ":audio_end_to_end_test",
Artem Titovc8263e02019-07-05 10:34:36207 "../api:create_network_emulation_manager",
208 "../api:create_peerconnection_quality_test_fixture",
209 "../api:network_emulation_manager_api",
210 "../api:peer_connection_quality_test_fixture_api",
Artem Titov46c4e602018-08-17 12:26:54211 "../api:simulated_network_api",
Artem Titov1ff3c582020-07-01 13:20:37212 "../api:time_controller",
Artem Titovc8263e02019-07-05 10:34:36213 "../call:simulated_network",
oprypin92220ff2017-03-23 10:40:03214 "../common_audio",
215 "../system_wrappers",
Patrik Höglund7696bef2018-03-15 14:05:39216 "../test:fileutils",
Artem Titovb1f2d602019-07-10 12:40:58217 "../test:perf_test",
oprypin92220ff2017-03-23 10:40:03218 "../test:test_common",
219 "../test:test_main",
Artem Titovc8263e02019-07-05 10:34:36220 "../test:test_support",
221 "../test/pc/e2e:network_quality_metrics_reporter",
tschumim9d117642017-07-17 08:41:41222 "//testing/gtest",
oprypin92220ff2017-03-23 10:40:03223 ]
Andrey Logvin78646002021-01-29 10:50:19224 absl_deps = [ "//third_party/abseil-cpp/absl/flags:flag" ]
kjellander8f8d1a02017-03-06 12:01:16225 if (is_android) {
oprypin92220ff2017-03-23 10:40:03226 deps += [ "//testing/android/native_test:native_test_native_code" ]
227 }
oprypin92220ff2017-03-23 10:40:03228 data = [
Oleh Prypin8cf0a872018-03-18 21:31:06229 "../resources/voice_engine/audio_tiny16.wav",
Oleh Prypin9c1ee362018-03-19 14:58:08230 "../resources/voice_engine/audio_tiny48.wav",
Oleh Prypin8cf0a872018-03-18 21:31:06231 ]
Oleh Prypin8cf0a872018-03-18 21:31:06232 }
233
234 group("low_bandwidth_audio_perf_test") {
235 testonly = true
236
Patrik Höglunde4ae1ce2020-03-27 08:11:30237 deps = [
238 ":low_bandwidth_audio_test",
239 "//third_party/catapult/tracing/tracing/proto:histogram_proto",
240 "//third_party/protobuf:py_proto_runtime",
241 ]
Oleh Prypin8cf0a872018-03-18 21:31:06242
243 data = [
244 "test/low_bandwidth_audio_test.py",
Mirko Bonadei92ea95e2017-09-15 04:47:31245 "../resources/voice_engine/audio_tiny16.wav",
246 "../resources/voice_engine/audio_tiny48.wav",
Patrik Höglunde4ae1ce2020-03-27 08:11:30247 "${root_out_dir}/pyproto/tracing/tracing/proto/histogram_pb2.py",
oprypin92220ff2017-03-23 10:40:03248 ]
Patrik Höglund3b4bbf52020-03-26 07:41:09249
250 # TODO(http://crbug.com/1029452): Create a cleaner target with just the
251 # tracing python code. We don't need Polymer for instance.
252 data_deps = [ "//third_party/catapult/tracing:convert_chart_json" ]
253
Oleh Prypin7b2676f2018-03-19 10:33:03254 if (is_win) {
255 data += [ "${root_out_dir}/low_bandwidth_audio_test.exe" ]
256 } else {
257 data += [ "${root_out_dir}/low_bandwidth_audio_test" ]
258 }
259
Hidehiko Abef264e702020-09-10 09:10:11260 if (is_linux || is_chromeos || is_android) {
Edward Lemur20110752017-09-28 14:14:37261 data += [
262 "../tools_webrtc/audio_quality/linux/PolqaOem64",
263 "../tools_webrtc/audio_quality/linux/pesq",
264 ]
265 }
266 if (is_win) {
267 data += [
268 "../tools_webrtc/audio_quality/win/PolqaOem64.dll",
269 "../tools_webrtc/audio_quality/win/PolqaOem64.exe",
270 "../tools_webrtc/audio_quality/win/pesq.exe",
271 "../tools_webrtc/audio_quality/win/vcomp120.dll",
272 ]
273 }
274 if (is_mac) {
275 data += [ "../tools_webrtc/audio_quality/mac/pesq" ]
276 }
Oleh Prypin650a8262018-03-15 13:52:41277
Oleh Prypin8cf0a872018-03-18 21:31:06278 write_runtime_deps = "${root_out_dir}/${target_name}.runtime_deps"
kjellander8f8d1a02017-03-06 12:01:16279 }
280 }
tschumim9d117642017-07-17 08:41:41281
Andrey Logvine7c79fd2021-02-01 09:56:37282 if (!build_with_chromium) {
283 rtc_library("audio_perf_tests") {
284 testonly = true
tschumim9d117642017-07-17 08:41:41285
Andrey Logvine7c79fd2021-02-01 09:56:37286 sources = [
287 "test/audio_bwe_integration_test.cc",
288 "test/audio_bwe_integration_test.h",
289 ]
290 deps = [
291 "../api:simulated_network_api",
292 "../api/task_queue",
293 "../call:fake_network",
294 "../call:simulated_network",
295 "../common_audio",
296 "../rtc_base:rtc_base_approved",
297 "../rtc_base:task_queue_for_test",
298 "../system_wrappers",
299 "../test:field_trial",
300 "../test:fileutils",
301 "../test:test_common",
302 "../test:test_main",
303 "../test:test_support",
304 "//testing/gtest",
305 ]
tschumim9d117642017-07-17 08:41:41306
Andrey Logvine7c79fd2021-02-01 09:56:37307 data = [ "//resources/voice_engine/audio_dtx16.wav" ]
308 }
tschumim9d117642017-07-17 08:41:41309 }
Peter Boström02083222016-06-14 10:52:54310}