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 13namespace media { 14namespace cast { 15 16class 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