# Copyright 2016 The Fuchsia 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("//build/package.gni")

group("media") {
  testonly = true
  deps = [
    ":codec_factory",
    ":codec_runner_sw_ffmpeg",
    ":services",
    "camera_manager",
    "codec_factory",
    "codecs",
  ]
}

group("services") {
  public_deps = [
    "//garnet/bin/media/codec_factory",
  ]
}

package("codec_factory") {
  deps = [
    "//garnet/bin/media/codec_factory:codec_factory",
  ]

  binaries = [
    {
      name = "codec_factory"
    },
  ]

  meta = [
    {
      path = rebase_path("codec_factory/meta/codec_factory.cmx")
      dest = "codec_factory.cmx"
    },
  ]
}

# This package is only really expected to be used by the codec_factory package.
package("codec_runner_sw_ffmpeg") {
  meta = [
    {
      path = rebase_path("codecs/meta/codec_runner_sw_ffmpeg.cmx")
      dest = "codec_runner_sw_ffmpeg.cmx"
    },
  ]

  deps = [
    "//garnet/bin/media/codecs/sw/ffmpeg:codec_runner_sw_ffmpeg",
  ]

  binaries = [
    {
      name = "codec_runner_sw_ffmpeg"
    },
  ]
}
