Home | History | Annotate | Download | only in rtp_receiver
      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