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/rtcp/rtcp.h"
     11 #include "media/cast/rtp_receiver/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