| /* |
| * 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. |
| */ |
| |
| #ifndef MODULES_AUDIO_PROCESSING_AEC3_API_CALL_JITTER_METRICS_H_ |
| #define MODULES_AUDIO_PROCESSING_AEC3_API_CALL_JITTER_METRICS_H_ |
| |
| namespace webrtc { |
| |
| // Stores data for reporting metrics on the API call jitter. |
| class ApiCallJitterMetrics { |
| public: |
| class Jitter { |
| public: |
| Jitter(); |
| void Update(int num_api_calls_in_a_row); |
| void Reset(); |
| |
| int min() const { return min_; } |
| int max() const { return max_; } |
| |
| private: |
| int max_; |
| int min_; |
| }; |
| |
| ApiCallJitterMetrics() { Reset(); } |
| |
| // Update metrics for render API call. |
| void ReportRenderCall(); |
| |
| // Update and periodically report metrics for capture API call. |
| void ReportCaptureCall(); |
| |
| // Methods used only for testing. |
| const Jitter& render_jitter() const { return render_jitter_; } |
| const Jitter& capture_jitter() const { return capture_jitter_; } |
| bool WillReportMetricsAtNextCapture() const; |
| |
| private: |
| void Reset(); |
| |
| Jitter render_jitter_; |
| Jitter capture_jitter_; |
| |
| int num_api_calls_in_a_row_ = 0; |
| int frames_since_last_report_ = 0; |
| bool last_call_was_render_ = false; |
| bool proper_call_observed_ = false; |
| }; |
| |
| } // namespace webrtc |
| |
| #endif // MODULES_AUDIO_PROCESSING_AEC3_API_CALL_JITTER_METRICS_H_ |