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 12namespace media { 13namespace cast { 14 15// TODO(miu): Kill this and use RtpCastHeader instead. 16struct 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. 40class 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