# 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.

config("audio_conference_mixer_config") {
  include_dirs = [ "../../modules/include" ]
}

source_set("audio_mixer") {
  sources = [
    "audio_frame_manipulator.cc",
    "audio_frame_manipulator.h",
    "audio_mixer.h",
    "audio_mixer_defines.h",
    "audio_mixer_impl.cc",
    "audio_mixer_impl.h",
  ]

  public = [
    "audio_mixer_defines.h",
    "audio_mixer.h",
  ]

  configs += [ "../..:common_config" ]

  public_configs = [
    "../..:common_inherited_config",
    ":audio_conference_mixer_config",
  ]

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

  deps = [
    "../..:webrtc_common",
    "../../base:rtc_base_approved",
    "../../modules/audio_processing",
    "../../modules/utility",
    "../../system_wrappers",
    "../../voice_engine:level_indicator",
  ]
}
