# Copyright 2021 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")

config("codec_runner_vaapi_include_config") {
  include_dirs = [ "." ]
}

source_set("avcc_processor") {
  sources = [
    "avcc_processor.cc",
    "avcc_processor.h",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.mediacodec:fuchsia.mediacodec_hlcpp",
    "//sdk/lib/fit",
    "//sdk/lib/syslog/cpp",
    "//src/media/lib/codec_impl",
    "//src/media/third_party/chromium_media",
  ]
}
source_set("vaapi_utils") {
  sources = [ "vaapi_utils.cc" ]
  public = [ "vaapi_utils.h" ]
  public_deps = [
    "//sdk/fidl/fuchsia.media:fuchsia.media_hlcpp",
    "//sdk/fidl/fuchsia.mediacodec:fuchsia.mediacodec_hlcpp",
    "//sdk/lib/magma_client:magma_headers",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl",
    "//src/media/third_party/chromium_media",
    "//third_party/intel/libva/fuchsia:headers",
  ]
  deps = [
    "//sdk/lib/fit",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/zx",
    "//zircon/third_party/ulib/safemath",
  ]
}

source_set("codec_runner_vaapi") {
  sources = [
    "buffer_pool.cc",
    "codec_adapter_vaapi_decoder.cc",
    "codec_adapter_vaapi_encoder.cc",
    "h264_accelerator.cc",
    "local_single_codec_factory.h",
    "mjpeg_accelerator.cc",
    "mjpeg_decoder.cc",
    "vp9_accelerator.cc",
  ]

  public = [
    "buffer_pool.h",
    "codec_adapter_vaapi_decoder.h",
    "codec_adapter_vaapi_encoder.h",
    "codec_runner_app.h",
    "h264_accelerator.h",
    "mjpeg_accelerator.h",
    "mjpeg_decoder.h",
    "vp9_accelerator.h",
  ]

  public_configs = [ ":codec_runner_vaapi_include_config" ]

  public_deps = [
    ":avcc_processor",
    ":vaapi_utils",
    "third_party/chromium",
    "//sdk/fidl/fuchsia.mediacodec:fuchsia.mediacodec_hlcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
    "//sdk/lib/magma_client:magma_headers",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl",
    "//src/media/lib/codec_impl",
    "//src/media/lib/mpsc_queue",
    "//src/media/third_party/chromium_media",
    "//third_party/intel/libva/fuchsia:headers",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/trace-provider",
    "//zircon/system/ulib/zx",
  ]
}

static_library("codec_runner_vaapi_library") {
  testonly = true
  deps = [ ":codec_runner_vaapi" ]
}

group("tests") {
  testonly = true

  deps = [ "test" ]
}
