Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Side by Side Diff: media/cast/rtcp/rtcp_receiver.h

Issue 388663003: Cast: Reshuffle files under media/cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: missing includes Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/cast/rtcp/rtcp_defines.cc ('k') | media/cast/rtcp/rtcp_receiver.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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_RECEIVER_H_
6 #define MEDIA_CAST_RTCP_RTCP_RECEIVER_H_
7
8 #include <queue>
9
10 #include "base/containers/hash_tables.h"
11 #include "media/cast/rtcp/rtcp.h"
12 #include "media/cast/rtcp/rtcp_defines.h"
13 #include "media/cast/rtcp/rtcp_utility.h"
14 #include "media/cast/transport/cast_transport_defines.h"
15
16 namespace media {
17 namespace cast {
18
19 class RtcpReceiverFeedback {
20 public:
21 virtual void OnReceivedSenderReport(
22 const transport::RtcpSenderInfo& remote_sender_info) = 0;
23
24 virtual void OnReceiverReferenceTimeReport(
25 const RtcpReceiverReferenceTimeReport& remote_time_report) = 0;
26
27 virtual void OnReceivedSendReportRequest() = 0;
28
29 virtual void OnReceivedReceiverLog(
30 const RtcpReceiverLogMessage& receiver_log) = 0;
31
32 virtual ~RtcpReceiverFeedback() {}
33 };
34
35 class RtcpRttFeedback {
36 public:
37 virtual void OnReceivedDelaySinceLastReport(
38 uint32 receivers_ssrc,
39 uint32 last_report,
40 uint32 delay_since_last_report) = 0;
41
42 virtual ~RtcpRttFeedback() {}
43 };
44
45 class RtcpReceiver {
46 public:
47 explicit RtcpReceiver(scoped_refptr<CastEnvironment> cast_environment,
48 RtcpSenderFeedback* sender_feedback,
49 RtcpReceiverFeedback* receiver_feedback,
50 RtcpRttFeedback* rtt_feedback,
51 uint32 local_ssrc);
52 virtual ~RtcpReceiver();
53
54 void SetRemoteSSRC(uint32 ssrc);
55
56 // Set the history size to record Cast receiver events. Event history is
57 // used to remove duplicates. The history has no more than |size| events.
58 void SetCastReceiverEventHistorySize(size_t size);
59
60 void IncomingRtcpPacket(RtcpParser* rtcp_parser);
61
62 private:
63 void HandleSenderReport(RtcpParser* rtcp_parser);
64
65 void HandleReceiverReport(RtcpParser* rtcp_parser);
66
67 void HandleReportBlock(const RtcpField* rtcp_field, uint32 remote_ssrc);
68
69 void HandleSDES(RtcpParser* rtcp_parser);
70 void HandleSDESChunk(RtcpParser* rtcp_parser);
71
72 void HandleBYE(RtcpParser* rtcp_parser);
73
74 void HandleXr(RtcpParser* rtcp_parser);
75 void HandleRrtr(RtcpParser* rtcp_parser, uint32 remote_ssrc);
76 void HandleDlrr(RtcpParser* rtcp_parser);
77
78 // Generic RTP Feedback.
79 void HandleNACK(RtcpParser* rtcp_parser);
80 void HandleNACKItem(const RtcpField* rtcp_field,
81 std::list<uint16>* nack_sequence_numbers);
82
83 void HandleSendReportRequest(RtcpParser* rtcp_parser);
84
85 // Payload-specific.
86 void HandlePLI(RtcpParser* rtcp_parser);
87
88 void HandleSLI(RtcpParser* rtcp_parser);
89 void HandleSLIItem(RtcpField* rtcpPacket);
90
91 void HandleRpsi(RtcpParser* rtcp_parser);
92
93 void HandleFIR(RtcpParser* rtcp_parser);
94 void HandleFIRItem(const RtcpField* rtcp_field);
95
96 void HandlePayloadSpecificApp(RtcpParser* rtcp_parser);
97 void HandlePayloadSpecificRembItem(RtcpParser* rtcp_parser);
98 void HandlePayloadSpecificCastItem(RtcpParser* rtcp_parser);
99 void HandlePayloadSpecificCastNackItem(
100 const RtcpField* rtcp_field,
101 MissingFramesAndPacketsMap* missing_frames_and_packets);
102
103 void HandleApplicationSpecificCastReceiverLog(RtcpParser* rtcp_parser);
104 void HandleApplicationSpecificCastSenderLog(RtcpParser* rtcp_parser);
105 void HandleApplicationSpecificCastReceiverEventLog(
106 uint32 frame_rtp_timestamp,
107 RtcpParser* rtcp_parser,
108 RtcpReceiverEventLogMessages* event_log_messages);
109
110 const uint32 ssrc_;
111 uint32 remote_ssrc_;
112
113 // Not owned by this class.
114 RtcpSenderFeedback* const sender_feedback_;
115 RtcpReceiverFeedback* const receiver_feedback_;
116 RtcpRttFeedback* const rtt_feedback_;
117 scoped_refptr<CastEnvironment> cast_environment_;
118
119 transport::FrameIdWrapHelper ack_frame_id_wrap_helper_;
120
121 // Maintains a history of receiver events.
122 size_t receiver_event_history_size_;
123 typedef std::pair<uint64, uint64> ReceiverEventKey;
124 base::hash_set<ReceiverEventKey> receiver_event_key_set_;
125 std::queue<ReceiverEventKey> receiver_event_key_queue_;
126
127 DISALLOW_COPY_AND_ASSIGN(RtcpReceiver);
128 };
129
130 } // namespace cast
131 } // namespace media
132
133 #endif // MEDIA_CAST_RTCP_RTCP_RECEIVER_H_
OLDNEW
« no previous file with comments | « media/cast/rtcp/rtcp_defines.cc ('k') | media/cast/rtcp/rtcp_receiver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698