# 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_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",
    "..:module_api_public",
    "../../api:function_view",
    "../../api/audio:audio_frame_api",
    "../../api/audio_codecs:audio_codecs_api",
    "../../audio/utility:audio_frame_operations",
    "../../common_audio",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:safe_conversions",
    "../../rtc_base/synchronization:mutex",
    "../../system_wrappers:metrics",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("legacy_encoded_audio_frame") {
  sources = [
    "codecs/legacy_encoded_audio_frame.cc",
    "codecs/legacy_encoded_audio_frame.h",
  ]
  deps = [
    "../../api/audio_codecs:audio_codecs_api",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
}

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

  deps = [
    "../../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:bitrate_allocation",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/units:time_delta",
    "../../common_audio",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
}

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

  deps = [
    "../../api:bitrate_allocation",
    "../../api:field_trials_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/units:time_delta",
    "../../rtc_base:buffer",
    "../../rtc_base:byte_order",
    "../../rtc_base:checks",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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/audio_codecs:audio_codecs_api",
    "../../api/units:time_delta",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
  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/audio_codecs:audio_codecs_api",
    "../../api/audio_codecs/g722:audio_encoder_g722_config",
    "../../api/units:time_delta",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
  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("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: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/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/audio_codecs:audio_codecs_api",
    "../../rtc_base:buffer",
    "../../rtc_base:stringutils",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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:bitrate_allocation",
    "../../api:field_trials_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/audio_codecs/opus:audio_encoder_opus_config",
    "../../api/environment",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../common_audio",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:protobuf_utils",
    "../../rtc_base:rtc_numerics",
    "../../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/strings:string_view",
    "//third_party/opus",
  ]
  public_deps +=  # no-presubmit-check TODO(webrtc:8603)
      [ ":webrtc_opus_wrapper" ]

  defines = audio_codec_defines
}

rtc_library("webrtc_multiopus") {
  visibility += webrtc_default_visibility
  poisonous = [ "audio_codecs" ]
  sources = [
    "codecs/opus/audio_decoder_multi_channel_opus_impl.cc",
    "codecs/opus/audio_decoder_multi_channel_opus_impl.h",
    "codecs/opus/audio_encoder_multi_channel_opus_impl.cc",
    "codecs/opus/audio_encoder_multi_channel_opus_impl.h",
  ]

  deps = [
    ":audio_coding_opus_common",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/audio_codecs/opus:audio_decoder_opus_config",
    "../../api/audio_codecs/opus:audio_encoder_opus_config",
    "../../api/units:time_delta",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
  ]
  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 = [
    "../../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" ]
    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",
  ]
}

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/environment",
    "../../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/system:file_wrapper",
    "../../system_wrappers",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]

  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_constraints.cc",
    "neteq/delay_constraints.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/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 = [
    ":webrtc_cng",
    "..:module_api_public",
    "../../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:delay_manager_api",
    "../../api/neteq:neteq_api",
    "../../api/neteq:neteq_controller_api",
    "../../api/neteq:tick_timer",
    "../../api/units:time_delta",
    "../../api/units:timestamp",

    # TODO: bugs.webrtc.org/496700738 - fix dependency.
    "../../common_audio",  # keep
    "../../common_audio:common_audio_c",
    "../../common_audio:common_audio_cc",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:event_tracer",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:safe_minmax",
    "../../rtc_base:sanitizer",
    "../../rtc_base/experiments:field_trial_parser",
    "../../system_wrappers",
    "../../system_wrappers:metrics",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

# 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_source.cc",
    "neteq/tools/packet_source.h",
  ]

  deps = [
    "../../api:field_trials_view",
    "../../api:neteq_simulator_api",
    "../../api:rtp_headers",
    "../../api:scoped_refptr",
    "../../api/audio:audio_frame_api",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/environment",
    "../../api/environment:environment_factory",
    "../../api/neteq:default_neteq_factory",
    "../../api/neteq:neteq_api",
    "../../api/units:timestamp",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../system_wrappers",
    "../rtp_rtcp:rtp_rtcp_format",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
  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:rtp_header_extension_id",
    "../../api:rtp_headers",
    "../../api/units:timestamp",
    "../../common_audio",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:copy_on_write_buffer",
    "../../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",
  ]
}

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",
    "../../api:rtp_headers",
    "../../api:rtp_packet_info",
    "../../api/audio:audio_frame_api",
    "../../api/audio_codecs:audio_codecs_api",
    "../../api/neteq:neteq_api",
    "../../logging:rtc_event_audio",
    "../../logging:rtc_event_rtp_rtcp",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../rtc_base:timeutils",
    "../rtp_rtcp:rtp_rtcp_format",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]

  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",
    ":neteq_test_tools",
    ":neteq_tools_minimal",
    ":webrtc_opus_wrapper",
    "..:module_api",
    "../../api:rtp_headers",
    "../../api:rtp_parameters",
    "../../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",
    "../../api/neteq:default_neteq_factory",
    "../../api/neteq:neteq_api",
    "../../api/units:timestamp",
    "../../common_audio",
    "../../rtc_base:checks",
    "../../rtc_base:digest",
    "../../rtc_base:stringutils",
    "../../system_wrappers",
    "../../test:create_test_environment",
    "../../test:fileutils",
    "../../test:test_support",
    "../rtp_rtcp:rtp_rtcp_format",
    "//testing/gtest",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
  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_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",
      "../../api/audio_codecs:audio_codecs_api",
      "../../test:test_support",
    ]
  }

  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",
      ":g711_test",
      ":g722_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_cc_test("audio_coding_modules_tests") {
    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",
      "../../api:rtp_headers",
      "../../api:scoped_refptr",
      "../../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/opus:audio_decoder_opus",
      "../../api/audio_codecs/opus:audio_encoder_opus",
      "../../api/environment",
      "../../api/neteq:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../api/units:timestamp",
      "../../common_audio",
      "../../rtc_base:checks",
      "../../rtc_base:ip_address",
      "../../rtc_base:macromagic",
      "../../rtc_base:stringutils",
      "../../rtc_base/synchronization:mutex",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:fileutils",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
    defines = audio_coding_defines
  }

  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_minimal",
      "../../api:scoped_refptr",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/environment",
      "../../api/neteq:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../test:create_test_environment",
      "../../test:test_support",
      "../rtp_rtcp:rtp_rtcp_format",
      "//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",
      ":audio_coding_module_typedefs",
      ":neteq_input_audio_tools",
      ":neteq_tools_minimal",
      "../../api/audio:audio_frame_api",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_encoder_factory",
      "../../api/environment",
      "../../rtc_base:checks",
      "../../test:create_test_environment",
      "../rtp_rtcp:rtp_rtcp_format",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    deps += audio_coding_deps
  }

  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 = [
             ":neteq_input_audio_tools",
             "../../api:bitrate_allocation",
             "../../api/audio_codecs:audio_codecs_api",
             "../../api/audio_codecs/g722:audio_encoder_g722_config",
             "../../api/audio_codecs/opus:audio_encoder_opus",
             "../../api/audio_codecs/opus:audio_encoder_opus_config",
             "../../api/units:data_rate",
             "../../rtc_base:buffer",
             "../../rtc_base:checks",
             "../../test:create_test_environment",
             "../../test:create_test_field_trials",
             "../../test:fileutils",
             "../../test:test_support",
           ] + audio_coding_deps

    data = audio_decoder_unittests_resources

    if (is_android) {
      deps += [ "//build/android/gtest_apk:native_test_instrumentation_test_runner_java" ]
    }
    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_test_tools",
        ":neteq_tools",
        ":neteq_tools_minimal",
        "../../api:field_trials",
        "../../api:make_ref_counted",
        "../../api:scoped_refptr",
        "../../api/audio_codecs:audio_codecs_api",
        "../../api/audio_codecs:builtin_audio_decoder_factory",
        "../../api/environment",
        "../../api/neteq:neteq_api",
        "../../logging:rtc_event_log_parser",
        "../../rtc_base:checks",
        "../../test:audio_test_common",
        "../rtp_rtcp:rtp_rtcp_format",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
      sources = [
        "neteq/tools/neteq_test_factory.cc",
        "neteq/tools/neteq_test_factory.h",
      ]
    }
  }

  if (rtc_enable_protobuf) {
    rtc_executable("neteq_rtpplay") {
      testonly = true
      visibility += [ "*" ]
      defines = []
      deps = [
        ":neteq_test_factory",
        ":neteq_tools_minimal",
        "../../rtc_base:checks",
        "../../rtc_base:stringutils",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
      sources = [ "neteq/tools/neteq_rtpplay.cc" ]
    }
  }

  audio_codec_speed_tests_resources = [
    "//resources/audio_coding/music_stereo_48kHz.pcm",
    "//resources/audio_coding/speech_mono_16kHz.pcm",
    "//resources/audio_coding/speech_mono_32_48kHz.pcm",
  ]

  if (is_ios) {
    bundle_data("audio_codec_speed_tests_data") {
      testonly = true
      sources = audio_codec_speed_tests_resources
      outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
    }
  }

  rtc_test("audio_codec_speed_tests") {
    testonly = true
    defines = []
    deps = [
      "../../test:fileutils",
      "//third_party/opus",
    ]
    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) {
      deps += [ "//build/android/gtest_apk:native_test_instrumentation_test_runner_java" ]
    }

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

    deps += [
      ":webrtc_opus",
      "../../rtc_base:checks",
      "../../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 = [
      ":neteq",
      ":neteq_test_tools",
      ":pcm16b",
      "../../api:rtp_headers",
      "../../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:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../api/units:timestamp",
      "../../rtc_base:checks",
      "../../system_wrappers",
      "../../test:create_test_environment",
      "../../test:fileutils",
      "//testing/gtest",
    ]
  }

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

    deps = [
      ":neteq_input_audio_tools",
      ":neteq_test_tools",
      ":neteq_tools_minimal",
      "../../api:rtp_headers",
      "../../api:scoped_refptr",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/neteq:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../api/units:timestamp",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../rtc_base:stringutils",
      "../../test:create_test_environment",
      "../../test:fileutils",
      "../../test:test_support",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_executable("rtp_encode") {
    testonly = true

    deps = [
      ":audio_coding",
      ":audio_coding_module_typedefs",
      ":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/opus:audio_encoder_opus",
      "../../api/environment:environment_factory",
      "../../rtc_base:checks",
      "../../rtc_base:ip_address",
      "../../rtc_base:safe_conversions",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/flags:parse",
    ]

    deps += audio_coding_deps

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

    defines = audio_coding_defines
  }

  rtc_executable("rtp_jitter") {
    testonly = true

    deps = [
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../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_test_tools",
      "../../api:rtp_header_extension_id",
      "../../api:rtp_headers",
      "../../rtc_base:checks",
      "../rtp_rtcp:rtp_rtcp_format",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/flags:parse",
    ]
  }

  rtc_test("neteq_opus_quality_test") {
    testonly = true

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

    deps = [
      ":neteq",
      ":neteq_quality_test_support",
      ":neteq_tools",
      ":webrtc_opus",
      "../../api:rtp_parameters",
      "../../api/audio_codecs:audio_codecs_api",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../test:test_support",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/opus",
    ]
  }

  rtc_executable("neteq_speed_test") {
    testonly = true

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

    deps = [
      ":neteq_test_support",
      "../../rtc_base:checks",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/flags:parse",
    ]
  }

  rtc_test("neteq_pcmu_quality_test") {
    testonly = true

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

    deps = [
      ":g711",
      ":neteq_quality_test_support",
      "../../api/audio_codecs:audio_codecs_api",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/flags:flag",
    ]
  }

  rtc_test("neteq_pcm16b_quality_test") {
    testonly = true

    sources = [ "neteq/test/neteq_pcm16b_quality_test.cc" ]

    deps = [
      ":neteq_quality_test_support",
      ":pcm16b",
      "../../api/audio_codecs:audio_codecs_api",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
      "//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" ]
  }

  rtc_test("webrtc_opus_fec_test") {
    testonly = true

    sources = [ "codecs/opus/opus_fec_test.cc" ]

    deps = [
      ":webrtc_opus",
      "../../common_audio",
      "../../test:fileutils",
      "../../test:test_support",
      "//testing/gtest",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_library("audio_coding_unittests_helper") {
    testonly = true
    sources = [
      "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",
    ]
    deps = [
      ":neteq",
      ":webrtc_cng",
      "../../api:field_trials_view",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/neteq:neteq_api",
      "../../api/neteq:neteq_controller_api",
      "../../api/neteq:tick_timer",
      "../../test:create_test_environment",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_test_suite("audio_coding_unittests") {
    tests = [
      ":acm_remixing_unittest",
      ":acm_resampler_unittest",
      ":audio_coding_module_unittest",
      ":audio_coding_modules_tests",
      ":audio_decoder_multi_channel_opus_unittest",
      ":audio_decoder_opus_unittest",
      ":audio_encoder_cng_unittest",
      ":audio_encoder_copy_red_unittest",
      ":audio_encoder_multi_channel_opus_unittest",
      ":audio_encoder_opus_unittest",
      ":audio_multi_vector_unittest",
      ":audio_network_adaptor_impl_unittest",
      ":audio_vector_unittest",
      ":background_noise_unittest",
      ":bitrate_controller_unittest",
      ":buffer_level_filter_unittest",
      ":builtin_audio_decoder_factory_unittest",
      ":builtin_audio_encoder_factory_unittest",
      ":call_statistics_unittest",
      ":channel_controller_unittest",
      ":cng_unittest",
      ":comfort_noise_unittest",
      ":controller_manager_unittest",
      ":decision_logic_unittest",
      ":decoder_database_unittest",
      ":delay_constraints_unittest",
      ":delay_manager_unittest",
      ":dsp_helper_unittest",
      ":dtmf_buffer_unittest",
      ":dtmf_tone_generator_unittest",
      ":dtx_controller_unittest",
      ":event_log_writer_unittest",
      ":expand_unittest",
      ":fec_controller_plr_based_unittest",
      ":frame_length_controller_unittest",
      ":frame_length_controller_v2_unittest",
      ":histogram_unittest",
      ":input_audio_file_unittest",
      ":legacy_encoded_audio_frame_unittest",
      ":merge_unittest",
      ":neteq_decoder_plc_unittest",
      ":neteq_impl_unittest",
      ":neteq_network_stats_unittest",
      ":neteq_stereo_unittest",
      ":neteq_unittest",
      ":normal_unittest",
      ":opus_bandwidth_unittest",
      ":opus_unittest",
      ":packet_arrival_history_unittest",
      ":packet_buffer_unittest",
      ":random_vector_unittest",
      ":red_payload_splitter_unittest",
      ":reorder_optimizer_unittest",
      ":statistics_calculator_unittest",
      ":sync_buffer_unittest",
      ":threshold_curve_unittest",
      ":time_stretch_unittest",
      ":timestamp_scaler_unittest",
      ":underrun_optimizer_unittest",
      "codecs/opus/test:audio_ring_buffer_unittest",
      "codecs/opus/test:blocker_unittest",
      "codecs/opus/test:lapped_transform_unittest",
    ]
  }
}

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

if (rtc_include_tests) {
  rtc_cc_test("acm_remixing_unittest") {
    defines = audio_coding_defines
    sources = [ "acm2/acm_remixing_unittest.cc" ]
    deps = [
      ":audio_coding",
      "../../api/audio:audio_frame_api",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("acm_resampler_unittest") {
    defines = audio_coding_defines
    sources = [ "acm2/acm_resampler_unittest.cc" ]
    deps = [
      ":audio_coding",
      "../../api/audio:audio_frame_api",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("audio_coding_module_unittest") {
    defines = audio_coding_defines
    sources = [ "acm2/audio_coding_module_unittest.cc" ]
    deps = [
      ":acm_receive_test",
      ":acm_send_test",
      ":audio_coding",
      ":audio_coding_module_typedefs",
      ":audio_encoder_cng",
      ":g711",
      ":neteq_input_audio_tools",
      ":neteq_test_tools",
      ":neteq_tools_minimal",
      "../../api:make_ref_counted",
      "../../api:scoped_refptr",
      "../../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_encoder_multiopus",
      "../../api/audio_codecs/opus:audio_encoder_opus",
      "../../api/audio_codecs/opus:audio_encoder_opus_config",
      "../../api/environment",
      "../../api/neteq:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../api/units:timestamp",
      "../../common_audio",
      "../../rtc_base:buffer",
      "../../rtc_base:digest",
      "../../rtc_base:safe_conversions",
      "../../rtc_base:stringutils",
      "../../rtc_base/system:arch",
      "../../test:audio_codec_mocks",
      "../../test:audio_test_common",
      "../../test:create_test_environment",
      "../../test:fileutils",
      "../../test:test_support",
      "../rtp_rtcp:rtp_rtcp_format",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("call_statistics_unittest") {
    defines = audio_coding_defines
    sources = [ "acm2/call_statistics_unittest.cc" ]
    deps = [
      ":audio_coding",
      ":audio_coding_module_typedefs",
      "../../api/audio:audio_frame_api",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("audio_network_adaptor_impl_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/audio_network_adaptor_impl_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":mocks",
      "../../api:time_controller",
      "../../api/rtc_event_log",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../logging:mocks",
      "../../logging:rtc_event_audio",
      "../../test:create_test_environment",
      "../../test:test_support",
      "../../test/time_controller",
    ]
    if (rtc_enable_protobuf) {
      deps += [
        ":ana_config_proto",
        ":ana_debug_dump_proto",
      ]
    }
  }

  rtc_cc_test("bitrate_controller_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/bitrate_controller_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":audio_network_adaptor_config",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("channel_controller_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/channel_controller_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":audio_network_adaptor_config",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("controller_manager_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/controller_manager_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":audio_network_adaptor_config",
      ":mocks",
      "../../api/environment",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../rtc_base:checks",
      "../../system_wrappers",
      "../../test:create_test_environment",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    if (rtc_enable_protobuf) {
      deps += [ ":ana_config_proto" ]
    }
  }

  rtc_cc_test("dtx_controller_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/dtx_controller_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":audio_network_adaptor_config",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("event_log_writer_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/event_log_writer_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      "../../api/rtc_event_log",
      "../../logging:mocks",
      "../../logging:rtc_event_audio",
      "../../rtc_base:checks",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("fec_controller_plr_based_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/fec_controller_plr_based_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":audio_network_adaptor_config",
      "../../common_audio:mock_common_audio",
      "../../rtc_base:checks",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("frame_length_controller_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/frame_length_controller_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":audio_network_adaptor_config",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("frame_length_controller_v2_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/frame_length_controller_v2_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      ":audio_network_adaptor_config",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("threshold_curve_unittest") {
    defines = audio_coding_defines
    sources = [ "audio_network_adaptor/util/threshold_curve_unittest.cc" ]
    deps = [
      ":audio_network_adaptor",
      "../../rtc_base:checks",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("builtin_audio_decoder_factory_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/builtin_audio_decoder_factory_unittest.cc" ]
    deps = [
      "../../api:rtp_parameters",
      "../../api:scoped_refptr",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/environment",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("builtin_audio_encoder_factory_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/builtin_audio_encoder_factory_unittest.cc" ]
    deps = [
      "../../api:scoped_refptr",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_encoder_factory",
      "../../api/environment",
      "../../rtc_base:buffer",
      "../../rtc_base:safe_conversions",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("audio_encoder_cng_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/cng/audio_encoder_cng_unittest.cc" ]
    deps = [
      ":audio_encoder_cng",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/units:time_delta",
      "../../common_audio",
      "../../common_audio:mock_common_audio",
      "../../rtc_base:buffer",
      "../../rtc_base:safe_conversions",
      "../../test:audio_codec_mocks",
      "../../test:rtc_expect_death",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("cng_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/cng/cng_unittest.cc" ]
    deps = [
      ":webrtc_cng",
      "../../common_audio",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("legacy_encoded_audio_frame_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/legacy_encoded_audio_frame_unittest.cc" ]
    deps = [
      ":legacy_encoded_audio_frame",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("audio_decoder_multi_channel_opus_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/opus/audio_decoder_multi_channel_opus_unittest.cc" ]
    deps = [
      ":audio_coding_opus_common",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs/opus:audio_decoder_multiopus",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("audio_decoder_opus_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/opus/audio_decoder_opus_unittest.cc" ]
    deps = [
      ":audio_coding_modules_tests_shared",
      ":webrtc_opus",
      "../../api/audio:audio_frame_api",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs/opus:audio_encoder_opus_config",
      "../../api/environment",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../rtc_base:random",
      "../../rtc_base:safe_conversions",
      "../../test:create_test_environment",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("audio_encoder_multi_channel_opus_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/opus/audio_encoder_multi_channel_opus_unittest.cc" ]
    deps = [
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs/opus:audio_encoder_multiopus",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("audio_encoder_opus_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/opus/audio_encoder_opus_unittest.cc" ]
    deps = [
      ":audio_network_adaptor_config",
      ":mocks",
      ":neteq_test_tools",
      ":webrtc_opus",
      ":webrtc_opus_wrapper",
      "../../api:bitrate_allocation",
      "../../api:field_trials",
      "../../api:field_trials_view",
      "../../api:rtp_parameters",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs/opus:audio_encoder_opus",
      "../../api/audio_codecs/opus:audio_encoder_opus_config",
      "../../api/units:data_rate",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../common_audio:mock_common_audio",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../test:create_test_environment",
      "../../test:create_test_field_trials",
      "../../test:fileutils",
      "../../test:test_support",
      "../../test/time_controller",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("opus_bandwidth_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/opus/opus_bandwidth_unittest.cc" ]
    deps = [
      ":neteq_test_tools",
      "../../api:field_trials",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs/opus:audio_decoder_opus",
      "../../api/audio_codecs/opus:audio_encoder_opus",
      "../../api/audio_codecs/opus:audio_encoder_opus_config",
      "../../api/environment",
      "../../api/environment:environment_factory",
      "../../common_audio",
      "../../rtc_base:buffer",
      "../../test:create_test_field_trials",
      "../../test:fileutils",
      "../../test:test_support",
      "codecs/opus/test",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("opus_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/opus/opus_unittest.cc" ]
    deps = [
      ":neteq_test_tools",
      ":webrtc_opus_wrapper",
      "../../rtc_base:checks",
      "../../rtc_base:safe_conversions",
      "../../test:fileutils",
      "../../test:test_support",
      "//third_party/opus",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("audio_encoder_copy_red_unittest") {
    defines = audio_coding_defines
    sources = [ "codecs/red/audio_encoder_copy_red_unittest.cc" ]
    deps = [
      ":red",
      "../../api:field_trials",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/units:time_delta",
      "../../rtc_base:buffer",
      "../../rtc_base:safe_conversions",
      "../../test:audio_codec_mocks",
      "../../test:create_test_field_trials",
      "../../test:rtc_expect_death",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("audio_multi_vector_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/audio_multi_vector_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api/audio:audio_frame_api",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("audio_vector_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/audio_vector_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api/audio:audio_frame_api",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("background_noise_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/background_noise_unittest.cc" ]
    deps = [
      ":neteq",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("buffer_level_filter_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/buffer_level_filter_unittest.cc" ]
    deps = [
      ":neteq",
      "../../rtc_base:stringutils",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("comfort_noise_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/comfort_noise_unittest.cc" ]
    deps = [
      ":audio_coding_unittests_helper",
      ":neteq",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("decision_logic_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/decision_logic_unittest.cc" ]
    deps = [
      ":audio_coding_unittests_helper",
      ":neteq",
      "../../api/neteq:neteq_api",
      "../../api/neteq:neteq_controller_api",
      "../../api/neteq:tick_timer",
      "../../test:create_test_field_trials",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("decoder_database_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/decoder_database_unittest.cc" ]
    deps = [
      ":neteq",
      ":webrtc_cng",
      "../../api:make_ref_counted",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../test:audio_codec_mocks",
      "../../test:create_test_environment",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_cc_test("delay_constraints_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/delay_constraints_unittest.cc" ]
    deps = [
      ":neteq",
      "../../rtc_base:checks",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("delay_manager_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/delay_manager_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api/neteq:neteq_controller_api",
      "../../api/neteq:tick_timer",
      "../../test:create_test_field_trials",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("dsp_helper_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/dsp_helper_unittest.cc" ]
    deps = [
      ":neteq",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("dtmf_buffer_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/dtmf_buffer_unittest.cc" ]
    deps = [
      ":neteq",
      "../../rtc_base:ip_address",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("dtmf_tone_generator_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/dtmf_tone_generator_unittest.cc" ]
    deps = [
      ":neteq",
      "../../common_audio",
      "../../rtc_base:stringutils",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("expand_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/expand_unittest.cc" ]
    deps = [
      ":neteq",
      ":neteq_input_audio_tools",
      "../../api/neteq:tick_timer",
      "../../rtc_base:safe_conversions",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("histogram_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/histogram_unittest.cc" ]
    deps = [
      ":neteq",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("merge_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/merge_unittest.cc" ]
    deps = [
      ":neteq",
      ":neteq_input_audio_tools",
      "../../api/neteq:tick_timer",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("neteq_decoder_plc_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/neteq_decoder_plc_unittest.cc" ]
    deps = [
      ":neteq_input_audio_tools",
      ":neteq_test_tools",
      ":neteq_tools_minimal",
      ":pcm16b",
      "../../api:field_trials",
      "../../api:make_ref_counted",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/neteq:neteq_api",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../rtc_base:safe_conversions",
      "../../test:audio_test_common",
      "../../test:create_test_field_trials",
      "../../test:fileutils",
      "../../test:test_support",
      "../rtp_rtcp:rtp_rtcp_format",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("neteq_impl_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/neteq_impl_unittest.cc" ]
    deps = [
      ":audio_coding_unittests_helper",
      ":g711",
      ":neteq",
      "../../api:make_ref_counted",
      "../../api:rtp_headers",
      "../../api:rtp_packet_info",
      "../../api:scoped_refptr",
      "../../api/audio:audio_frame_api",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/environment",
      "../../api/neteq:default_neteq_controller_factory",
      "../../api/neteq:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../api/neteq:neteq_controller_api",
      "../../api/neteq:tick_timer",
      "../../rtc_base:checks",
      "../../rtc_base:safe_conversions",
      "../../system_wrappers",
      "../../test:audio_codec_mocks",
      "../../test:audio_test_common",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("neteq_network_stats_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/neteq_network_stats_unittest.cc" ]
    deps = [
      ":neteq_test_tools",
      "../../api:make_ref_counted",
      "../../api:rtp_headers",
      "../../api:scoped_refptr",
      "../../api/audio:audio_frame_api",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/neteq:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../api/units:timestamp",
      "../../rtc_base:buffer",
      "../../rtc_base:checks",
      "../../test:audio_test_common",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("neteq_stereo_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/neteq_stereo_unittest.cc" ]
    deps = [
      ":neteq_input_audio_tools",
      ":neteq_test_tools",
      ":pcm16b_c",
      "../../api:rtp_headers",
      "../../api/audio:audio_frame_api",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/environment",
      "../../api/neteq:default_neteq_factory",
      "../../api/neteq:neteq_api",
      "../../api/units:timestamp",
      "../../rtc_base:checks",
      "../../rtc_base:stringutils",
      "../../system_wrappers",
      "../../test:create_test_environment",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("neteq_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/neteq_unittest.cc" ]
    deps = [
      ":audio_coding_modules_tests_shared",
      ":neteq_test_tools",
      ":neteq_tools_minimal",
      ":pcm16b_c",
      "..:module_api_public",
      "../../api:field_trials",
      "../../api:rtp_headers",
      "../../api/audio:audio_frame_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/neteq:neteq_api",
      "../../api/units:time_delta",
      "../../rtc_base:safe_conversions",
      "../../rtc_base:stringutils",
      "../../rtc_base/system:arch",
      "../../test:create_test_field_trials",
      "../../test:fileutils",
      "../../test:test_support",
      "../rtp_rtcp:rtp_rtcp_format",
      "//third_party/abseil-cpp/absl/flags:flag",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("normal_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/normal_unittest.cc" ]
    deps = [
      ":audio_coding_unittests_helper",
      ":neteq",
      "../../api/neteq:neteq_api",
      "../../api/neteq:tick_timer",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("packet_arrival_history_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/packet_arrival_history_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api/neteq:tick_timer",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("packet_buffer_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/packet_buffer_unittest.cc" ]
    deps = [
      ":audio_coding_unittests_helper",
      ":neteq",
      "../../api:field_trials",
      "../../api:field_trials_view",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/neteq:tick_timer",
      "../../rtc_base:checks",
      "../../test:create_test_field_trials",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }

  rtc_cc_test("random_vector_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/random_vector_unittest.cc" ]
    deps = [
      ":neteq",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("red_payload_splitter_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/red_payload_splitter_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api:make_ref_counted",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/environment",
      "../../rtc_base:checks",
      "../../rtc_base:safe_conversions",
      "../../test:audio_codec_mocks",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("reorder_optimizer_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/reorder_optimizer_unittest.cc" ]
    deps = [
      ":neteq",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("statistics_calculator_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/statistics_calculator_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api/neteq:neteq_api",
      "../../api/neteq:tick_timer",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("sync_buffer_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/sync_buffer_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api/audio:audio_frame_api",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("time_stretch_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/time_stretch_unittest.cc" ]
    deps = [
      ":neteq",
      ":neteq_input_audio_tools",
      "../../rtc_base:checks",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:audio_coding_unittests_data" ]
    if (is_ios) {
      deps += [ "../../resources:audio_coding_unittests_bundle_data" ]
    }
  }

  rtc_cc_test("timestamp_scaler_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/timestamp_scaler_unittest.cc" ]
    deps = [
      ":audio_coding_unittests_helper",
      ":neteq",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/environment",
      "../../test:create_test_environment",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("input_audio_file_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/tools/input_audio_file_unittest.cc" ]
    deps = [
      ":neteq_input_audio_tools",
      "../../rtc_base:safe_conversions",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("underrun_optimizer_unittest") {
    defines = audio_coding_defines
    sources = [ "neteq/underrun_optimizer_unittest.cc" ]
    deps = [
      ":neteq",
      "../../api/neteq:tick_timer",
      "../../test:test_support",
    ]
  }

  rtc_cc_test("opus_complexity_unittest") {
    sources = [ "codecs/opus/opus_complexity_unittest.cc" ]
    deps = [
      ":neteq_test_tools",
      "../../api/audio_codecs:audio_codecs_api",
      "../../api/audio_codecs/opus:audio_encoder_opus",
      "../../api/audio_codecs/opus:audio_encoder_opus_config",
      "../../api/environment",
      "../../api/test/metrics:global_metrics_logger_and_exporter",
      "../../api/test/metrics:metric",
      "../../rtc_base:buffer",
      "../../test:create_test_environment",
      "../../test:fileutils",
      "../../test:test_support",
    ]
    data_deps = [ "../../resources:webrtc_perf_tests_data" ]
    if (is_ios) {
      deps += [ "../../resources:webrtc_perf_tests_bundle_data" ]
    }
  }

  rtc_cc_test("neteq_performance_unittest") {
    sources = [ "neteq/test/neteq_performance_unittest.cc" ]
    deps = [
      ":neteq_test_support",
      "../../api/test/metrics:global_metrics_logger_and_exporter",
      "../../api/test/metrics:metric",
      "../../test:test_flags",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/flags:flag",
    ]
    data_deps = [ "../../resources:webrtc_perf_tests_data" ]
    if (is_ios) {
      deps += [ "../../resources:webrtc_perf_tests_bundle_data" ]
    }
  }
}
