# Copyright (c) 2018 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("rtc_api_video_unittests") {
  testonly = true
  sources = [
    "color_space_unittest.cc",
    "video_adaptation_counters_unittest.cc",
    "video_bitrate_allocation_unittest.cc",
  ]
  deps = [
    "..:video_adaptation",
    "..:video_bitrate_allocation",
    "..:video_frame",
    "..:video_rtp_headers",
    "../../../test:test_support",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("mock_recordable_encoded_frame") {
  testonly = true
  visibility = [ "*" ]
  sources = [ "mock_recordable_encoded_frame.h" ]

  deps = [
    "..:recordable_encoded_frame",
    "../../../test:test_support",
  ]
}
