1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MEDIA_CAST_RTP_RECEIVER_RECEIVER_STATS_H_ 6 #define MEDIA_CAST_RTP_RECEIVER_RECEIVER_STATS_H_ 7 8 #include "base/time/tick_clock.h" 9 #include "base/time/time.h" 10 #include "media/cast/rtp_receiver/rtp_receiver_defines.h" 11 12 namespace media { 13 namespace cast { 14 15 class ReceiverStats { 16 public: 17 explicit ReceiverStats(base::TickClock* clock); 18 ~ReceiverStats(); 19 20 void GetStatistics(uint8* fraction_lost, 21 uint32* cumulative_lost, // 24 bits valid. 22 uint32* extended_high_sequence_number, 23 uint32* jitter); 24 void UpdateStatistics(const RtpCastHeader& header); 25 26 private: 27 base::TickClock* const clock_; // Not owned by this class. 28 29 // Global metrics. 30 uint16 min_sequence_number_; 31 uint16 max_sequence_number_; 32 uint32 total_number_packets_; 33 uint16 sequence_number_cycles_; 34 base::TimeDelta last_received_timestamp_; 35 base::TimeTicks last_received_packet_time_; 36 base::TimeDelta jitter_; 37 38 // Intermediate metrics - between RTCP reports. 39 int interval_min_sequence_number_; 40 int interval_number_packets_; 41 int interval_wrap_count_; 42 }; 43 44 } // namespace cast 45 } // namespace media 46 47 #endif // MEDIA_CAST_RTP_RECEIVER_RECEIVER_STATS_H_ 48