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

import("//media/media_options.gni")
import("//third_party/webrtc/webrtc.gni")

component("webrtc") {
  output_name = "media_webrtc"

  sources = [
    "audio_delay_stats_reporter.cc",
    "audio_delay_stats_reporter.h",
    "audio_processor.cc",
    "audio_processor.h",
    "constants.h",
    "helpers.cc",
    "helpers.h",
    "webrtc_features.cc",
    "webrtc_features.h",
  ]

  defines = [ "IS_MEDIA_WEBRTC_IMPL" ]

  deps = [
    "//base",
    "//build:chromecast_buildflags",
    "//build:chromeos_buildflags",
    "//media",
    "//media:shared_memory_support",
    "//third_party/webrtc_overrides:webrtc_component",
  ]
}

source_set("unit_tests") {
  testonly = true
  deps = [
    "//base",
    "//base/test:test_support",
    "//build:chromecast_buildflags",
    "//media:test_support",
    "//media/webrtc",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/webrtc_overrides:webrtc_component",
  ]
  sources = [
    "audio_processor_test.cc",
    "helpers_unittests.cc",
  ]
}
