# Copyright (c) 2017 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_source_set("video_codecs_api") {
  visibility = [ "*" ]
  sources = [
    "sdp_video_format.cc",
    "sdp_video_format.h",
    "video_codec.cc",
    "video_codec.h",
    "video_decoder.cc",
    "video_decoder.h",
    "video_decoder_factory.cc",
    "video_decoder_factory.h",
    "video_encoder.cc",
    "video_encoder.h",
    "video_encoder_config.cc",
    "video_encoder_config.h",
    "video_encoder_factory.h",
  ]

  deps = [
    "../..:webrtc_common",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../video:encoded_image",
    "../video:video_bitrate_allocation",
    "../video:video_frame",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_static_library("builtin_video_decoder_factory") {
  visibility = [ "*" ]
  allow_poison = [
    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
    "software_video_codecs",
  ]
  sources = [
    "builtin_video_decoder_factory.cc",
    "builtin_video_decoder_factory.h",
  ]

  deps = [
    ":video_codecs_api",
    "../../media:rtc_internal_video_codecs",
    "../../rtc_base:ptr_util",
    "//third_party/abseil-cpp/absl/memory",
  ]
}

rtc_static_library("builtin_video_encoder_factory") {
  visibility = [ "*" ]
  allow_poison = [
    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
    "software_video_codecs",
  ]
  sources = [
    "builtin_video_encoder_factory.cc",
    "builtin_video_encoder_factory.h",
  ]

  deps = [
    ":video_codecs_api",
    "../../media:rtc_internal_video_codecs",
    "../../media:rtc_media_base",
    "../../rtc_base:ptr_util",
    "//third_party/abseil-cpp/absl/memory",
  ]
}

rtc_static_library("rtc_software_fallback_wrappers") {
  visibility = [ "*" ]

  sources = [
    "video_decoder_software_fallback_wrapper.cc",
    "video_decoder_software_fallback_wrapper.h",
    "video_encoder_software_fallback_wrapper.cc",
    "video_encoder_software_fallback_wrapper.h",
  ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_codecs_api",
    "../../media:rtc_h264_profile_id",
    "../../media:rtc_media_base",
    "../../modules/video_coding:video_codec_interface",
    "../../rtc_base:checks",
    "../../rtc_base:rtc_base_approved",
    "../../rtc_base/system:fallthrough",
    "../../system_wrappers:field_trial",
    "../video:video_bitrate_allocation",
    "//third_party/abseil-cpp/absl/memory",
  ]
}
