Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / media / cast / rtcp / rtcp_defines.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_RTCP_RTCP_DEFINES_H_
6 #define MEDIA_CAST_RTCP_RTCP_DEFINES_H_
7
8 #include <list>
9 #include <map>
10 #include <set>
11
12 #include "media/cast/cast_config.h"
13 #include "media/cast/cast_defines.h"
14 #include "media/cast/logging/logging_defines.h"
15 #include "media/cast/transport/cast_transport_defines.h"
16
17 namespace media {
18 namespace cast {
19
20 // Handle the per frame ACK and NACK messages.
21 class RtcpCastMessage {
22  public:
23   explicit RtcpCastMessage(uint32 media_ssrc);
24   ~RtcpCastMessage();
25
26   uint32 media_ssrc_;
27   uint32 ack_frame_id_;
28   MissingFramesAndPacketsMap missing_frames_and_packets_;
29 };
30
31 // Log messages from receiver to sender.
32 struct RtcpReceiverEventLogMessage {
33   CastLoggingEvent type;
34   base::TimeTicks event_timestamp;
35   base::TimeDelta delay_delta;
36   uint16 packet_id;
37 };
38
39 typedef std::list<RtcpReceiverEventLogMessage> RtcpReceiverEventLogMessages;
40
41 class RtcpReceiverFrameLogMessage {
42  public:
43   explicit RtcpReceiverFrameLogMessage(uint32 rtp_timestamp);
44   ~RtcpReceiverFrameLogMessage();
45
46   uint32 rtp_timestamp_;
47   RtcpReceiverEventLogMessages event_log_messages_;
48 };
49
50 typedef std::list<RtcpReceiverFrameLogMessage> RtcpReceiverLogMessage;
51
52 struct RtcpRpsiMessage {
53   uint32 remote_ssrc;
54   uint8 payload_type;
55   uint64 picture_id;
56 };
57
58 class RtcpNackMessage {
59  public:
60   RtcpNackMessage();
61   ~RtcpNackMessage();
62
63   uint32 remote_ssrc;
64   std::list<uint16> nack_list;
65 };
66
67 class RtcpRembMessage {
68  public:
69   RtcpRembMessage();
70   ~RtcpRembMessage();
71
72   uint32 remb_bitrate;
73   std::list<uint32> remb_ssrcs;
74 };
75
76 struct RtcpReceiverReferenceTimeReport {
77   uint32 remote_ssrc;
78   uint32 ntp_seconds;
79   uint32 ntp_fraction;
80 };
81
82 inline bool operator==(RtcpReceiverReferenceTimeReport lhs,
83                        RtcpReceiverReferenceTimeReport rhs) {
84   return lhs.remote_ssrc == rhs.remote_ssrc &&
85       lhs.ntp_seconds == rhs.ntp_seconds &&
86       lhs.ntp_fraction == rhs.ntp_fraction;
87 }
88
89 }  // namespace cast
90 }  // namespace media
91
92 #endif  // MEDIA_CAST_RTCP_RTCP_DEFINES_H_