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