# 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_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_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/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",
  ]
}
