# Copyright (c) 2019 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")

rtc_source_set("neteq_api") {
  visibility = [ "*" ]
  sources = [
    "neteq.cc",
    "neteq.h",
    "neteq_factory.h",
  ]

  deps = [
    "..:array_view",
    "..:rtp_headers",
    "..:rtp_packet_info",
    "..:scoped_refptr",
    "../../rtc_base:stringutils",
    "../audio_codecs:audio_codecs_api",
    "../environment",
    "../units:timestamp",
  ]
}

rtc_source_set("default_neteq_factory") {
  visibility = [ "*" ]
  sources = [
    "default_neteq_factory.cc",
    "default_neteq_factory.h",
  ]
  deps = [
    ":default_neteq_controller_factory",
    ":neteq_api",
    "..:scoped_refptr",
    "../../modules/audio_coding:neteq",
    "../audio_codecs:audio_codecs_api",
    "../environment",
  ]
}

rtc_source_set("custom_neteq_factory") {
  visibility = [ "*" ]
  sources = [
    "custom_neteq_factory.cc",
    "custom_neteq_factory.h",
  ]

  deps = [
    ":neteq_api",
    ":neteq_controller_api",
    "..:scoped_refptr",
    "../../modules/audio_coding:neteq",
    "../audio_codecs:audio_codecs_api",
    "../environment",
  ]
}

rtc_source_set("neteq_controller_api") {
  visibility = [ "*" ]
  sources = [
    "neteq_controller.h",
    "neteq_controller_factory.h",
  ]

  deps = [
    ":neteq_api",
    ":tick_timer",
    "../environment",
  ]
}

rtc_source_set("default_neteq_controller_factory") {
  visibility = [ "*" ]
  sources = [
    "default_neteq_controller_factory.cc",
    "default_neteq_controller_factory.h",
  ]

  deps = [
    ":neteq_controller_api",
    "../../modules/audio_coding:neteq",
    "../environment",
  ]
}

rtc_source_set("tick_timer") {
  visibility = [ "*" ]
  sources = [
    "tick_timer.cc",
    "tick_timer.h",
  ]
  deps = [ "../../rtc_base:checks" ]
}

rtc_source_set("tick_timer_unittest") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "tick_timer_unittest.cc" ]
  deps = [
    ":tick_timer",
    "../../test:test_support",
    "//testing/gtest",
  ]
}
