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