# 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_aac",
    ":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_aac") {
  meta = [
    {
      path = rebase_path("codecs/meta/codec_runner_sw_aac.cmx")
      dest = "codec_runner_sw_aac.cmx"
    },
  ]

  deps = [
    "//garnet/bin/media/codecs/sw/aac:codec_runner_sw_aac",
  ]

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

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