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

Side by Side Diff: media/cast/net/rtcp/rtcp_sender.h

Issue 387933005: Cast: Refactor RTCP handling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test 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/net/rtcp/rtcp_receiver_unittest.cc ('k') | media/cast/net/rtcp/rtcp_sender.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_CAST_RTCP_RTCP_SENDER_H_ 5 #ifndef MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
6 #define MEDIA_CAST_RTCP_RTCP_SENDER_H_ 6 #define MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <list> 9 #include <list>
10 #include <string> 10 #include <string>
11 11
12 #include "media/cast/cast_config.h" 12 #include "media/cast/cast_config.h"
13 #include "media/cast/cast_defines.h" 13 #include "media/cast/cast_defines.h"
14 #include "media/cast/net/cast_transport_defines.h" 14 #include "media/cast/net/cast_transport_defines.h"
15 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h" 15 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h"
16 #include "media/cast/net/rtcp/rtcp.h"
17 #include "media/cast/net/rtcp/rtcp_builder.h"
18 #include "media/cast/net/rtcp/rtcp_defines.h" 16 #include "media/cast/net/rtcp/rtcp_defines.h"
19 17
20 namespace media { 18 namespace media {
21 namespace cast { 19 namespace cast {
22 20
23 // We limit the size of receiver logs to avoid queuing up packets. 21 // We limit the size of receiver logs to avoid queuing up packets.
24 const size_t kMaxReceiverLogBytes = 200; 22 const size_t kMaxReceiverLogBytes = 200;
25 23
26 // The determines how long to hold receiver log events, based on how 24 // The determines how long to hold receiver log events, based on how
27 // many "receiver log message reports" ago the events were sent. 25 // many "receiver log message reports" ago the events were sent.
28 const size_t kReceiveLogMessageHistorySize = 20; 26 const size_t kReceiveLogMessageHistorySize = 20;
29 27
30 // This determines when to send events the second time. 28 // This determines when to send events the second time.
31 const size_t kFirstRedundancyOffset = 10; 29 const size_t kFirstRedundancyOffset = 10;
32 COMPILE_ASSERT(kFirstRedundancyOffset > 0 && 30 COMPILE_ASSERT(kFirstRedundancyOffset > 0 &&
33 kFirstRedundancyOffset <= kReceiveLogMessageHistorySize, 31 kFirstRedundancyOffset <= kReceiveLogMessageHistorySize,
34 redundancy_offset_out_of_range); 32 redundancy_offset_out_of_range);
35 33
36 // When to send events the third time. 34 // When to send events the third time.
37 const size_t kSecondRedundancyOffset = 20; 35 const size_t kSecondRedundancyOffset = 20;
38 COMPILE_ASSERT(kSecondRedundancyOffset > 36 COMPILE_ASSERT(kSecondRedundancyOffset >
39 kFirstRedundancyOffset && kSecondRedundancyOffset <= 37 kFirstRedundancyOffset && kSecondRedundancyOffset <=
40 kReceiveLogMessageHistorySize, 38 kReceiveLogMessageHistorySize,
41 redundancy_offset_out_of_range); 39 redundancy_offset_out_of_range);
42 40
43 // TODO(mikhal): Resolve duplication between this and RtcpBuilder. 41 class PacedPacketSender;
42
43 // TODO(hclam): This should be renamed to RtcpPacketBuilder. The function
44 // of this class is to only to build a RTCP packet but not to send it.
44 class RtcpSender { 45 class RtcpSender {
45 public: 46 public:
46 RtcpSender(scoped_refptr<CastEnvironment> cast_environment, 47 RtcpSender(PacedPacketSender* outgoing_transport,
47 PacedPacketSender* outgoing_transport,
48 uint32 sending_ssrc, 48 uint32 sending_ssrc,
49 const std::string& c_name); 49 const std::string& c_name);
50 ~RtcpSender();
50 51
51 virtual ~RtcpSender(); 52 // TODO(hclam): This method should be to build a packet instead of
52 53 // sending it.
53 void SendRtcpFromRtpReceiver( 54 void SendRtcpFromRtpReceiver(
54 uint32 packet_type_flags, 55 uint32 packet_type_flags,
55 const RtcpReportBlock* report_block, 56 const RtcpReportBlock* report_block,
56 const RtcpReceiverReferenceTimeReport* rrtr, 57 const RtcpReceiverReferenceTimeReport* rrtr,
57 const RtcpCastMessage* cast_message, 58 const RtcpCastMessage* cast_message,
58 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap* rtcp_events, 59 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap* rtcp_events,
59 base::TimeDelta target_delay); 60 base::TimeDelta target_delay);
60 61
62 // TODO(hclam): This method should be to build a packet instead of
63 // sending it.
64 void SendRtcpFromRtpSender(uint32 packet_type_flags,
65 const RtcpSenderInfo& sender_info,
66 const RtcpDlrrReportBlock& dlrr);
67
61 private: 68 private:
62 void BuildRR(const RtcpReportBlock* report_block, 69 void BuildRR(const RtcpReportBlock* report_block,
63 Packet* packet) const; 70 Packet* packet) const;
64 71
65 void AddReportBlocks(const RtcpReportBlock& report_block, 72 void AddReportBlocks(const RtcpReportBlock& report_block,
66 Packet* packet) const; 73 Packet* packet) const;
67 74
68 void BuildSdec(Packet* packet) const; 75 void BuildSdec(Packet* packet) const;
69 76
70 void BuildPli(uint32 remote_ssrc, Packet* packet) const; 77 void BuildPli(uint32 remote_ssrc, Packet* packet) const;
71 78
72 void BuildRemb(const RtcpRembMessage* remb, Packet* packet) const; 79 void BuildRemb(const RtcpRembMessage* remb, Packet* packet) const;
73 80
74 void BuildRpsi(const RtcpRpsiMessage* rpsi, Packet* packet) const; 81 void BuildRpsi(const RtcpRpsiMessage* rpsi, Packet* packet) const;
75 82
76 void BuildNack(const RtcpNackMessage* nack, Packet* packet) const; 83 void BuildNack(const RtcpNackMessage* nack, Packet* packet) const;
77 84
78 void BuildBye(Packet* packet) const; 85 void BuildBye(Packet* packet) const;
79 86
80 void BuildRrtr(const RtcpReceiverReferenceTimeReport* rrtr, 87 void BuildRrtr(const RtcpReceiverReferenceTimeReport* rrtr,
81 Packet* packet) const; 88 Packet* packet) const;
82 89
83 void BuildCast(const RtcpCastMessage* cast_message, 90 void BuildCast(const RtcpCastMessage* cast_message,
84 base::TimeDelta target_delay, 91 base::TimeDelta target_delay,
85 Packet* packet) const; 92 Packet* packet) const;
86 93
94 void BuildSR(const RtcpSenderInfo& sender_info, Packet* packet) const;
95
96 void BuildDlrrRb(const RtcpDlrrReportBlock& dlrr, Packet* packet) const;
97
87 void BuildReceiverLog( 98 void BuildReceiverLog(
88 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events, 99 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events,
89 Packet* packet); 100 Packet* packet);
90 101
91 bool BuildRtcpReceiverLogMessage( 102 bool BuildRtcpReceiverLogMessage(
92 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events, 103 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events,
93 size_t start_size, 104 size_t start_size,
94 RtcpReceiverLogMessage* receiver_log_message, 105 RtcpReceiverLogMessage* receiver_log_message,
95 size_t* number_of_frames, 106 size_t* number_of_frames,
96 size_t* total_number_of_messages_to_send, 107 size_t* total_number_of_messages_to_send,
(...skipping 11 matching lines...) Expand all
108 } 119 }
109 } 120 }
110 *mantissa = (bitrate >> *exponent); 121 *mantissa = (bitrate >> *exponent);
111 } 122 }
112 123
113 const uint32 ssrc_; 124 const uint32 ssrc_;
114 const std::string c_name_; 125 const std::string c_name_;
115 126
116 // Not owned by this class. 127 // Not owned by this class.
117 PacedPacketSender* const transport_; 128 PacedPacketSender* const transport_;
118 scoped_refptr<CastEnvironment> cast_environment_;
119 129
120 std::deque<RtcpReceiverLogMessage> rtcp_events_history_; 130 std::deque<RtcpReceiverLogMessage> rtcp_events_history_;
121 131
122 DISALLOW_COPY_AND_ASSIGN(RtcpSender); 132 DISALLOW_COPY_AND_ASSIGN(RtcpSender);
123 }; 133 };
124 134
125 } // namespace cast 135 } // namespace cast
126 } // namespace media 136 } // namespace media
127 #endif // MEDIA_CAST_RTCP_RTCP_SENDER_H_ 137
138 #endif // MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
OLDNEW
« no previous file with comments | « media/cast/net/rtcp/rtcp_receiver_unittest.cc ('k') | media/cast/net/rtcp/rtcp_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698