# Copyright 2019 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")
import("//build/test.gni")

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

source_set("frame_sink") {
  testonly = true

  sources = [
    "frame_sink.cc",
    "frame_sink_view.cc",
  ]

  include_dirs = [ "include" ]

  public_configs = [
    ":media_test_include_config",
    "//build/config:Wno-reorder-init-list",
  ]

  public = [
    "include/lib/media/test/frame_sink.h",
    "include/lib/media/test/frame_sink_view.h",
  ]

  public_deps = [
    "//src/lib/ui/base_view",
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
  ]

  deps = [
    "//sdk/fidl/fuchsia.mediacodec",
    "//sdk/lib/ui/scenic/cpp",
    "//src/media/audio/lib/wav_writer:wav_writer",
    "//src/media/lib/codec_impl:fourcc",
    "//src/media/lib/raw_video_writer:raw_video_writer",
  ]
}

source_set("codec_client") {
  testonly = true

  sources = [
    "codec_buffer.cc",
    "codec_client.cc",
    "codec_output.cc",
  ]

  include_dirs = [ "include" ]

  public_configs = [ ":media_test_include_config" ]

  public = [
    "include/lib/media/test/codec_buffer.h",
    "include/lib/media/test/codec_client.h",
    "include/lib/media/test/codec_output.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.mediacodec",
    "//src/lib/fxl",
    "//src/lib/syslog/cpp",
    "//src/media/lib/test:one_shot_event",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
  ]
}

source_set("one_shot_event") {
  testonly = true

  sources = [ "one_shot_event.cc" ]

  include_dirs = [ "include" ]

  public_configs = [ ":media_test_include_config" ]

  public = [ "include/lib/media/test/one_shot_event.h" ]

  deps = [ "//zircon/public/lib/zx" ]
}
