# 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 = [
    ":audio",
    ":audio_core",
    ":codec_factory",
    ":codec_runner_sw_ffmpeg",
    ":codec_runner_sw_omx",
    ":services",
    ":tools",
    "audio",
    "audio_core",
    "camera_manager",
    "codec_factory",
    "codecs",
    "signal_generator",
    "util",
    "vim2_media_config",
    "virtual_audio",
    "vol",
    "wav_recorder",
  ]
}

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") {
  deps = [
    "//garnet/bin/media/audio_core",
    "//garnet/bin/media/audio_core/audiofx",
  ]

  binaries = [
    {
      name = "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("audio") {
  deps = [
    "//garnet/bin/media/audio",
  ]

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

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

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_omx") {
  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",
  ]

  binaries = [
    {
      name = "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") {
  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"
    },
  ]
}
