# 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_capturer.cc",
    "../video_engine/vie_capturer.h",
    "../video_engine/vie_channel.cc",
    "../video_engine/vie_channel.h",
    "../video_engine/vie_channel_group.cc",
    "../video_engine/vie_channel_group.h",
    "../video_engine/vie_defines.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",
    "audio_receive_stream.cc",
    "audio_receive_stream.h",
    "call.cc",
    "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",
    "transport_adapter.cc",
    "transport_adapter.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 = [
    "..:webrtc_common",
    "../common_video",
    "../modules/bitrate_controller",
    "../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",
  ]
}
