diff options
Diffstat (limited to 'webrtc/modules/audio_coding/BUILD.gn')
-rw-r--r-- | webrtc/modules/audio_coding/BUILD.gn | 1996 |
1 files changed, 1622 insertions, 374 deletions
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn index 839a143..cdf7821 100644 --- a/webrtc/modules/audio_coding/BUILD.gn +++ b/webrtc/modules/audio_coding/BUILD.gn @@ -6,287 +6,223 @@ # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. -import("//build/config/arm.gni") -import("../../build/webrtc.gni") - -source_set("rent_a_codec") { - sources = [ - "main/acm2/acm_codec_database.cc", - "main/acm2/acm_codec_database.h", - "main/acm2/rent_a_codec.cc", - "main/acm2/rent_a_codec.h", - ] - configs += [ "../..:common_config" ] - public_configs = [ "../..:common_inherited_config" ] - deps = [ - "../..:webrtc_common", - ] - - defines = [] - if (rtc_include_opus) { - defines += [ "WEBRTC_CODEC_OPUS" ] - } - if (!build_with_mozilla) { - if (current_cpu == "arm") { - defines += [ "WEBRTC_CODEC_ISACFX" ] - } else { - defines += [ "WEBRTC_CODEC_ISAC" ] - } - defines += [ "WEBRTC_CODEC_G722" ] - } - if (!build_with_mozilla && !build_with_chromium) { - defines += [ - "WEBRTC_CODEC_ILBC", - "WEBRTC_CODEC_RED", - ] - } +import("../../webrtc.gni") +import("audio_coding.gni") +if (rtc_enable_protobuf) { + import("//third_party/protobuf/proto_library.gni") } -config("audio_coding_config") { - include_dirs = [ - "main/include", - "../interface", - ] +visibility = [ ":*" ] + +rtc_source_set("audio_coding_module_typedefs") { + visibility += [ "*" ] + sources = [ "include/audio_coding_module_typedefs.h" ] + deps = [ "../../rtc_base:deprecation" ] } -source_set("audio_coding") { +rtc_library("audio_coding") { + visibility += [ "*" ] sources = [ - "main/acm2/acm_common_defs.h", - "main/acm2/acm_receiver.cc", - "main/acm2/acm_receiver.h", - "main/acm2/acm_resampler.cc", - "main/acm2/acm_resampler.h", - "main/acm2/audio_coding_module.cc", - "main/acm2/audio_coding_module_impl.cc", - "main/acm2/audio_coding_module_impl.h", - "main/acm2/call_statistics.cc", - "main/acm2/call_statistics.h", - "main/acm2/codec_manager.cc", - "main/acm2/codec_manager.h", - "main/acm2/codec_owner.cc", - "main/acm2/codec_owner.h", - "main/acm2/initial_delay_manager.cc", - "main/acm2/initial_delay_manager.h", - "main/include/audio_coding_module.h", - "main/include/audio_coding_module_typedefs.h", + "acm2/acm_receiver.cc", + "acm2/acm_receiver.h", + "acm2/acm_remixing.cc", + "acm2/acm_remixing.h", + "acm2/acm_resampler.cc", + "acm2/acm_resampler.h", + "acm2/audio_coding_module.cc", + "acm2/call_statistics.cc", + "acm2/call_statistics.h", + "include/audio_coding_module.h", ] defines = [] - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":audio_coding_config", - ] - - if (is_win) { - cflags = [ - # TODO(kjellander): Bug 261: fix this warning. - "/wd4373", # virtual function override. - ] - } - - if (is_clang) { - # Suppress warnings from Chrome's Clang plugins. - # See http://code.google.com/p/webrtc/issues/detail?id=163 for details. - configs -= [ "//build/config/clang:find_bad_constructs" ] - } - deps = [ - ":cng", - ":g711", + ":audio_coding_module_typedefs", + ":default_neteq_factory", ":neteq", - ":pcm16b", - ":rent_a_codec", - "../..:rtc_event_log", - "../..:webrtc_common", + "..:module_api", + "..:module_api_public", + "../../api:array_view", + "../../api:function_view", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs:audio_codecs_api", + "../../api/neteq:neteq_api", "../../common_audio", + "../../common_audio:common_audio_c", + "../../rtc_base:audio_format_to_string", + "../../rtc_base:checks", + "../../rtc_base:deprecation", + "../../rtc_base:rtc_base_approved", + "../../rtc_base/synchronization:mutex", "../../system_wrappers", + "../../system_wrappers:metrics", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", ] - - if (rtc_include_opus) { - defines += [ "WEBRTC_CODEC_OPUS" ] - deps += [ ":webrtc_opus" ] - } - if (!build_with_mozilla) { - if (current_cpu == "arm") { - defines += [ "WEBRTC_CODEC_ISACFX" ] - deps += [ ":isac_fix" ] - } else { - defines += [ "WEBRTC_CODEC_ISAC" ] - deps += [ ":isac" ] - } - defines += [ "WEBRTC_CODEC_G722" ] - deps += [ ":g722" ] - } - if (!build_with_mozilla && !build_with_chromium) { - defines += [ - "WEBRTC_CODEC_ILBC", - "WEBRTC_CODEC_RED", - ] - deps += [ - ":ilbc", - ":red", - ] - } } -source_set("audio_decoder_interface") { +rtc_library("legacy_encoded_audio_frame") { sources = [ - "codecs/audio_decoder.cc", - "codecs/audio_decoder.h", + "codecs/legacy_encoded_audio_frame.cc", + "codecs/legacy_encoded_audio_frame.h", ] - configs += [ "../..:common_config" ] - public_configs = [ "../..:common_inherited_config" ] deps = [ - "../..:webrtc_common", + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } -source_set("audio_encoder_interface") { +rtc_library("webrtc_cng") { + visibility += webrtc_default_visibility sources = [ - "codecs/audio_encoder.cc", - "codecs/audio_encoder.h", + "codecs/cng/webrtc_cng.cc", + "codecs/cng/webrtc_cng.h", ] - configs += [ "../..:common_config" ] - public_configs = [ "../..:common_inherited_config" ] - deps = [ - "../..:webrtc_common", - ] -} -config("cng_config") { - include_dirs = [ - "../../..", - "codecs/cng/include", + deps = [ + "../../api:array_view", + "../../common_audio:common_audio_c", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:safe_conversions", ] } -source_set("cng") { +rtc_library("audio_encoder_cng") { + visibility += [ "*" ] sources = [ "codecs/cng/audio_encoder_cng.cc", - "codecs/cng/cng_helpfuns.c", - "codecs/cng/cng_helpfuns.h", - "codecs/cng/include/audio_encoder_cng.h", - "codecs/cng/include/webrtc_cng.h", - "codecs/cng/webrtc_cng.c", - ] - - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":cng_config", + "codecs/cng/audio_encoder_cng.h", ] deps = [ + ":webrtc_cng", + "../../api/audio_codecs:audio_codecs_api", + "../../api/units:time_delta", "../../common_audio", - ":audio_encoder_interface", + "../../rtc_base:checks", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } -config("red_config") { - include_dirs = [ "codecs/red" ] -} - -source_set("red") { +rtc_library("red") { + visibility += [ "*" ] sources = [ "codecs/red/audio_encoder_copy_red.cc", "codecs/red/audio_encoder_copy_red.h", ] - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":red_config", - ] - deps = [ + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../api/units:time_delta", "../../common_audio", - ":audio_encoder_interface", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } -config("g711_config") { - include_dirs = [ - "../../..", - "codecs/g711/include", - ] -} - -source_set("g711") { +rtc_library("g711") { + visibility += [ "*" ] + poisonous = [ "audio_codecs" ] sources = [ "codecs/g711/audio_decoder_pcm.cc", + "codecs/g711/audio_decoder_pcm.h", "codecs/g711/audio_encoder_pcm.cc", - "codecs/g711/g711.c", - "codecs/g711/g711.h", - "codecs/g711/g711_interface.c", - "codecs/g711/include/audio_decoder_pcm.h", - "codecs/g711/include/audio_encoder_pcm.h", - "codecs/g711/include/g711_interface.h", - ] - - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":g711_config", + "codecs/g711/audio_encoder_pcm.h", ] deps = [ - ":audio_encoder_interface", + ":legacy_encoded_audio_frame", + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../api/units:time_delta", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + public_deps = [ ":g711_c" ] # no-presubmit-check TODO(webrtc:8603) } -config("g722_config") { - include_dirs = [ - "../../..", - "codecs/g722/include", +rtc_library("g711_c") { + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/g711/g711_interface.c", + "codecs/g711/g711_interface.h", ] + deps = [ "../third_party/g711:g711_3p" ] } -source_set("g722") { +rtc_library("g722") { + visibility += [ "*" ] + poisonous = [ "audio_codecs" ] sources = [ "codecs/g722/audio_decoder_g722.cc", + "codecs/g722/audio_decoder_g722.h", "codecs/g722/audio_encoder_g722.cc", - "codecs/g722/g722_decode.c", - "codecs/g722/g722_enc_dec.h", - "codecs/g722/g722_encode.c", - "codecs/g722/g722_interface.c", - "codecs/g722/include/audio_decoder_g722.h", - "codecs/g722/include/audio_encoder_g722.h", - "codecs/g722/include/g722_interface.h", + "codecs/g722/audio_encoder_g722.h", ] - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":g722_config", + deps = [ + ":legacy_encoded_audio_frame", + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs/g722:audio_encoder_g722_config", + "../../api/units:time_delta", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + public_deps = [ ":g722_c" ] # no-presubmit-check TODO(webrtc:8603) +} - deps = [ - ":audio_encoder_interface", +rtc_library("g722_c") { + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/g722/g722_interface.c", + "codecs/g722/g722_interface.h", ] + deps = [ "../third_party/g722:g722_3p" ] } -config("ilbc_config") { - include_dirs = [ - "../../..", - "codecs/ilbc/include", +rtc_library("ilbc") { + visibility += webrtc_default_visibility + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/ilbc/audio_decoder_ilbc.cc", + "codecs/ilbc/audio_decoder_ilbc.h", + "codecs/ilbc/audio_encoder_ilbc.cc", + "codecs/ilbc/audio_encoder_ilbc.h", + ] + + deps = [ + ":legacy_encoded_audio_frame", + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs/ilbc:audio_encoder_ilbc_config", + "../../api/units:time_delta", + "../../common_audio", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + public_deps = [ ":ilbc_c" ] # no-presubmit-check TODO(webrtc:8603) } -source_set("ilbc") { +rtc_library("ilbc_c") { + poisonous = [ "audio_codecs" ] sources = [ "codecs/ilbc/abs_quant.c", "codecs/ilbc/abs_quant.h", "codecs/ilbc/abs_quant_loop.c", "codecs/ilbc/abs_quant_loop.h", - "codecs/ilbc/audio_decoder_ilbc.cc", - "codecs/ilbc/audio_encoder_ilbc.cc", "codecs/ilbc/augmented_cb_corr.c", "codecs/ilbc/augmented_cb_corr.h", "codecs/ilbc/bw_expand.c", @@ -351,9 +287,7 @@ source_set("ilbc") { "codecs/ilbc/hp_output.c", "codecs/ilbc/hp_output.h", "codecs/ilbc/ilbc.c", - "codecs/ilbc/include/audio_decoder_ilbc.h", - "codecs/ilbc/include/audio_encoder_ilbc.h", - "codecs/ilbc/include/ilbc.h", + "codecs/ilbc/ilbc.h", "codecs/ilbc/index_conv_dec.c", "codecs/ilbc/index_conv_dec.h", "codecs/ilbc/index_conv_enc.c", @@ -426,47 +360,93 @@ source_set("ilbc") { "codecs/ilbc/xcorr_coef.h", ] - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":ilbc_config", - ] - deps = [ + "../../api/audio_codecs:audio_codecs_api", "../../common_audio", - ":audio_encoder_interface", + "../../common_audio:common_audio_c", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:sanitizer", + "../../rtc_base/system:arch", + "../../rtc_base/system:unused", ] } -source_set("isac_common") { +rtc_source_set("isac_common") { + poisonous = [ "audio_codecs" ] sources = [ + "codecs/isac/audio_decoder_isac_t.h", + "codecs/isac/audio_decoder_isac_t_impl.h", "codecs/isac/audio_encoder_isac_t.h", "codecs/isac/audio_encoder_isac_t_impl.h", - "codecs/isac/locked_bandwidth_info.cc", - "codecs/isac/locked_bandwidth_info.h", ] - public_configs = [ "../..:common_inherited_config" ] -} - -config("isac_config") { - include_dirs = [ - "../../..", - "codecs/isac/main/include", + deps = [ + ":isac_bwinfo", + "../../api:scoped_refptr", + "../../api/audio_codecs:audio_codecs_api", + "../../api/units:time_delta", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:safe_minmax", + "../../system_wrappers:field_trial", ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } -source_set("isac") { +rtc_library("isac") { + visibility += [ "*" ] + poisonous = [ "audio_codecs" ] sources = [ "codecs/isac/main/include/audio_decoder_isac.h", "codecs/isac/main/include/audio_encoder_isac.h", + "codecs/isac/main/source/audio_decoder_isac.cc", + "codecs/isac/main/source/audio_encoder_isac.cc", + ] + + deps = [ + ":isac_common", + "../../api/audio_codecs:audio_codecs_api", + ] + public_deps = [ ":isac_c" ] # no-presubmit-check TODO(webrtc:8603) +} + +rtc_source_set("isac_bwinfo") { + sources = [ "codecs/isac/bandwidth_info.h" ] + deps = [] +} + +rtc_library("isac_vad") { + visibility += webrtc_default_visibility + sources = [ + "codecs/isac/main/source/filter_functions.c", + "codecs/isac/main/source/filter_functions.h", + "codecs/isac/main/source/isac_vad.c", + "codecs/isac/main/source/isac_vad.h", + "codecs/isac/main/source/os_specific_inline.h", + "codecs/isac/main/source/pitch_estimator.c", + "codecs/isac/main/source/pitch_estimator.h", + "codecs/isac/main/source/pitch_filter.c", + "codecs/isac/main/source/pitch_filter.h", + "codecs/isac/main/source/settings.h", + "codecs/isac/main/source/structs.h", + ] + deps = [ + ":isac_bwinfo", + "../../rtc_base:compile_assert_c", + "../../rtc_base/system:arch", + "../../rtc_base/system:ignore_warnings", + "../third_party/fft", + ] +} + +rtc_library("isac_c") { + poisonous = [ "audio_codecs" ] + sources = [ "codecs/isac/main/include/isac.h", "codecs/isac/main/source/arith_routines.c", "codecs/isac/main/source/arith_routines.h", "codecs/isac/main/source/arith_routines_hist.c", "codecs/isac/main/source/arith_routines_logist.c", - "codecs/isac/main/source/audio_decoder_isac.cc", - "codecs/isac/main/source/audio_encoder_isac.cc", "codecs/isac/main/source/bandwidth_estimator.c", "codecs/isac/main/source/bandwidth_estimator.h", "codecs/isac/main/source/codec.h", @@ -479,11 +459,6 @@ source_set("isac") { "codecs/isac/main/source/encode_lpc_swb.h", "codecs/isac/main/source/entropy_coding.c", "codecs/isac/main/source/entropy_coding.h", - "codecs/isac/main/source/fft.c", - "codecs/isac/main/source/fft.h", - "codecs/isac/main/source/filter_functions.c", - "codecs/isac/main/source/filterbank_tables.c", - "codecs/isac/main/source/filterbank_tables.h", "codecs/isac/main/source/filterbanks.c", "codecs/isac/main/source/intialize.c", "codecs/isac/main/source/isac.c", @@ -499,48 +474,89 @@ source_set("isac") { "codecs/isac/main/source/lpc_shape_swb16_tables.h", "codecs/isac/main/source/lpc_tables.c", "codecs/isac/main/source/lpc_tables.h", - "codecs/isac/main/source/os_specific_inline.h", - "codecs/isac/main/source/pitch_estimator.c", - "codecs/isac/main/source/pitch_estimator.h", - "codecs/isac/main/source/pitch_filter.c", "codecs/isac/main/source/pitch_gain_tables.c", "codecs/isac/main/source/pitch_gain_tables.h", "codecs/isac/main/source/pitch_lag_tables.c", "codecs/isac/main/source/pitch_lag_tables.h", - "codecs/isac/main/source/settings.h", "codecs/isac/main/source/spectrum_ar_model_tables.c", "codecs/isac/main/source/spectrum_ar_model_tables.h", - "codecs/isac/main/source/structs.h", "codecs/isac/main/source/transform.c", ] - if (is_linux) { + if (is_linux || is_chromeos) { libs = [ "m" ] } - configs += [ "../..:common_config" ] + deps = [ + ":isac_bwinfo", + ":isac_vad", + "../../common_audio", + "../../common_audio:common_audio_c", + "../../rtc_base:checks", + "../../rtc_base:compile_assert_c", + "../../rtc_base:rtc_base_approved", + "../../rtc_base/system:arch", + "../third_party/fft", + ] +} - public_configs = [ - "../..:common_inherited_config", - ":isac_config", +rtc_library("isac_fix") { + visibility += [ "*" ] + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/isac/fix/source/audio_decoder_isacfix.cc", + "codecs/isac/fix/source/audio_encoder_isacfix.cc", ] deps = [ - ":audio_decoder_interface", - ":audio_encoder_interface", ":isac_common", + "../../api/audio_codecs:audio_codecs_api", "../../common_audio", + "../../system_wrappers", ] + public_deps = [ ":isac_fix_c" ] # no-presubmit-check TODO(webrtc:8603) + + if (rtc_build_with_neon) { + deps += [ ":isac_neon" ] + } } -config("isac_fix_config") { - include_dirs = [ - "../../..", - "codecs/isac/fix/include", +rtc_library("isac_fix_common") { + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/isac/fix/source/codec.h", + "codecs/isac/fix/source/entropy_coding.h", + "codecs/isac/fix/source/fft.c", + "codecs/isac/fix/source/fft.h", + "codecs/isac/fix/source/filterbank_internal.h", + "codecs/isac/fix/source/settings.h", + "codecs/isac/fix/source/structs.h", + "codecs/isac/fix/source/transform_tables.c", + ] + deps = [ + ":isac_bwinfo", + "../../common_audio", + "../../common_audio:common_audio_c", ] } -source_set("isac_fix") { +rtc_source_set("isac_fix_c_arm_asm") { + poisonous = [ "audio_codecs" ] + sources = [] + if (current_cpu == "arm" && arm_version >= 7) { + sources += [ + "codecs/isac/fix/source/lattice_armv7.S", + "codecs/isac/fix/source/pitch_filter_armv6.S", + ] + deps = [ + ":isac_fix_common", + "../../rtc_base/system:asm_defines", + ] + } +} + +rtc_library("isac_fix_c") { + poisonous = [ "audio_codecs" ] sources = [ "codecs/isac/fix/include/audio_decoder_isacfix.h", "codecs/isac/fix/include/audio_encoder_isacfix.h", @@ -549,19 +565,13 @@ source_set("isac_fix") { "codecs/isac/fix/source/arith_routines_hist.c", "codecs/isac/fix/source/arith_routines_logist.c", "codecs/isac/fix/source/arith_routins.h", - "codecs/isac/fix/source/audio_decoder_isacfix.cc", - "codecs/isac/fix/source/audio_encoder_isacfix.cc", "codecs/isac/fix/source/bandwidth_estimator.c", "codecs/isac/fix/source/bandwidth_estimator.h", - "codecs/isac/fix/source/codec.h", "codecs/isac/fix/source/decode.c", "codecs/isac/fix/source/decode_bwe.c", "codecs/isac/fix/source/decode_plc.c", "codecs/isac/fix/source/encode.c", "codecs/isac/fix/source/entropy_coding.c", - "codecs/isac/fix/source/entropy_coding.h", - "codecs/isac/fix/source/fft.c", - "codecs/isac/fix/source/fft.h", "codecs/isac/fix/source/filterbank_tables.c", "codecs/isac/fix/source/filterbank_tables.h", "codecs/isac/fix/source/filterbanks.c", @@ -584,45 +594,44 @@ source_set("isac_fix") { "codecs/isac/fix/source/pitch_gain_tables.h", "codecs/isac/fix/source/pitch_lag_tables.c", "codecs/isac/fix/source/pitch_lag_tables.h", - "codecs/isac/fix/source/settings.h", "codecs/isac/fix/source/spectrum_ar_model_tables.c", "codecs/isac/fix/source/spectrum_ar_model_tables.h", - "codecs/isac/fix/source/structs.h", "codecs/isac/fix/source/transform.c", - "codecs/isac/fix/source/transform_tables.c", - ] - - if (!is_win) { - defines = [ "WEBRTC_LINUX" ] - } - - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":isac_fix_config", ] deps = [ - ":audio_encoder_interface", + ":isac_bwinfo", ":isac_common", + "../../api/audio_codecs:audio_codecs_api", "../../common_audio", + "../../common_audio:common_audio_c", + "../../rtc_base:checks", + "../../rtc_base:compile_assert_c", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:sanitizer", "../../system_wrappers", + "../third_party/fft", ] + public_deps = [ ":isac_fix_common" ] # no-presubmit-check TODO(webrtc:8603) + if (rtc_build_with_neon) { deps += [ ":isac_neon" ] + + # TODO(bugs.webrtc.org/9579): Consider moving the usage of NEON from + # pitch_estimator_c.c into the "isac_neon" target and delete this flag: + if (current_cpu != "arm64") { + suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ] + cflags = [ "-mfpu=neon" ] + } } if (current_cpu == "arm" && arm_version >= 7) { - sources += [ - "codecs/isac/fix/source/lattice_armv7.S", - "codecs/isac/fix/source/pitch_filter_armv6.S", - ] sources -= [ "codecs/isac/fix/source/lattice_c.c", "codecs/isac/fix/source/pitch_filter_c.c", ] + deps += [ ":isac_fix_c_arm_asm" ] } if (current_cpu == "mipsel") { @@ -651,7 +660,8 @@ source_set("isac_fix") { } if (rtc_build_with_neon) { - source_set("isac_neon") { + rtc_library("isac_neon") { + poisonous = [ "audio_codecs" ] sources = [ "codecs/isac/fix/source/entropy_coding_neon.c", "codecs/isac/fix/source/filterbanks_neon.c", @@ -661,108 +671,259 @@ if (rtc_build_with_neon) { ] if (current_cpu != "arm64") { - # Enable compilation for the NEON instruction set. This is needed - # since //build/config/arm.gni only enables NEON for iOS, not Android. - # This provides the same functionality as webrtc/build/arm_neon.gypi. - configs -= [ "//build/config/compiler:compiler_arm_fpu" ] + # Enable compilation for the NEON instruction set. + suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ] cflags = [ "-mfpu=neon" ] } - # Disable LTO on NEON targets due to compiler bug. - # TODO(fdegans): Enable this. See crbug.com/408997. - if (rtc_use_lto) { - cflags -= [ - "-flto", - "-ffat-lto-objects", - ] - } - - configs += [ "../..:common_config" ] - public_configs = [ "../..:common_inherited_config" ] - deps = [ + ":isac_fix_common", "../../common_audio", + "../../common_audio:common_audio_c", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", ] } } -config("pcm16b_config") { - include_dirs = [ - "../../..", - "codecs/pcm16b/include", - ] -} - -source_set("pcm16b") { +rtc_library("pcm16b") { + visibility += [ "*" ] + poisonous = [ "audio_codecs" ] sources = [ "codecs/pcm16b/audio_decoder_pcm16b.cc", + "codecs/pcm16b/audio_decoder_pcm16b.h", "codecs/pcm16b/audio_encoder_pcm16b.cc", - "codecs/pcm16b/include/audio_decoder_pcm16b.h", - "codecs/pcm16b/include/audio_encoder_pcm16b.h", - "codecs/pcm16b/include/pcm16b.h", - "codecs/pcm16b/pcm16b.c", + "codecs/pcm16b/audio_encoder_pcm16b.h", + "codecs/pcm16b/pcm16b_common.cc", + "codecs/pcm16b/pcm16b_common.h", ] deps = [ - ":audio_encoder_interface", ":g711", + ":legacy_encoded_audio_frame", + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", ] + public_deps = [ ":pcm16b_c" ] # no-presubmit-check TODO(webrtc:8603) +} - configs += [ "../..:common_config" ] - - public_configs = [ - "../..:common_inherited_config", - ":pcm16b_config", +rtc_library("pcm16b_c") { + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/pcm16b/pcm16b.c", + "codecs/pcm16b/pcm16b.h", ] } -config("opus_config") { - include_dirs = [ "../../.." ] +rtc_library("audio_coding_opus_common") { + sources = [ + "codecs/opus/audio_coder_opus_common.cc", + "codecs/opus/audio_coder_opus_common.h", + ] + + deps = [ + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../rtc_base:checks", + "../../rtc_base:stringutils", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] } -source_set("webrtc_opus") { +rtc_library("webrtc_opus") { + visibility += webrtc_default_visibility + poisonous = [ "audio_codecs" ] sources = [ "codecs/opus/audio_decoder_opus.cc", + "codecs/opus/audio_decoder_opus.h", "codecs/opus/audio_encoder_opus.cc", - "codecs/opus/include/audio_decoder_opus.h", - "codecs/opus/include/audio_encoder_opus.h", - "codecs/opus/include/opus_interface.h", - "codecs/opus/opus_inst.h", - "codecs/opus/opus_interface.c", + "codecs/opus/audio_encoder_opus.h", ] deps = [ - ":audio_encoder_interface", + ":audio_coding_opus_common", + ":audio_network_adaptor", + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs/opus:audio_encoder_opus_config", + "../../common_audio", + "../../rtc_base:checks", + "../../rtc_base:protobuf_utils", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:rtc_numerics", + "../../rtc_base:safe_minmax", + "../../system_wrappers:field_trial", ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + public_deps = # no-presubmit-check TODO(webrtc:8603) + [ ":webrtc_opus_wrapper" ] + + defines = audio_codec_defines if (rtc_build_opus) { - configs += [ "../..:common_config" ] - public_configs = [ "../..:common_inherited_config" ] + public_deps += [ rtc_opus_dir ] # no-presubmit-check TODO(webrtc:8603) + } else if (build_with_mozilla) { + include_dirs = [ "/media/libopus/include" ] + } +} - public_deps = [ - rtc_opus_dir, - ] +rtc_library("webrtc_multiopus") { + visibility += webrtc_default_visibility + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/opus/audio_decoder_multi_channel_opus_impl.cc", + "codecs/opus/audio_decoder_multi_channel_opus_impl.h", + "codecs/opus/audio_encoder_multi_channel_opus_impl.cc", + "codecs/opus/audio_encoder_multi_channel_opus_impl.h", + ] + + deps = [ + ":audio_coding_opus_common", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs/opus:audio_decoder_opus_config", + "../../api/audio_codecs/opus:audio_encoder_opus_config", + "../../api/units:time_delta", + "../../rtc_base:checks", + "../../rtc_base:logging", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:safe_minmax", + "../../rtc_base:stringutils", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/memory", + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + public_deps = # no-presubmit-check TODO(webrtc:8603) + [ ":webrtc_opus_wrapper" ] + + defines = audio_codec_defines + + if (rtc_build_opus) { + public_deps += [ rtc_opus_dir ] + } else if (build_with_mozilla) { + include_dirs = [ "/media/libopus/include" ] + } +} + +rtc_library("webrtc_opus_wrapper") { + poisonous = [ "audio_codecs" ] + sources = [ + "codecs/opus/opus_inst.h", + "codecs/opus/opus_interface.cc", + "codecs/opus/opus_interface.h", + ] + + defines = audio_coding_defines + + if (rtc_build_opus) { + public_deps = [ rtc_opus_dir ] # no-presubmit-check TODO(webrtc:8603) } else if (build_with_mozilla) { include_dirs = [ getenv("DIST") + "/include/opus" ] } + + deps = [ + "../../rtc_base:checks", + "../../rtc_base:ignore_wundef", + "../../rtc_base:rtc_base_approved", + "../../system_wrappers:field_trial", + ] +} + +if (rtc_enable_protobuf) { + proto_library("ana_debug_dump_proto") { + visibility += webrtc_default_visibility + sources = [ "audio_network_adaptor/debug_dump.proto" ] + link_deps = [ ":ana_config_proto" ] + proto_out_dir = "modules/audio_coding/audio_network_adaptor" + } + proto_library("ana_config_proto") { + visibility += [ "*" ] + sources = [ "audio_network_adaptor/config.proto" ] + proto_out_dir = "modules/audio_coding/audio_network_adaptor" + } +} + +rtc_library("audio_network_adaptor_config") { + visibility += webrtc_default_visibility + sources = [ + "audio_network_adaptor/audio_network_adaptor_config.cc", + "audio_network_adaptor/include/audio_network_adaptor_config.h", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } -config("neteq_config") { - include_dirs = [ - # Need Opus header files for the audio classifier. - "//third_party/opus/src/celt", - "//third_party/opus/src/src", +rtc_library("audio_network_adaptor") { + visibility += webrtc_default_visibility + sources = [ + "audio_network_adaptor/audio_network_adaptor_impl.cc", + "audio_network_adaptor/audio_network_adaptor_impl.h", + "audio_network_adaptor/bitrate_controller.cc", + "audio_network_adaptor/bitrate_controller.h", + "audio_network_adaptor/channel_controller.cc", + "audio_network_adaptor/channel_controller.h", + "audio_network_adaptor/controller.cc", + "audio_network_adaptor/controller.h", + "audio_network_adaptor/controller_manager.cc", + "audio_network_adaptor/controller_manager.h", + "audio_network_adaptor/debug_dump_writer.cc", + "audio_network_adaptor/debug_dump_writer.h", + "audio_network_adaptor/dtx_controller.cc", + "audio_network_adaptor/dtx_controller.h", + "audio_network_adaptor/event_log_writer.cc", + "audio_network_adaptor/event_log_writer.h", + "audio_network_adaptor/fec_controller_plr_based.cc", + "audio_network_adaptor/fec_controller_plr_based.h", + "audio_network_adaptor/frame_length_controller.cc", + "audio_network_adaptor/frame_length_controller.h", + "audio_network_adaptor/frame_length_controller_v2.cc", + "audio_network_adaptor/frame_length_controller_v2.h", + "audio_network_adaptor/include/audio_network_adaptor.h", + "audio_network_adaptor/util/threshold_curve.h", + ] + + public_deps = # no-presubmit-check TODO(webrtc:8603) + [ ":audio_network_adaptor_config" ] + + deps = [ + "../../api/audio_codecs:audio_codecs_api", + "../../api/rtc_event_log", + "../../common_audio", + "../../logging:rtc_event_audio", + "../../rtc_base:checks", + "../../rtc_base:ignore_wundef", + "../../rtc_base:protobuf_utils", + "../../rtc_base:rtc_base_approved", + "../../rtc_base/system:file_wrapper", + "../../system_wrappers", + "../../system_wrappers:field_trial", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/algorithm:container", + "//third_party/abseil-cpp/absl/types:optional", ] + + if (rtc_enable_protobuf) { + deps += [ + ":ana_config_proto", + ":ana_debug_dump_proto", + ] + } } -source_set("neteq") { +rtc_library("neteq") { + visibility += webrtc_default_visibility sources = [ "neteq/accelerate.cc", "neteq/accelerate.h", - "neteq/audio_classifier.cc", - "neteq/audio_classifier.h", - "neteq/audio_decoder_impl.cc", - "neteq/audio_decoder_impl.h", "neteq/audio_multi_vector.cc", "neteq/audio_multi_vector.h", "neteq/audio_vector.cc", @@ -773,19 +934,14 @@ source_set("neteq") { "neteq/buffer_level_filter.h", "neteq/comfort_noise.cc", "neteq/comfort_noise.h", + "neteq/cross_correlation.cc", + "neteq/cross_correlation.h", "neteq/decision_logic.cc", "neteq/decision_logic.h", - "neteq/decision_logic_fax.cc", - "neteq/decision_logic_fax.h", - "neteq/decision_logic_normal.cc", - "neteq/decision_logic_normal.h", "neteq/decoder_database.cc", "neteq/decoder_database.h", - "neteq/defines.h", "neteq/delay_manager.cc", "neteq/delay_manager.h", - "neteq/delay_peak_detector.cc", - "neteq/delay_peak_detector.h", "neteq/dsp_helper.cc", "neteq/dsp_helper.h", "neteq/dtmf_buffer.cc", @@ -794,28 +950,30 @@ source_set("neteq") { "neteq/dtmf_tone_generator.h", "neteq/expand.cc", "neteq/expand.h", - "neteq/include/neteq.h", + "neteq/expand_uma_logger.cc", + "neteq/expand_uma_logger.h", + "neteq/histogram.cc", + "neteq/histogram.h", "neteq/merge.cc", "neteq/merge.h", - "neteq/nack.cc", - "neteq/nack.h", - "neteq/neteq.cc", + "neteq/nack_tracker.cc", + "neteq/nack_tracker.h", "neteq/neteq_impl.cc", "neteq/neteq_impl.h", "neteq/normal.cc", "neteq/normal.h", + "neteq/packet.cc", + "neteq/packet.h", "neteq/packet_buffer.cc", "neteq/packet_buffer.h", - "neteq/payload_splitter.cc", - "neteq/payload_splitter.h", "neteq/post_decode_vad.cc", "neteq/post_decode_vad.h", "neteq/preemptive_expand.cc", "neteq/preemptive_expand.h", "neteq/random_vector.cc", "neteq/random_vector.h", - "neteq/rtcp.cc", - "neteq/rtcp.h", + "neteq/red_payload_splitter.cc", + "neteq/red_payload_splitter.h", "neteq/statistics_calculator.cc", "neteq/statistics_calculator.h", "neteq/sync_buffer.cc", @@ -826,42 +984,1132 @@ source_set("neteq") { "neteq/timestamp_scaler.h", ] - configs += [ "../..:common_config" ] + deps = [ + ":audio_coding_module_typedefs", + ":webrtc_cng", + "..:module_api", + "..:module_api_public", + "../../api:array_view", + "../../api:rtp_headers", + "../../api:rtp_packet_info", + "../../api:scoped_refptr", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs:audio_codecs_api", + "../../api/neteq:neteq_api", + "../../api/neteq:neteq_controller_api", + "../../api/neteq:tick_timer", + "../../common_audio", + "../../common_audio:common_audio_c", + "../../rtc_base:audio_format_to_string", + "../../rtc_base:checks", + "../../rtc_base:gtest_prod", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:safe_minmax", + "../../rtc_base:sanitizer", + "../../rtc_base/experiments:field_trial_parser", + "../../rtc_base/synchronization:mutex", + "../../system_wrappers", + "../../system_wrappers:field_trial", + "../../system_wrappers:metrics", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] +} - public_configs = [ - "../..:common_inherited_config", - ":neteq_config", +rtc_source_set("default_neteq_factory") { + visibility += webrtc_default_visibility + sources = [ + "neteq/default_neteq_factory.cc", + "neteq/default_neteq_factory.h", + ] + deps = [ + ":neteq", + "../../api:scoped_refptr", + "../../api/audio_codecs:audio_codecs_api", + "../../api/neteq:default_neteq_controller_factory", + "../../api/neteq:neteq_api", + "../../system_wrappers:system_wrappers", + ] +} + +# Although providing only test support, this target must be outside of the +# rtc_include_tests conditional. The reason is that it supports fuzzer tests +# that ultimately are built and run as a part of the Chromium ecosystem, which +# does not set the rtc_include_tests flag. +rtc_library("neteq_tools_minimal") { + visibility += webrtc_default_visibility + sources = [ + "neteq/tools/audio_sink.cc", + "neteq/tools/audio_sink.h", + "neteq/tools/encode_neteq_input.cc", + "neteq/tools/encode_neteq_input.h", + "neteq/tools/neteq_input.cc", + "neteq/tools/neteq_input.h", + "neteq/tools/neteq_test.cc", + "neteq/tools/neteq_test.h", + "neteq/tools/packet.cc", + "neteq/tools/packet.h", + "neteq/tools/packet_source.cc", + "neteq/tools/packet_source.h", + ] + + deps = [ + ":default_neteq_factory", + ":neteq", + "../../api:neteq_simulator_api", + "../../api:rtp_headers", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs:audio_codecs_api", + "../../api/neteq:custom_neteq_factory", + "../../api/neteq:default_neteq_controller_factory", + "../../api/neteq:neteq_api", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../system_wrappers", + "../rtp_rtcp", + "../rtp_rtcp:rtp_rtcp_format", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + defines = audio_codec_defines +} + +rtc_library("neteq_test_tools") { + visibility += webrtc_default_visibility + testonly = true + sources = [ + "neteq/tools/audio_checksum.h", + "neteq/tools/audio_loop.cc", + "neteq/tools/audio_loop.h", + "neteq/tools/constant_pcm_packet_source.cc", + "neteq/tools/constant_pcm_packet_source.h", + "neteq/tools/initial_packet_inserter_neteq_input.cc", + "neteq/tools/initial_packet_inserter_neteq_input.h", + "neteq/tools/neteq_packet_source_input.cc", + "neteq/tools/neteq_packet_source_input.h", + "neteq/tools/output_audio_file.h", + "neteq/tools/output_wav_file.h", + "neteq/tools/rtp_file_source.cc", + "neteq/tools/rtp_file_source.h", + "neteq/tools/rtp_generator.cc", + "neteq/tools/rtp_generator.h", ] deps = [ - ":audio_decoder_interface", - ":cng", - ":g711", ":pcm16b", - "../..:webrtc_common", + "../../api:array_view", + "../../api:rtp_headers", + "../../common_audio", + "../../rtc_base", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../rtc_base/system:arch", + "../../test:rtp_test_utils", + "../rtp_rtcp", + "../rtp_rtcp:rtp_rtcp_format", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + + public_deps = [ + ":neteq_tools", + ":neteq_tools_minimal", + ] + + if (rtc_enable_protobuf) { + sources += [ + "neteq/tools/neteq_event_log_input.cc", + "neteq/tools/neteq_event_log_input.h", + ] + deps += [ ":rtc_event_log_source" ] + } +} + +rtc_library("neteq_tools") { + visibility += webrtc_default_visibility + sources = [ + "neteq/tools/fake_decode_from_file.cc", + "neteq/tools/fake_decode_from_file.h", + "neteq/tools/neteq_delay_analyzer.cc", + "neteq/tools/neteq_delay_analyzer.h", + "neteq/tools/neteq_replacement_input.cc", + "neteq/tools/neteq_replacement_input.h", + "neteq/tools/neteq_stats_getter.cc", + "neteq/tools/neteq_stats_getter.h", + "neteq/tools/neteq_stats_plotter.cc", + "neteq/tools/neteq_stats_plotter.h", + ] + + deps = [ + "..:module_api_public", + "../../api:array_view", + "../../api/audio_codecs:audio_codecs_api", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../rtp_rtcp", + "../rtp_rtcp:rtp_rtcp_format", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + + public_deps = [ + ":neteq_input_audio_tools", + ":neteq_tools_minimal", + ] +} + +rtc_library("neteq_input_audio_tools") { + visibility += webrtc_default_visibility + sources = [ + "neteq/tools/input_audio_file.cc", + "neteq/tools/input_audio_file.h", + "neteq/tools/resample_input_audio_file.cc", + "neteq/tools/resample_input_audio_file.h", + ] + + deps = [ "../../common_audio", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + ] +} + +if (rtc_enable_protobuf) { + rtc_library("rtc_event_log_source") { + testonly = true + + sources = [ + "neteq/tools/rtc_event_log_source.cc", + "neteq/tools/rtc_event_log_source.h", + ] + + deps = [ + ":neteq_tools_minimal", + "../../logging:rtc_event_log_parser", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../rtp_rtcp", + "../rtp_rtcp:rtp_rtcp_format", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + public_deps = # no-presubmit-check TODO(webrtc:8603) + [ "../../logging:rtc_event_log_proto" ] + } + + # Only used for test purpose. Since we want to use it from chromium + # (see audio_coding_modules_tests_shared below), we cannot guard it + # under rtc_include_tests. + proto_library("neteq_unittest_proto") { + testonly = true + sources = [ "neteq/neteq_unittest.proto" ] + proto_out_dir = "modules/audio_coding/neteq" + } +} + +# Allow to re-use some test classes from chromium. +rtc_library("audio_coding_modules_tests_shared") { + testonly = true + visibility = [] + visibility = [ "*" ] + + sources = [ + "neteq/test/neteq_decoding_test.cc", + "neteq/test/neteq_decoding_test.h", + "neteq/test/result_sink.cc", + "neteq/test/result_sink.h", + "test/PCMFile.cc", + "test/PCMFile.h", + "test/TestStereo.cc", + "test/TestStereo.h", + "test/opus_test.cc", + "test/opus_test.h", + ] + + deps = [ + ":audio_coding", + ":audio_coding_module_typedefs", + ":default_neteq_factory", + ":neteq_test_tools", + ":neteq_tools_minimal", + ":webrtc_opus_wrapper", + "..:module_api", + "../../api:rtp_headers", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs:builtin_audio_decoder_factory", + "../../api/audio_codecs:builtin_audio_encoder_factory", + "../../api/neteq:neteq_api", + "../../rtc_base", + "../../rtc_base:checks", + "../../rtc_base:ignore_wundef", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:stringutils", "../../system_wrappers", + "../../test:fileutils", + "../../test:test_support", + "../rtp_rtcp:rtp_rtcp_format", + "//testing/gtest", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", ] + defines = audio_coding_defines - defines = [] + if (rtc_enable_protobuf) { + defines += [ "WEBRTC_NETEQ_UNITTEST_BITEXACT" ] + deps += [ ":neteq_unittest_proto" ] + } +} +if (rtc_include_tests) { + audio_coding_deps = [ + ":audio_encoder_cng", + ":g711", + ":g722", + ":pcm16b", + "../../common_audio", + "../../system_wrappers", + ] + if (rtc_include_ilbc) { + audio_coding_deps += [ ":ilbc" ] + } if (rtc_include_opus) { - defines += [ "WEBRTC_CODEC_OPUS" ] - deps += [ ":webrtc_opus" ] - } - if (!build_with_mozilla) { - if (current_cpu == "arm") { - defines += [ "WEBRTC_CODEC_ISACFX" ] - deps += [ ":isac_fix" ] - } else { - defines += [ "WEBRTC_CODEC_ISAC" ] - deps += [ ":isac" ] - } - defines += [ "WEBRTC_CODEC_G722" ] - deps += [ ":g722" ] + audio_coding_deps += [ ":webrtc_opus" ] + } + if (current_cpu == "arm") { + audio_coding_deps += [ ":isac_fix" ] + } else { + audio_coding_deps += [ ":isac" ] } if (!build_with_mozilla && !build_with_chromium) { - defines += [ "WEBRTC_CODEC_ILBC" ] - deps += [ ":ilbc" ] + audio_coding_deps += [ ":red" ] + } + + rtc_source_set("mocks") { + testonly = true + sources = [ + "audio_network_adaptor/mock/mock_audio_network_adaptor.h", + "audio_network_adaptor/mock/mock_controller.h", + "audio_network_adaptor/mock/mock_controller_manager.h", + "audio_network_adaptor/mock/mock_debug_dump_writer.h", + ] + deps = [ + ":audio_network_adaptor", + "../../test:test_support", + ] + } + + group("audio_coding_tests") { + visibility += webrtc_default_visibility + testonly = true + public_deps = [ + ":acm_receive_test", + ":acm_send_test", + ":audio_codec_speed_tests", + ":audio_decoder_unittests", + ":audio_decoder_unittests", + ":g711_test", + ":g722_test", + ":ilbc_test", + ":isac_api_test", + ":isac_fix_test", + ":isac_switch_samprate_test", + ":isac_test", + ":neteq_ilbc_quality_test", + ":neteq_isac_quality_test", + ":neteq_opus_quality_test", + ":neteq_pcm16b_quality_test", + ":neteq_pcmu_quality_test", + ":neteq_speed_test", + ":rtp_analyze", + ":rtp_encode", + ":rtp_jitter", + ":rtpcat", + ":webrtc_opus_fec_test", + ] + if (rtc_enable_protobuf) { + public_deps += [ ":neteq_rtpplay" ] + } + } + + rtc_library("audio_coding_modules_tests") { + testonly = true + visibility += webrtc_default_visibility + + sources = [ + "test/Channel.cc", + "test/Channel.h", + "test/EncodeDecodeTest.cc", + "test/EncodeDecodeTest.h", + "test/PacketLossTest.cc", + "test/PacketLossTest.h", + "test/RTPFile.cc", + "test/RTPFile.h", + "test/TestAllCodecs.cc", + "test/TestAllCodecs.h", + "test/TestRedFec.cc", + "test/TestRedFec.h", + "test/TestVADDTX.cc", + "test/TestVADDTX.h", + "test/Tester.cc", + "test/TwoWayCommunication.cc", + "test/TwoWayCommunication.h", + "test/iSACTest.cc", + "test/iSACTest.h", + "test/target_delay_unittest.cc", + ] + deps = [ + ":audio_coding", + ":audio_coding_module_typedefs", + ":audio_coding_modules_tests_shared", + ":audio_encoder_cng", + ":pcm16b_c", + ":red", + ":webrtc_opus_wrapper", + "..:module_api", + "../../api:rtp_headers", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs:builtin_audio_decoder_factory", + "../../api/audio_codecs:builtin_audio_encoder_factory", + "../../api/audio_codecs/L16:audio_decoder_L16", + "../../api/audio_codecs/L16:audio_encoder_L16", + "../../api/audio_codecs/g711:audio_decoder_g711", + "../../api/audio_codecs/g711:audio_encoder_g711", + "../../api/audio_codecs/g722:audio_decoder_g722", + "../../api/audio_codecs/g722:audio_encoder_g722", + "../../api/audio_codecs/ilbc:audio_decoder_ilbc", + "../../api/audio_codecs/ilbc:audio_encoder_ilbc", + "../../api/audio_codecs/isac:audio_decoder_isac_float", + "../../api/audio_codecs/isac:audio_encoder_isac_float", + "../../api/audio_codecs/opus:audio_decoder_opus", + "../../api/audio_codecs/opus:audio_encoder_opus", + "../../common_audio", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../rtc_base/synchronization:mutex", + "../../rtc_base/synchronization:rw_lock_wrapper", + "../../system_wrappers", + "../../test:fileutils", + "../../test:test_support", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + defines = audio_coding_defines + } + + rtc_library("audio_coding_perf_tests") { + testonly = true + visibility += webrtc_default_visibility + + sources = [ + "codecs/opus/opus_complexity_unittest.cc", + "neteq/test/neteq_performance_unittest.cc", + ] + deps = [ + ":neteq_test_support", + ":neteq_test_tools", + "../../api/audio_codecs/opus:audio_encoder_opus", + "../../rtc_base:rtc_base_approved", + "../../system_wrappers", + "../../system_wrappers:field_trial", + "../../test:fileutils", + "../../test:perf_test", + "../../test:test_support", + ] + } + + rtc_library("acm_receive_test") { + testonly = true + sources = [ + "acm2/acm_receive_test.cc", + "acm2/acm_receive_test.h", + ] + + defines = audio_coding_defines + + deps = audio_coding_deps + [ + "../../api:scoped_refptr", + "..:module_api", + ":audio_coding", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs:builtin_audio_decoder_factory", + ":neteq_tools", + "../../rtc_base:rtc_base_approved", + "../../test:test_support", + "//testing/gtest", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] + } + + rtc_library("acm_send_test") { + testonly = true + sources = [ + "acm2/acm_send_test.cc", + "acm2/acm_send_test.h", + ] + + defines = audio_coding_defines + + deps = audio_coding_deps + [ + "//third_party/abseil-cpp/absl/strings", + "../../api/audio:audio_frame_api", + "../../rtc_base:checks", + ":audio_coding", + ":neteq_tools", + "../../api/audio_codecs:builtin_audio_decoder_factory", + "../../api/audio_codecs:builtin_audio_encoder_factory", + "../../api/audio_codecs:audio_codecs_api", + "../../rtc_base:rtc_base_approved", + "../../test:test_support", + "//testing/gtest", + ] + } + + audio_decoder_unittests_resources = + [ "../../resources/audio_coding/testfile32kHz.pcm" ] + + if (is_ios) { + bundle_data("audio_decoder_unittests_bundle_data") { + testonly = true + sources = audio_decoder_unittests_resources + outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] + } + } + + rtc_test("audio_decoder_unittests") { + testonly = true + sources = [ "neteq/audio_decoder_unittest.cc" ] + + defines = neteq_defines + + deps = [ + ":ilbc", + ":isac", + ":isac_fix", + ":neteq", + ":neteq_tools", + "../../test:fileutils", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs/opus:audio_encoder_opus", + "../../common_audio", + "../../rtc_base/system:arch", + "../../test:test_main", + "//testing/gtest", + "../../test:test_support", + ] + audio_coding_deps + + data = audio_decoder_unittests_resources + + if (is_android) { + deps += [ "//testing/android/native_test:native_test_native_code" ] + shard_timeout = 900 + } + if (is_ios) { + deps += [ ":audio_decoder_unittests_bundle_data" ] + } } + + if (rtc_enable_protobuf) { + rtc_library("neteq_test_factory") { + testonly = true + visibility += webrtc_default_visibility + defines = audio_codec_defines + deps = [ + "../../rtc_base:checks", + "../../test:fileutils", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + sources = [ + "neteq/tools/neteq_test_factory.cc", + "neteq/tools/neteq_test_factory.h", + ] + + deps += [ + ":neteq", + ":neteq_test_tools", + "../../api/audio_codecs:builtin_audio_decoder_factory", + "../../api/neteq:neteq_api", + "../../rtc_base:rtc_base_approved", + "../../test:audio_codec_mocks", + "../../test:field_trial", + "../../test:test_support", + ] + } + + rtc_executable("neteq_rtpplay") { + testonly = true + visibility += [ "*" ] + defines = [] + deps = [ + ":neteq_test_factory", + ":neteq_test_tools", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:stringutils", + "../../system_wrappers:field_trial", + "../../test:field_trial", + "//third_party/abseil-cpp/absl/flags:flag", + "//third_party/abseil-cpp/absl/flags:parse", + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + sources = [ "neteq/tools/neteq_rtpplay.cc" ] + } + } + + audio_codec_speed_tests_resources = [ + "//resources/audio_coding/music_stereo_48kHz.pcm", + "//resources/audio_coding/speech_mono_16kHz.pcm", + "//resources/audio_coding/speech_mono_32_48kHz.pcm", + ] + + if (is_ios) { + bundle_data("audio_codec_speed_tests_data") { + testonly = true + sources = audio_codec_speed_tests_resources + outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] + } + } + + rtc_test("audio_codec_speed_tests") { + testonly = true + defines = [] + deps = [ "../../test:fileutils" ] + sources = [ + "codecs/isac/fix/test/isac_speed_test.cc", + "codecs/opus/opus_speed_test.cc", + "codecs/tools/audio_codec_speed_test.cc", + "codecs/tools/audio_codec_speed_test.h", + ] + + data = audio_codec_speed_tests_resources + + if (is_android) { + deps += [ "//testing/android/native_test:native_test_native_code" ] + shard_timeout = 900 + } + + if (is_ios) { + deps += [ ":audio_codec_speed_tests_data" ] + } + + deps += [ + ":isac_fix", + ":webrtc_opus", + "../../rtc_base:rtc_base_approved", + "../../test:test_main", + "../../test:test_support", + "../audio_processing", + "//testing/gtest", + ] + } + + rtc_library("neteq_test_support") { + testonly = true + sources = [ + "neteq/tools/neteq_performance_test.cc", + "neteq/tools/neteq_performance_test.h", + ] + + deps = [ + ":default_neteq_factory", + ":neteq", + ":neteq_test_tools", + ":pcm16b", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs:builtin_audio_decoder_factory", + "../../api/neteq:neteq_api", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../system_wrappers", + "../../test:fileutils", + "../../test:test_support", + "//testing/gtest", + ] + } + + rtc_library("neteq_quality_test_support") { + testonly = true + sources = [ + "neteq/tools/neteq_quality_test.cc", + "neteq/tools/neteq_quality_test.h", + ] + + deps = [ + ":default_neteq_factory", + ":neteq", + ":neteq_test_tools", + "../../api/audio_codecs:builtin_audio_decoder_factory", + "../../api/neteq:neteq_api", + "../../rtc_base:checks", + "../../system_wrappers", + "../../test:fileutils", + "../../test:test_support", + "//testing/gtest", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/flags:flag" ] + } + + rtc_executable("rtp_encode") { + testonly = true + + deps = audio_coding_deps + [ + "//third_party/abseil-cpp/absl/flags:flag", + "//third_party/abseil-cpp/absl/flags:parse", + ":audio_coding", + ":audio_encoder_cng", + ":neteq_input_audio_tools", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs/g711:audio_encoder_g711", + "../../api/audio_codecs/L16:audio_encoder_L16", + "../../api/audio_codecs/g722:audio_encoder_g722", + "../../api/audio_codecs/ilbc:audio_encoder_ilbc", + "../../api/audio_codecs/isac:audio_encoder_isac", + "../../api/audio_codecs/opus:audio_encoder_opus", + "../../rtc_base:safe_conversions", + "//third_party/abseil-cpp/absl/memory", + ] + + sources = [ "neteq/tools/rtp_encode.cc" ] + + defines = audio_coding_defines + } + + rtc_executable("rtp_jitter") { + testonly = true + + deps = audio_coding_deps + [ + "../rtp_rtcp:rtp_rtcp_format", + "../../api:array_view", + "../../rtc_base:rtc_base_approved", + ] + + sources = [ "neteq/tools/rtp_jitter.cc" ] + + defines = audio_coding_defines + } + + rtc_executable("rtpcat") { + testonly = true + + sources = [ "neteq/tools/rtpcat.cc" ] + + deps = [ + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../test:rtp_test_utils", + "//testing/gtest", + ] + } + + rtc_executable("rtp_analyze") { + testonly = true + + sources = [ "neteq/tools/rtp_analyze.cc" ] + + deps = [ + ":neteq", + ":neteq_test_tools", + ":pcm16b", + "//testing/gtest", + "//third_party/abseil-cpp/absl/flags:flag", + "//third_party/abseil-cpp/absl/flags:parse", + ] + } + + rtc_executable("neteq_opus_quality_test") { + testonly = true + + sources = [ "neteq/test/neteq_opus_quality_test.cc" ] + + deps = [ + ":neteq", + ":neteq_quality_test_support", + ":neteq_tools", + ":webrtc_opus", + "../../rtc_base:rtc_base_approved", + "../../test:test_main", + "//testing/gtest", + "//third_party/abseil-cpp/absl/flags:flag", + ] + } + + rtc_executable("neteq_speed_test") { + testonly = true + + sources = [ "neteq/test/neteq_speed_test.cc" ] + + deps = [ + ":neteq", + ":neteq_test_support", + "../../rtc_base:checks", + "../../test:test_support", + "//third_party/abseil-cpp/absl/flags:flag", + "//third_party/abseil-cpp/absl/flags:parse", + ] + } + + rtc_executable("neteq_ilbc_quality_test") { + testonly = true + + sources = [ "neteq/test/neteq_ilbc_quality_test.cc" ] + + deps = [ + ":ilbc", + ":neteq", + ":neteq_quality_test_support", + ":neteq_tools", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../test:fileutils", + "../../test:test_main", + "//testing/gtest", + "//third_party/abseil-cpp/absl/flags:flag", + ] + } + + rtc_executable("neteq_isac_quality_test") { + testonly = true + + sources = [ "neteq/test/neteq_isac_quality_test.cc" ] + + deps = [ + ":isac_fix", + ":neteq", + ":neteq_quality_test_support", + "../../rtc_base:rtc_base_approved", + "../../test:test_main", + "//testing/gtest", + "//third_party/abseil-cpp/absl/flags:flag", + ] + } + + rtc_executable("neteq_pcmu_quality_test") { + testonly = true + + sources = [ "neteq/test/neteq_pcmu_quality_test.cc" ] + + deps = [ + ":g711", + ":neteq", + ":neteq_quality_test_support", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../test:fileutils", + "../../test:test_main", + "//testing/gtest", + "//third_party/abseil-cpp/absl/flags:flag", + ] + } + + rtc_executable("neteq_pcm16b_quality_test") { + testonly = true + + sources = [ "neteq/test/neteq_pcm16b_quality_test.cc" ] + + deps = [ + ":neteq", + ":neteq_quality_test_support", + ":pcm16b", + "../../rtc_base:checks", + "../../rtc_base:rtc_base_approved", + "../../test:fileutils", + "../../test:test_main", + "//testing/gtest", + "//third_party/abseil-cpp/absl/flags:flag", + ] + } + + rtc_executable("isac_fix_test") { + testonly = true + + sources = [ "codecs/isac/fix/test/kenny.cc" ] + + deps = [ + ":isac_fix", + "../../test:perf_test", + "../../test:test_support", + ] + + data = [ "../../resources/speech_and_misc_wb.pcm" ] + } + + rtc_library("isac_test_util") { + testonly = true + sources = [ + "codecs/isac/main/util/utility.c", + "codecs/isac/main/util/utility.h", + ] + } + + rtc_executable("isac_test") { + testonly = true + + sources = [ "codecs/isac/main/test/simpleKenny.c" ] + + deps = [ + ":isac", + ":isac_test_util", + "../../rtc_base:rtc_base_approved", + ] + } + + rtc_executable("g711_test") { + testonly = true + + sources = [ "codecs/g711/test/testG711.cc" ] + + deps = [ ":g711" ] + } + + rtc_executable("g722_test") { + testonly = true + + sources = [ "codecs/g722/test/testG722.cc" ] + + deps = [ ":g722" ] + } + + rtc_executable("isac_api_test") { + testonly = true + + sources = [ "codecs/isac/main/test/ReleaseTest-API/ReleaseTest-API.cc" ] + + deps = [ + ":isac", + ":isac_test_util", + "../../rtc_base:rtc_base_approved", + ] + } + + rtc_executable("isac_switch_samprate_test") { + testonly = true + + sources = [ "codecs/isac/main/test/SwitchingSampRate/SwitchingSampRate.cc" ] + + deps = [ + ":isac", + ":isac_test_util", + "../../common_audio", + "../../common_audio:common_audio_c", + ] + } + + rtc_executable("ilbc_test") { + testonly = true + + sources = [ "codecs/ilbc/test/iLBC_test.c" ] + + deps = [ ":ilbc" ] + } + + rtc_executable("webrtc_opus_fec_test") { + testonly = true + + sources = [ "codecs/opus/opus_fec_test.cc" ] + + deps = [ + ":webrtc_opus", + "../../common_audio", + "../../rtc_base:rtc_base_approved", + "../../test:fileutils", + "../../test:test_main", + "../../test:test_support", + "//testing/gtest", + ] + } + + rtc_library("audio_coding_unittests") { + testonly = true + visibility += webrtc_default_visibility + + sources = [ + "acm2/acm_receiver_unittest.cc", + "acm2/acm_remixing_unittest.cc", + "acm2/audio_coding_module_unittest.cc", + "acm2/call_statistics_unittest.cc", + "audio_network_adaptor/audio_network_adaptor_impl_unittest.cc", + "audio_network_adaptor/bitrate_controller_unittest.cc", + "audio_network_adaptor/channel_controller_unittest.cc", + "audio_network_adaptor/controller_manager_unittest.cc", + "audio_network_adaptor/dtx_controller_unittest.cc", + "audio_network_adaptor/event_log_writer_unittest.cc", + "audio_network_adaptor/fec_controller_plr_based_unittest.cc", + "audio_network_adaptor/frame_length_controller_unittest.cc", + "audio_network_adaptor/frame_length_controller_v2_unittest.cc", + "audio_network_adaptor/util/threshold_curve_unittest.cc", + "codecs/builtin_audio_decoder_factory_unittest.cc", + "codecs/builtin_audio_encoder_factory_unittest.cc", + "codecs/cng/audio_encoder_cng_unittest.cc", + "codecs/cng/cng_unittest.cc", + "codecs/ilbc/ilbc_unittest.cc", + "codecs/isac/fix/source/filterbanks_unittest.cc", + "codecs/isac/fix/source/filters_unittest.cc", + "codecs/isac/fix/source/lpc_masking_model_unittest.cc", + "codecs/isac/fix/source/transform_unittest.cc", + "codecs/isac/isac_webrtc_api_test.cc", + "codecs/isac/main/source/audio_encoder_isac_unittest.cc", + "codecs/isac/main/source/isac_unittest.cc", + "codecs/legacy_encoded_audio_frame_unittest.cc", + "codecs/opus/audio_decoder_multi_channel_opus_unittest.cc", + "codecs/opus/audio_encoder_multi_channel_opus_unittest.cc", + "codecs/opus/audio_encoder_opus_unittest.cc", + "codecs/opus/opus_bandwidth_unittest.cc", + "codecs/opus/opus_unittest.cc", + "codecs/red/audio_encoder_copy_red_unittest.cc", + "neteq/audio_multi_vector_unittest.cc", + "neteq/audio_vector_unittest.cc", + "neteq/background_noise_unittest.cc", + "neteq/buffer_level_filter_unittest.cc", + "neteq/comfort_noise_unittest.cc", + "neteq/decision_logic_unittest.cc", + "neteq/decoder_database_unittest.cc", + "neteq/delay_manager_unittest.cc", + "neteq/dsp_helper_unittest.cc", + "neteq/dtmf_buffer_unittest.cc", + "neteq/dtmf_tone_generator_unittest.cc", + "neteq/expand_unittest.cc", + "neteq/histogram_unittest.cc", + "neteq/merge_unittest.cc", + "neteq/mock/mock_decoder_database.h", + "neteq/mock/mock_dtmf_buffer.h", + "neteq/mock/mock_dtmf_tone_generator.h", + "neteq/mock/mock_expand.h", + "neteq/mock/mock_histogram.h", + "neteq/mock/mock_neteq_controller.h", + "neteq/mock/mock_packet_buffer.h", + "neteq/mock/mock_red_payload_splitter.h", + "neteq/mock/mock_statistics_calculator.h", + "neteq/nack_tracker_unittest.cc", + "neteq/neteq_decoder_plc_unittest.cc", + "neteq/neteq_impl_unittest.cc", + "neteq/neteq_network_stats_unittest.cc", + "neteq/neteq_stereo_unittest.cc", + "neteq/neteq_unittest.cc", + "neteq/normal_unittest.cc", + "neteq/packet_buffer_unittest.cc", + "neteq/post_decode_vad_unittest.cc", + "neteq/random_vector_unittest.cc", + "neteq/red_payload_splitter_unittest.cc", + "neteq/statistics_calculator_unittest.cc", + "neteq/sync_buffer_unittest.cc", + "neteq/time_stretch_unittest.cc", + "neteq/timestamp_scaler_unittest.cc", + "neteq/tools/input_audio_file_unittest.cc", + "neteq/tools/packet_unittest.cc", + ] + + deps = [ + ":acm_receive_test", + ":acm_send_test", + ":audio_coding", + ":audio_coding_module_typedefs", + ":audio_coding_modules_tests_shared", + ":audio_coding_opus_common", + ":audio_encoder_cng", + ":audio_network_adaptor", + ":default_neteq_factory", + ":g711", + ":ilbc", + ":isac", + ":isac_c", + ":isac_common", + ":isac_fix", + ":legacy_encoded_audio_frame", + ":mocks", + ":neteq", + ":neteq_test_support", + ":neteq_test_tools", + ":pcm16b", + ":red", + ":webrtc_cng", + ":webrtc_opus", + "..:module_api", + "..:module_api_public", + "../../api:array_view", + "../../api/audio:audio_frame_api", + "../../api/audio_codecs:audio_codecs_api", + "../../api/audio_codecs:builtin_audio_decoder_factory", + "../../api/audio_codecs:builtin_audio_encoder_factory", + "../../api/audio_codecs/isac:audio_decoder_isac_fix", + "../../api/audio_codecs/isac:audio_decoder_isac_float", + "../../api/audio_codecs/isac:audio_encoder_isac_fix", + "../../api/audio_codecs/isac:audio_encoder_isac_float", + "../../api/audio_codecs/opus:audio_decoder_multiopus", + "../../api/audio_codecs/opus:audio_decoder_opus", + "../../api/audio_codecs/opus:audio_encoder_multiopus", + "../../api/audio_codecs/opus:audio_encoder_opus", + "../../api/neteq:default_neteq_controller_factory", + "../../api/neteq:neteq_api", + "../../api/neteq:neteq_controller_api", + "../../api/neteq:tick_timer", + "../../api/neteq:tick_timer_unittest", + "../../api/rtc_event_log", + "../../common_audio", + "../../common_audio:common_audio_c", + "../../common_audio:mock_common_audio", + "../../logging:mocks", + "../../logging:rtc_event_audio", + "../../modules/rtp_rtcp:rtp_rtcp_format", + "../../rtc_base", + "../../rtc_base:checks", + "../../rtc_base:ignore_wundef", + "../../rtc_base:rtc_base_approved", + "../../rtc_base:rtc_base_tests_utils", + "../../rtc_base:sanitizer", + "../../rtc_base:timeutils", + "../../rtc_base/synchronization:mutex", + "../../rtc_base/system:arch", + "../../system_wrappers", + "../../test:audio_codec_mocks", + "../../test:field_trial", + "../../test:fileutils", + "../../test:rtc_expect_death", + "../../test:rtp_test_utils", + "../../test:test_common", + "../../test:test_support", + "codecs/opus/test", + "codecs/opus/test:test_unittest", + "//testing/gtest", + ] + absl_deps = [ + "//third_party/abseil-cpp/absl/flags:flag", + "//third_party/abseil-cpp/absl/memory", + "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/types:optional", + ] + + defines = audio_coding_defines + + if (rtc_enable_protobuf) { + defines += [ "WEBRTC_NETEQ_UNITTEST_BITEXACT" ] + deps += [ + ":ana_config_proto", + ":neteq_unittest_proto", + ] + } + } +} + +# For backwards compatibility only! Use +# webrtc/api/audio_codecs:audio_codecs_api instead. +# TODO(kwiberg): Remove this. +rtc_source_set("audio_decoder_interface") { + visibility += [ "*" ] + sources = [ "codecs/audio_decoder.h" ] + deps = [ "../../api/audio_codecs:audio_codecs_api" ] +} + +# For backwards compatibility only! Use +# webrtc/api/audio_codecs:audio_codecs_api instead. +# TODO(ossu): Remove this. +rtc_source_set("audio_encoder_interface") { + visibility += [ "*" ] + sources = [ "codecs/audio_encoder.h" ] + deps = [ "../../api/audio_codecs:audio_codecs_api" ] } |