Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / media / cast / rtp_receiver / rtp_parser / rtp_parser.h
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 #ifndef MEDIA_CAST_RTP_RECEIVER_RTP_PARSER_RTP_PARSER_H_
6 #define MEDIA_CAST_RTP_RECEIVER_RTP_PARSER_RTP_PARSER_H_
7
8 #include "media/cast/rtp_receiver/rtp_receiver_defines.h"
9 #include "media/cast/transport/cast_transport_defines.h"
10
11 namespace media {
12 namespace cast {
13
14 class RtpData;
15
16 struct RtpParserConfig {
17   RtpParserConfig() {
18     ssrc = 0;
19     payload_type = 0;
20     audio_channels = 0;
21   }
22
23   uint32 ssrc;
24   int payload_type;
25   transport::AudioCodec audio_codec;
26   transport::VideoCodec video_codec;
27   int audio_channels;
28 };
29
30 class RtpParser {
31  public:
32   RtpParser(RtpData* incoming_payload_callback,
33             const RtpParserConfig parser_config);
34
35   ~RtpParser();
36
37   bool ParsePacket(const uint8* packet, size_t length,
38                    RtpCastHeader* rtp_header);
39
40  private:
41   bool ParseCommon(const uint8* packet, size_t length,
42                    RtpCastHeader* rtp_header);
43
44   bool ParseCast(const uint8* packet, size_t length,
45                  RtpCastHeader* rtp_header);
46
47   RtpData* data_callback_;
48   RtpParserConfig parser_config_;
49   transport::FrameIdWrapHelper frame_id_wrap_helper_;
50   transport::FrameIdWrapHelper reference_frame_id_wrap_helper_;
51 };
52
53 }  // namespace cast
54 }  // namespace media
55
56 #endif  // MEDIA_CAST_RTP_RECEIVER_RTP_PARSER_RTP_PARSER_H_