# 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("services") {
  public_deps = [
    "//garnet/bin/media/codec_factory",
  ]
}

group("tools") {
  public_deps = [
    "//garnet/bin/media/signal_generator",
    "//garnet/bin/media/vol",
    "//garnet/bin/media/wav_recorder",
  ]
}

package("audio_core") {
  deprecated_bare_package_url = "//build"

  deps = [
    "//garnet/bin/media/audio_core",
    "//garnet/bin/media/audio_core/audiofx",
  ]

  binary = "audio_core"

  loadable_modules = [
    {
      # This audio processing library is hosted in the audio_core process.
      name = "audiofx.so"
    },
  ]

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

package("codec_factory") {
  deprecated_bare_package_url = "//build"

  deps = [
    "//garnet/bin/media/codec_factory:codec_factory",
  ]

  binary = "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_omx") {
  deprecated_bare_package_url = "//build"

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

  deps = [
    "//garnet/bin/media/codecs/sw/omx/codec_runner_sw_omx:codec_runner_sw_omx",

    # Codec loadable_module(s)
    "//garnet/bin/media/codecs/sw/omx/dec/aac:libcodec_sw_omx_dec_aac",
  ]

  binary = "codec_runner_sw_omx"

  loadable_modules = [
    {
      name = "libcodec_sw_omx_dec_aac.so"
    },
  ]
}

# This package is only really expected to be used by the codec_factory package.
package("codec_runner_sw_ffmpeg") {
  deprecated_bare_package_url = "//build"

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

  binary = "codec_runner_sw_ffmpeg"
}
