# 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/environment",
    "../../api/neteq:neteq_api",
    "../../api/units:timestamp",
    "../../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",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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",
    "//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",
    "//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",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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",
    "//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",
    "//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",
    "//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",
    "//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",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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:field_trials_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/audio_codecs/opus:audio_encoder_opus_config",
    "../../api/environment",
    "../../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",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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:array_view",
    "../../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_conversions",
    "../../rtc_base:safe_minmax",
    "../../rtc_base:stringutils",
    "//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",
  ]

  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",
  ]
  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:logging",
    "../../rtc_base:protobuf_utils",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:timeutils",
    "../../rtc_base/system:file_wrapper",
    "../../system_wrappers",
    "../../system_wrappers:field_trial",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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/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:field_trials_view",
    "../../api:rtp_headers",
    "../../api:rtp_packet_info",
    "../../api:scoped_refptr",
    "../../api/audio:audio_frame_api",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/environment",
    "../../api/neteq:neteq_api",
    "../../api/neteq:neteq_controller_api",
    "../../api/neteq:tick_timer",
    "../../api/units:timestamp",
    "../../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:metrics",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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/environment",
    "../../api/neteq:default_neteq_controller_factory",
    "../../api/neteq:neteq_api",
  ]
}

# 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/environment",
    "../../api/environment:environment_factory",
    "../../api/neteq:custom_neteq_factory",
    "../../api/neteq:default_neteq_controller_factory",
    "../../api/neteq:neteq_api",
    "../../api/units:timestamp",
    "../../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",
    "//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_rtp_dump_input.cc",
    "neteq/tools/neteq_rtp_dump_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:digest",
    "../../rtc_base:stringutils",
    "../../rtc_base/system:arch",
    "../../test:rtp_test_utils",
    "../rtp_rtcp:rtp_rtcp_format",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

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",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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 += [ "../../logging:rtc_event_log_parser" ]
    public_deps +=  # no-presubmit-check TODO(webrtc:8603)
        [ "../../logging:rtc_event_log_proto" ]
  }
}

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",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

if (rtc_enable_protobuf) {
  # 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/environment",
    "../../api/environment:environment_factory",
    "../../api/neteq:neteq_api",
    "../../api/units:timestamp",
    "../../rtc_base:checks",
    "../../rtc_base:digest",
    "../../rtc_base:stringutils",
    "../../system_wrappers",
    "../../test:fileutils",
    "../../test:test_support",
    "//testing/gtest",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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/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",
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../api/units:timestamp",
      "../../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",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    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/environment:environment_factory",
      "../../api/test/metrics:global_metrics_logger_and_exporter",
      "../../api/test/metrics:metric",
      "../../rtc_base:macromagic",
      "../../rtc_base:timeutils",
      "../../system_wrappers",
      "../../test:fileutils",
      "../../test:test_flags",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/flags:flag",
    ]
  }

  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",
      "../../api/environment:environment_factory",
      "../../test:test_support",
      "//testing/gtest",
    ]

    deps += audio_coding_deps
  }

  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",
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../rtc_base:checks",
      "../../rtc_base:stringutils",
      "../../test:test_support",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    deps += audio_coding_deps
  }

  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",
               "../../api/environment:environment_factory",
               "../../common_audio",
               "../../rtc_base/system:arch",
               "../../test:explicit_key_value_config",
               "../../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",
        "//third_party/abseil-cpp/absl/strings:string_view",
        "//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/environment",
      "../../api/environment:environment_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/environment:environment_factory",
        "../../api/neteq:neteq_api",
        "../../api/units:timestamp",
        "../../rtc_base:checks",
        "../../rtc_base:stringutils",
        "../../system_wrappers",
        "../../test:fileutils",
        "../../test:test_support",
        "//testing/gtest",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
    }

    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",
        "../../api/environment:environment_factory",
        "../../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_arrival_history.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/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/environment",
        "../../api/environment:environment_factory",
        "../../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",
        "../../api/units:timestamp",
        "../../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:digest",
        "../../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:stringutils",
        "../../rtc_base:timeutils",
        "../../rtc_base/synchronization:mutex",
        "../../rtc_base/system:arch",
        "../../system_wrappers",
        "../../test:audio_codec_mocks",
        "../../test:audio_test_common",
        "../../test:explicit_key_value_config",
        "../../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",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings:string_view",
        "//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" ]
}
