# 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_impl.cc",
    "codec_input_item.cc",
    "codec_packet.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_packet.h",
    "include/lib/media/codec_impl/decryptor_adapter.h",
  ]
  public_deps = [
    ":fourcc",
    "//sdk/fidl/fuchsia.media.drm",
    "//sdk/fidl/fuchsia.mediacodec",
    "//src/media/lib/mpsc_queue",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
    "//zircon/system/ulib/closure-queue",
    "//zircon/system/ulib/thread-safe-deleter",
  ]
  public_configs = [ ":codec_impl_include_config" ]
  deps = [
    "//sdk/fidl/fuchsia.media",
    "//sdk/lib/fidl/cpp",
    "//src/lib/syslog/cpp",
  ]
}

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