# 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")

source_set("video") {
  sources = [
    "../video_engine/call_stats.cc",
    "../video_engine/call_stats.h",
    "../video_engine/encoder_state_feedback.cc",
    "../video_engine/encoder_state_feedback.h",
    "../video_engine/overuse_frame_detector.cc",
    "../video_engine/overuse_frame_detector.h",
    "../video_engine/payload_router.cc",
    "../video_engine/payload_router.h",
    "../video_engine/report_block_stats.cc",
    "../video_engine/report_block_stats.h",
    "../video_engine/stream_synchronization.cc",
    "../video_engine/stream_synchronization.h",
    "../video_engine/vie_channel.cc",
    "../video_engine/vie_channel.h",
    "../video_engine/vie_encoder.cc",
    "../video_engine/vie_encoder.h",
    "../video_engine/vie_receiver.cc",
    "../video_engine/vie_receiver.h",
    "../video_engine/vie_remb.cc",
    "../video_engine/vie_remb.h",
    "../video_engine/vie_sync_module.cc",
    "../video_engine/vie_sync_module.h",
    "encoded_frame_callback_adapter.cc",
    "encoded_frame_callback_adapter.h",
    "receive_statistics_proxy.cc",
    "receive_statistics_proxy.h",
    "send_statistics_proxy.cc",
    "send_statistics_proxy.h",
    "video_capture_input.cc",
    "video_capture_input.h",
    "video_decoder.cc",
    "video_encoder.cc",
    "video_receive_stream.cc",
    "video_receive_stream.h",
    "video_send_stream.cc",
    "video_send_stream.h",
  ]

  configs += [ "..:common_config" ]
  public_configs = [ "..:common_inherited_config" ]

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

  deps = [
    "..:rtc_event_log",
    "..:webrtc_common",
    "../common_video",
    "../modules/bitrate_controller",
    "../modules/pacing",
    "../modules/rtp_rtcp",
    "../modules/utility",
    "../modules/video_capture:video_capture_module",
    "../modules/video_coding",
    "../modules/video_processing",
    "../modules/video_render:video_render_module",
    "../voice_engine",
    "../system_wrappers",
  ]
}
