Add histogram stats for number of cpu/quality adapt changes per minute for sent video streams:
- "WebRTC.Video.AdaptChangesPerMinute.Cpu"
- "WebRTC.Video.AdaptChangesPerMinute.Quality"
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2786593003
Cr-Commit-Position: refs/heads/master@{#17535}
diff --git a/webrtc/video/send_statistics_proxy.h b/webrtc/video/send_statistics_proxy.h
index 312186a..23558ab 100644
--- a/webrtc/video/send_statistics_proxy.h
+++ b/webrtc/video/send_statistics_proxy.h
@@ -59,7 +59,7 @@
void OnCpuRestrictedResolutionChanged(bool cpu_restricted_resolution);
void OnQualityRestrictedResolutionChanged(int num_quality_downscales);
- void SetCpuScalingStats(bool cpu_restricted_resolution);
+ void SetCpuScalingStats(int num_cpu_downscales); // -1: disabled.
void SetQualityScalingStats(int num_quality_downscales); // -1: disabled.
void OnEncoderStatsUpdate(uint32_t framerate, uint32_t bitrate);
@@ -144,10 +144,17 @@
bool last_paused_or_resumed;
int64_t last_ms;
};
+ struct StatsTimer {
+ void Start(int64_t now_ms);
+ void Stop(int64_t now_ms);
+ void Restart(int64_t now_ms);
+ int64_t start_ms = -1;
+ int64_t total_ms = 0;
+ };
struct QpCounters {
- SampleCounter vp8; // QP range: 0-127
- SampleCounter vp9; // QP range: 0-255
- SampleCounter h264; // QP range: 0-51
+ SampleCounter vp8; // QP range: 0-127.
+ SampleCounter vp9; // QP range: 0-255.
+ SampleCounter h264; // QP range: 0-51.
};
void PurgeOldStats() EXCLUSIVE_LOCKS_REQUIRED(crit_);
VideoSendStream::StreamStats* GetStatsEntry(uint32_t ssrc)
@@ -207,6 +214,8 @@
RateAccCounter fec_byte_counter_;
int64_t first_rtcp_stats_time_ms_;
int64_t first_rtp_stats_time_ms_;
+ StatsTimer cpu_scaling_timer_;
+ StatsTimer quality_scaling_timer_;
BoolSampleCounter paused_time_counter_;
TargetRateUpdates target_rate_updates_;
ReportBlockStats report_block_stats_;