# 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("congestion_controller") {
  sources = [
    "congestion_controller.cc",
    "delay_based_bwe.cc",
    "delay_based_bwe.h",
    "include/congestion_controller.h",
    "probe_bitrate_estimator.cc",
    "probe_bitrate_estimator.h",
    "probe_controller.cc",
    "probe_controller.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 = [
    "../bitrate_controller",
    "../pacing",
    "../remote_bitrate_estimator",
  ]
}
