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

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

Issue 513313004: Cast: Re-factor rtcp_sender.cc into rtcp_builder.cc and do some cleanup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed leaky and unused testing_clock_ Created 6 years, 3 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
« no previous file with comments | « media/cast/net/rtcp/rtcp_builder_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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
6 #define MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
7
8 #include <deque>
9 #include <list>
10 #include <string>
11
12 #include "media/cast/cast_config.h"
13 #include "media/cast/cast_defines.h"
14 #include "media/cast/net/cast_transport_defines.h"
15 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h"
16 #include "media/cast/net/rtcp/rtcp_defines.h"
17
18 namespace media {
19 namespace cast {
20
21 // We limit the size of receiver logs to avoid queuing up packets.
22 const size_t kMaxReceiverLogBytes = 200;
23
24 // The determines how long to hold receiver log events, based on how
25 // many "receiver log message reports" ago the events were sent.
26 const size_t kReceiveLogMessageHistorySize = 20;
27
28 // This determines when to send events the second time.
29 const size_t kFirstRedundancyOffset = 10;
30 COMPILE_ASSERT(kFirstRedundancyOffset > 0 &&
31 kFirstRedundancyOffset <= kReceiveLogMessageHistorySize,
32 redundancy_offset_out_of_range);
33
34 // When to send events the third time.
35 const size_t kSecondRedundancyOffset = 20;
36 COMPILE_ASSERT(kSecondRedundancyOffset >
37 kFirstRedundancyOffset && kSecondRedundancyOffset <=
38 kReceiveLogMessageHistorySize,
39 redundancy_offset_out_of_range);
40
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.
45 class RtcpSender {
46 public:
47 RtcpSender(PacedPacketSender* outgoing_transport,
48 uint32 sending_ssrc);
49 ~RtcpSender();
50
51 // TODO(hclam): This method should be to build a packet instead of
52 // sending it.
53 void SendRtcpFromRtpReceiver(
54 const RtcpReportBlock* report_block,
55 const RtcpReceiverReferenceTimeReport* rrtr,
56 const RtcpCastMessage* cast_message,
57 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap* rtcp_events,
58 base::TimeDelta target_delay);
59
60 // TODO(hclam): This method should be to build a packet instead of
61 // sending it.
62 void SendRtcpFromRtpSender(const RtcpSenderInfo& sender_info);
63
64 private:
65 void BuildRR(const RtcpReportBlock* report_block,
66 Packet* packet) const;
67
68 void AddReportBlocks(const RtcpReportBlock& report_block,
69 Packet* packet) const;
70
71 void BuildRrtr(const RtcpReceiverReferenceTimeReport* rrtr,
72 Packet* packet) const;
73
74 void BuildCast(const RtcpCastMessage* cast_message,
75 base::TimeDelta target_delay,
76 Packet* packet) const;
77
78 void BuildSR(const RtcpSenderInfo& sender_info, Packet* packet) const;
79
80 void BuildDlrrRb(const RtcpDlrrReportBlock& dlrr, Packet* packet) const;
81
82 void BuildReceiverLog(
83 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events,
84 Packet* packet);
85
86 bool BuildRtcpReceiverLogMessage(
87 const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events,
88 size_t start_size,
89 RtcpReceiverLogMessage* receiver_log_message,
90 size_t* number_of_frames,
91 size_t* total_number_of_messages_to_send,
92 size_t* rtcp_log_size);
93
94 const uint32 ssrc_;
95
96 // Not owned by this class.
97 PacedPacketSender* const transport_;
98
99 std::deque<RtcpReceiverLogMessage> rtcp_events_history_;
100
101 DISALLOW_COPY_AND_ASSIGN(RtcpSender);
102 };
103
104 } // namespace cast
105 } // namespace media
106
107 #endif // MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
OLDNEW
« no previous file with comments | « media/cast/net/rtcp/rtcp_builder_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