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 // Interface to the rtp receiver.
      6 
      7 #ifndef MEDIA_CAST_RTP_RECEIVER_RTP_RECEIVER_H_
      8 #define MEDIA_CAST_RTP_RECEIVER_RTP_RECEIVER_H_
      9 
     10 #include "base/memory/scoped_ptr.h"
     11 #include "media/cast/cast_config.h"
     12 #include "media/cast/rtcp/rtcp.h"
     13 #include "media/cast/rtp_receiver/rtp_receiver_defines.h"
     14 
     15 namespace media {
     16 namespace cast {
     17 
     18 class RtpData {
     19  public:
     20   virtual void OnReceivedPayloadData(const uint8* payload_data,
     21                                      size_t payload_size,
     22                                      const RtpCastHeader* rtp_header) = 0;
     23 
     24  protected:
     25   virtual ~RtpData() {}
     26 };
     27 
     28 class ReceiverStats;
     29 class RtpParser;
     30 
     31 class RtpReceiver {
     32  public:
     33   RtpReceiver(base::TickClock* clock,
     34               const AudioReceiverConfig* audio_config,
     35               const VideoReceiverConfig* video_config,
     36               RtpData* incoming_payload_callback);
     37   ~RtpReceiver();
     38 
     39   static uint32 GetSsrcOfSender(const uint8* rtcp_buffer, size_t length);
     40 
     41   bool ReceivedPacket(const uint8* packet, size_t length);
     42 
     43   void GetStatistics(uint8* fraction_lost,
     44                      uint32* cumulative_lost,  // 24 bits valid.
     45                      uint32* extended_high_sequence_number,
     46                      uint32* jitter);
     47 
     48  private:
     49   scoped_ptr<ReceiverStats> stats_;
     50   scoped_ptr<RtpParser> parser_;
     51 };
     52 
     53 }  // namespace cast
     54 }  // namespace media
     55 
     56 #endif  // MEDIA_CAST_RTP_RECEIVER_RTP_RECEIVER_H_
     57