# Copyright (c) 2017 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")
if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
}

rtc_static_library("audio_encoder_opus_config") {
  sources = [
    "audio_encoder_opus_config.cc",
    "audio_encoder_opus_config.h",
  ]
  deps = [
    "../../../rtc_base:rtc_base_approved",
  ]
  defines = []
  if (rtc_opus_variable_complexity) {
    defines += [ "WEBRTC_OPUS_VARIABLE_COMPLEXITY=1" ]
  } else {
    defines += [ "WEBRTC_OPUS_VARIABLE_COMPLEXITY=0" ]
  }
}

rtc_source_set("audio_encoder_opus") {
  sources = [
    "audio_encoder_opus.h",
  ]
  deps = [
    ":audio_encoder_opus_config",
    "..:audio_codecs_api",
    "../../../modules/audio_coding:webrtc_opus",
    "../../../rtc_base:protobuf_utils",  # TODO(kwiberg): Why is this needed?
    "../../../rtc_base:rtc_base_approved",
  ]
}

rtc_static_library("audio_decoder_opus") {
  sources = [
    "audio_decoder_opus.cc",
    "audio_decoder_opus.h",
  ]
  deps = [
    "..:audio_codecs_api",
    "../../..:webrtc_common",
    "../../../modules/audio_coding:webrtc_opus",
    "../../../rtc_base:rtc_base_approved",
  ]
}
