# 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/components.gni")

group("codec") {
  testonly = true
  deps = [
    ":codec_factory",
    ":codec_runner_sw_aac",
    ":codec_runner_sw_ffmpeg",
    ":codec_runner_sw_sbc",
    ":services",
    ":tests",
    "//src/media/codec/codecs",
    "//src/media/codec/factory",
  ]
}

group("tests") {
  testonly = true
  deps = [
    "//src/media/codec/codecs:tests",
    "//src/media/codec/examples:encode-camera",
    "//src/media/codec/examples:encode-file",
    "//src/media/codec/examples:h264_decoder_fuzzer_test",
    "//src/media/codec/examples:use-h264-decoder-frame-num-gaps-test",
    "//src/media/codec/examples:use-h264-sw-decoder-test",
    "//src/media/codec/examples:use-vp9-decoder-stream-switching-test",
    "//src/media/codec/examples:use_h264_decoder_secure_input_output_test",
    "//src/media/codec/examples:use_h264_decoder_secure_output_test",
    "//src/media/codec/examples:use_h264_decoder_stream_switching_test",
    "//src/media/codec/examples:use_h264_decoder_test",
    "//src/media/codec/examples:use_media_decoder",
    "//src/media/codec/examples:use_vp9_decoder_24_output_frames_test",
    "//src/media/codec/examples:use_vp9_decoder_secure_input_output_test",
    "//src/media/codec/examples:use_vp9_decoder_secure_output_test",
    "//src/media/codec/examples:use_vp9_decoder_skip_first_frame_test",
    "//src/media/codec/examples:use_vp9_decoder_tests",
    "//src/media/codec/examples:vp9-decoder-conformance-test--bear-vp9",
    "//src/media/codec/examples:vp9_decoder_fuzzer_test",
    "//src/media/codec/factory:codec_detect_hw_decode_test",
  ]
}

group("hw_dependent_tests") {
  testonly = true
  deps = [ "//src/media/codec/codecs:hw_dependent_tests" ]
}

group("services") {
  public_deps = [ "//src/media/codec/factory" ]
}

fuchsia_package_with_single_component("codec_factory") {
  manifest = "factory/meta/codec_factory.cmx"
  deps = [ "//src/media/codec/factory" ]
}

# This package is only really expected to be used by the codec_factory package.
fuchsia_package_with_single_component("codec_runner_sw_aac") {
  manifest = "codecs/meta/codec_runner_sw_aac.cmx"
  deps = [ "//src/media/codec/codecs/sw/aac:codec_runner_sw_aac" ]
}

# This package is only really expected to be used by the codec_factory package.
fuchsia_package_with_single_component("codec_runner_sw_ffmpeg") {
  manifest = "codecs/meta/codec_runner_sw_ffmpeg.cmx"
  deps = [ "//src/media/codec/codecs/sw/ffmpeg:codec_runner_sw_ffmpeg" ]
}

# This package is only really expected to be used by the codec_factory package.
fuchsia_package_with_single_component("codec_runner_sw_sbc") {
  manifest = "codecs/meta/codec_runner_sw_sbc.cmx"
  deps = [ "//src/media/codec/codecs/sw/sbc:codec_runner_sw_sbc" ]
}
