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