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

rtc_library("video_adaptation") {
  sources = [
    "balanced_constraint.cc",
    "balanced_constraint.h",
    "bandwidth_quality_scaler_resource.cc",
    "bandwidth_quality_scaler_resource.h",
    "bitrate_constraint.cc",
    "bitrate_constraint.h",
    "encode_usage_resource.cc",
    "encode_usage_resource.h",
    "overuse_frame_detector.cc",
    "overuse_frame_detector.h",
    "pixel_limit_resource.cc",
    "pixel_limit_resource.h",
    "quality_rampup_experiment_helper.cc",
    "quality_rampup_experiment_helper.h",
    "quality_scaler_resource.cc",
    "quality_scaler_resource.h",
    "video_stream_encoder_resource.cc",
    "video_stream_encoder_resource.h",
    "video_stream_encoder_resource_manager.cc",
    "video_stream_encoder_resource_manager.h",
  ]

  deps = [
    "../../api:field_trials_view",
    "../../api:rtp_parameters",
    "../../api:scoped_refptr",
    "../../api:sequence_checker",
    "../../api/adaptation:resource_adaptation_api",
    "../../api/task_queue:task_queue",
    "../../api/units:data_rate",
    "../../api/units:time_delta",
    "../../api/video:video_adaptation",
    "../../api/video:video_frame",
    "../../api/video:video_stream_encoder",
    "../../api/video_codecs:video_codecs_api",
    "../../call/adaptation:resource_adaptation",
    "../../modules/video_coding:video_coding_utility",
    "../../modules/video_coding/svc:scalability_mode_util",
    "../../rtc_base:checks",
    "../../rtc_base:event_tracer",
    "../../rtc_base:logging",
    "../../rtc_base:macromagic",
    "../../rtc_base:refcount",
    "../../rtc_base:rtc_event",
    "../../rtc_base:rtc_numerics",
    "../../rtc_base:safe_conversions",
    "../../rtc_base:stringutils",
    "../../rtc_base:timeutils",
    "../../rtc_base/experiments:balanced_degradation_settings",
    "../../rtc_base/experiments:field_trial_parser",
    "../../rtc_base/experiments:quality_rampup_experiment",
    "../../rtc_base/experiments:quality_scaler_settings",
    "../../rtc_base/synchronization:mutex",
    "../../rtc_base/system:no_unique_address",
    "../../rtc_base/task_utils:repeating_task",
    "../../system_wrappers:field_trial",
    "../../system_wrappers:system_wrappers",
    "../../video:video_stream_encoder_interface",
    "../../video/config:encoder_config",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

if (rtc_include_tests) {
  rtc_library("video_adaptation_tests") {
    testonly = true

    defines = []
    sources = [
      "bitrate_constraint_unittest.cc",
      "overuse_frame_detector_unittest.cc",
      "pixel_limit_resource_unittest.cc",
      "quality_scaler_resource_unittest.cc",
    ]
    deps = [
      ":video_adaptation",
      "../../api:field_trials_view",
      "../../api:scoped_refptr",
      "../../api/task_queue:task_queue",
      "../../api/units:time_delta",
      "../../api/units:timestamp",
      "../../api/video:encoded_image",
      "../../api/video:video_adaptation",
      "../../api/video:video_frame",
      "../../api/video_codecs:scalability_mode",
      "../../api/video_codecs:video_codecs_api",
      "../../call/adaptation:resource_adaptation",
      "../../call/adaptation:resource_adaptation_test_utilities",
      "../../modules/video_coding:video_coding_utility",
      "../../rtc_base:checks",
      "../../rtc_base:logging",
      "../../rtc_base:random",
      "../../rtc_base:rtc_base_tests_utils",
      "../../rtc_base:rtc_event",
      "../../rtc_base:rtc_numerics",
      "../../rtc_base:task_queue_for_test",
      "../../rtc_base:threading",
      "../../test:field_trial",
      "../../test:rtc_expect_death",
      "../../test:scoped_key_value_config",
      "../../test:test_support",
      "../../test/time_controller:time_controller",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/functional:any_invocable",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }
}
