# 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")

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

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

  public_configs = [ ":audio_conference_mixer_config" ]

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