Home | History | Annotate | Download | only in rtp
      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 // Utility parser for rtp packetizer unittests
      6 #ifndef MEDIA_CAST_NET_RTP_RTP_HEADER_PARSER_H_
      7 #define MEDIA_CAST_NET_RTP_RTP_HEADER_PARSER_H_
      8 
      9 #include "base/basictypes.h"
     10 #include "media/cast/net/cast_transport_defines.h"
     11 
     12 namespace media {
     13 namespace cast {
     14 
     15 // TODO(miu): Kill this and use RtpCastHeader instead.
     16 struct RtpCastTestHeader {
     17   RtpCastTestHeader();
     18   ~RtpCastTestHeader();
     19   // Cast specific.
     20   bool is_key_frame;
     21   uint32 frame_id;
     22   uint16 packet_id;
     23   uint16 max_packet_id;
     24   bool is_reference;  // Set to true if the previous frame is not available,
     25                       // and the reference frame id  is available.
     26   uint32 reference_frame_id;
     27 
     28   // Rtp Generic.
     29   bool marker;
     30   uint16 sequence_number;
     31   uint32 rtp_timestamp;
     32   uint32 ssrc;
     33   int payload_type;
     34   uint8 num_csrcs;
     35   uint8 audio_num_energy;
     36   int header_length;
     37 };
     38 
     39 // TODO(miu): Kill this and use RtpParser instead.
     40 class RtpHeaderParser {
     41  public:
     42   RtpHeaderParser(const uint8* rtpData, size_t rtpDataLength);
     43   ~RtpHeaderParser();
     44 
     45   bool Parse(RtpCastTestHeader* parsed_packet) const;
     46 
     47  private:
     48   bool ParseCommon(RtpCastTestHeader* parsed_packet) const;
     49   bool ParseCast(RtpCastTestHeader* parsed_packet) const;
     50   const uint8* const rtp_data_begin_;
     51   size_t length_;
     52 
     53   mutable FrameIdWrapHelper frame_id_wrap_helper_;
     54   mutable FrameIdWrapHelper reference_frame_id_wrap_helper_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(RtpHeaderParser);
     57 };
     58 
     59 }  // namespace cast
     60 }  // namespace media
     61 
     62 #endif  // MEDIA_CAST_NET_RTP_RTP_HEADER_PARSER_H_
     63