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

Unified Diff: media/cast/net/rtcp/rtcp_sender.h

Issue 541293004: Revert of 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: 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cast/net/rtcp/rtcp_sender.h
diff --git a/media/cast/net/rtcp/rtcp_sender.h b/media/cast/net/rtcp/rtcp_sender.h
new file mode 100644
index 0000000000000000000000000000000000000000..06b11d4844518188fa65a7ed21a27d3543a79683
--- /dev/null
+++ b/media/cast/net/rtcp/rtcp_sender.h
@@ -0,0 +1,107 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
+#define MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
+
+#include <deque>
+#include <list>
+#include <string>
+
+#include "media/cast/cast_config.h"
+#include "media/cast/cast_defines.h"
+#include "media/cast/net/cast_transport_defines.h"
+#include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h"
+#include "media/cast/net/rtcp/rtcp_defines.h"
+
+namespace media {
+namespace cast {
+
+// We limit the size of receiver logs to avoid queuing up packets.
+const size_t kMaxReceiverLogBytes = 200;
+
+// The determines how long to hold receiver log events, based on how
+// many "receiver log message reports" ago the events were sent.
+const size_t kReceiveLogMessageHistorySize = 20;
+
+// This determines when to send events the second time.
+const size_t kFirstRedundancyOffset = 10;
+COMPILE_ASSERT(kFirstRedundancyOffset > 0 &&
+ kFirstRedundancyOffset <= kReceiveLogMessageHistorySize,
+ redundancy_offset_out_of_range);
+
+// When to send events the third time.
+const size_t kSecondRedundancyOffset = 20;
+COMPILE_ASSERT(kSecondRedundancyOffset >
+ kFirstRedundancyOffset && kSecondRedundancyOffset <=
+ kReceiveLogMessageHistorySize,
+ redundancy_offset_out_of_range);
+
+class PacedPacketSender;
+
+// TODO(hclam): This should be renamed to RtcpPacketBuilder. The function
+// of this class is to only to build a RTCP packet but not to send it.
+class RtcpSender {
+ public:
+ RtcpSender(PacedPacketSender* outgoing_transport,
+ uint32 sending_ssrc);
+ ~RtcpSender();
+
+ // TODO(hclam): This method should be to build a packet instead of
+ // sending it.
+ void SendRtcpFromRtpReceiver(
+ const RtcpReportBlock* report_block,
+ const RtcpReceiverReferenceTimeReport* rrtr,
+ const RtcpCastMessage* cast_message,
+ const ReceiverRtcpEventSubscriber::RtcpEventMultiMap* rtcp_events,
+ base::TimeDelta target_delay);
+
+ // TODO(hclam): This method should be to build a packet instead of
+ // sending it.
+ void SendRtcpFromRtpSender(const RtcpSenderInfo& sender_info);
+
+ private:
+ void BuildRR(const RtcpReportBlock* report_block,
+ Packet* packet) const;
+
+ void AddReportBlocks(const RtcpReportBlock& report_block,
+ Packet* packet) const;
+
+ void BuildRrtr(const RtcpReceiverReferenceTimeReport* rrtr,
+ Packet* packet) const;
+
+ void BuildCast(const RtcpCastMessage* cast_message,
+ base::TimeDelta target_delay,
+ Packet* packet) const;
+
+ void BuildSR(const RtcpSenderInfo& sender_info, Packet* packet) const;
+
+ void BuildDlrrRb(const RtcpDlrrReportBlock& dlrr, Packet* packet) const;
+
+ void BuildReceiverLog(
+ const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events,
+ Packet* packet);
+
+ bool BuildRtcpReceiverLogMessage(
+ const ReceiverRtcpEventSubscriber::RtcpEventMultiMap& rtcp_events,
+ size_t start_size,
+ RtcpReceiverLogMessage* receiver_log_message,
+ size_t* number_of_frames,
+ size_t* total_number_of_messages_to_send,
+ size_t* rtcp_log_size);
+
+ const uint32 ssrc_;
+
+ // Not owned by this class.
+ PacedPacketSender* const transport_;
+
+ std::deque<RtcpReceiverLogMessage> rtcp_events_history_;
+
+ DISALLOW_COPY_AND_ASSIGN(RtcpSender);
+};
+
+} // namespace cast
+} // namespace media
+
+#endif // MEDIA_CAST_NET_RTCP_RTCP_SENDER_H_
« 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