61 lines
1.6 KiB
C
61 lines
1.6 KiB
C
|
/*
|
||
|
* 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_
|