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

# All Chromecast platforms except Android should support the CMA pipeline by
# default for media playback.
enable_cma = !is_android

source_set("media") {
  sources = [
    "media_caps_observer_impl.cc",
    "media_caps_observer_impl.h",
  ]

  deps = [
    "//chromecast/common/media:interfaces",
    "//chromecast/media/base",
    "//skia",
    "//ui/gfx/geometry",
  ]

  if (enable_cma) {
    sources += [
      "audio_pipeline_proxy.cc",
      "audio_pipeline_proxy.h",
      "chromecast_media_renderer_factory.cc",
      "chromecast_media_renderer_factory.h",
      "cma_message_filter_proxy.cc",
      "cma_message_filter_proxy.h",
      "cma_renderer.cc",
      "cma_renderer.h",
      "media_channel_proxy.cc",
      "media_channel_proxy.h",
      "media_pipeline_proxy.cc",
      "media_pipeline_proxy.h",
      "video_pipeline_proxy.cc",
      "video_pipeline_proxy.h",
    ]

    deps += [
      "//chromecast/common/media",
      "//chromecast/media",
      "//content/public/renderer",
      "//gpu/command_buffer/client:gles2_interface",
      "//gpu/command_buffer/common",
      "//ipc",
      "//media",
    ]
  }
}
