# 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("../../build/webrtc.gni")
import("audio_coding.gni")
import("//build/config/arm.gni")
import("//third_party/protobuf/proto_library.gni")

audio_codec_deps = [
  ":cng",
  ":g711",
  ":pcm16b",
]
if (rtc_include_ilbc) {
  audio_codec_deps += [ ":ilbc" ]
}
if (rtc_include_opus) {
  audio_codec_deps += [ ":webrtc_opus" ]
}
if (!build_with_mozilla) {
  if (current_cpu == "arm") {
    audio_codec_deps += [ ":isac_fix" ]
  } else {
    audio_codec_deps += [ ":isac" ]
  }
  audio_codec_deps += [ ":g722" ]
}
if (!build_with_mozilla && !build_with_chromium) {
  audio_codec_deps += [ ":red" ]
}
audio_coding_deps = audio_codec_deps + [
                      "../..:webrtc_common",
                      "../../common_audio",
                      "../../system_wrappers",
                    ]

rtc_source_set("audio_decoder_factory_interface") {
  sources = [
    "codecs/audio_decoder_factory.h",
    "codecs/audio_format.cc",
    "codecs/audio_format.h",
  ]
  deps = [
    "../..:webrtc_common",
  ]
}

rtc_source_set("builtin_audio_decoder_factory") {
  sources = [
    "codecs/builtin_audio_decoder_factory.cc",
    "codecs/builtin_audio_decoder_factory.h",
  ]
  deps = [
           "../..:webrtc_common",
           ":audio_decoder_factory_interface",
         ] + audio_codec_deps
  defines = audio_codec_defines
}

rtc_source_set("rent_a_codec") {
  sources = [
    "acm2/acm_codec_database.cc",
    "acm2/acm_codec_database.h",
    "acm2/rent_a_codec.cc",
    "acm2/rent_a_codec.h",
  ]
  deps = [ "../..:webrtc_common" ] + audio_codec_deps
  defines = audio_codec_defines
}

config("audio_coding_config") {
  include_dirs = [
    "include",
    "../include",
  ]
}

rtc_source_set("audio_coding") {
  sources = [
    "acm2/acm_common_defs.h",
    "acm2/acm_receiver.cc",
    "acm2/acm_receiver.h",
    "acm2/acm_resampler.cc",
    "acm2/acm_resampler.h",
    "acm2/audio_coding_module.cc",
    "acm2/call_statistics.cc",
    "acm2/call_statistics.h",
    "acm2/codec_manager.cc",
    "acm2/codec_manager.h",
    "acm2/initial_delay_manager.cc",
    "acm2/initial_delay_manager.h",
    "include/audio_coding_module.h",
    "include/audio_coding_module_typedefs.h",
  ]

  defines = []

  public_configs = [ ":audio_coding_config" ]

  if (rtc_include_opus) {
    public_deps = [
      ":webrtc_opus",
    ]
  }

  if (is_win) {
    cflags = [
      # TODO(kjellander): Bug 261: fix this warning.
      "/wd4373",  # virtual function override.
    ]
  }

  deps = audio_coding_deps + [
           ":audio_network_adaptor",
           ":neteq",
           ":rent_a_codec",
           "../..:rtc_event_log",
         ]
  defines = audio_coding_defines
}

rtc_source_set("audio_decoder_interface") {
  sources = [
    "codecs/audio_decoder.cc",
    "codecs/audio_decoder.h",
  ]
  deps = [
    ":legacy_encoded_audio_frame",
    "../..:webrtc_common",
    "../../base:rtc_base_approved",
  ]
}

rtc_source_set("audio_encoder_interface") {
  sources = [
    "codecs/audio_encoder.cc",
    "codecs/audio_encoder.h",
  ]
  deps = [
    "../..:webrtc_common",
    "../../base:rtc_base_approved",
  ]
}

config("cng_config") {
  include_dirs = [
    "../../..",
    "codecs/cng/include",
  ]
}

rtc_source_set("cng") {
  sources = [
    "codecs/cng/audio_encoder_cng.cc",
    "codecs/cng/audio_encoder_cng.h",
    "codecs/cng/webrtc_cng.cc",
    "codecs/cng/webrtc_cng.h",
  ]

  public_configs = [ ":cng_config" ]

  deps = [
    ":audio_encoder_interface",
    "../../common_audio",
  ]
}

config("red_config") {
  include_dirs = [ "codecs/red" ]
}

rtc_source_set("red") {
  sources = [
    "codecs/red/audio_encoder_copy_red.cc",
    "codecs/red/audio_encoder_copy_red.h",
  ]

  public_configs = [ ":red_config" ]

  deps = [
    ":audio_encoder_interface",
    "../../common_audio",
  ]
}

rtc_source_set("legacy_encoded_audio_frame") {
  sources = [
    "codecs/legacy_encoded_audio_frame.cc",
    "codecs/legacy_encoded_audio_frame.h",
  ]
}

config("g711_config") {
  include_dirs = [
    "../../..",
    "codecs/g711/include",
  ]
}

rtc_source_set("g711") {
  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",
    "codecs/g711/g711.c",
    "codecs/g711/g711.h",
    "codecs/g711/g711_interface.c",
    "codecs/g711/g711_interface.h",
  ]

  public_configs = [ ":g711_config" ]

  deps = [
    ":audio_decoder_interface",
    ":audio_encoder_interface",
    ":legacy_encoded_audio_frame",
  ]
}

config("g722_config") {
  include_dirs = [
    "../../..",
    "codecs/g722/include",
  ]
}

rtc_source_set("g722") {
  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",
    "codecs/g722/g722_decode.c",
    "codecs/g722/g722_enc_dec.h",
    "codecs/g722/g722_encode.c",
    "codecs/g722/g722_interface.c",
    "codecs/g722/g722_interface.h",
  ]

  public_configs = [ ":g722_config" ]

  deps = [
    ":audio_decoder_interface",
    ":audio_encoder_interface",
    ":legacy_encoded_audio_frame",
  ]
}

config("ilbc_config") {
  include_dirs = [
    "../../..",
    "codecs/ilbc/include",
  ]
}

rtc_source_set("ilbc") {
  sources = [
    "codecs/ilbc/abs_quant.c",
    "codecs/ilbc/abs_quant.h",
    "codecs/ilbc/abs_quant_loop.c",
    "codecs/ilbc/abs_quant_loop.h",
    "codecs/ilbc/audio_decoder_ilbc.cc",
    "codecs/ilbc/audio_decoder_ilbc.h",
    "codecs/ilbc/audio_encoder_ilbc.cc",
    "codecs/ilbc/audio_encoder_ilbc.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",
  ]

  public_configs = [ ":ilbc_config" ]

  deps = [
    ":audio_decoder_interface",
    ":audio_encoder_interface",
    "../../base:rtc_base_approved",
    "../../common_audio",
  ]
}

rtc_source_set("isac_common") {
  sources = [
    "codecs/isac/audio_encoder_isac_t.h",
    "codecs/isac/audio_encoder_isac_t_impl.h",
    "codecs/isac/locked_bandwidth_info.cc",
    "codecs/isac/locked_bandwidth_info.h",
  ]
}

config("isac_config") {
  include_dirs = [
    "../../..",
    "codecs/isac/main/include",
  ]
}

rtc_source_set("isac") {
  sources = [
    "codecs/isac/main/include/audio_decoder_isac.h",
    "codecs/isac/main/include/audio_encoder_isac.h",
    "codecs/isac/main/include/isac.h",
    "codecs/isac/main/source/arith_routines.c",
    "codecs/isac/main/source/arith_routines.h",
    "codecs/isac/main/source/arith_routines_hist.c",
    "codecs/isac/main/source/arith_routines_logist.c",
    "codecs/isac/main/source/audio_decoder_isac.cc",
    "codecs/isac/main/source/audio_encoder_isac.cc",
    "codecs/isac/main/source/bandwidth_estimator.c",
    "codecs/isac/main/source/bandwidth_estimator.h",
    "codecs/isac/main/source/codec.h",
    "codecs/isac/main/source/crc.c",
    "codecs/isac/main/source/crc.h",
    "codecs/isac/main/source/decode.c",
    "codecs/isac/main/source/decode_bwe.c",
    "codecs/isac/main/source/encode.c",
    "codecs/isac/main/source/encode_lpc_swb.c",
    "codecs/isac/main/source/encode_lpc_swb.h",
    "codecs/isac/main/source/entropy_coding.c",
    "codecs/isac/main/source/entropy_coding.h",
    "codecs/isac/main/source/fft.c",
    "codecs/isac/main/source/fft.h",
    "codecs/isac/main/source/filter_functions.c",
    "codecs/isac/main/source/filterbank_tables.c",
    "codecs/isac/main/source/filterbank_tables.h",
    "codecs/isac/main/source/filterbanks.c",
    "codecs/isac/main/source/intialize.c",
    "codecs/isac/main/source/isac.c",
    "codecs/isac/main/source/isac_float_type.h",
    "codecs/isac/main/source/lattice.c",
    "codecs/isac/main/source/lpc_analysis.c",
    "codecs/isac/main/source/lpc_analysis.h",
    "codecs/isac/main/source/lpc_gain_swb_tables.c",
    "codecs/isac/main/source/lpc_gain_swb_tables.h",
    "codecs/isac/main/source/lpc_shape_swb12_tables.c",
    "codecs/isac/main/source/lpc_shape_swb12_tables.h",
    "codecs/isac/main/source/lpc_shape_swb16_tables.c",
    "codecs/isac/main/source/lpc_shape_swb16_tables.h",
    "codecs/isac/main/source/lpc_tables.c",
    "codecs/isac/main/source/lpc_tables.h",
    "codecs/isac/main/source/os_specific_inline.h",
    "codecs/isac/main/source/pitch_estimator.c",
    "codecs/isac/main/source/pitch_estimator.h",
    "codecs/isac/main/source/pitch_filter.c",
    "codecs/isac/main/source/pitch_gain_tables.c",
    "codecs/isac/main/source/pitch_gain_tables.h",
    "codecs/isac/main/source/pitch_lag_tables.c",
    "codecs/isac/main/source/pitch_lag_tables.h",
    "codecs/isac/main/source/settings.h",
    "codecs/isac/main/source/spectrum_ar_model_tables.c",
    "codecs/isac/main/source/spectrum_ar_model_tables.h",
    "codecs/isac/main/source/structs.h",
    "codecs/isac/main/source/transform.c",
  ]

  if (is_linux) {
    libs = [ "m" ]
  }

  public_configs = [ ":isac_config" ]

  deps = [
    ":audio_decoder_interface",
    ":audio_encoder_interface",
    ":isac_common",
    "../..:webrtc_common",
    "../../base:rtc_base_approved",
    "../../common_audio",
  ]
}

config("isac_fix_config") {
  include_dirs = [
    "../../..",
    "codecs/isac/fix/include",
  ]
}

rtc_source_set("isac_fix") {
  sources = [
    "codecs/isac/fix/include/audio_decoder_isacfix.h",
    "codecs/isac/fix/include/audio_encoder_isacfix.h",
    "codecs/isac/fix/include/isacfix.h",
    "codecs/isac/fix/source/arith_routines.c",
    "codecs/isac/fix/source/arith_routines_hist.c",
    "codecs/isac/fix/source/arith_routines_logist.c",
    "codecs/isac/fix/source/arith_routins.h",
    "codecs/isac/fix/source/audio_decoder_isacfix.cc",
    "codecs/isac/fix/source/audio_encoder_isacfix.cc",
    "codecs/isac/fix/source/bandwidth_estimator.c",
    "codecs/isac/fix/source/bandwidth_estimator.h",
    "codecs/isac/fix/source/codec.h",
    "codecs/isac/fix/source/decode.c",
    "codecs/isac/fix/source/decode_bwe.c",
    "codecs/isac/fix/source/decode_plc.c",
    "codecs/isac/fix/source/encode.c",
    "codecs/isac/fix/source/entropy_coding.c",
    "codecs/isac/fix/source/entropy_coding.h",
    "codecs/isac/fix/source/fft.c",
    "codecs/isac/fix/source/fft.h",
    "codecs/isac/fix/source/filterbank_tables.c",
    "codecs/isac/fix/source/filterbank_tables.h",
    "codecs/isac/fix/source/filterbanks.c",
    "codecs/isac/fix/source/filters.c",
    "codecs/isac/fix/source/initialize.c",
    "codecs/isac/fix/source/isac_fix_type.h",
    "codecs/isac/fix/source/isacfix.c",
    "codecs/isac/fix/source/lattice.c",
    "codecs/isac/fix/source/lattice_c.c",
    "codecs/isac/fix/source/lpc_masking_model.c",
    "codecs/isac/fix/source/lpc_masking_model.h",
    "codecs/isac/fix/source/lpc_tables.c",
    "codecs/isac/fix/source/lpc_tables.h",
    "codecs/isac/fix/source/pitch_estimator.c",
    "codecs/isac/fix/source/pitch_estimator.h",
    "codecs/isac/fix/source/pitch_estimator_c.c",
    "codecs/isac/fix/source/pitch_filter.c",
    "codecs/isac/fix/source/pitch_filter_c.c",
    "codecs/isac/fix/source/pitch_gain_tables.c",
    "codecs/isac/fix/source/pitch_gain_tables.h",
    "codecs/isac/fix/source/pitch_lag_tables.c",
    "codecs/isac/fix/source/pitch_lag_tables.h",
    "codecs/isac/fix/source/settings.h",
    "codecs/isac/fix/source/spectrum_ar_model_tables.c",
    "codecs/isac/fix/source/spectrum_ar_model_tables.h",
    "codecs/isac/fix/source/structs.h",
    "codecs/isac/fix/source/transform.c",
    "codecs/isac/fix/source/transform_tables.c",
  ]

  public_configs = [ ":isac_fix_config" ]

  deps = [
    ":audio_decoder_interface",
    ":audio_encoder_interface",
    ":isac_common",
    "../../common_audio",
    "../../system_wrappers",
  ]

  if (rtc_build_with_neon) {
    deps += [ ":isac_neon" ]
  }

  if (current_cpu == "arm" && arm_version >= 7) {
    sources += [
      "codecs/isac/fix/source/lattice_armv7.S",
      "codecs/isac/fix/source/pitch_filter_armv6.S",
    ]
    sources -= [
      "codecs/isac/fix/source/lattice_c.c",
      "codecs/isac/fix/source/pitch_filter_c.c",
    ]
  }

  if (current_cpu == "mipsel") {
    sources += [
      "codecs/isac/fix/source/entropy_coding_mips.c",
      "codecs/isac/fix/source/filters_mips.c",
      "codecs/isac/fix/source/lattice_mips.c",
      "codecs/isac/fix/source/pitch_estimator_mips.c",
      "codecs/isac/fix/source/transform_mips.c",
    ]
    sources -= [
      "codecs/isac/fix/source/lattice_c.c",
      "codecs/isac/fix/source/pitch_estimator_c.c",
    ]
    if (mips_dsp_rev > 0) {
      sources += [ "codecs/isac/fix/source/filterbanks_mips.c" ]
    }
    if (mips_dsp_rev > 1) {
      sources += [
        "codecs/isac/fix/source/lpc_masking_model_mips.c",
        "codecs/isac/fix/source/pitch_filter_mips.c",
      ]
      sources -= [ "codecs/isac/fix/source/pitch_filter_c.c" ]
    }
  }
}

if (rtc_build_with_neon) {
  rtc_source_set("isac_neon") {
    sources = [
      "codecs/isac/fix/source/entropy_coding_neon.c",
      "codecs/isac/fix/source/filterbanks_neon.c",
      "codecs/isac/fix/source/filters_neon.c",
      "codecs/isac/fix/source/lattice_neon.c",
      "codecs/isac/fix/source/transform_neon.c",
    ]

    if (current_cpu != "arm64") {
      # Enable compilation for the NEON instruction set. This is needed
      # since //build/config/arm.gni only enables NEON for iOS, not Android.
      # This provides the same functionality as webrtc/build/arm_neon.gypi.
      suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
      cflags = [ "-mfpu=neon" ]
    }

    # Disable LTO on NEON targets due to compiler bug.
    # TODO(fdegans): Enable this. See crbug.com/408997.
    if (rtc_use_lto) {
      cflags -= [
        "-flto",
        "-ffat-lto-objects",
      ]
    }

    deps = [
      "../../common_audio",
    ]
  }
}

config("pcm16b_config") {
  include_dirs = [
    "../../..",
    "codecs/pcm16b/include",
  ]
}

rtc_source_set("pcm16b") {
  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.c",
    "codecs/pcm16b/pcm16b.h",
  ]

  deps = [
    ":audio_decoder_interface",
    ":audio_encoder_interface",
    ":g711",
  ]

  public_configs = [ ":pcm16b_config" ]
}

config("opus_config") {
  include_dirs = [ "../../.." ]
}

rtc_source_set("webrtc_opus") {
  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",
    "codecs/opus/opus_inst.h",
    "codecs/opus/opus_interface.c",
    "codecs/opus/opus_interface.h",
  ]

  deps = [
    ":audio_decoder_interface",
    ":audio_encoder_interface",
    "../../base:rtc_base_approved",
  ]

  if (rtc_build_opus) {
    public_deps = [
      rtc_opus_dir,
    ]
  } else if (build_with_mozilla) {
    include_dirs = [ getenv("DIST") + "/include/opus" ]
  }
}

source_set("audio_network_adaptor") {
  sources = [
    "audio_network_adaptor/audio_network_adaptor.cc",
    "audio_network_adaptor/audio_network_adaptor_impl.cc",
    "audio_network_adaptor/audio_network_adaptor_impl.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/dtx_controller.cc",
    "audio_network_adaptor/dtx_controller.h",
    "audio_network_adaptor/include/audio_network_adaptor.h",
    "audio_network_adaptor/smoothing_filter.cc",
    "audio_network_adaptor/smoothing_filter.h",
  ]
  configs += [ "../..:common_config" ]
  public_configs = [ "../..:common_inherited_config" ]
}

config("neteq_config") {
  include_dirs = [
    # Need Opus header files for the audio classifier.
    "//third_party/opus/src/celt",
    "//third_party/opus/src/src",
  ]
}

rtc_source_set("neteq") {
  sources = [
    "neteq/accelerate.cc",
    "neteq/accelerate.h",
    "neteq/audio_classifier.cc",
    "neteq/audio_classifier.h",
    "neteq/audio_decoder_impl.cc",
    "neteq/audio_decoder_impl.h",
    "neteq/audio_multi_vector.cc",
    "neteq/audio_multi_vector.h",
    "neteq/audio_vector.cc",
    "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/decision_logic_fax.cc",
    "neteq/decision_logic_fax.h",
    "neteq/decision_logic_normal.cc",
    "neteq/decision_logic_normal.h",
    "neteq/decoder_database.cc",
    "neteq/decoder_database.h",
    "neteq/defines.h",
    "neteq/delay_manager.cc",
    "neteq/delay_manager.h",
    "neteq/delay_peak_detector.cc",
    "neteq/delay_peak_detector.h",
    "neteq/dsp_helper.cc",
    "neteq/dsp_helper.h",
    "neteq/dtmf_buffer.cc",
    "neteq/dtmf_buffer.h",
    "neteq/dtmf_tone_generator.cc",
    "neteq/dtmf_tone_generator.h",
    "neteq/expand.cc",
    "neteq/expand.h",
    "neteq/include/neteq.h",
    "neteq/merge.cc",
    "neteq/merge.h",
    "neteq/nack_tracker.cc",
    "neteq/nack_tracker.h",
    "neteq/neteq.cc",
    "neteq/neteq_impl.cc",
    "neteq/neteq_impl.h",
    "neteq/normal.cc",
    "neteq/normal.h",
    "neteq/packet.cc",
    "neteq/packet.h",
    "neteq/packet_buffer.cc",
    "neteq/packet_buffer.h",
    "neteq/payload_splitter.cc",
    "neteq/payload_splitter.h",
    "neteq/post_decode_vad.cc",
    "neteq/post_decode_vad.h",
    "neteq/preemptive_expand.cc",
    "neteq/preemptive_expand.h",
    "neteq/random_vector.cc",
    "neteq/random_vector.h",
    "neteq/rtcp.cc",
    "neteq/rtcp.h",
    "neteq/statistics_calculator.cc",
    "neteq/statistics_calculator.h",
    "neteq/sync_buffer.cc",
    "neteq/sync_buffer.h",
    "neteq/tick_timer.cc",
    "neteq/tick_timer.h",
    "neteq/time_stretch.cc",
    "neteq/time_stretch.h",
    "neteq/timestamp_scaler.cc",
    "neteq/timestamp_scaler.h",
  ]

  public_configs = [ ":neteq_config" ]

  deps = [
    ":audio_decoder_interface",
    ":builtin_audio_decoder_factory",
    ":cng",
    ":g711",
    ":pcm16b",
    ":rent_a_codec",
    "../..:webrtc_common",
    "../../common_audio",
    "../../system_wrappers",
  ]

  defines = []

  if (rtc_include_ilbc) {
    defines += [ "WEBRTC_CODEC_ILBC" ]
    deps += [ ":ilbc" ]
  }
  if (rtc_include_opus) {
    defines += [ "WEBRTC_CODEC_OPUS" ]
    deps += [ ":webrtc_opus" ]
  }
  if (!build_with_mozilla) {
    if (current_cpu == "arm") {
      defines += [ "WEBRTC_CODEC_ISACFX" ]
      deps += [ ":isac_fix" ]
    } else {
      defines += [ "WEBRTC_CODEC_ISAC" ]
      deps += [ ":isac" ]
    }
    defines += [ "WEBRTC_CODEC_G722" ]
    deps += [ ":g722" ]
  }
}

if (rtc_include_tests) {
  rtc_source_set("acm_receive_test") {
    testonly = true
    sources = [
      "acm2/acm_receive_test_oldapi.cc",
      "acm2/acm_receive_test_oldapi.h",
    ]

    defines = audio_coding_defines

    deps = audio_coding_deps + [
             ":audio_coding",
             ":neteq_unittest_tools",
             "//testing/gtest",
           ]
  }

  rtc_source_set("acm_send_test") {
    testonly = true
    sources = [
      "acm2/acm_send_test_oldapi.cc",
      "acm2/acm_send_test_oldapi.h",
    ]

    defines = audio_coding_defines

    deps = audio_coding_deps + [
             ":audio_coding",
             ":neteq_unittest_tools",
             "//testing/gtest",
           ]
  }

  rtc_executable("delay_test") {
    testonly = true
    sources = [
      "test/Channel.cc",
      "test/PCMFile.cc",
      "test/delay_test.cc",
      "test/utility.cc",
    ]

    deps = [
      ":audio_coding",
      "../../:webrtc_common",
      "../../system_wrappers",
      "../../system_wrappers:system_wrappers_default",
      "../../test:test_support",
      "../rtp_rtcp",
      "//testing/gtest",
      "//third_party/gflags:gflags",
    ]
  }  # delay_test

  rtc_executable("insert_packet_with_timing") {
    testonly = true
    sources = [
      "test/Channel.cc",
      "test/PCMFile.cc",
      "test/insert_packet_with_timing.cc",
    ]

    if (is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      ":audio_coding",
      "../../:webrtc_common",
      "../../system_wrappers",
      "../../system_wrappers:system_wrappers_default",
      "../../test:test_support",
      "../rtp_rtcp",
      "//testing/gtest",
      "//third_party/gflags:gflags",
    ]
  }  # insert_packet_with_timing

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

    if (is_clang) {
      # Suppress warnings from the Chromium Clang plugins (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = []

    defines = neteq_defines

    deps += audio_coding_deps
    deps += [
      ":audio_decoder_interface",
      ":isac",
      ":isac_fix",
      ":neteq",
      ":neteq_unittest_tools",
      "../../common_audio/",
      "../../test:test_support_main",
      "//testing/gtest",
    ]

    data = audio_decoder_unittests_resources

    if (is_android) {
      deps += [ "//testing/android/native_test:native_test_native_code" ]
      shard_timeout = 900
    }
    if (is_ios) {
      deps += [ ":audio_decoder_unittests_bundle_data" ]
    }
  }  # audio_decoder_unittests

  if (rtc_enable_protobuf) {
    proto_library("neteq_unittest_proto") {
      sources = [
        "neteq/neteq_unittest.proto",
      ]
      proto_out_dir = "webrtc/audio_coding/neteq"
    }

    rtc_source_set("rtc_event_log_source") {
      testonly = true
      sources = [
        "neteq/tools/rtc_event_log_source.cc",
        "neteq/tools/rtc_event_log_source.h",
      ]

      if (is_clang) {
        # Suppress warnings from the Chromium Clang plugins
        # (bugs.webrtc.org/163).
        suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
      }

      deps = [
        "../../:rtc_event_log_parser",
      ]
      public_deps = [
        "../../:rtc_event_log_proto",
      ]
    }

    rtc_test("neteq_rtpplay") {
      testonly = true
      defines = []
      deps = []
      sources = [
        "neteq/tools/neteq_rtpplay.cc",
      ]

      if (is_clang) {
        # Suppress warnings from the Chromium Clang plugins
        # (bugs.webrtc.org/163).
        suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
      }

      if (is_win) {
        cflags = [
          # TODO(kjellander): bugs.webrtc.org/261: Fix this warning.
          "/wd4373",  # virtual function override.
        ]
      }

      deps += [
        ":neteq",
        ":neteq_unittest_tools",
        "../../system_wrappers:system_wrappers_default",
        "../../test:test_support",
        "//third_party/gflags",
      ]
    }
  }

  rtc_test("audio_codec_speed_tests") {
    testonly = true
    defines = []
    deps = []
    sources = [
      "codecs/isac/fix/test/isac_speed_test.cc",
      "codecs/opus/opus_speed_test.cc",
      "codecs/tools/audio_codec_speed_test.cc",
      "codecs/tools/audio_codec_speed_test.h",
    ]

    if (is_clang) {
      # Suppress warnings from the Chromium Clang plugins
      # (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    if (is_android) {
      deps += [ "//testing/android/native_test:native_test_native_code" ]
      shard_timeout = 900
    }

    deps += [
      ":isac_fix",
      ":webrtc_opus",
      "../../system_wrappers:system_wrappers_default",
      "../../test:test_support_main",
      "../audio_processing/",
      "//testing/gtest",
    ]
  }

  rtc_source_set("neteq_test_support") {
    testonly = true
    sources = [
      "neteq/tools/neteq_external_decoder_test.cc",
      "neteq/tools/neteq_external_decoder_test.h",
      "neteq/tools/neteq_performance_test.cc",
      "neteq/tools/neteq_performance_test.h",
    ]

    if (is_clang) {
      # Suppress warnings from the Chromium Clang plugins (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      ":neteq",
      ":neteq_unittest_tools",
      ":pcm16b",
      "//testing/gtest",
    ]
  }

  rtc_source_set("neteq_quality_test_support") {
    testonly = true
    sources = [
      "neteq/tools/neteq_quality_test.cc",
      "neteq/tools/neteq_quality_test.h",
    ]

    if (is_clang) {
      # Suppress warnings from the Chromium Clang plugins (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      ":neteq",
      ":neteq_unittest_tools",
      "//testing/gtest",
      "//third_party/gflags",
    ]
  }

  config("neteq_unittest_tools_config") {
    include_dirs = [ "tools" ]
  }

  rtc_source_set("neteq_unittest_tools") {
    testonly = true
    sources = [
      "neteq/tools/audio_checksum.h",
      "neteq/tools/audio_loop.cc",
      "neteq/tools/audio_loop.h",
      "neteq/tools/audio_sink.cc",
      "neteq/tools/audio_sink.h",
      "neteq/tools/constant_pcm_packet_source.cc",
      "neteq/tools/constant_pcm_packet_source.h",
      "neteq/tools/fake_decode_from_file.cc",
      "neteq/tools/fake_decode_from_file.h",
      "neteq/tools/input_audio_file.cc",
      "neteq/tools/input_audio_file.h",
      "neteq/tools/neteq_input.h",
      "neteq/tools/neteq_packet_source_input.cc",
      "neteq/tools/neteq_packet_source_input.h",
      "neteq/tools/neteq_replacement_input.cc",
      "neteq/tools/neteq_replacement_input.h",
      "neteq/tools/neteq_test.cc",
      "neteq/tools/neteq_test.h",
      "neteq/tools/output_audio_file.h",
      "neteq/tools/output_wav_file.h",
      "neteq/tools/packet.cc",
      "neteq/tools/packet.h",
      "neteq/tools/packet_source.cc",
      "neteq/tools/packet_source.h",
      "neteq/tools/resample_input_audio_file.cc",
      "neteq/tools/resample_input_audio_file.h",
      "neteq/tools/rtp_file_source.cc",
      "neteq/tools/rtp_file_source.h",
      "neteq/tools/rtp_generator.cc",
      "neteq/tools/rtp_generator.h",
    ]

    public_configs = [ ":neteq_unittest_tools_config" ]

    if (is_clang) {
      # Suppress warnings from the Chromium Clang plugins (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      "../../common_audio",
      "../../test:rtp_test_utils",
      "../rtp_rtcp",
    ]

    if (rtc_enable_protobuf) {
      deps += [ ":rtc_event_log_source" ]
    }
  }

  rtc_source_set("neteq_test_tools") {
    testonly = true
    sources = [
      "neteq/test/NETEQTEST_DummyRTPpacket.cc",
      "neteq/test/NETEQTEST_DummyRTPpacket.h",
      "neteq/test/NETEQTEST_RTPpacket.cc",
      "neteq/test/NETEQTEST_RTPpacket.h",
    ]

    deps = [
      ":cng",
      ":g711",
      ":g722",
      ":ilbc",
      ":isac",
      ":pcm16b",
      "../..:webrtc_common",
      "//testing/gtest",
    ]

    include_dirs = [
      "neteq/include",
      "neteq/test",
      "../../",
    ]

    if (is_win) {
      cflags = [
        # Disable warnings to enable Win64 build, issue 1323.
        "/wd4267",  # size_t to int truncation
      ]
    }
  }

  config("RTPencode_config") {
    defines = [
      "CODEC_ILBC",
      "CODEC_PCM16B",
      "CODEC_G711",
      "CODEC_G722",
      "CODEC_ISAC",
      "CODEC_PCM16B_WB",
      "CODEC_ISAC_SWB",
      "CODEC_PCM16B_32KHZ",
      "CODEC_PCM16B_48KHZ",
      "CODEC_CNGCODEC8",
      "CODEC_CNGCODEC16",
      "CODEC_CNGCODEC32",
      "CODEC_ATEVENT_DECODE",
      "CODEC_RED",
      "CODEC_OPUS",
    ]
  }

  rtc_executable("RTPencode") {
    testonly = true

    deps = [
      # TODO(hlundin): Make RTPencode use ACM to encode files.
      ":cng",
      ":g711",
      ":g722",
      ":ilbc",
      ":isac",
      ":neteq_test_tools",
      ":pcm16b",
      ":webrtc_opus",
      "../../common_audio",
    ]

    configs += [ ":RTPencode_config" ]

    sources = [
      "neteq/test/RTPencode.cc",
    ]

    include_dirs = [
      "neteq/include",
      "neteq/test",
    ]

    if (is_win) {
      cflags = [
        # Disable warnings to enable Win64 build, issue 1323.
        "/wd4267",  # size_t to int truncation
      ]
    }
  }

  rtc_executable("RTPchange") {
    testonly = true

    sources = [
      "neteq/test/RTPchange.cc",
    ]

    deps = [
      ":neteq_test_tools",
    ]
  }

  rtc_executable("rtpcat") {
    testonly = true

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

    deps = [
      "../../system_wrappers:system_wrappers_default",
      "../../test:rtp_test_utils",
      "//testing/gtest",
    ]
  }

  rtc_executable("RTPtimeshift") {
    testonly = true

    sources = [
      "neteq/test/RTPtimeshift.cc",
    ]

    deps = [
      ":neteq_test_tools",
      "//testing/gtest",
    ]
  }

  rtc_executable("RTPjitter") {
    testonly = true
    deps = [
      "../..:webrtc_common",
      "//testing/gtest",
    ]
    sources = [
      "neteq/test/RTPjitter.cc",
    ]
  }

  rtc_executable("rtp_analyze") {
    testonly = true

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

    deps = [
      ":neteq",
      ":neteq_unittest_tools",
      ":pcm16b",
      "../../system_wrappers:system_wrappers_default",
      "//testing/gtest",
      "//third_party/gflags:gflags",
    ]

    if (is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }
  }

  rtc_executable("neteq_opus_quality_test") {
    testonly = true

    sources = [
      "neteq/test/neteq_opus_quality_test.cc",
    ]

    deps = [
      ":neteq",
      ":neteq_quality_test_support",
      ":neteq_unittest_tools",
      ":webrtc_opus",
      "../../test:test_support_main",
      "//testing/gtest",
      "//third_party/gflags",
    ]
  }

  rtc_executable("neteq_speed_test") {
    testonly = true

    sources = [
      "neteq/test/neteq_speed_test.cc",
    ]

    deps = [
      ":neteq",
      ":neteq_test_support",
      "../../system_wrappers:system_wrappers_default",
      "../../test:test_support",
      "//third_party/gflags",
    ]
  }

  rtc_executable("audio_classifier_test") {
    testonly = true
    sources = [
      "neteq/test/audio_classifier_test.cc",
    ]
    deps = [
      ":neteq",
      ":webrtc_opus",
      "../../system_wrappers:system_wrappers_default",
    ]
  }

  rtc_executable("neteq_ilbc_quality_test") {
    testonly = true

    sources = [
      "neteq/test/neteq_ilbc_quality_test.cc",
    ]

    deps = [
      ":ilbc",
      ":neteq",
      ":neteq_quality_test_support",
      ":neteq_unittest_tools",
      "../../system_wrappers:system_wrappers_default",
      "../../test:test_support_main",
      "//testing/gtest",
      "//third_party/gflags",
    ]
  }

  rtc_executable("neteq_isac_quality_test") {
    testonly = true

    sources = [
      "neteq/test/neteq_isac_quality_test.cc",
    ]

    deps = [
      ":isac_fix",
      ":neteq",
      ":neteq_quality_test_support",
      "../../test:test_support_main",
      "//testing/gtest",
      "//third_party/gflags",
    ]
  }

  rtc_executable("neteq_pcmu_quality_test") {
    testonly = true

    sources = [
      "neteq/test/neteq_pcmu_quality_test.cc",
    ]

    deps = [
      ":g711",
      ":neteq",
      ":neteq_quality_test_support",
      "../../test:test_support_main",
      "//testing/gtest",
      "//third_party/gflags",
    ]
  }

  rtc_executable("isac_fix_test") {
    testonly = true

    sources = [
      "codecs/isac/fix/test/kenny.cc",
    ]

    deps = [
      ":isac_fix",
      "../../test:test_support",
    ]

    if (is_win) {
      cflags = [
        # Disable warnings to enable Win64 build, issue 1323.
        "/wd4267",  # size_t to int truncation
      ]
    }
  }

  config("isac_test_warnings_config") {
    if (is_win && is_clang) {
      cflags = [
        # Disable warnings failing when compiling with Clang on Windows.
        # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
        "-Wno-format",
      ]
    }
  }

  rtc_executable("isac_test") {
    testonly = true

    sources = [
      "codecs/isac/main/test/simpleKenny.c",
      "codecs/isac/main/util/utility.c",
    ]

    include_dirs = [
      "codecs/isac/main/include",
      "codecs/isac/main/test",
      "codecs/isac/main/util",
    ]

    deps = [
      ":isac",
      "../../base:rtc_base_approved",
    ]

    configs += [ ":isac_test_warnings_config" ]
  }

  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",
      "../..:webrtc_common",
    ]
  }

  rtc_executable("isac_api_test") {
    testonly = true

    sources = [
      "codecs/isac/main/test/ReleaseTest-API/ReleaseTest-API.cc",
      "codecs/isac/main/util/utility.c",
    ]

    deps = [
      ":isac",
      "../../base:rtc_base_approved",
    ]

    include_dirs = [
      "codecs/isac/main/include",
      "codecs/isac/main/test",
      "codecs/isac/main/util",
    ]
  }

  rtc_executable("isac_switch_samprate_test") {
    testonly = true

    sources = [
      "codecs/isac/main/test/SwitchingSampRate/SwitchingSampRate.cc",
      "codecs/isac/main/util/utility.c",
    ]

    deps = [
      ":isac",
    ]

    include_dirs = [
      "codecs/isac/main/include",
      "codecs/isac/main/test",
      "codecs/isac/main/util",
      "../../common_audio/signal_processing/include",
    ]
  }

  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",
      "../../base:rtc_base_approved",
      "../../common_audio",
      "../../test:test_support",
      "../../test:test_support_main",
      "//testing/gtest",
    ]

    if (is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }
  }
}
