# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

source_set("audio") {
  sources = [
    "async_audio_data_supplier.cc",
    "async_audio_data_supplier.h",
    "async_audio_frame_supplier.h",
    "audio_frame_supplier.h",
    "audio_jitter_buffer.cc",
    "audio_jitter_buffer.h",
    "audio_playback_sink.h",
    "audio_playback_stream.cc",
    "audio_playback_stream.h",
    "audio_player.cc",
    "audio_player.h",
    "audio_player_android.cc",
    "audio_player_android.h",
    "audio_player_buffer.cc",
    "audio_player_buffer.h",
    "audio_stream_consumer.cc",
    "audio_stream_consumer.h",
    "audio_stream_format.cc",
    "audio_stream_format.h",
  ]

  configs += [ "//remoting/build/config:version" ]

  deps = [
    "//base",
    "//remoting/base",
  ]

  libs = []

  if (is_android) {
    libs += [
      "android",
      "OpenSLES",
    ]
  }
}

source_set("test_support") {
  testonly = true
  sources = [
    "fake_async_audio_data_supplier.cc",
    "fake_async_audio_data_supplier.h",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "audio_jitter_buffer_unittest.cc",
    "audio_player_buffer_unittest.cc",
    "audio_player_unittest.cc",
  ]

  configs += [ "//remoting/build/config:version" ]

  deps = [
    ":audio",
    "//remoting/proto",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
