# 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.

group("codecs") {
  testonly = true
  deps = [
    ":chunk_input_stream",
    ":output_sink",
    ":timestamp_extrapolator",
    "sw",
    "test",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":hw_dependent_tests",
    "test",
  ]
}

# We want these tests to run on various HW.  Each of these tests has
# environments set appropriately to avoid running on HW where we don't expect
# the test to be able to pass.
group("hw_dependent_tests") {
  testonly = true
  deps = [
    "//src/media/codec/examples:h264_decoder_fuzzer_test",
    "//src/media/codec/examples:use-h264-multi-decoder-concurrent-stream-switching-test",
    "//src/media/codec/examples:use-h264-multi-decoder-stream-switching-test",
    "//src/media/codec/examples:use-h264-multi-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_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_test",
    "//src/media/codec/examples:vp9-decoder-conformance-test--bear-vp9",
    "//src/media/codec/examples:vp9_decoder_fuzzer_test",
  ]
}

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

source_set("timestamp_extrapolator") {
  public = [ "timestamp_extrapolator.h" ]
  sources = [ "timestamp_extrapolator.cc" ]
  public_configs = [ ":local_header_include_config" ]
  public_deps = [ "//zircon/public/lib/zx" ]
}

source_set("chunk_input_stream") {
  public = [ "chunk_input_stream.h" ]
  sources = [ "chunk_input_stream.cc" ]
  public_configs = [ ":local_header_include_config" ]
  public_deps = [
    ":timestamp_extrapolator",
    "//src/media/lib/codec_impl",
    "//zircon/public/lib/zx",
  ]
}

source_set("output_sink") {
  public = [ "output_sink.h" ]
  sources = [ "output_sink.cc" ]
  public_configs = [ ":local_header_include_config" ]
  public_deps = [
    "//src/media/lib/codec_impl",
    "//src/media/lib/mpsc_queue",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
  ]

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