# Copyright (c) 2014 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("../../build/webrtc.gni")

rtc_static_library("video_coding") {
  sources = [
    "codec_database.cc",
    "codec_database.h",
    "codec_timer.cc",
    "codec_timer.h",
    "decoding_state.cc",
    "decoding_state.h",
    "encoded_frame.cc",
    "encoded_frame.h",
    "fec_tables_xor.h",
    "frame_buffer.cc",
    "frame_buffer.h",
    "frame_buffer2.cc",
    "frame_buffer2.h",
    "frame_object.cc",
    "frame_object.h",
    "generic_decoder.cc",
    "generic_decoder.h",
    "generic_encoder.cc",
    "generic_encoder.h",
    "histogram.cc",
    "histogram.h",
    "include/video_coding.h",
    "include/video_coding_defines.h",
    "inter_frame_delay.cc",
    "inter_frame_delay.h",
    "internal_defines.h",
    "jitter_buffer.cc",
    "jitter_buffer.h",
    "jitter_buffer_common.h",
    "jitter_estimator.cc",
    "jitter_estimator.h",
    "media_opt_util.cc",
    "media_opt_util.h",
    "media_optimization.cc",
    "media_optimization.h",
    "nack_fec_tables.h",
    "nack_module.cc",
    "nack_module.h",
    "packet.cc",
    "packet.h",
    "packet_buffer.cc",
    "packet_buffer.h",
    "percentile_filter.cc",
    "percentile_filter.h",
    "protection_bitrate_calculator.cc",
    "protection_bitrate_calculator.h",
    "receiver.cc",
    "receiver.h",
    "rtp_frame_reference_finder.cc",
    "rtp_frame_reference_finder.h",
    "rtt_filter.cc",
    "rtt_filter.h",
    "session_info.cc",
    "session_info.h",
    "timestamp_map.cc",
    "timestamp_map.h",
    "timing.cc",
    "timing.h",
    "video_coding_impl.cc",
    "video_coding_impl.h",
    "video_receiver.cc",
    "video_sender.cc",
  ]

  # TODO(jschuh): Bug 1348: fix this warning.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  if (is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_coding_utility",
    ":webrtc_h264",
    ":webrtc_i420",
    ":webrtc_vp8",
    ":webrtc_vp9",
    "../..:webrtc_common",
    "../../common_video",
    "../../system_wrappers",
  ]
}

rtc_static_library("video_coding_utility") {
  sources = [
    "utility/frame_dropper.cc",
    "utility/frame_dropper.h",
    "utility/h264_bitstream_parser.cc",
    "utility/h264_bitstream_parser.h",
    "utility/ivf_file_writer.cc",
    "utility/ivf_file_writer.h",
    "utility/moving_average.cc",
    "utility/moving_average.h",
    "utility/qp_parser.cc",
    "utility/qp_parser.h",
    "utility/quality_scaler.cc",
    "utility/quality_scaler.h",
    "utility/simulcast_rate_allocator.cc",
    "utility/simulcast_rate_allocator.h",
    "utility/vp8_header_parser.cc",
    "utility/vp8_header_parser.h",
  ]

  if (is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    "../../common_video",
    "../../system_wrappers",
  ]
}

rtc_static_library("webrtc_h264") {
  sources = [
    "codecs/h264/h264.cc",
    "codecs/h264/include/h264.h",
  ]

  if (is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  defines = []
  deps = [
    "../../system_wrappers",
  ]

  if (is_ios) {
    sources += [ "codecs/h264/h264_objc.mm" ]
    deps += [ ":webrtc_h264_video_toolbox" ]
  }

  if (rtc_use_h264) {
    defines += [ "WEBRTC_USE_H264" ]
    if (rtc_initialize_ffmpeg) {
      defines += [ "WEBRTC_INITIALIZE_FFMPEG" ]
    }
    sources += [
      "codecs/h264/h264_decoder_impl.cc",
      "codecs/h264/h264_decoder_impl.h",
      "codecs/h264/h264_encoder_impl.cc",
      "codecs/h264/h264_encoder_impl.h",
    ]
    deps += [
      "../../common_video",
      "//third_party/ffmpeg:ffmpeg",
      "//third_party/openh264:encoder",
    ]
  }
}

if (is_ios) {
  config("webrtc_h264_video_toolbox_warnings_config") {
    if (is_clang) {
      # TODO(tkchin): Make webrtc_h264_video_toolbox compile with the standard set
      # of warnings.
      # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6307
      cflags = [ "-Wno-thread-safety-analysis" ]
    }
  }

  rtc_static_library("webrtc_h264_video_toolbox") {
    sources = [
      "codecs/h264/h264_video_toolbox_decoder.cc",
      "codecs/h264/h264_video_toolbox_decoder.h",
      "codecs/h264/h264_video_toolbox_encoder.h",
      "codecs/h264/h264_video_toolbox_encoder.mm",
      "codecs/h264/h264_video_toolbox_nalu.cc",
      "codecs/h264/h264_video_toolbox_nalu.h",
    ]

    configs += [
      ":webrtc_h264_video_toolbox_warnings_config",
      "../..:common_objc",
      "//build/config/compiler:enable_arc",
    ]

    deps = [
      "../../sdk:rtc_sdk_common_objc",
    ]

    libs = [
      "CoreFoundation.framework",
      "CoreMedia.framework",
      "CoreVideo.framework",
      "VideoToolbox.framework",
    ]

    if (is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    if (rtc_build_libyuv) {
      deps += [ "$rtc_libyuv_dir" ]
      public_deps = [
        "$rtc_libyuv_dir",
      ]
    } else {
      # Need to add a directory normally exported by libyuv.
      include_dirs = [ "$rtc_libyuv_dir/include" ]
    }
  }
}

rtc_static_library("webrtc_i420") {
  sources = [
    "codecs/i420/i420.cc",
    "codecs/i420/include/i420.h",
  ]

  if (is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    "../../system_wrappers",
  ]
}

rtc_static_library("webrtc_vp8") {
  sources = [
    "codecs/vp8/default_temporal_layers.cc",
    "codecs/vp8/default_temporal_layers.h",
    "codecs/vp8/include/vp8.h",
    "codecs/vp8/include/vp8_common_types.h",
    "codecs/vp8/realtime_temporal_layers.cc",
    "codecs/vp8/reference_picture_selection.cc",
    "codecs/vp8/reference_picture_selection.h",
    "codecs/vp8/screenshare_layers.cc",
    "codecs/vp8/screenshare_layers.h",
    "codecs/vp8/simulcast_encoder_adapter.cc",
    "codecs/vp8/simulcast_encoder_adapter.h",
    "codecs/vp8/temporal_layers.h",
    "codecs/vp8/vp8_impl.cc",
    "codecs/vp8/vp8_impl.h",
  ]

  # TODO(jschuh): Bug 1348: fix this warning.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  if (is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_coding_utility",
    "../..:webrtc_common",
    "../../common_video",
    "../../system_wrappers",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

rtc_static_library("webrtc_vp9") {
  sources = [
    "codecs/vp9/include/vp9.h",
    "codecs/vp9/screenshare_layers.cc",
    "codecs/vp9/screenshare_layers.h",
    "codecs/vp9/vp9_frame_buffer_pool.cc",
    "codecs/vp9/vp9_frame_buffer_pool.h",
    "codecs/vp9/vp9_impl.cc",
    "codecs/vp9/vp9_impl.h",
  ]

  if (is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }

  deps = [
    ":video_coding_utility",
    "../../common_video",
    "../../system_wrappers",
  ]
  if (rtc_build_libvpx) {
    deps += [ rtc_libvpx_dir ]
  }
}

if (rtc_include_tests) {
  rtc_source_set("video_codecs_test_framework") {
    testonly = true
    sources = [
      "codecs/test/mock/mock_packet_manipulator.h",
      "codecs/test/packet_manipulator.cc",
      "codecs/test/packet_manipulator.h",
      "codecs/test/predictive_packet_manipulator.cc",
      "codecs/test/predictive_packet_manipulator.h",
      "codecs/test/stats.cc",
      "codecs/test/stats.h",
      "codecs/test/videoprocessor.cc",
      "codecs/test/videoprocessor.h",
    ]

    if (is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      "../../test:test_support",
    ]
  }
}
