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

import("//chromecast/chromecast.gni")

cast_source_set("key_systems") {
  sources = [
    "key_systems_common.cc",
    "key_systems_common.h",
  ]

  if (use_playready) {
    public_configs = [ "//chromecast:playready_config" ]
  }

  deps = [
    "//base",
    "//chromecast/public/media",
    "//media",
    "//third_party/widevine/cdm:headers",
  ]
}

cast_source_set("base") {
  sources = [
    "audio_device_ids.cc",
    "audio_device_ids.h",
    "decrypt_context_impl.cc",
    "decrypt_context_impl.h",
    "decrypt_context_impl_clearkey.cc",
    "decrypt_context_impl_clearkey.h",
    "media_caps.cc",
    "media_caps.h",
    "slew_volume.cc",
    "slew_volume.h",
    "supported_codec_profile_levels_memo.cc",
    "supported_codec_profile_levels_memo.h",
    "video_mode_switcher.cc",
    "video_mode_switcher.h",
  ]

  if (!is_android) {
    sources += [
      "video_resolution_policy.cc",
      "video_resolution_policy.h",
    ]
  }

  public_deps = [
    ":key_systems",
    ":media_codec_support",
    "//chromecast/public/media",
  ]

  deps = [
    "//base",
    "//chromecast/base",
    "//crypto",
    "//crypto:platform",
    "//media",
    "//media:shared_memory_support",
    "//ui/gfx/geometry",
  ]
}

cast_source_set("media_resource_tracker") {
  sources = [
    "media_resource_tracker.cc",
    "media_resource_tracker.h",
  ]

  deps = [
    "//base",
    "//chromecast/base",
    "//chromecast/media:libcast_media",
  ]
}

cast_source_set("media_codec_support") {
  sources = [
    "media_codec_support.cc",
    "media_codec_support.h",
  ]

  public_deps = [
    "//chromecast/public/media",
  ]

  deps = [
    "//base",
    "//media",
  ]
}

cast_source_set("video_plane_controller") {
  sources = [
    "video_plane_controller.cc",
    "video_plane_controller.h",
  ]

  public_deps = [
    "//chromecast/public",
  ]

  deps = [
    "//base",
    "//chromecast/media:libcast_media",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}
