Index: webrtc/video/send_statistics_proxy.h |
diff --git a/webrtc/video/send_statistics_proxy.h b/webrtc/video/send_statistics_proxy.h |
index 956a8f6fe92d1b98728dd87d69dfff166a8cafa8..d0baa5326c5184a38dab0f115876def65952adde 100644 |
--- a/webrtc/video/send_statistics_proxy.h |
+++ b/webrtc/video/send_statistics_proxy.h |
@@ -47,7 +47,7 @@ class SendStatisticsProxy : public CpuOveruseMetricsObserver, |
virtual void OnSendEncodedImage(const EncodedImage& encoded_image, |
const RTPVideoHeader* rtp_video_header); |
// Used to update incoming frame rate. |
- void OnIncomingFrame(); |
+ void OnIncomingFrame(int width, int height); |
// From VideoEncoderRateObserver. |
void OnSetRates(uint32_t bitrate_bps, int framerate) override; |
@@ -61,7 +61,7 @@ class SendStatisticsProxy : public CpuOveruseMetricsObserver, |
void StatisticsUpdated(const RtcpStatistics& statistics, |
uint32_t ssrc) override; |
void CNameChanged(const char* cname, uint32_t ssrc) override; |
- // From RtcpPacketTypeCounterObserver |
+ // From RtcpPacketTypeCounterObserver. |
void RtcpPacketTypesCounterUpdated( |
uint32_t ssrc, |
const RtcpPacketTypeCounter& packet_counter) override; |
@@ -90,6 +90,20 @@ class SendStatisticsProxy : public CpuOveruseMetricsObserver, |
uint32_t ssrc) override; |
private: |
+ struct SampleCounter { |
+ SampleCounter() : sum(0), num(0) {} |
+ void Add(int sample) { |
+ sum += sample; |
+ ++num; |
+ } |
+ int Avg(int min_required_samples) const { |
+ if (num < min_required_samples || num == 0) return -1; |
+ return sum / num; |
+ } |
+ private: |
+ int sum; |
+ int num; |
+ }; |
struct StatsUpdateTimes { |
StatsUpdateTimes() : resolution_update_ms(0) {} |
int64_t resolution_update_ms; |
@@ -109,6 +123,13 @@ class SendStatisticsProxy : public CpuOveruseMetricsObserver, |
rtc::RateTracker sent_frame_rate_tracker_total_ GUARDED_BY(crit_); |
uint32_t last_sent_frame_timestamp_ GUARDED_BY(crit_); |
std::map<uint32_t, StatsUpdateTimes> update_times_ GUARDED_BY(crit_); |
+ |
+ int max_sent_width_per_timestamp_ GUARDED_BY(crit_); |
+ int max_sent_height_per_timestamp_ GUARDED_BY(crit_); |
+ SampleCounter input_width_counter_ GUARDED_BY(crit_); |
+ SampleCounter input_height_counter_ GUARDED_BY(crit_); |
+ SampleCounter sent_width_counter_ GUARDED_BY(crit_); |
+ SampleCounter sent_height_counter_ GUARDED_BY(crit_); |
}; |
} // namespace webrtc |