# Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../webrtc.gni")
if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
}

rtc_library("video_rtp_headers") {
  visibility = [ "*" ]
  sources = [
    "color_space.cc",
    "color_space.h",
    "hdr_metadata.cc",
    "hdr_metadata.h",
    "video_content_type.cc",
    "video_content_type.h",
    "video_rotation.h",
    "video_timing.cc",
    "video_timing.h",
  ]

  deps = [
    "..:array_view",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../rtc_base/system:rtc_export",
    "../units:data_rate",
    "../units:time_delta",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("video_frame") {
  visibility = [ "*" ]
  sources = [
    "i420_buffer.cc",
    "i420_buffer.h",
    "i422_buffer.cc",
    "i422_buffer.h",
    "i444_buffer.cc",
    "i444_buffer.h",
    "nv12_buffer.cc",
    "nv12_buffer.h",
    "video_codec_type.h",
    "video_frame.cc",
    "video_frame.h",
    "video_frame_buffer.cc",
    "video_frame_buffer.h",
    "video_sink_interface.h",
    "video_source_interface.cc",
    "video_source_interface.h",
  ]

  deps = [
    ":video_rtp_headers",
    "..:array_view",
    "..:make_ref_counted",
    "..:ref_count",
    "..:rtp_packet_info",
    "..:scoped_refptr",
    "..:video_track_source_constraints",
    "../../rtc_base:checks",
    "../../rtc_base:refcount",
    "../../rtc_base:timeutils",
    "../../rtc_base/memory:aligned_malloc",
    "../../rtc_base/system:rtc_export",
    "//third_party/libyuv",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

if (is_android) {
  java_cpp_enum("video_frame_enums") {
    sources = [ "video_frame_buffer.h" ]
  }
}

rtc_library("video_frame_i010") {
  visibility = [ "*" ]
  sources = [
    "i010_buffer.cc",
    "i010_buffer.h",
    "i210_buffer.cc",
    "i210_buffer.h",
    "i410_buffer.cc",
    "i410_buffer.h",
  ]
  deps = [
    ":video_frame",
    ":video_rtp_headers",
    "..:make_ref_counted",
    "..:scoped_refptr",
    "../../rtc_base:checks",
    "../../rtc_base:refcount",
    "../../rtc_base/memory:aligned_malloc",
    "//third_party/libyuv",
  ]
}

rtc_source_set("recordable_encoded_frame") {
  visibility = [ "*" ]
  sources = [ "recordable_encoded_frame.h" ]

  deps = [
    ":encoded_image",
    ":video_frame",
    ":video_rtp_headers",
    "..:array_view",
    "..:make_ref_counted",
    "..:scoped_refptr",
    "../units:timestamp",
  ]
}

rtc_source_set("video_frame_type") {
  visibility = [ "*" ]
  sources = [ "video_frame_type.h" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  deps = [ "../../rtc_base:checks" ]
}

rtc_source_set("render_resolution") {
  visibility = [ "*" ]
  public = [ "render_resolution.h" ]
}

rtc_source_set("resolution") {
  visibility = [ "*" ]
  public = [ "resolution.h" ]
  deps = [ "../../rtc_base/system:rtc_export" ]
}

rtc_library("encoded_image") {
  visibility = [ "*" ]
  sources = [
    "encoded_image.cc",
    "encoded_image.h",
  ]
  deps = [
    ":video_codec_constants",
    ":video_frame",
    ":video_frame_type",
    ":video_rtp_headers",
    "..:refcountedbase",
    "..:rtp_packet_info",
    "..:scoped_refptr",
    "../../rtc_base:checks",
    "../../rtc_base:refcount",
    "../../rtc_base/system:rtc_export",
    "../units:timestamp",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("encoded_frame") {
  visibility = [ "*" ]
  sources = [
    "encoded_frame.cc",
    "encoded_frame.h",
  ]

  deps = [
    ":encoded_image",
    ":video_frame",
    "../../modules/rtp_rtcp:rtp_video_header",
    "../../modules/video_coding:video_codec_interface",
    "../units:timestamp",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("rtp_video_frame_assembler") {
  visibility = [ "*" ]
  sources = [
    "rtp_video_frame_assembler.cc",
    "rtp_video_frame_assembler.h",
  ]

  deps = [
    ":encoded_frame",
    "../../modules/rtp_rtcp:rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../modules/video_coding:packet_buffer",
    "../../modules/video_coding:video_coding",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_numerics",
  ]

  absl_deps = [
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("rtp_video_frame_assembler_unittests") {
  testonly = true
  sources = [ "rtp_video_frame_assembler_unittests.cc" ]

  deps = [
    ":rtp_video_frame_assembler",
    "..:array_view",
    "../../modules/rtp_rtcp:rtp_packetizer_av1_test_helper",
    "../../modules/rtp_rtcp:rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../test:test_support",
  ]
}

rtc_source_set("video_codec_constants") {
  visibility = [ "*" ]
  sources = [ "video_codec_constants.h" ]
  deps = []
}

rtc_library("video_bitrate_allocation") {
  visibility = [ "*" ]
  sources = [
    "video_bitrate_allocation.cc",
    "video_bitrate_allocation.h",
  ]
  deps = [
    ":video_codec_constants",
    "../../rtc_base:checks",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_source_set("video_layers_allocation") {
  visibility = [ "*" ]
  sources = [ "video_layers_allocation.h" ]
  deps = [ "../units:data_rate" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ]
}

rtc_library("video_bitrate_allocator") {
  visibility = [ "*" ]
  sources = [
    "video_bitrate_allocator.cc",
    "video_bitrate_allocator.h",
  ]
  deps = [
    ":video_bitrate_allocation",
    "../units:data_rate",
  ]
}

rtc_source_set("video_bitrate_allocator_factory") {
  visibility = [ "*" ]
  sources = [ "video_bitrate_allocator_factory.h" ]
  deps = [
    ":video_bitrate_allocator",
    "../video_codecs:video_codecs_api",
  ]
}

rtc_library("video_adaptation") {
  visibility = [ "*" ]
  sources = [
    "video_adaptation_counters.cc",
    "video_adaptation_counters.h",
    "video_adaptation_reason.h",
  ]

  deps = [
    "../../rtc_base:checks",
    "../../rtc_base:stringutils",
  ]
}

rtc_source_set("video_stream_encoder") {
  visibility = [ "*" ]
  sources = [ "video_stream_encoder_settings.h" ]

  deps = [
    ":video_adaptation",
    ":video_bitrate_allocation",
    ":video_bitrate_allocator",
    ":video_bitrate_allocator_factory",
    ":video_codec_constants",
    ":video_frame",
    ":video_layers_allocation",
    "..:rtp_parameters",
    "..:scoped_refptr",
    "../:fec_controller_api",
    "../:rtp_parameters",
    "../adaptation:resource_adaptation_api",
    "../units:data_rate",
    "../video_codecs:video_codecs_api",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_source_set("video_frame_metadata") {
  visibility = [ "*" ]
  sources = [
    "video_frame_metadata.cc",
    "video_frame_metadata.h",
  ]
  deps = [
    ":video_frame",
    ":video_frame_type",
    ":video_rtp_headers",
    "..:array_view",
    "../../modules/video_coding:codec_globals_headers",
    "../../rtc_base/system:rtc_export",
    "../transport/rtp:dependency_descriptor",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:variant",
  ]
}

rtc_library("builtin_video_bitrate_allocator_factory") {
  visibility = [ "*" ]
  sources = [
    "builtin_video_bitrate_allocator_factory.cc",
    "builtin_video_bitrate_allocator_factory.h",
  ]

  deps = [
    ":video_bitrate_allocation",
    ":video_bitrate_allocator",
    ":video_bitrate_allocator_factory",
    "../../api:scoped_refptr",
    "../../media:rtc_media_base",
    "../../modules/video_coding:video_coding_utility",
    "../../modules/video_coding/svc:svc_rate_allocator",
    "../video_codecs:video_codecs_api",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ]
}

rtc_library("frame_buffer") {
  visibility = [ "*" ]
  sources = [
    "frame_buffer.cc",
    "frame_buffer.h",
  ]
  deps = [
    "../../api:field_trials_view",
    "../../api/units:timestamp",
    "../../api/video:encoded_frame",
    "../../modules/video_coding:video_coding_utility",
    "../../rtc_base:logging",
    "../../rtc_base:rtc_numerics",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("frame_buffer_unittest") {
  testonly = true
  sources = [ "frame_buffer_unittest.cc" ]

  deps = [
    ":frame_buffer",
    "../../api/video:encoded_frame",
    "../../test:fake_encoded_frame",
    "../../test:field_trial",
    "../../test:scoped_key_value_config",
    "../../test:test_support",
  ]
}

rtc_library("video_frame_metadata_unittest") {
  testonly = true
  sources = [ "video_frame_metadata_unittest.cc" ]

  deps = [
    ":video_frame_metadata",
    "../../api/video:video_frame",
    "../../modules/video_coding:codec_globals_headers",
    "../../test:test_support",
    "../../video:video",
  ]
}
