# 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",
    ":codec_runner_sw_sbc",
    ":services",
    "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"
    },
  ]
}

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

  deps = [
    "//garnet/bin/media/codecs/sw/sbc:codec_runner_sw_sbc",
  ]

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