# Copyright 2018 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/config/fuchsia/rules.gni")
import("//build/package.gni")

config("codec_impl_include_config") {
  include_dirs = [ "include" ]
}

source_set("fourcc") {
  public_configs = [ ":codec_impl_include_config" ]

  public = [ "include/lib/media/codec_impl/fourcc.h" ]
}

source_set("codec_impl") {
  sources = [
    "codec_adapter.cc",
    "codec_adapter_events.cc",
    "codec_admission_control.cc",
    "codec_buffer.cc",
    "codec_frame.cc",
    "codec_impl.cc",
    "codec_input_item.cc",
    "codec_metrics.cc",
    "codec_packet.cc",
    "codec_vmo_range.cc",
    "decryptor_adapter.cc",
    "fake_map_range.cc",
  ]
  include_dirs = [ "include" ]
  public = [
    "include/lib/media/codec_impl/codec_adapter.h",
    "include/lib/media/codec_impl/codec_adapter_events.h",
    "include/lib/media/codec_impl/codec_admission_control.h",
    "include/lib/media/codec_impl/codec_buffer.h",
    "include/lib/media/codec_impl/codec_impl.h",
    "include/lib/media/codec_impl/codec_input_item.h",
    "include/lib/media/codec_impl/codec_metrics.h",
    "include/lib/media/codec_impl/codec_packet.h",
    "include/lib/media/codec_impl/codec_vmo_range.h",
    "include/lib/media/codec_impl/decryptor_adapter.h",
  ]
  public_deps = [
    ":fourcc",
    "//sdk/fidl/fuchsia.media.drm",
    "//sdk/fidl/fuchsia.mediacodec",
    "//sdk/lib/syslog/cpp",
    "//src/lib/cobalt/cpp:cobalt_event_builder",
    "//src/lib/cobalt/cpp:cobalt_logger",
    "//src/lib/fsl",
    "//src/media/lib/metrics",
    "//src/media/lib/mpsc_queue",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/closure-queue",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/thread-safe-deleter",
  ]
  public_configs = [ ":codec_impl_include_config" ]
  deps = [
    "//sdk/fidl/fuchsia.media",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp:cpp",
    "//sdk/lib/syslog/cpp",
    "//sdk/lib/syslog/cpp:backend_legacy",

    # Only for <ddk/debug.h>'s severity levels.
    "//src/lib/ddk",
    "//src/media/lib/memory_barriers",

    # Provides fx_log_get_logger
    "//zircon/system/ulib/syslog",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

group("tests") {
  testonly = true
  deps = [ "unit_tests" ]
}
