xref: /aosp_15_r20/external/webrtc/modules/audio_coding/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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")
10import("audio_coding.gni")
11if (rtc_enable_protobuf) {
12  import("//third_party/protobuf/proto_library.gni")
13}
14
15visibility = [ ":*" ]
16
17rtc_source_set("audio_coding_module_typedefs") {
18  visibility += [ "*" ]
19  sources = [ "include/audio_coding_module_typedefs.h" ]
20}
21
22rtc_library("audio_coding") {
23  visibility += [ "*" ]
24  sources = [
25    "acm2/acm_receiver.cc",
26    "acm2/acm_receiver.h",
27    "acm2/acm_remixing.cc",
28    "acm2/acm_remixing.h",
29    "acm2/acm_resampler.cc",
30    "acm2/acm_resampler.h",
31    "acm2/audio_coding_module.cc",
32    "acm2/call_statistics.cc",
33    "acm2/call_statistics.h",
34    "include/audio_coding_module.h",
35  ]
36
37  defines = []
38
39  deps = [
40    ":audio_coding_module_typedefs",
41    ":default_neteq_factory",
42    ":neteq",
43    "..:module_api",
44    "..:module_api_public",
45    "../../api:array_view",
46    "../../api:function_view",
47    "../../api/audio:audio_frame_api",
48    "../../api/audio_codecs:audio_codecs_api",
49    "../../api/neteq:neteq_api",
50    "../../common_audio",
51    "../../common_audio:common_audio_c",
52    "../../rtc_base:audio_format_to_string",
53    "../../rtc_base:buffer",
54    "../../rtc_base:checks",
55    "../../rtc_base:logging",
56    "../../rtc_base:macromagic",
57    "../../rtc_base:safe_conversions",
58    "../../rtc_base/synchronization:mutex",
59    "../../system_wrappers",
60    "../../system_wrappers:metrics",
61  ]
62  absl_deps = [
63    "//third_party/abseil-cpp/absl/strings",
64    "//third_party/abseil-cpp/absl/types:optional",
65  ]
66}
67
68rtc_library("legacy_encoded_audio_frame") {
69  sources = [
70    "codecs/legacy_encoded_audio_frame.cc",
71    "codecs/legacy_encoded_audio_frame.h",
72  ]
73  deps = [
74    "../../api:array_view",
75    "../../api/audio_codecs:audio_codecs_api",
76    "../../rtc_base:buffer",
77    "../../rtc_base:checks",
78  ]
79  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
80}
81
82rtc_library("webrtc_cng") {
83  visibility += webrtc_default_visibility
84  sources = [
85    "codecs/cng/webrtc_cng.cc",
86    "codecs/cng/webrtc_cng.h",
87  ]
88
89  deps = [
90    "../../api:array_view",
91    "../../common_audio:common_audio_c",
92    "../../rtc_base:buffer",
93    "../../rtc_base:checks",
94    "../../rtc_base:safe_conversions",
95  ]
96}
97
98rtc_library("audio_encoder_cng") {
99  visibility += [ "*" ]
100  sources = [
101    "codecs/cng/audio_encoder_cng.cc",
102    "codecs/cng/audio_encoder_cng.h",
103  ]
104
105  deps = [
106    ":webrtc_cng",
107    "../../api/audio_codecs:audio_codecs_api",
108    "../../api/units:time_delta",
109    "../../common_audio",
110    "../../rtc_base:checks",
111  ]
112  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
113}
114
115rtc_library("red") {
116  visibility += [ "*" ]
117  sources = [
118    "codecs/red/audio_encoder_copy_red.cc",
119    "codecs/red/audio_encoder_copy_red.h",
120  ]
121
122  deps = [
123    "../../api:array_view",
124    "../../api:field_trials_view",
125    "../../api/audio_codecs:audio_codecs_api",
126    "../../api/units:time_delta",
127    "../../common_audio",
128    "../../rtc_base:buffer",
129    "../../rtc_base:byte_order",
130    "../../rtc_base:checks",
131    "../../rtc_base:logging",
132  ]
133  absl_deps = [
134    "//third_party/abseil-cpp/absl/strings",
135    "//third_party/abseil-cpp/absl/types:optional",
136  ]
137}
138
139rtc_library("g711") {
140  visibility += [ "*" ]
141  poisonous = [ "audio_codecs" ]
142  sources = [
143    "codecs/g711/audio_decoder_pcm.cc",
144    "codecs/g711/audio_decoder_pcm.h",
145    "codecs/g711/audio_encoder_pcm.cc",
146    "codecs/g711/audio_encoder_pcm.h",
147  ]
148
149  deps = [
150    ":legacy_encoded_audio_frame",
151    "../../api:array_view",
152    "../../api/audio_codecs:audio_codecs_api",
153    "../../api/units:time_delta",
154    "../../rtc_base:buffer",
155    "../../rtc_base:checks",
156  ]
157  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
158  public_deps = [ ":g711_c" ]  # no-presubmit-check TODO(webrtc:8603)
159}
160
161rtc_library("g711_c") {
162  poisonous = [ "audio_codecs" ]
163  sources = [
164    "codecs/g711/g711_interface.c",
165    "codecs/g711/g711_interface.h",
166  ]
167  deps = [ "../third_party/g711:g711_3p" ]
168}
169
170rtc_library("g722") {
171  visibility += [ "*" ]
172  poisonous = [ "audio_codecs" ]
173  sources = [
174    "codecs/g722/audio_decoder_g722.cc",
175    "codecs/g722/audio_decoder_g722.h",
176    "codecs/g722/audio_encoder_g722.cc",
177    "codecs/g722/audio_encoder_g722.h",
178  ]
179
180  deps = [
181    ":legacy_encoded_audio_frame",
182    "../../api:array_view",
183    "../../api/audio_codecs:audio_codecs_api",
184    "../../api/audio_codecs/g722:audio_encoder_g722_config",
185    "../../api/units:time_delta",
186    "../../rtc_base:buffer",
187    "../../rtc_base:checks",
188    "../../rtc_base:safe_conversions",
189  ]
190  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
191  public_deps = [ ":g722_c" ]  # no-presubmit-check TODO(webrtc:8603)
192}
193
194rtc_library("g722_c") {
195  poisonous = [ "audio_codecs" ]
196  sources = [
197    "codecs/g722/g722_interface.c",
198    "codecs/g722/g722_interface.h",
199  ]
200  deps = [ "../third_party/g722:g722_3p" ]
201}
202
203rtc_library("ilbc") {
204  visibility += webrtc_default_visibility
205  poisonous = [ "audio_codecs" ]
206  sources = [
207    "codecs/ilbc/audio_decoder_ilbc.cc",
208    "codecs/ilbc/audio_decoder_ilbc.h",
209    "codecs/ilbc/audio_encoder_ilbc.cc",
210    "codecs/ilbc/audio_encoder_ilbc.h",
211  ]
212
213  deps = [
214    ":legacy_encoded_audio_frame",
215    "../../api:array_view",
216    "../../api/audio_codecs:audio_codecs_api",
217    "../../api/audio_codecs/ilbc:audio_encoder_ilbc_config",
218    "../../api/units:time_delta",
219    "../../common_audio",
220    "../../rtc_base:buffer",
221    "../../rtc_base:checks",
222    "../../rtc_base:logging",
223    "../../rtc_base:safe_conversions",
224  ]
225  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
226  public_deps = [ ":ilbc_c" ]  # no-presubmit-check TODO(webrtc:8603)
227}
228
229rtc_library("ilbc_c") {
230  poisonous = [ "audio_codecs" ]
231  sources = [
232    "codecs/ilbc/abs_quant.c",
233    "codecs/ilbc/abs_quant.h",
234    "codecs/ilbc/abs_quant_loop.c",
235    "codecs/ilbc/abs_quant_loop.h",
236    "codecs/ilbc/augmented_cb_corr.c",
237    "codecs/ilbc/augmented_cb_corr.h",
238    "codecs/ilbc/bw_expand.c",
239    "codecs/ilbc/bw_expand.h",
240    "codecs/ilbc/cb_construct.c",
241    "codecs/ilbc/cb_construct.h",
242    "codecs/ilbc/cb_mem_energy.c",
243    "codecs/ilbc/cb_mem_energy.h",
244    "codecs/ilbc/cb_mem_energy_augmentation.c",
245    "codecs/ilbc/cb_mem_energy_augmentation.h",
246    "codecs/ilbc/cb_mem_energy_calc.c",
247    "codecs/ilbc/cb_mem_energy_calc.h",
248    "codecs/ilbc/cb_search.c",
249    "codecs/ilbc/cb_search.h",
250    "codecs/ilbc/cb_search_core.c",
251    "codecs/ilbc/cb_search_core.h",
252    "codecs/ilbc/cb_update_best_index.c",
253    "codecs/ilbc/cb_update_best_index.h",
254    "codecs/ilbc/chebyshev.c",
255    "codecs/ilbc/chebyshev.h",
256    "codecs/ilbc/comp_corr.c",
257    "codecs/ilbc/comp_corr.h",
258    "codecs/ilbc/constants.c",
259    "codecs/ilbc/constants.h",
260    "codecs/ilbc/create_augmented_vec.c",
261    "codecs/ilbc/create_augmented_vec.h",
262    "codecs/ilbc/decode.c",
263    "codecs/ilbc/decode.h",
264    "codecs/ilbc/decode_residual.c",
265    "codecs/ilbc/decode_residual.h",
266    "codecs/ilbc/decoder_interpolate_lsf.c",
267    "codecs/ilbc/decoder_interpolate_lsf.h",
268    "codecs/ilbc/defines.h",
269    "codecs/ilbc/do_plc.c",
270    "codecs/ilbc/do_plc.h",
271    "codecs/ilbc/encode.c",
272    "codecs/ilbc/encode.h",
273    "codecs/ilbc/energy_inverse.c",
274    "codecs/ilbc/energy_inverse.h",
275    "codecs/ilbc/enh_upsample.c",
276    "codecs/ilbc/enh_upsample.h",
277    "codecs/ilbc/enhancer.c",
278    "codecs/ilbc/enhancer.h",
279    "codecs/ilbc/enhancer_interface.c",
280    "codecs/ilbc/enhancer_interface.h",
281    "codecs/ilbc/filtered_cb_vecs.c",
282    "codecs/ilbc/filtered_cb_vecs.h",
283    "codecs/ilbc/frame_classify.c",
284    "codecs/ilbc/frame_classify.h",
285    "codecs/ilbc/gain_dequant.c",
286    "codecs/ilbc/gain_dequant.h",
287    "codecs/ilbc/gain_quant.c",
288    "codecs/ilbc/gain_quant.h",
289    "codecs/ilbc/get_cd_vec.c",
290    "codecs/ilbc/get_cd_vec.h",
291    "codecs/ilbc/get_lsp_poly.c",
292    "codecs/ilbc/get_lsp_poly.h",
293    "codecs/ilbc/get_sync_seq.c",
294    "codecs/ilbc/get_sync_seq.h",
295    "codecs/ilbc/hp_input.c",
296    "codecs/ilbc/hp_input.h",
297    "codecs/ilbc/hp_output.c",
298    "codecs/ilbc/hp_output.h",
299    "codecs/ilbc/ilbc.c",
300    "codecs/ilbc/ilbc.h",
301    "codecs/ilbc/index_conv_dec.c",
302    "codecs/ilbc/index_conv_dec.h",
303    "codecs/ilbc/index_conv_enc.c",
304    "codecs/ilbc/index_conv_enc.h",
305    "codecs/ilbc/init_decode.c",
306    "codecs/ilbc/init_decode.h",
307    "codecs/ilbc/init_encode.c",
308    "codecs/ilbc/init_encode.h",
309    "codecs/ilbc/interpolate.c",
310    "codecs/ilbc/interpolate.h",
311    "codecs/ilbc/interpolate_samples.c",
312    "codecs/ilbc/interpolate_samples.h",
313    "codecs/ilbc/lpc_encode.c",
314    "codecs/ilbc/lpc_encode.h",
315    "codecs/ilbc/lsf_check.c",
316    "codecs/ilbc/lsf_check.h",
317    "codecs/ilbc/lsf_interpolate_to_poly_dec.c",
318    "codecs/ilbc/lsf_interpolate_to_poly_dec.h",
319    "codecs/ilbc/lsf_interpolate_to_poly_enc.c",
320    "codecs/ilbc/lsf_interpolate_to_poly_enc.h",
321    "codecs/ilbc/lsf_to_lsp.c",
322    "codecs/ilbc/lsf_to_lsp.h",
323    "codecs/ilbc/lsf_to_poly.c",
324    "codecs/ilbc/lsf_to_poly.h",
325    "codecs/ilbc/lsp_to_lsf.c",
326    "codecs/ilbc/lsp_to_lsf.h",
327    "codecs/ilbc/my_corr.c",
328    "codecs/ilbc/my_corr.h",
329    "codecs/ilbc/nearest_neighbor.c",
330    "codecs/ilbc/nearest_neighbor.h",
331    "codecs/ilbc/pack_bits.c",
332    "codecs/ilbc/pack_bits.h",
333    "codecs/ilbc/poly_to_lsf.c",
334    "codecs/ilbc/poly_to_lsf.h",
335    "codecs/ilbc/poly_to_lsp.c",
336    "codecs/ilbc/poly_to_lsp.h",
337    "codecs/ilbc/refiner.c",
338    "codecs/ilbc/refiner.h",
339    "codecs/ilbc/simple_interpolate_lsf.c",
340    "codecs/ilbc/simple_interpolate_lsf.h",
341    "codecs/ilbc/simple_lpc_analysis.c",
342    "codecs/ilbc/simple_lpc_analysis.h",
343    "codecs/ilbc/simple_lsf_dequant.c",
344    "codecs/ilbc/simple_lsf_dequant.h",
345    "codecs/ilbc/simple_lsf_quant.c",
346    "codecs/ilbc/simple_lsf_quant.h",
347    "codecs/ilbc/smooth.c",
348    "codecs/ilbc/smooth.h",
349    "codecs/ilbc/smooth_out_data.c",
350    "codecs/ilbc/smooth_out_data.h",
351    "codecs/ilbc/sort_sq.c",
352    "codecs/ilbc/sort_sq.h",
353    "codecs/ilbc/split_vq.c",
354    "codecs/ilbc/split_vq.h",
355    "codecs/ilbc/state_construct.c",
356    "codecs/ilbc/state_construct.h",
357    "codecs/ilbc/state_search.c",
358    "codecs/ilbc/state_search.h",
359    "codecs/ilbc/swap_bytes.c",
360    "codecs/ilbc/swap_bytes.h",
361    "codecs/ilbc/unpack_bits.c",
362    "codecs/ilbc/unpack_bits.h",
363    "codecs/ilbc/vq3.c",
364    "codecs/ilbc/vq3.h",
365    "codecs/ilbc/vq4.c",
366    "codecs/ilbc/vq4.h",
367    "codecs/ilbc/window32_w32.c",
368    "codecs/ilbc/window32_w32.h",
369    "codecs/ilbc/xcorr_coef.c",
370    "codecs/ilbc/xcorr_coef.h",
371  ]
372
373  deps = [
374    "../../api/audio_codecs:audio_codecs_api",
375    "../../common_audio",
376    "../../common_audio:common_audio_c",
377    "../../rtc_base:checks",
378    "../../rtc_base:sanitizer",
379    "../../rtc_base/system:arch",
380  ]
381  absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ]
382}
383
384rtc_library("isac_vad") {
385  visibility += [ "../audio_processing/vad:*" ]
386  sources = [
387    "codecs/isac/main/source/filter_functions.c",
388    "codecs/isac/main/source/filter_functions.h",
389    "codecs/isac/main/source/isac_vad.c",
390    "codecs/isac/main/source/isac_vad.h",
391    "codecs/isac/main/source/os_specific_inline.h",
392    "codecs/isac/main/source/pitch_estimator.c",
393    "codecs/isac/main/source/pitch_estimator.h",
394    "codecs/isac/main/source/pitch_filter.c",
395    "codecs/isac/main/source/pitch_filter.h",
396    "codecs/isac/main/source/settings.h",
397    "codecs/isac/main/source/structs.h",
398  ]
399  deps = [
400    ":isac_bwinfo",
401    "../../rtc_base:compile_assert_c",
402    "../../rtc_base/system:arch",
403    "../../rtc_base/system:ignore_warnings",
404    "../third_party/fft",
405  ]
406}
407
408rtc_source_set("isac_bwinfo") {
409  sources = [ "codecs/isac/bandwidth_info.h" ]
410  deps = []
411}
412
413rtc_library("pcm16b") {
414  visibility += [ "*" ]
415  poisonous = [ "audio_codecs" ]
416  sources = [
417    "codecs/pcm16b/audio_decoder_pcm16b.cc",
418    "codecs/pcm16b/audio_decoder_pcm16b.h",
419    "codecs/pcm16b/audio_encoder_pcm16b.cc",
420    "codecs/pcm16b/audio_encoder_pcm16b.h",
421    "codecs/pcm16b/pcm16b_common.cc",
422    "codecs/pcm16b/pcm16b_common.h",
423  ]
424
425  deps = [
426    ":g711",
427    ":legacy_encoded_audio_frame",
428    "../../api:array_view",
429    "../../api/audio_codecs:audio_codecs_api",
430    "../../rtc_base:buffer",
431    "../../rtc_base:checks",
432  ]
433  public_deps = [ ":pcm16b_c" ]  # no-presubmit-check TODO(webrtc:8603)
434}
435
436rtc_library("pcm16b_c") {
437  poisonous = [ "audio_codecs" ]
438  sources = [
439    "codecs/pcm16b/pcm16b.c",
440    "codecs/pcm16b/pcm16b.h",
441  ]
442}
443
444rtc_library("audio_coding_opus_common") {
445  sources = [
446    "codecs/opus/audio_coder_opus_common.cc",
447    "codecs/opus/audio_coder_opus_common.h",
448  ]
449
450  deps = [
451    "../../api:array_view",
452    "../../api/audio_codecs:audio_codecs_api",
453    "../../rtc_base:checks",
454    "../../rtc_base:stringutils",
455  ]
456  absl_deps = [
457    "//third_party/abseil-cpp/absl/strings",
458    "//third_party/abseil-cpp/absl/types:optional",
459  ]
460}
461
462rtc_library("webrtc_opus") {
463  visibility += webrtc_default_visibility
464  poisonous = [ "audio_codecs" ]
465  sources = [
466    "codecs/opus/audio_decoder_opus.cc",
467    "codecs/opus/audio_decoder_opus.h",
468    "codecs/opus/audio_encoder_opus.cc",
469    "codecs/opus/audio_encoder_opus.h",
470  ]
471
472  deps = [
473    ":audio_coding_opus_common",
474    ":audio_network_adaptor",
475    "../../api:array_view",
476    "../../api/audio_codecs:audio_codecs_api",
477    "../../api/audio_codecs/opus:audio_encoder_opus_config",
478    "../../common_audio",
479    "../../rtc_base:buffer",
480    "../../rtc_base:checks",
481    "../../rtc_base:logging",
482    "../../rtc_base:macromagic",
483    "../../rtc_base:protobuf_utils",
484    "../../rtc_base:rtc_numerics",
485    "../../rtc_base:safe_conversions",
486    "../../rtc_base:safe_minmax",
487    "../../rtc_base:stringutils",
488    "../../rtc_base:timeutils",
489    "../../system_wrappers:field_trial",
490  ]
491  absl_deps = [
492    "//third_party/abseil-cpp/absl/strings",
493    "//third_party/abseil-cpp/absl/types:optional",
494  ]
495  public_deps =  # no-presubmit-check TODO(webrtc:8603)
496      [ ":webrtc_opus_wrapper" ]
497
498  defines = audio_codec_defines
499}
500
501rtc_library("webrtc_multiopus") {
502  visibility += webrtc_default_visibility
503  poisonous = [ "audio_codecs" ]
504  sources = [
505    "codecs/opus/audio_decoder_multi_channel_opus_impl.cc",
506    "codecs/opus/audio_decoder_multi_channel_opus_impl.h",
507    "codecs/opus/audio_encoder_multi_channel_opus_impl.cc",
508    "codecs/opus/audio_encoder_multi_channel_opus_impl.h",
509  ]
510
511  deps = [
512    ":audio_coding_opus_common",
513    "../../api/audio_codecs:audio_codecs_api",
514    "../../api/audio_codecs/opus:audio_decoder_opus_config",
515    "../../api/audio_codecs/opus:audio_encoder_opus_config",
516    "../../api/units:time_delta",
517    "../../rtc_base:buffer",
518    "../../rtc_base:checks",
519    "../../rtc_base:logging",
520    "../../rtc_base:macromagic",
521    "../../rtc_base:safe_minmax",
522    "../../rtc_base:stringutils",
523  ]
524  absl_deps = [
525    "//third_party/abseil-cpp/absl/memory",
526    "//third_party/abseil-cpp/absl/strings",
527    "//third_party/abseil-cpp/absl/types:optional",
528  ]
529  public_deps =  # no-presubmit-check TODO(webrtc:8603)
530      [ ":webrtc_opus_wrapper" ]
531
532  defines = audio_codec_defines
533}
534
535rtc_library("webrtc_opus_wrapper") {
536  poisonous = [ "audio_codecs" ]
537  sources = [
538    "codecs/opus/opus_inst.h",
539    "codecs/opus/opus_interface.cc",
540    "codecs/opus/opus_interface.h",
541  ]
542
543  defines = audio_coding_defines
544
545  deps = [
546    "../../api:array_view",
547    "../../rtc_base:checks",
548    "../../rtc_base:ignore_wundef",
549    "../../system_wrappers:field_trial",
550  ]
551
552  if (rtc_build_opus) {
553    deps += [ rtc_opus_dir ]
554    public_configs = [ "//third_party/opus:opus_config" ]
555  } else if (build_with_mozilla) {
556    include_dirs = [ getenv("DIST") + "/include/opus" ]
557  }
558}
559
560if (rtc_enable_protobuf) {
561  proto_library("ana_debug_dump_proto") {
562    visibility += webrtc_default_visibility
563    sources = [ "audio_network_adaptor/debug_dump.proto" ]
564    link_deps = [ ":ana_config_proto" ]
565    proto_out_dir = "modules/audio_coding/audio_network_adaptor"
566  }
567  proto_library("ana_config_proto") {
568    visibility += [ "*" ]
569    sources = [ "audio_network_adaptor/config.proto" ]
570    proto_out_dir = "modules/audio_coding/audio_network_adaptor"
571  }
572}
573
574rtc_library("audio_network_adaptor_config") {
575  visibility += webrtc_default_visibility
576  sources = [
577    "audio_network_adaptor/audio_network_adaptor_config.cc",
578    "audio_network_adaptor/include/audio_network_adaptor_config.h",
579  ]
580  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
581}
582
583rtc_library("audio_network_adaptor") {
584  visibility += webrtc_default_visibility
585  sources = [
586    "audio_network_adaptor/audio_network_adaptor_impl.cc",
587    "audio_network_adaptor/audio_network_adaptor_impl.h",
588    "audio_network_adaptor/bitrate_controller.cc",
589    "audio_network_adaptor/bitrate_controller.h",
590    "audio_network_adaptor/channel_controller.cc",
591    "audio_network_adaptor/channel_controller.h",
592    "audio_network_adaptor/controller.cc",
593    "audio_network_adaptor/controller.h",
594    "audio_network_adaptor/controller_manager.cc",
595    "audio_network_adaptor/controller_manager.h",
596    "audio_network_adaptor/debug_dump_writer.cc",
597    "audio_network_adaptor/debug_dump_writer.h",
598    "audio_network_adaptor/dtx_controller.cc",
599    "audio_network_adaptor/dtx_controller.h",
600    "audio_network_adaptor/event_log_writer.cc",
601    "audio_network_adaptor/event_log_writer.h",
602    "audio_network_adaptor/fec_controller_plr_based.cc",
603    "audio_network_adaptor/fec_controller_plr_based.h",
604    "audio_network_adaptor/frame_length_controller.cc",
605    "audio_network_adaptor/frame_length_controller.h",
606    "audio_network_adaptor/frame_length_controller_v2.cc",
607    "audio_network_adaptor/frame_length_controller_v2.h",
608    "audio_network_adaptor/include/audio_network_adaptor.h",
609    "audio_network_adaptor/util/threshold_curve.h",
610  ]
611
612  public_deps =  # no-presubmit-check TODO(webrtc:8603)
613      [ ":audio_network_adaptor_config" ]
614
615  deps = [
616    "../../api/audio_codecs:audio_codecs_api",
617    "../../api/rtc_event_log",
618    "../../common_audio",
619    "../../logging:rtc_event_audio",
620    "../../rtc_base:checks",
621    "../../rtc_base:ignore_wundef",
622    "../../rtc_base:logging",
623    "../../rtc_base:protobuf_utils",
624    "../../rtc_base:safe_conversions",
625    "../../rtc_base:timeutils",
626    "../../rtc_base/system:file_wrapper",
627    "../../system_wrappers",
628    "../../system_wrappers:field_trial",
629  ]
630  absl_deps = [
631    "//third_party/abseil-cpp/absl/algorithm:container",
632    "//third_party/abseil-cpp/absl/strings",
633    "//third_party/abseil-cpp/absl/types:optional",
634  ]
635
636  if (rtc_enable_protobuf) {
637    deps += [
638      ":ana_config_proto",
639      ":ana_debug_dump_proto",
640    ]
641  }
642}
643
644rtc_library("neteq") {
645  visibility += webrtc_default_visibility
646  sources = [
647    "neteq/accelerate.cc",
648    "neteq/accelerate.h",
649    "neteq/audio_multi_vector.cc",
650    "neteq/audio_multi_vector.h",
651    "neteq/audio_vector.cc",
652    "neteq/audio_vector.h",
653    "neteq/background_noise.cc",
654    "neteq/background_noise.h",
655    "neteq/buffer_level_filter.cc",
656    "neteq/buffer_level_filter.h",
657    "neteq/comfort_noise.cc",
658    "neteq/comfort_noise.h",
659    "neteq/cross_correlation.cc",
660    "neteq/cross_correlation.h",
661    "neteq/decision_logic.cc",
662    "neteq/decision_logic.h",
663    "neteq/decoder_database.cc",
664    "neteq/decoder_database.h",
665    "neteq/delay_manager.cc",
666    "neteq/delay_manager.h",
667    "neteq/dsp_helper.cc",
668    "neteq/dsp_helper.h",
669    "neteq/dtmf_buffer.cc",
670    "neteq/dtmf_buffer.h",
671    "neteq/dtmf_tone_generator.cc",
672    "neteq/dtmf_tone_generator.h",
673    "neteq/expand.cc",
674    "neteq/expand.h",
675    "neteq/expand_uma_logger.cc",
676    "neteq/expand_uma_logger.h",
677    "neteq/histogram.cc",
678    "neteq/histogram.h",
679    "neteq/merge.cc",
680    "neteq/merge.h",
681    "neteq/nack_tracker.cc",
682    "neteq/nack_tracker.h",
683    "neteq/neteq_impl.cc",
684    "neteq/neteq_impl.h",
685    "neteq/normal.cc",
686    "neteq/normal.h",
687    "neteq/packet.cc",
688    "neteq/packet.h",
689    "neteq/packet_arrival_history.cc",
690    "neteq/packet_arrival_history.h",
691    "neteq/packet_buffer.cc",
692    "neteq/packet_buffer.h",
693    "neteq/post_decode_vad.cc",
694    "neteq/post_decode_vad.h",
695    "neteq/preemptive_expand.cc",
696    "neteq/preemptive_expand.h",
697    "neteq/random_vector.cc",
698    "neteq/random_vector.h",
699    "neteq/red_payload_splitter.cc",
700    "neteq/red_payload_splitter.h",
701    "neteq/reorder_optimizer.cc",
702    "neteq/reorder_optimizer.h",
703    "neteq/statistics_calculator.cc",
704    "neteq/statistics_calculator.h",
705    "neteq/sync_buffer.cc",
706    "neteq/sync_buffer.h",
707    "neteq/time_stretch.cc",
708    "neteq/time_stretch.h",
709    "neteq/timestamp_scaler.cc",
710    "neteq/timestamp_scaler.h",
711    "neteq/underrun_optimizer.cc",
712    "neteq/underrun_optimizer.h",
713  ]
714
715  deps = [
716    ":audio_coding_module_typedefs",
717    ":webrtc_cng",
718    "..:module_api_public",
719    "../../api:array_view",
720    "../../api:rtp_headers",
721    "../../api:rtp_packet_info",
722    "../../api:scoped_refptr",
723    "../../api/audio:audio_frame_api",
724    "../../api/audio_codecs:audio_codecs_api",
725    "../../api/neteq:neteq_api",
726    "../../api/neteq:neteq_controller_api",
727    "../../api/neteq:tick_timer",
728    "../../common_audio",
729    "../../common_audio:common_audio_c",
730    "../../rtc_base:audio_format_to_string",
731    "../../rtc_base:buffer",
732    "../../rtc_base:checks",
733    "../../rtc_base:event_tracer",
734    "../../rtc_base:gtest_prod",
735    "../../rtc_base:logging",
736    "../../rtc_base:macromagic",
737    "../../rtc_base:safe_conversions",
738    "../../rtc_base:safe_minmax",
739    "../../rtc_base:sanitizer",
740    "../../rtc_base/experiments:field_trial_parser",
741    "../../rtc_base/synchronization:mutex",
742    "../../system_wrappers",
743    "../../system_wrappers:field_trial",
744    "../../system_wrappers:metrics",
745  ]
746  absl_deps = [
747    "//third_party/abseil-cpp/absl/strings",
748    "//third_party/abseil-cpp/absl/types:optional",
749  ]
750}
751
752rtc_source_set("default_neteq_factory") {
753  visibility += webrtc_default_visibility
754  sources = [
755    "neteq/default_neteq_factory.cc",
756    "neteq/default_neteq_factory.h",
757  ]
758  deps = [
759    ":neteq",
760    "../../api:scoped_refptr",
761    "../../api/audio_codecs:audio_codecs_api",
762    "../../api/neteq:default_neteq_controller_factory",
763    "../../api/neteq:neteq_api",
764    "../../system_wrappers:system_wrappers",
765  ]
766}
767
768# Although providing only test support, this target must be outside of the
769# rtc_include_tests conditional. The reason is that it supports fuzzer tests
770# that ultimately are built and run as a part of the Chromium ecosystem, which
771# does not set the rtc_include_tests flag.
772rtc_library("neteq_tools_minimal") {
773  visibility += webrtc_default_visibility
774  sources = [
775    "neteq/tools/audio_sink.cc",
776    "neteq/tools/audio_sink.h",
777    "neteq/tools/encode_neteq_input.cc",
778    "neteq/tools/encode_neteq_input.h",
779    "neteq/tools/neteq_input.cc",
780    "neteq/tools/neteq_input.h",
781    "neteq/tools/neteq_test.cc",
782    "neteq/tools/neteq_test.h",
783    "neteq/tools/packet.cc",
784    "neteq/tools/packet.h",
785    "neteq/tools/packet_source.cc",
786    "neteq/tools/packet_source.h",
787  ]
788
789  deps = [
790    ":default_neteq_factory",
791    ":neteq",
792    "../../api:array_view",
793    "../../api:neteq_simulator_api",
794    "../../api:rtp_headers",
795    "../../api/audio:audio_frame_api",
796    "../../api/audio_codecs:audio_codecs_api",
797    "../../api/neteq:custom_neteq_factory",
798    "../../api/neteq:default_neteq_controller_factory",
799    "../../api/neteq:neteq_api",
800    "../../rtc_base:buffer",
801    "../../rtc_base:checks",
802    "../../rtc_base:copy_on_write_buffer",
803    "../../rtc_base:safe_conversions",
804    "../../rtc_base:stringutils",
805    "../../system_wrappers",
806    "../rtp_rtcp:rtp_rtcp_format",
807  ]
808  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
809  defines = audio_codec_defines
810}
811
812rtc_library("neteq_test_tools") {
813  visibility += webrtc_default_visibility
814  testonly = true
815  sources = [
816    "neteq/tools/audio_checksum.h",
817    "neteq/tools/audio_loop.cc",
818    "neteq/tools/audio_loop.h",
819    "neteq/tools/constant_pcm_packet_source.cc",
820    "neteq/tools/constant_pcm_packet_source.h",
821    "neteq/tools/initial_packet_inserter_neteq_input.cc",
822    "neteq/tools/initial_packet_inserter_neteq_input.h",
823    "neteq/tools/neteq_packet_source_input.cc",
824    "neteq/tools/neteq_packet_source_input.h",
825    "neteq/tools/output_audio_file.h",
826    "neteq/tools/output_wav_file.h",
827    "neteq/tools/rtp_file_source.cc",
828    "neteq/tools/rtp_file_source.h",
829    "neteq/tools/rtp_generator.cc",
830    "neteq/tools/rtp_generator.h",
831  ]
832
833  deps = [
834    ":neteq_tools",
835    ":neteq_tools_minimal",
836    ":pcm16b",
837    "../../api:array_view",
838    "../../api:rtp_headers",
839    "../../common_audio",
840    "../../rtc_base",
841    "../../rtc_base:buffer",
842    "../../rtc_base:checks",
843    "../../rtc_base:stringutils",
844    "../../rtc_base/system:arch",
845    "../../test:rtp_test_utils",
846    "../rtp_rtcp:rtp_rtcp_format",
847  ]
848  absl_deps = [
849    "//third_party/abseil-cpp/absl/strings",
850    "//third_party/abseil-cpp/absl/types:optional",
851  ]
852
853  if (rtc_enable_protobuf) {
854    sources += [
855      "neteq/tools/neteq_event_log_input.cc",
856      "neteq/tools/neteq_event_log_input.h",
857    ]
858    deps += [ ":rtc_event_log_source" ]
859  }
860}
861
862rtc_library("neteq_tools") {
863  visibility += webrtc_default_visibility
864  sources = [
865    "neteq/tools/fake_decode_from_file.cc",
866    "neteq/tools/fake_decode_from_file.h",
867    "neteq/tools/neteq_delay_analyzer.cc",
868    "neteq/tools/neteq_delay_analyzer.h",
869    "neteq/tools/neteq_replacement_input.cc",
870    "neteq/tools/neteq_replacement_input.h",
871    "neteq/tools/neteq_stats_getter.cc",
872    "neteq/tools/neteq_stats_getter.h",
873    "neteq/tools/neteq_stats_plotter.cc",
874    "neteq/tools/neteq_stats_plotter.h",
875  ]
876
877  deps = [
878    ":neteq_input_audio_tools",
879    ":neteq_tools_minimal",
880    "..:module_api_public",
881    "../../api:array_view",
882    "../../api/audio_codecs:audio_codecs_api",
883    "../../rtc_base:checks",
884    "../../rtc_base:safe_conversions",
885    "../../rtc_base:stringutils",
886    "../../rtc_base:timeutils",
887    "../rtp_rtcp",
888    "../rtp_rtcp:rtp_rtcp_format",
889  ]
890  absl_deps = [
891    "//third_party/abseil-cpp/absl/strings",
892    "//third_party/abseil-cpp/absl/types:optional",
893  ]
894}
895
896rtc_library("neteq_input_audio_tools") {
897  visibility += webrtc_default_visibility
898  sources = [
899    "neteq/tools/input_audio_file.cc",
900    "neteq/tools/input_audio_file.h",
901    "neteq/tools/resample_input_audio_file.cc",
902    "neteq/tools/resample_input_audio_file.h",
903  ]
904
905  deps = [
906    "../../common_audio",
907    "../../rtc_base:checks",
908  ]
909  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
910}
911
912if (rtc_enable_protobuf) {
913  rtc_library("rtc_event_log_source") {
914    testonly = true
915
916    sources = [
917      "neteq/tools/rtc_event_log_source.cc",
918      "neteq/tools/rtc_event_log_source.h",
919    ]
920
921    deps = [
922      ":neteq_tools_minimal",
923      "../../logging:rtc_event_log_parser",
924      "../../rtc_base:checks",
925      "../rtp_rtcp",
926      "../rtp_rtcp:rtp_rtcp_format",
927    ]
928    absl_deps = [
929      "//third_party/abseil-cpp/absl/strings",
930      "//third_party/abseil-cpp/absl/types:optional",
931    ]
932    public_deps =  # no-presubmit-check TODO(webrtc:8603)
933        [ "../../logging:rtc_event_log_proto" ]
934  }
935
936  # Only used for test purpose. Since we want to use it from chromium
937  # (see audio_coding_modules_tests_shared below), we cannot guard it
938  # under rtc_include_tests.
939  proto_library("neteq_unittest_proto") {
940    testonly = true
941    sources = [ "neteq/neteq_unittest.proto" ]
942    proto_out_dir = "modules/audio_coding/neteq"
943  }
944}
945
946# Allow to re-use some test classes from chromium.
947rtc_library("audio_coding_modules_tests_shared") {
948  testonly = true
949  visibility = []
950  visibility = [ "*" ]
951
952  sources = [
953    "neteq/test/neteq_decoding_test.cc",
954    "neteq/test/neteq_decoding_test.h",
955    "neteq/test/result_sink.cc",
956    "neteq/test/result_sink.h",
957    "test/PCMFile.cc",
958    "test/PCMFile.h",
959    "test/TestStereo.cc",
960    "test/TestStereo.h",
961    "test/opus_test.cc",
962    "test/opus_test.h",
963  ]
964
965  deps = [
966    ":audio_coding",
967    ":audio_coding_module_typedefs",
968    ":default_neteq_factory",
969    ":neteq_test_tools",
970    ":neteq_tools_minimal",
971    ":webrtc_opus_wrapper",
972    "..:module_api",
973    "../../api:rtp_headers",
974    "../../api/audio:audio_frame_api",
975    "../../api/audio_codecs:builtin_audio_decoder_factory",
976    "../../api/audio_codecs:builtin_audio_encoder_factory",
977    "../../api/neteq:neteq_api",
978    "../../rtc_base",
979    "../../rtc_base:checks",
980    "../../rtc_base:ignore_wundef",
981    "../../rtc_base:stringutils",
982    "../../system_wrappers",
983    "../../test:fileutils",
984    "../../test:test_support",
985    "//testing/gtest",
986  ]
987  absl_deps = [
988    "//third_party/abseil-cpp/absl/strings",
989    "//third_party/abseil-cpp/absl/types:optional",
990  ]
991  defines = audio_coding_defines
992
993  if (rtc_enable_protobuf) {
994    defines += [ "WEBRTC_NETEQ_UNITTEST_BITEXACT" ]
995    deps += [ ":neteq_unittest_proto" ]
996  }
997}
998
999if (rtc_include_tests) {
1000  audio_coding_deps = [
1001    ":audio_encoder_cng",
1002    ":g711",
1003    ":g722",
1004    ":pcm16b",
1005    "../../common_audio",
1006    "../../system_wrappers",
1007  ]
1008  if (rtc_include_ilbc) {
1009    audio_coding_deps += [ ":ilbc" ]
1010  }
1011  if (rtc_include_opus) {
1012    audio_coding_deps += [ ":webrtc_opus" ]
1013  }
1014  if (!build_with_mozilla && !build_with_chromium) {
1015    audio_coding_deps += [ ":red" ]
1016  }
1017
1018  rtc_source_set("mocks") {
1019    testonly = true
1020    sources = [
1021      "audio_network_adaptor/mock/mock_audio_network_adaptor.h",
1022      "audio_network_adaptor/mock/mock_controller.h",
1023      "audio_network_adaptor/mock/mock_controller_manager.h",
1024      "audio_network_adaptor/mock/mock_debug_dump_writer.h",
1025    ]
1026    deps = [
1027      ":audio_network_adaptor",
1028      "../../test:test_support",
1029    ]
1030  }
1031
1032  if (!build_with_chromium) {
1033    group("audio_coding_tests") {
1034      visibility += webrtc_default_visibility
1035      testonly = true
1036      public_deps = [  # no-presubmit-check TODO(webrtc:8603)
1037        ":acm_receive_test",
1038        ":acm_send_test",
1039        ":audio_codec_speed_tests",
1040        ":audio_decoder_unittests",
1041        ":audio_decoder_unittests",
1042        ":g711_test",
1043        ":g722_test",
1044        ":ilbc_test",
1045        ":neteq_ilbc_quality_test",
1046        ":neteq_opus_quality_test",
1047        ":neteq_pcm16b_quality_test",
1048        ":neteq_pcmu_quality_test",
1049        ":neteq_speed_test",
1050        ":rtp_analyze",
1051        ":rtp_encode",
1052        ":rtp_jitter",
1053        ":rtpcat",
1054        ":webrtc_opus_fec_test",
1055      ]
1056      if (rtc_enable_protobuf) {
1057        public_deps +=  # no-presubmit-check TODO(webrtc:8603)
1058            [ ":neteq_rtpplay" ]
1059      }
1060    }
1061  }
1062
1063  rtc_library("audio_coding_modules_tests") {
1064    testonly = true
1065    visibility += webrtc_default_visibility
1066
1067    sources = [
1068      "test/Channel.cc",
1069      "test/Channel.h",
1070      "test/EncodeDecodeTest.cc",
1071      "test/EncodeDecodeTest.h",
1072      "test/PacketLossTest.cc",
1073      "test/PacketLossTest.h",
1074      "test/RTPFile.cc",
1075      "test/RTPFile.h",
1076      "test/TestAllCodecs.cc",
1077      "test/TestAllCodecs.h",
1078      "test/TestRedFec.cc",
1079      "test/TestRedFec.h",
1080      "test/TestVADDTX.cc",
1081      "test/TestVADDTX.h",
1082      "test/Tester.cc",
1083      "test/TwoWayCommunication.cc",
1084      "test/TwoWayCommunication.h",
1085      "test/target_delay_unittest.cc",
1086    ]
1087    deps = [
1088      ":audio_coding",
1089      ":audio_coding_module_typedefs",
1090      ":audio_coding_modules_tests_shared",
1091      ":audio_encoder_cng",
1092      ":pcm16b_c",
1093      ":red",
1094      ":webrtc_opus_wrapper",
1095      "..:module_api",
1096      "../../api:rtp_headers",
1097      "../../api/audio:audio_frame_api",
1098      "../../api/audio_codecs:audio_codecs_api",
1099      "../../api/audio_codecs:builtin_audio_decoder_factory",
1100      "../../api/audio_codecs:builtin_audio_encoder_factory",
1101      "../../api/audio_codecs/L16:audio_decoder_L16",
1102      "../../api/audio_codecs/L16:audio_encoder_L16",
1103      "../../api/audio_codecs/g711:audio_decoder_g711",
1104      "../../api/audio_codecs/g711:audio_encoder_g711",
1105      "../../api/audio_codecs/g722:audio_decoder_g722",
1106      "../../api/audio_codecs/g722:audio_encoder_g722",
1107      "../../api/audio_codecs/ilbc:audio_decoder_ilbc",
1108      "../../api/audio_codecs/ilbc:audio_encoder_ilbc",
1109      "../../api/audio_codecs/opus:audio_decoder_opus",
1110      "../../api/audio_codecs/opus:audio_encoder_opus",
1111      "../../common_audio",
1112      "../../rtc_base:checks",
1113      "../../rtc_base:logging",
1114      "../../rtc_base:macromagic",
1115      "../../rtc_base:stringutils",
1116      "../../rtc_base:timeutils",
1117      "../../rtc_base/synchronization:mutex",
1118      "../../test:fileutils",
1119      "../../test:scoped_key_value_config",
1120      "../../test:test_support",
1121    ]
1122    absl_deps = [
1123      "//third_party/abseil-cpp/absl/strings",
1124      "//third_party/abseil-cpp/absl/types:optional",
1125    ]
1126    defines = audio_coding_defines
1127  }
1128
1129  rtc_library("audio_coding_perf_tests") {
1130    testonly = true
1131    visibility += webrtc_default_visibility
1132
1133    sources = [
1134      "codecs/opus/opus_complexity_unittest.cc",
1135      "neteq/test/neteq_performance_unittest.cc",
1136    ]
1137    deps = [
1138      ":neteq_test_support",
1139      ":neteq_test_tools",
1140      "../../api/audio_codecs/opus:audio_encoder_opus",
1141      "../../api/test/metrics:global_metrics_logger_and_exporter",
1142      "../../api/test/metrics:metric",
1143      "../../rtc_base:macromagic",
1144      "../../rtc_base:timeutils",
1145      "../../system_wrappers",
1146      "../../system_wrappers:field_trial",
1147      "../../test:fileutils",
1148      "../../test:test_support",
1149    ]
1150  }
1151
1152  rtc_library("acm_receive_test") {
1153    testonly = true
1154    sources = [
1155      "acm2/acm_receive_test.cc",
1156      "acm2/acm_receive_test.h",
1157    ]
1158
1159    defines = audio_coding_defines
1160
1161    deps = [
1162      ":audio_coding",
1163      ":neteq_tools",
1164      ":neteq_tools_minimal",
1165      "../../api:scoped_refptr",
1166      "../../api/audio_codecs:audio_codecs_api",
1167      "../../api/audio_codecs:builtin_audio_decoder_factory",
1168      "../../test:test_support",
1169      "//testing/gtest",
1170    ]
1171
1172    deps += audio_coding_deps
1173    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
1174  }
1175
1176  rtc_library("acm_send_test") {
1177    testonly = true
1178    sources = [
1179      "acm2/acm_send_test.cc",
1180      "acm2/acm_send_test.h",
1181    ]
1182
1183    defines = audio_coding_defines
1184
1185    deps = [
1186      ":audio_coding",
1187      ":neteq_input_audio_tools",
1188      ":neteq_tools",
1189      ":neteq_tools_minimal",
1190      "../../api/audio:audio_frame_api",
1191      "../../api/audio_codecs:audio_codecs_api",
1192      "../../api/audio_codecs:builtin_audio_decoder_factory",
1193      "../../api/audio_codecs:builtin_audio_encoder_factory",
1194      "../../rtc_base:checks",
1195      "../../rtc_base:stringutils",
1196      "../../test:test_support",
1197      "//testing/gtest",
1198    ]
1199    deps += audio_coding_deps
1200    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
1201  }
1202
1203  if (!build_with_chromium) {
1204    audio_decoder_unittests_resources =
1205        [ "../../resources/audio_coding/testfile32kHz.pcm" ]
1206
1207    if (is_ios) {
1208      bundle_data("audio_decoder_unittests_bundle_data") {
1209        testonly = true
1210        sources = audio_decoder_unittests_resources
1211        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
1212      }
1213    }
1214
1215    rtc_test("audio_decoder_unittests") {
1216      testonly = true
1217      sources = [ "neteq/audio_decoder_unittest.cc" ]
1218
1219      defines = neteq_defines
1220
1221      deps = [
1222               ":ilbc",
1223               ":neteq",
1224               ":neteq_input_audio_tools",
1225               ":neteq_tools",
1226               "../../api/audio_codecs:audio_codecs_api",
1227               "../../api/audio_codecs/opus:audio_encoder_opus",
1228               "../../common_audio",
1229               "../../rtc_base/system:arch",
1230               "../../test:fileutils",
1231               "../../test:test_main",
1232               "../../test:test_support",
1233               "//testing/gtest",
1234             ] + audio_coding_deps
1235
1236      data = audio_decoder_unittests_resources
1237
1238      if (is_android) {
1239        use_default_launcher = false
1240        deps += [
1241          "//build/android/gtest_apk:native_test_instrumentation_test_runner_java",
1242          "//testing/android/native_test:native_test_java",
1243          "//testing/android/native_test:native_test_support",
1244        ]
1245        shard_timeout = 900
1246      }
1247      if (is_ios) {
1248        deps += [ ":audio_decoder_unittests_bundle_data" ]
1249      }
1250    }
1251  }
1252
1253  if (rtc_enable_protobuf) {
1254    rtc_library("neteq_test_factory") {
1255      testonly = true
1256      visibility += webrtc_default_visibility
1257      defines = audio_codec_defines
1258      deps = [
1259        ":neteq_input_audio_tools",
1260        ":neteq_tools",
1261        ":neteq_tools_minimal",
1262        "../../rtc_base:checks",
1263        "../../rtc_base:refcount",
1264        "../../test:fileutils",
1265      ]
1266      absl_deps = [
1267        "//third_party/abseil-cpp/absl/strings",
1268        "//third_party/abseil-cpp/absl/types:optional",
1269      ]
1270      sources = [
1271        "neteq/tools/neteq_test_factory.cc",
1272        "neteq/tools/neteq_test_factory.h",
1273      ]
1274
1275      deps += [
1276        ":neteq",
1277        ":neteq_test_tools",
1278        "../../api/audio_codecs:builtin_audio_decoder_factory",
1279        "../../api/neteq:neteq_api",
1280        "../../test:audio_test_common",
1281        "../../test:field_trial",
1282        "../../test:test_support",
1283      ]
1284    }
1285  }
1286
1287  if (rtc_enable_protobuf && !build_with_chromium) {
1288    rtc_executable("neteq_rtpplay") {
1289      testonly = true
1290      visibility += [ "*" ]
1291      defines = []
1292      deps = [
1293        ":neteq_test_factory",
1294        ":neteq_test_tools",
1295        ":neteq_tools_minimal",
1296        "../../rtc_base:stringutils",
1297        "../../system_wrappers:field_trial",
1298        "../../test:field_trial",
1299        "//third_party/abseil-cpp/absl/flags:flag",
1300        "//third_party/abseil-cpp/absl/flags:parse",
1301        "//third_party/abseil-cpp/absl/strings",
1302        "//third_party/abseil-cpp/absl/types:optional",
1303      ]
1304      sources = [ "neteq/tools/neteq_rtpplay.cc" ]
1305    }
1306  }
1307
1308  if (!build_with_chromium) {
1309    audio_codec_speed_tests_resources = [
1310      "//resources/audio_coding/music_stereo_48kHz.pcm",
1311      "//resources/audio_coding/speech_mono_16kHz.pcm",
1312      "//resources/audio_coding/speech_mono_32_48kHz.pcm",
1313    ]
1314
1315    if (is_ios) {
1316      bundle_data("audio_codec_speed_tests_data") {
1317        testonly = true
1318        sources = audio_codec_speed_tests_resources
1319        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
1320      }
1321    }
1322
1323    rtc_test("audio_codec_speed_tests") {
1324      testonly = true
1325      defines = []
1326      deps = [
1327        "../../rtc_base:macromagic",
1328        "../../test:fileutils",
1329      ]
1330      sources = [
1331        "codecs/opus/opus_speed_test.cc",
1332        "codecs/tools/audio_codec_speed_test.cc",
1333        "codecs/tools/audio_codec_speed_test.h",
1334      ]
1335
1336      data = audio_codec_speed_tests_resources
1337
1338      if (is_android) {
1339        use_default_launcher = false
1340        deps += [
1341          "//build/android/gtest_apk:native_test_instrumentation_test_runner_java",
1342          "//testing/android/native_test:native_test_java",
1343          "//testing/android/native_test:native_test_support",
1344        ]
1345        shard_timeout = 900
1346      }
1347
1348      if (is_ios) {
1349        deps += [ ":audio_codec_speed_tests_data" ]
1350      }
1351
1352      deps += [
1353        ":webrtc_opus",
1354        "../../rtc_base:checks",
1355        "../../test:test_main",
1356        "../../test:test_support",
1357        "../audio_processing",
1358        "//testing/gtest",
1359      ]
1360    }
1361  }
1362
1363  rtc_library("neteq_test_support") {
1364    testonly = true
1365    sources = [
1366      "neteq/tools/neteq_performance_test.cc",
1367      "neteq/tools/neteq_performance_test.h",
1368    ]
1369
1370    deps = [
1371      ":default_neteq_factory",
1372      ":neteq",
1373      ":neteq_test_tools",
1374      ":pcm16b",
1375      "../../api/audio:audio_frame_api",
1376      "../../api/audio_codecs:audio_codecs_api",
1377      "../../api/audio_codecs:builtin_audio_decoder_factory",
1378      "../../api/neteq:neteq_api",
1379      "../../rtc_base:checks",
1380      "../../system_wrappers",
1381      "../../test:fileutils",
1382      "../../test:test_support",
1383      "//testing/gtest",
1384    ]
1385  }
1386
1387  if (!build_with_chromium) {
1388    rtc_library("neteq_quality_test_support") {
1389      testonly = true
1390      sources = [
1391        "neteq/tools/neteq_quality_test.cc",
1392        "neteq/tools/neteq_quality_test.h",
1393      ]
1394
1395      deps = [
1396        ":default_neteq_factory",
1397        ":neteq",
1398        ":neteq_input_audio_tools",
1399        ":neteq_test_tools",
1400        ":neteq_tools_minimal",
1401        "../../api/audio_codecs:builtin_audio_decoder_factory",
1402        "../../api/neteq:neteq_api",
1403        "../../rtc_base:checks",
1404        "../../rtc_base:stringutils",
1405        "../../system_wrappers",
1406        "../../test:fileutils",
1407        "../../test:test_support",
1408        "//testing/gtest",
1409      ]
1410      absl_deps = [
1411        "//third_party/abseil-cpp/absl/flags:flag",
1412        "//third_party/abseil-cpp/absl/strings",
1413      ]
1414    }
1415
1416    rtc_executable("rtp_encode") {
1417      testonly = true
1418
1419      deps = [
1420        ":audio_coding",
1421        ":audio_encoder_cng",
1422        ":neteq_input_audio_tools",
1423        "../../api/audio:audio_frame_api",
1424        "../../api/audio_codecs/L16:audio_encoder_L16",
1425        "../../api/audio_codecs/g711:audio_encoder_g711",
1426        "../../api/audio_codecs/g722:audio_encoder_g722",
1427        "../../api/audio_codecs/ilbc:audio_encoder_ilbc",
1428        "../../api/audio_codecs/opus:audio_encoder_opus",
1429        "../../rtc_base:safe_conversions",
1430        "//third_party/abseil-cpp/absl/flags:flag",
1431        "//third_party/abseil-cpp/absl/flags:parse",
1432        "//third_party/abseil-cpp/absl/memory",
1433      ]
1434
1435      deps += audio_coding_deps
1436
1437      sources = [ "neteq/tools/rtp_encode.cc" ]
1438
1439      defines = audio_coding_defines
1440    }
1441
1442    rtc_executable("rtp_jitter") {
1443      testonly = true
1444
1445      deps = [
1446        "../../api:array_view",
1447        "../../rtc_base:buffer",
1448        "../rtp_rtcp:rtp_rtcp_format",
1449      ]
1450
1451      deps += audio_coding_deps
1452
1453      sources = [ "neteq/tools/rtp_jitter.cc" ]
1454
1455      defines = audio_coding_defines
1456    }
1457
1458    rtc_executable("rtpcat") {
1459      testonly = true
1460
1461      sources = [ "neteq/tools/rtpcat.cc" ]
1462
1463      deps = [
1464        "../../rtc_base:checks",
1465        "../../test:rtp_test_utils",
1466        "//testing/gtest",
1467      ]
1468    }
1469
1470    rtc_executable("rtp_analyze") {
1471      testonly = true
1472
1473      sources = [ "neteq/tools/rtp_analyze.cc" ]
1474
1475      deps = [
1476        ":neteq",
1477        ":neteq_test_tools",
1478        ":neteq_tools_minimal",
1479        ":pcm16b",
1480        "//testing/gtest",
1481        "//third_party/abseil-cpp/absl/flags:flag",
1482        "//third_party/abseil-cpp/absl/flags:parse",
1483      ]
1484    }
1485
1486    rtc_executable("neteq_opus_quality_test") {
1487      testonly = true
1488
1489      sources = [ "neteq/test/neteq_opus_quality_test.cc" ]
1490
1491      deps = [
1492        ":neteq",
1493        ":neteq_quality_test_support",
1494        ":neteq_tools",
1495        ":webrtc_opus",
1496        "../../test:test_main",
1497        "//testing/gtest",
1498        "//third_party/abseil-cpp/absl/flags:flag",
1499      ]
1500    }
1501
1502    rtc_executable("neteq_speed_test") {
1503      testonly = true
1504
1505      sources = [ "neteq/test/neteq_speed_test.cc" ]
1506
1507      deps = [
1508        ":neteq",
1509        ":neteq_test_support",
1510        "../../rtc_base:checks",
1511        "../../test:test_support",
1512        "//third_party/abseil-cpp/absl/flags:flag",
1513        "//third_party/abseil-cpp/absl/flags:parse",
1514      ]
1515    }
1516
1517    rtc_executable("neteq_ilbc_quality_test") {
1518      testonly = true
1519
1520      sources = [ "neteq/test/neteq_ilbc_quality_test.cc" ]
1521
1522      deps = [
1523        ":ilbc",
1524        ":neteq",
1525        ":neteq_quality_test_support",
1526        ":neteq_tools",
1527        "../../rtc_base:checks",
1528        "../../rtc_base:safe_conversions",
1529        "../../test:fileutils",
1530        "../../test:test_main",
1531        "//testing/gtest",
1532        "//third_party/abseil-cpp/absl/flags:flag",
1533      ]
1534    }
1535
1536    rtc_executable("neteq_pcmu_quality_test") {
1537      testonly = true
1538
1539      sources = [ "neteq/test/neteq_pcmu_quality_test.cc" ]
1540
1541      deps = [
1542        ":g711",
1543        ":neteq",
1544        ":neteq_quality_test_support",
1545        "../../rtc_base:checks",
1546        "../../rtc_base:safe_conversions",
1547        "../../test:fileutils",
1548        "../../test:test_main",
1549        "//testing/gtest",
1550        "//third_party/abseil-cpp/absl/flags:flag",
1551      ]
1552    }
1553
1554    rtc_executable("neteq_pcm16b_quality_test") {
1555      testonly = true
1556
1557      sources = [ "neteq/test/neteq_pcm16b_quality_test.cc" ]
1558
1559      deps = [
1560        ":neteq",
1561        ":neteq_quality_test_support",
1562        ":pcm16b",
1563        "../../rtc_base:checks",
1564        "../../rtc_base:safe_conversions",
1565        "../../test:fileutils",
1566        "../../test:test_main",
1567        "//testing/gtest",
1568        "//third_party/abseil-cpp/absl/flags:flag",
1569      ]
1570    }
1571  }
1572
1573  rtc_executable("g711_test") {
1574    testonly = true
1575
1576    sources = [ "codecs/g711/test/testG711.cc" ]
1577
1578    deps = [ ":g711" ]
1579  }
1580
1581  rtc_executable("g722_test") {
1582    testonly = true
1583
1584    sources = [ "codecs/g722/test/testG722.cc" ]
1585
1586    deps = [ ":g722" ]
1587  }
1588
1589  if (!build_with_chromium) {
1590    rtc_executable("ilbc_test") {
1591      testonly = true
1592
1593      sources = [ "codecs/ilbc/test/iLBC_test.c" ]
1594
1595      deps = [ ":ilbc" ]
1596    }
1597
1598    rtc_executable("webrtc_opus_fec_test") {
1599      testonly = true
1600
1601      sources = [ "codecs/opus/opus_fec_test.cc" ]
1602
1603      deps = [
1604        ":webrtc_opus",
1605        "../../common_audio",
1606        "../../rtc_base:macromagic",
1607        "../../test:fileutils",
1608        "../../test:test_main",
1609        "../../test:test_support",
1610        "//testing/gtest",
1611      ]
1612    }
1613
1614    rtc_library("audio_coding_unittests") {
1615      testonly = true
1616      visibility += webrtc_default_visibility
1617
1618      sources = [
1619        "acm2/acm_receiver_unittest.cc",
1620        "acm2/acm_remixing_unittest.cc",
1621        "acm2/audio_coding_module_unittest.cc",
1622        "acm2/call_statistics_unittest.cc",
1623        "audio_network_adaptor/audio_network_adaptor_impl_unittest.cc",
1624        "audio_network_adaptor/bitrate_controller_unittest.cc",
1625        "audio_network_adaptor/channel_controller_unittest.cc",
1626        "audio_network_adaptor/controller_manager_unittest.cc",
1627        "audio_network_adaptor/dtx_controller_unittest.cc",
1628        "audio_network_adaptor/event_log_writer_unittest.cc",
1629        "audio_network_adaptor/fec_controller_plr_based_unittest.cc",
1630        "audio_network_adaptor/frame_length_controller_unittest.cc",
1631        "audio_network_adaptor/frame_length_controller_v2_unittest.cc",
1632        "audio_network_adaptor/util/threshold_curve_unittest.cc",
1633        "codecs/builtin_audio_decoder_factory_unittest.cc",
1634        "codecs/builtin_audio_encoder_factory_unittest.cc",
1635        "codecs/cng/audio_encoder_cng_unittest.cc",
1636        "codecs/cng/cng_unittest.cc",
1637        "codecs/ilbc/ilbc_unittest.cc",
1638        "codecs/legacy_encoded_audio_frame_unittest.cc",
1639        "codecs/opus/audio_decoder_multi_channel_opus_unittest.cc",
1640        "codecs/opus/audio_encoder_multi_channel_opus_unittest.cc",
1641        "codecs/opus/audio_encoder_opus_unittest.cc",
1642        "codecs/opus/opus_bandwidth_unittest.cc",
1643        "codecs/opus/opus_unittest.cc",
1644        "codecs/red/audio_encoder_copy_red_unittest.cc",
1645        "neteq/audio_multi_vector_unittest.cc",
1646        "neteq/audio_vector_unittest.cc",
1647        "neteq/background_noise_unittest.cc",
1648        "neteq/buffer_level_filter_unittest.cc",
1649        "neteq/comfort_noise_unittest.cc",
1650        "neteq/decision_logic_unittest.cc",
1651        "neteq/decoder_database_unittest.cc",
1652        "neteq/delay_manager_unittest.cc",
1653        "neteq/dsp_helper_unittest.cc",
1654        "neteq/dtmf_buffer_unittest.cc",
1655        "neteq/dtmf_tone_generator_unittest.cc",
1656        "neteq/expand_unittest.cc",
1657        "neteq/histogram_unittest.cc",
1658        "neteq/merge_unittest.cc",
1659        "neteq/mock/mock_buffer_level_filter.h",
1660        "neteq/mock/mock_decoder_database.h",
1661        "neteq/mock/mock_delay_manager.h",
1662        "neteq/mock/mock_dtmf_buffer.h",
1663        "neteq/mock/mock_dtmf_tone_generator.h",
1664        "neteq/mock/mock_expand.h",
1665        "neteq/mock/mock_histogram.h",
1666        "neteq/mock/mock_neteq_controller.h",
1667        "neteq/mock/mock_packet_buffer.h",
1668        "neteq/mock/mock_red_payload_splitter.h",
1669        "neteq/mock/mock_statistics_calculator.h",
1670        "neteq/nack_tracker_unittest.cc",
1671        "neteq/neteq_decoder_plc_unittest.cc",
1672        "neteq/neteq_impl_unittest.cc",
1673        "neteq/neteq_network_stats_unittest.cc",
1674        "neteq/neteq_stereo_unittest.cc",
1675        "neteq/neteq_unittest.cc",
1676        "neteq/normal_unittest.cc",
1677        "neteq/packet_arrival_history_unittest.cc",
1678        "neteq/packet_buffer_unittest.cc",
1679        "neteq/post_decode_vad_unittest.cc",
1680        "neteq/random_vector_unittest.cc",
1681        "neteq/red_payload_splitter_unittest.cc",
1682        "neteq/reorder_optimizer_unittest.cc",
1683        "neteq/statistics_calculator_unittest.cc",
1684        "neteq/sync_buffer_unittest.cc",
1685        "neteq/time_stretch_unittest.cc",
1686        "neteq/timestamp_scaler_unittest.cc",
1687        "neteq/tools/input_audio_file_unittest.cc",
1688        "neteq/tools/packet_unittest.cc",
1689        "neteq/underrun_optimizer_unittest.cc",
1690      ]
1691
1692      deps = [
1693        ":acm_receive_test",
1694        ":acm_send_test",
1695        ":audio_coding",
1696        ":audio_coding_module_typedefs",
1697        ":audio_coding_modules_tests_shared",
1698        ":audio_coding_opus_common",
1699        ":audio_encoder_cng",
1700        ":audio_network_adaptor",
1701        ":default_neteq_factory",
1702        ":g711",
1703        ":ilbc",
1704        ":legacy_encoded_audio_frame",
1705        ":mocks",
1706        ":neteq",
1707        ":neteq_input_audio_tools",
1708        ":neteq_test_support",
1709        ":neteq_test_tools",
1710        ":neteq_tools",
1711        ":neteq_tools_minimal",
1712        ":pcm16b",
1713        ":red",
1714        ":webrtc_cng",
1715        ":webrtc_opus",
1716        "..:module_api",
1717        "..:module_api_public",
1718        "../../api:array_view",
1719        "../../api/audio:audio_frame_api",
1720        "../../api/audio_codecs:audio_codecs_api",
1721        "../../api/audio_codecs:builtin_audio_decoder_factory",
1722        "../../api/audio_codecs:builtin_audio_encoder_factory",
1723        "../../api/audio_codecs/opus:audio_decoder_multiopus",
1724        "../../api/audio_codecs/opus:audio_decoder_opus",
1725        "../../api/audio_codecs/opus:audio_encoder_multiopus",
1726        "../../api/audio_codecs/opus:audio_encoder_opus",
1727        "../../api/neteq:default_neteq_controller_factory",
1728        "../../api/neteq:neteq_api",
1729        "../../api/neteq:neteq_controller_api",
1730        "../../api/neteq:tick_timer",
1731        "../../api/neteq:tick_timer_unittest",
1732        "../../api/rtc_event_log",
1733        "../../common_audio",
1734        "../../common_audio:common_audio_c",
1735        "../../common_audio:mock_common_audio",
1736        "../../logging:mocks",
1737        "../../logging:rtc_event_audio",
1738        "../../modules/rtp_rtcp:rtp_rtcp_format",
1739        "../../rtc_base",
1740        "../../rtc_base:checks",
1741        "../../rtc_base:ignore_wundef",
1742        "../../rtc_base:macromagic",
1743        "../../rtc_base:platform_thread",
1744        "../../rtc_base:refcount",
1745        "../../rtc_base:rtc_base_tests_utils",
1746        "../../rtc_base:rtc_event",
1747        "../../rtc_base:safe_conversions",
1748        "../../rtc_base:sanitizer",
1749        "../../rtc_base:stringutils",
1750        "../../rtc_base:timeutils",
1751        "../../rtc_base/synchronization:mutex",
1752        "../../rtc_base/system:arch",
1753        "../../system_wrappers",
1754        "../../test:audio_codec_mocks",
1755        "../../test:audio_test_common",
1756        "../../test:field_trial",
1757        "../../test:fileutils",
1758        "../../test:rtc_expect_death",
1759        "../../test:rtp_test_utils",
1760        "../../test:scoped_key_value_config",
1761        "../../test:test_common",
1762        "../../test:test_support",
1763        "codecs/opus/test",
1764        "codecs/opus/test:test_unittest",
1765        "//testing/gtest",
1766      ]
1767      absl_deps = [
1768        "//third_party/abseil-cpp/absl/flags:flag",
1769        "//third_party/abseil-cpp/absl/memory",
1770        "//third_party/abseil-cpp/absl/strings",
1771        "//third_party/abseil-cpp/absl/types:optional",
1772      ]
1773
1774      defines = audio_coding_defines
1775
1776      if (rtc_enable_protobuf) {
1777        defines += [ "WEBRTC_NETEQ_UNITTEST_BITEXACT" ]
1778        deps += [
1779          ":ana_config_proto",
1780          ":neteq_unittest_proto",
1781        ]
1782      }
1783    }
1784  }
1785}
1786
1787# For backwards compatibility only! Use
1788# webrtc/api/audio_codecs:audio_codecs_api instead.
1789# TODO(kwiberg): Remove this.
1790rtc_source_set("audio_decoder_interface") {
1791  visibility += [ "*" ]
1792  sources = [ "codecs/audio_decoder.h" ]
1793  deps = [ "../../api/audio_codecs:audio_codecs_api" ]
1794}
1795
1796# For backwards compatibility only! Use
1797# webrtc/api/audio_codecs:audio_codecs_api instead.
1798# TODO(ossu): Remove this.
1799rtc_source_set("audio_encoder_interface") {
1800  visibility += [ "*" ]
1801  sources = [ "codecs/audio_encoder.h" ]
1802  deps = [ "../../api/audio_codecs:audio_codecs_api" ]
1803}
1804