# Copyright (c) 2022 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("decode_time_percentile_filter") {
  sources = [
    "decode_time_percentile_filter.cc",
    "decode_time_percentile_filter.h",
  ]
  deps = [ "../../../rtc_base:rtc_numerics" ]
}

rtc_library("inter_frame_delay_variation_calculator") {
  sources = [
    "inter_frame_delay_variation_calculator.cc",
    "inter_frame_delay_variation_calculator.h",
  ]
  deps = [
    "../..:module_api_public",
    "../../../api/units:frequency",
    "../../../api/units:time_delta",
    "../../../api/units:timestamp",
    "../../../rtc_base:rtc_numerics",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("frame_delay_variation_kalman_filter") {
  sources = [
    "frame_delay_variation_kalman_filter.cc",
    "frame_delay_variation_kalman_filter.h",
  ]
  deps = [
    "../../../api/units:data_size",
    "../../../api/units:time_delta",
  ]
  visibility = [
    ":jitter_estimator",
    ":timing_unittests",
  ]
}

rtc_library("jitter_estimator") {
  sources = [
    "jitter_estimator.cc",
    "jitter_estimator.h",
  ]
  deps = [
    ":frame_delay_variation_kalman_filter",
    ":rtt_filter",
    "../../../api:field_trials_view",
    "../../../api/units:data_size",
    "../../../api/units:frequency",
    "../../../api/units:time_delta",
    "../../../api/units:timestamp",
    "../../../rtc_base:checks",
    "../../../rtc_base:logging",
    "../../../rtc_base:rolling_accumulator",
    "../../../rtc_base:rtc_numerics",
    "../../../rtc_base:safe_conversions",
    "../../../rtc_base/experiments:field_trial_parser",
    "../../../system_wrappers",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("rtt_filter") {
  sources = [
    "rtt_filter.cc",
    "rtt_filter.h",
  ]
  deps = [ "../../../api/units:time_delta" ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
  ]
}

rtc_library("timestamp_extrapolator") {
  sources = [
    "timestamp_extrapolator.cc",
    "timestamp_extrapolator.h",
  ]
  deps = [
    "../../../api/units:timestamp",
    "../../../modules:module_api_public",
    "../../../rtc_base:rtc_numerics",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("timing_module") {
  sources = [
    "timing.cc",
    "timing.h",
  ]
  deps = [
    ":decode_time_percentile_filter",
    ":timestamp_extrapolator",
    "../../../api:field_trials_view",
    "../../../api/units:time_delta",
    "../../../api/video:video_frame",
    "../../../api/video:video_rtp_headers",
    "../../../rtc_base:logging",
    "../../../rtc_base:macromagic",
    "../../../rtc_base:rtc_numerics",
    "../../../rtc_base/experiments:field_trial_parser",
    "../../../rtc_base/synchronization:mutex",
    "../../../system_wrappers",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("timing_unittests") {
  testonly = true
  sources = [
    "frame_delay_variation_kalman_filter_unittest.cc",
    "inter_frame_delay_variation_calculator_unittest.cc",
    "jitter_estimator_unittest.cc",
    "rtt_filter_unittest.cc",
    "timestamp_extrapolator_unittest.cc",
    "timing_unittest.cc",
  ]
  deps = [
    ":frame_delay_variation_kalman_filter",
    ":inter_frame_delay_variation_calculator",
    ":jitter_estimator",
    ":rtt_filter",
    ":timestamp_extrapolator",
    ":timing_module",
    "../../../api:array_view",
    "../../../api:field_trials",
    "../../../api/units:data_size",
    "../../../api/units:frequency",
    "../../../api/units:time_delta",
    "../../../api/units:timestamp",
    "../../../rtc_base:histogram_percentile_counter",
    "../../../rtc_base:timeutils",
    "../../../system_wrappers:system_wrappers",
    "../../../test:scoped_key_value_config",
    "../../../test:test_support",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}
