# Copyright 2017 The Chromium 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("//media/media_options.gni")

source_set("video") {
  # Do not expand the visibility here without double-checking with OWNERS, this
  # is a roll-up target which is part of the //media component. Most other DEPs
  # should be using //media and not directly DEP this roll-up target.
  visibility = [
    "//media",
    "//media/filters",
    "//media/formats",
    "//media/renderers",
  ]

  sources = [
    "gpu_memory_buffer_video_frame_pool.cc",
    "gpu_memory_buffer_video_frame_pool.h",
    "gpu_video_accelerator_factories.h",
    "h264_bit_reader.cc",
    "h264_bit_reader.h",
    "h264_parser.cc",
    "h264_parser.h",
    "h264_poc.cc",
    "h264_poc.h",
    "half_float_maker.cc",
    "half_float_maker.h",
    "jpeg_decode_accelerator.cc",
    "jpeg_decode_accelerator.h",
    "jpeg_encode_accelerator.cc",
    "jpeg_encode_accelerator.h",
    "picture.cc",
    "picture.h",
    "video_decode_accelerator.cc",
    "video_decode_accelerator.h",
    "video_encode_accelerator.cc",
    "video_encode_accelerator.h",
  ]

  if (proprietary_codecs && enable_hevc_demuxing) {
    sources += [
      "h265_parser.cc",
      "h265_parser.h",
    ]
  }

  public_deps = [
    "//gpu/command_buffer/client:gles2_interface",
  ]

  deps = [
    "//gpu/command_buffer/common",
    "//media/base",
    "//third_party/libyuv",
    "//ui/gfx",
    "//ui/gl",
  ]

  configs += [
    # TODO(crbug.com/167187): Fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
    "//media:subcomponent_config",
  ]
}

# Note: This is a roll-up only target; do not expand the visibility. DEPS should
# depend on the //media:test_support target instead.
static_library("test_support") {
  visibility = [ "//media:test_support" ]
  testonly = true
  sources = [
    "fake_video_encode_accelerator.cc",
    "fake_video_encode_accelerator.h",
    "mock_gpu_memory_buffer_video_frame_pool.cc",
    "mock_gpu_memory_buffer_video_frame_pool.h",
    "mock_gpu_video_accelerator_factories.cc",
    "mock_gpu_video_accelerator_factories.h",
    "mock_video_decode_accelerator.cc",
    "mock_video_decode_accelerator.h",
    "mock_video_encode_accelerator.cc",
    "mock_video_encode_accelerator.h",
  ]
  configs += [ "//media:media_config" ]
  deps = [
    "//base",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/common",
    "//media/base:test_support",
    "//services/ui/public/cpp/gpu",
    "//testing/gmock",
    "//ui/gfx",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "gpu_memory_buffer_video_frame_pool_unittest.cc",
    "h264_bit_reader_unittest.cc",
    "h264_parser_unittest.cc",
    "h264_poc_unittest.cc",
    "half_float_maker_unittest.cc",
  ]
  if (enable_hevc_demuxing) {
    sources += [ "h265_parser_unittest.cc" ]
  }

  configs += [ "//media:media_config" ]
  deps = [
    "//base",
    "//base/test:test_support",
    "//gpu:test_support",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/common",
    "//media:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/gfx",
  ]
}

fuzzer_test("media_h264_parser_fuzzer") {
  sources = [
    "h264_parser_fuzzertest.cc",
  ]
  deps = [
    "//base",
    "//media",
    "//ui/gfx/geometry",
  ]
}