# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../webrtc.gni")
import("audio_coding.gni")
if (rtc_enable_protobuf) {
  import("//third_party/protobuf/proto_library.gni")
}

visibility = [ ":*" ]

rtc_source_set("audio_coding_module_typedefs") {
  visibility += [ "*" ]
  sources = [ "include/audio_coding_module_typedefs.h" ]
}

rtc_library("audio_coding") {
  visibility += [ "*" ]
  sources = [
    "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 = []

  deps = [
    ":audio_coding_module_typedefs",
    ":default_neteq_factory",
    ":neteq",
    "..: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:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:safe_conversions",
    "../../rtc_base/synchronization:mutex",
    "../../system_wrappers",
    "../../system_wrappers:metrics",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("legacy_encoded_audio_frame") {
  sources = [
    "codecs/legacy_encoded_audio_frame.cc",
    "codecs/legacy_encoded_audio_frame.h",
  ]
  deps = [
    "../../api:array_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("webrtc_cng") {
  visibility += webrtc_default_visibility
  sources = [
    "codecs/cng/webrtc_cng.cc",
    "codecs/cng/webrtc_cng.h",
  ]

  deps = [
    "../../api:array_view",
    "../../common_audio:common_audio_c",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:safe_conversions",
  ]
}

rtc_library("audio_encoder_cng") {
  visibility += [ "*" ]
  sources = [
    "codecs/cng/audio_encoder_cng.cc",
    "codecs/cng/audio_encoder_cng.h",
  ]

  deps = [
    ":webrtc_cng",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/units:time_delta",
    "../../common_audio",
    "../../rtc_base:checks",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("red") {
  visibility += [ "*" ]
  sources = [
    "codecs/red/audio_encoder_copy_red.cc",
    "codecs/red/audio_encoder_copy_red.h",
  ]

  deps = [
    "../../api:array_view",
    "../../api:field_trials_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/units:time_delta",
    "../../common_audio",
    "../../rtc_base:buffer",
    "../../rtc_base:byte_order",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

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/audio_encoder_pcm.h",
  ]

  deps = [
    ":legacy_encoded_audio_frame",
    "../../api:array_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/units:time_delta",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  public_deps = [ ":g711_c" ]  # no-presubmit-check TODO(webrtc:8603)
}

rtc_library("g711_c") {
  poisonous = [ "audio_codecs" ]
  sources = [
    "codecs/g711/g711_interface.c",
    "codecs/g711/g711_interface.h",
  ]
  deps = [ "../third_party/g711:g711_3p" ]
}

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/audio_encoder_g722.h",
  ]

  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:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:safe_conversions",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  public_deps = [ ":g722_c" ]  # no-presubmit-check TODO(webrtc:8603)
}

rtc_library("g722_c") {
  poisonous = [ "audio_codecs" ]
  sources = [
    "codecs/g722/g722_interface.c",
    "codecs/g722/g722_interface.h",
  ]
  deps = [ "../third_party/g722:g722_3p" ]
}

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:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:safe_conversions",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  public_deps = [ ":ilbc_c" ]  # no-presubmit-check TODO(webrtc:8603)
}

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/augmented_cb_corr.c",
    "codecs/ilbc/augmented_cb_corr.h",
    "codecs/ilbc/bw_expand.c",
    "codecs/ilbc/bw_expand.h",
    "codecs/ilbc/cb_construct.c",
    "codecs/ilbc/cb_construct.h",
    "codecs/ilbc/cb_mem_energy.c",
    "codecs/ilbc/cb_mem_energy.h",
    "codecs/ilbc/cb_mem_energy_augmentation.c",
    "codecs/ilbc/cb_mem_energy_augmentation.h",
    "codecs/ilbc/cb_mem_energy_calc.c",
    "codecs/ilbc/cb_mem_energy_calc.h",
    "codecs/ilbc/cb_search.c",
    "codecs/ilbc/cb_search.h",
    "codecs/ilbc/cb_search_core.c",
    "codecs/ilbc/cb_search_core.h",
    "codecs/ilbc/cb_update_best_index.c",
    "codecs/ilbc/cb_update_best_index.h",
    "codecs/ilbc/chebyshev.c",
    "codecs/ilbc/chebyshev.h",
    "codecs/ilbc/comp_corr.c",
    "codecs/ilbc/comp_corr.h",
    "codecs/ilbc/constants.c",
    "codecs/ilbc/constants.h",
    "codecs/ilbc/create_augmented_vec.c",
    "codecs/ilbc/create_augmented_vec.h",
    "codecs/ilbc/decode.c",
    "codecs/ilbc/decode.h",
    "codecs/ilbc/decode_residual.c",
    "codecs/ilbc/decode_residual.h",
    "codecs/ilbc/decoder_interpolate_lsf.c",
    "codecs/ilbc/decoder_interpolate_lsf.h",
    "codecs/ilbc/defines.h",
    "codecs/ilbc/do_plc.c",
    "codecs/ilbc/do_plc.h",
    "codecs/ilbc/encode.c",
    "codecs/ilbc/encode.h",
    "codecs/ilbc/energy_inverse.c",
    "codecs/ilbc/energy_inverse.h",
    "codecs/ilbc/enh_upsample.c",
    "codecs/ilbc/enh_upsample.h",
    "codecs/ilbc/enhancer.c",
    "codecs/ilbc/enhancer.h",
    "codecs/ilbc/enhancer_interface.c",
    "codecs/ilbc/enhancer_interface.h",
    "codecs/ilbc/filtered_cb_vecs.c",
    "codecs/ilbc/filtered_cb_vecs.h",
    "codecs/ilbc/frame_classify.c",
    "codecs/ilbc/frame_classify.h",
    "codecs/ilbc/gain_dequant.c",
    "codecs/ilbc/gain_dequant.h",
    "codecs/ilbc/gain_quant.c",
    "codecs/ilbc/gain_quant.h",
    "codecs/ilbc/get_cd_vec.c",
    "codecs/ilbc/get_cd_vec.h",
    "codecs/ilbc/get_lsp_poly.c",
    "codecs/ilbc/get_lsp_poly.h",
    "codecs/ilbc/get_sync_seq.c",
    "codecs/ilbc/get_sync_seq.h",
    "codecs/ilbc/hp_input.c",
    "codecs/ilbc/hp_input.h",
    "codecs/ilbc/hp_output.c",
    "codecs/ilbc/hp_output.h",
    "codecs/ilbc/ilbc.c",
    "codecs/ilbc/ilbc.h",
    "codecs/ilbc/index_conv_dec.c",
    "codecs/ilbc/index_conv_dec.h",
    "codecs/ilbc/index_conv_enc.c",
    "codecs/ilbc/index_conv_enc.h",
    "codecs/ilbc/init_decode.c",
    "codecs/ilbc/init_decode.h",
    "codecs/ilbc/init_encode.c",
    "codecs/ilbc/init_encode.h",
    "codecs/ilbc/interpolate.c",
    "codecs/ilbc/interpolate.h",
    "codecs/ilbc/interpolate_samples.c",
    "codecs/ilbc/interpolate_samples.h",
    "codecs/ilbc/lpc_encode.c",
    "codecs/ilbc/lpc_encode.h",
    "codecs/ilbc/lsf_check.c",
    "codecs/ilbc/lsf_check.h",
    "codecs/ilbc/lsf_interpolate_to_poly_dec.c",
    "codecs/ilbc/lsf_interpolate_to_poly_dec.h",
    "codecs/ilbc/lsf_interpolate_to_poly_enc.c",
    "codecs/ilbc/lsf_interpolate_to_poly_enc.h",
    "codecs/ilbc/lsf_to_lsp.c",
    "codecs/ilbc/lsf_to_lsp.h",
    "codecs/ilbc/lsf_to_poly.c",
    "codecs/ilbc/lsf_to_poly.h",
    "codecs/ilbc/lsp_to_lsf.c",
    "codecs/ilbc/lsp_to_lsf.h",
    "codecs/ilbc/my_corr.c",
    "codecs/ilbc/my_corr.h",
    "codecs/ilbc/nearest_neighbor.c",
    "codecs/ilbc/nearest_neighbor.h",
    "codecs/ilbc/pack_bits.c",
    "codecs/ilbc/pack_bits.h",
    "codecs/ilbc/poly_to_lsf.c",
    "codecs/ilbc/poly_to_lsf.h",
    "codecs/ilbc/poly_to_lsp.c",
    "codecs/ilbc/poly_to_lsp.h",
    "codecs/ilbc/refiner.c",
    "codecs/ilbc/refiner.h",
    "codecs/ilbc/simple_interpolate_lsf.c",
    "codecs/ilbc/simple_interpolate_lsf.h",
    "codecs/ilbc/simple_lpc_analysis.c",
    "codecs/ilbc/simple_lpc_analysis.h",
    "codecs/ilbc/simple_lsf_dequant.c",
    "codecs/ilbc/simple_lsf_dequant.h",
    "codecs/ilbc/simple_lsf_quant.c",
    "codecs/ilbc/simple_lsf_quant.h",
    "codecs/ilbc/smooth.c",
    "codecs/ilbc/smooth.h",
    "codecs/ilbc/smooth_out_data.c",
    "codecs/ilbc/smooth_out_data.h",
    "codecs/ilbc/sort_sq.c",
    "codecs/ilbc/sort_sq.h",
    "codecs/ilbc/split_vq.c",
    "codecs/ilbc/split_vq.h",
    "codecs/ilbc/state_construct.c",
    "codecs/ilbc/state_construct.h",
    "codecs/ilbc/state_search.c",
    "codecs/ilbc/state_search.h",
    "codecs/ilbc/swap_bytes.c",
    "codecs/ilbc/swap_bytes.h",
    "codecs/ilbc/unpack_bits.c",
    "codecs/ilbc/unpack_bits.h",
    "codecs/ilbc/vq3.c",
    "codecs/ilbc/vq3.h",
    "codecs/ilbc/vq4.c",
    "codecs/ilbc/vq4.h",
    "codecs/ilbc/window32_w32.c",
    "codecs/ilbc/window32_w32.h",
    "codecs/ilbc/xcorr_coef.c",
    "codecs/ilbc/xcorr_coef.h",
  ]

  deps = [
    "../../api/audio_codecs:audio_codecs_api",
    "../../common_audio",
    "../../common_audio:common_audio_c",
    "../../rtc_base:checks",
    "../../rtc_base:sanitizer",
    "../../rtc_base/system:arch",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ]
}

rtc_library("isac_vad") {
  visibility += [ "../audio_processing/vad:*" ]
  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_source_set("isac_bwinfo") {
  sources = [ "codecs/isac/bandwidth_info.h" ]
  deps = []
}

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/audio_encoder_pcm16b.h",
    "codecs/pcm16b/pcm16b_common.cc",
    "codecs/pcm16b/pcm16b_common.h",
  ]

  deps = [
    ":g711",
    ":legacy_encoded_audio_frame",
    "../../api:array_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
  public_deps = [ ":pcm16b_c" ]  # no-presubmit-check TODO(webrtc:8603)
}

rtc_library("pcm16b_c") {
  poisonous = [ "audio_codecs" ]
  sources = [
    "codecs/pcm16b/pcm16b.c",
    "codecs/pcm16b/pcm16b.h",
  ]
}

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",
  ]
}

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/audio_encoder_opus.h",
  ]

  deps = [
    ":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:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:protobuf_utils",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:safe_minmax",
    "../../rtc_base:stringutils",
    "../../rtc_base:timeutils",
    "../../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
}

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:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../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
}

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

  deps = [
    "../../api:array_view",
    "../../rtc_base:checks",
    "../../rtc_base:ignore_wundef",
    "../../system_wrappers:field_trial",
  ]

  if (rtc_build_opus) {
    deps += [ rtc_opus_dir ]
    public_configs = [ "//third_party/opus:opus_config" ]
  } else if (build_with_mozilla) {
    include_dirs = [ getenv("DIST") + "/include/opus" ]
  }
}

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" ]
}

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:logging",
    "../../rtc_base:protobuf_utils",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:timeutils",
    "../../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/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]

  if (rtc_enable_protobuf) {
    deps += [
      ":ana_config_proto",
      ":ana_debug_dump_proto",
    ]
  }
}

rtc_library("neteq") {
  visibility += webrtc_default_visibility
  sources = [
    "neteq/accelerate.cc",
    "neteq/accelerate.h",
    "neteq/audio_multi_vector.cc",
    "neteq/audio_multi_vector.h",
    "neteq/audio_vector.cc",
    "neteq/audio_vector.h",
    "neteq/background_noise.cc",
    "neteq/background_noise.h",
    "neteq/buffer_level_filter.cc",
    "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/decoder_database.cc",
    "neteq/decoder_database.h",
    "neteq/delay_manager.cc",
    "neteq/delay_manager.h",
    "neteq/dsp_helper.cc",
    "neteq/dsp_helper.h",
    "neteq/dtmf_buffer.cc",
    "neteq/dtmf_buffer.h",
    "neteq/dtmf_tone_generator.cc",
    "neteq/dtmf_tone_generator.h",
    "neteq/expand.cc",
    "neteq/expand.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_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_arrival_history.cc",
    "neteq/packet_arrival_history.h",
    "neteq/packet_buffer.cc",
    "neteq/packet_buffer.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/red_payload_splitter.cc",
    "neteq/red_payload_splitter.h",
    "neteq/reorder_optimizer.cc",
    "neteq/reorder_optimizer.h",
    "neteq/statistics_calculator.cc",
    "neteq/statistics_calculator.h",
    "neteq/sync_buffer.cc",
    "neteq/sync_buffer.h",
    "neteq/time_stretch.cc",
    "neteq/time_stretch.h",
    "neteq/timestamp_scaler.cc",
    "neteq/timestamp_scaler.h",
    "neteq/underrun_optimizer.cc",
    "neteq/underrun_optimizer.h",
  ]

  deps = [
    ":audio_coding_module_typedefs",
    ":webrtc_cng",
    "..: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:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:event_tracer",
    "../../rtc_base:gtest_prod",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../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",
  ]
}

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:array_view",
    "../../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:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:copy_on_write_buffer",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../system_wrappers",
    "../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 = [
    ":neteq_tools",
    ":neteq_tools_minimal",
    ":pcm16b",
    "../../api:array_view",
    "../../api:rtp_headers",
    "../../common_audio",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:ssl",
    "../../rtc_base:stringutils",
    "../../rtc_base/system:arch",
    "../../test:rtp_test_utils",
    "../rtp_rtcp:rtp_rtcp_format",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]

  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 = [
    ":neteq_input_audio_tools",
    ":neteq_tools_minimal",
    "..:module_api_public",
    "../../api:array_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../rtc_base:timeutils",
    "../rtp_rtcp",
    "../rtp_rtcp:rtp_rtcp_format",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

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",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

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",
      "../rtp_rtcp",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings",
      "//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:checks",
    "../../rtc_base:ignore_wundef",
    "../../rtc_base:ssl",
    "../../rtc_base:stringutils",
    "../../system_wrappers",
    "../../test:fileutils",
    "../../test:test_support",
    "//testing/gtest",
  ]
  absl_deps = [
    "//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 += [ ":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) {
    audio_coding_deps += [ ":webrtc_opus" ]
  }
  if (!build_with_mozilla && !build_with_chromium) {
    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",
    ]
  }

  if (!build_with_chromium) {
    group("audio_coding_tests") {
      visibility += webrtc_default_visibility
      testonly = true
      public_deps = [  # no-presubmit-check TODO(webrtc:8603)
        ":acm_receive_test",
        ":acm_send_test",
        ":audio_codec_speed_tests",
        ":audio_decoder_unittests",
        ":audio_decoder_unittests",
        ":g711_test",
        ":g722_test",
        ":ilbc_test",
        ":neteq_ilbc_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 +=  # no-presubmit-check TODO(webrtc:8603)
            [ ":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/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/opus:audio_decoder_opus",
      "../../api/audio_codecs/opus:audio_encoder_opus",
      "../../common_audio",
      "../../rtc_base:checks",
      "../../rtc_base:logging",
      "../../rtc_base:macromagic",
      "../../rtc_base:stringutils",
      "../../rtc_base:timeutils",
      "../../rtc_base/synchronization:mutex",
      "../../test:fileutils",
      "../../test:scoped_key_value_config",
      "../../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",
      "../../api/test/metrics:global_metrics_logger_and_exporter",
      "../../api/test/metrics:metric",
      "../../rtc_base:macromagic",
      "../../rtc_base:timeutils",
      "../../system_wrappers",
      "../../system_wrappers:field_trial",
      "../../test:fileutils",
      "../../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",
      ":neteq_tools",
      ":neteq_tools_minimal",
      "../../api:scoped_refptr",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../test:test_support",
      "//testing/gtest",
    ]

    deps += audio_coding_deps
    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",
      ":neteq_input_audio_tools",
      ":neteq_tools",
      ":neteq_tools_minimal",
      "../../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",
      "../../rtc_base:checks",
      "../../rtc_base:stringutils",
      "../../test:test_support",
      "//testing/gtest",
    ]
    deps += audio_coding_deps
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  if (!build_with_chromium) {
    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",
               ":neteq",
               ":neteq_input_audio_tools",
               ":neteq_tools",
               "../../api/audio_codecs:audio_codecs_api",
               "../../api/audio_codecs/opus:audio_encoder_opus",
               "../../common_audio",
               "../../rtc_base/system:arch",
               "../../test:fileutils",
               "../../test:test_main",
               "../../test:test_support",
               "//testing/gtest",
             ] + audio_coding_deps

      data = audio_decoder_unittests_resources

      if (is_android) {
        use_default_launcher = false
        deps += [
          "//build/android/gtest_apk:native_test_instrumentation_test_runner_java",
          "//testing/android/native_test:native_test_java",
          "//testing/android/native_test:native_test_support",
        ]
        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 = [
        ":neteq_input_audio_tools",
        ":neteq_tools",
        ":neteq_tools_minimal",
        "../../rtc_base:checks",
        "../../rtc_base:refcount",
        "../../test:fileutils",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/strings",
        "//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",
        "../../test:audio_test_common",
        "../../test:field_trial",
        "../../test:test_support",
      ]
    }
  }

  if (rtc_enable_protobuf && !build_with_chromium) {
    rtc_executable("neteq_rtpplay") {
      testonly = true
      visibility += [ "*" ]
      defines = []
      deps = [
        ":neteq_test_factory",
        ":neteq_test_tools",
        ":neteq_tools_minimal",
        "../../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" ]
    }
  }

  if (!build_with_chromium) {
    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 = [
        "../../rtc_base:macromagic",
        "../../test:fileutils",
      ]
      sources = [
        "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) {
        use_default_launcher = false
        deps += [
          "//build/android/gtest_apk:native_test_instrumentation_test_runner_java",
          "//testing/android/native_test:native_test_java",
          "//testing/android/native_test:native_test_support",
        ]
        shard_timeout = 900
      }

      if (is_ios) {
        deps += [ ":audio_codec_speed_tests_data" ]
      }

      deps += [
        ":webrtc_opus",
        "../../rtc_base:checks",
        "../../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",
      "../../system_wrappers",
      "../../test:fileutils",
      "../../test:test_support",
      "//testing/gtest",
    ]
  }

  if (!build_with_chromium) {
    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_input_audio_tools",
        ":neteq_test_tools",
        ":neteq_tools_minimal",
        "../../api/audio_codecs:builtin_audio_decoder_factory",
        "../../api/neteq:neteq_api",
        "../../rtc_base:checks",
        "../../rtc_base:stringutils",
        "../../system_wrappers",
        "../../test:fileutils",
        "../../test:test_support",
        "//testing/gtest",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/strings",
      ]
    }

    rtc_executable("rtp_encode") {
      testonly = true

      deps = [
        ":audio_coding",
        ":audio_encoder_cng",
        ":neteq_input_audio_tools",
        "../../api/audio:audio_frame_api",
        "../../api/audio_codecs/L16:audio_encoder_L16",
        "../../api/audio_codecs/g711:audio_encoder_g711",
        "../../api/audio_codecs/g722:audio_encoder_g722",
        "../../api/audio_codecs/ilbc:audio_encoder_ilbc",
        "../../api/audio_codecs/opus:audio_encoder_opus",
        "../../rtc_base:safe_conversions",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/memory",
      ]

      deps += audio_coding_deps

      sources = [ "neteq/tools/rtp_encode.cc" ]

      defines = audio_coding_defines
    }

    rtc_executable("rtp_jitter") {
      testonly = true

      deps = [
        "../../api:array_view",
        "../../rtc_base:buffer",
        "../rtp_rtcp:rtp_rtcp_format",
      ]

      deps += audio_coding_deps

      sources = [ "neteq/tools/rtp_jitter.cc" ]

      defines = audio_coding_defines
    }

    rtc_executable("rtpcat") {
      testonly = true

      sources = [ "neteq/tools/rtpcat.cc" ]

      deps = [
        "../../rtc_base:checks",
        "../../test:rtp_test_utils",
        "//testing/gtest",
      ]
    }

    rtc_executable("rtp_analyze") {
      testonly = true

      sources = [ "neteq/tools/rtp_analyze.cc" ]

      deps = [
        ":neteq",
        ":neteq_test_tools",
        ":neteq_tools_minimal",
        ":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",
        "../../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:safe_conversions",
        "../../test:fileutils",
        "../../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:safe_conversions",
        "../../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:safe_conversions",
        "../../test:fileutils",
        "../../test:test_main",
        "//testing/gtest",
        "//third_party/abseil-cpp/absl/flags:flag",
      ]
    }
  }

  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" ]
  }

  if (!build_with_chromium) {
    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:macromagic",
        "../../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/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_buffer_level_filter.h",
        "neteq/mock/mock_decoder_database.h",
        "neteq/mock/mock_delay_manager.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_arrival_history_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/reorder_optimizer_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",
        "neteq/underrun_optimizer_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",
        ":legacy_encoded_audio_frame",
        ":mocks",
        ":neteq",
        ":neteq_input_audio_tools",
        ":neteq_test_support",
        ":neteq_test_tools",
        ":neteq_tools",
        ":neteq_tools_minimal",
        ":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/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:checks",
        "../../rtc_base:ignore_wundef",
        "../../rtc_base:macromagic",
        "../../rtc_base:platform_thread",
        "../../rtc_base:refcount",
        "../../rtc_base:rtc_base_tests_utils",
        "../../rtc_base:rtc_event",
        "../../rtc_base:safe_conversions",
        "../../rtc_base:sanitizer",
        "../../rtc_base:ssl",
        "../../rtc_base:stringutils",
        "../../rtc_base:timeutils",
        "../../rtc_base/synchronization:mutex",
        "../../rtc_base/system:arch",
        "../../system_wrappers",
        "../../test:audio_codec_mocks",
        "../../test:audio_test_common",
        "../../test:field_trial",
        "../../test:fileutils",
        "../../test:rtc_expect_death",
        "../../test:rtp_test_utils",
        "../../test:scoped_key_value_config",
        "../../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" ]
}
