1 // Copyright 2014 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/net/rtcp/rtcp.h" 11 #include "media/cast/net/rtp/rtp_receiver_defines.h" 12 13 namespace media { 14 namespace cast { 15 16 class ReceiverStats : public RtpReceiverStatistics { 17 public: 18 explicit ReceiverStats(base::TickClock* clock); 19 virtual ~ReceiverStats() OVERRIDE; 20 21 virtual void GetStatistics(uint8* fraction_lost, 22 uint32* cumulative_lost, // 24 bits valid. 23 uint32* extended_high_sequence_number, 24 uint32* jitter) OVERRIDE; 25 void UpdateStatistics(const RtpCastHeader& header); 26 27 private: 28 base::TickClock* const clock_; // Not owned by this class. 29 30 // Global metrics. 31 uint16 min_sequence_number_; 32 uint16 max_sequence_number_; 33 uint32 total_number_packets_; 34 uint16 sequence_number_cycles_; 35 base::TimeDelta last_received_timestamp_; 36 base::TimeTicks last_received_packet_time_; 37 base::TimeDelta jitter_; 38 39 // Intermediate metrics - between RTCP reports. 40 int interval_min_sequence_number_; 41 int interval_number_packets_; 42 int interval_wrap_count_; 43 44 DISALLOW_COPY_AND_ASSIGN(ReceiverStats); 45 }; 46 47 } // namespace cast 48 } // namespace media 49 50 #endif // MEDIA_CAST_RTP_RECEIVER_RECEIVER_STATS_H_ 51