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