Index: media/cast/net/rtcp/rtcp_builder.h |
diff --git a/media/cast/net/rtcp/rtcp_builder.h b/media/cast/net/rtcp/rtcp_builder.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8e1507b63404790a03c0110536f9d4184ac2fb09 |
--- /dev/null |
+++ b/media/cast/net/rtcp/rtcp_builder.h |
@@ -0,0 +1,78 @@ |
+// Copyright 2013 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_NET_RTCP_SENDER_H_ |
+#define MEDIA_CAST_NET_RTCP_NET_RTCP_SENDER_H_ |
+ |
+#include <list> |
+#include <string> |
+ |
+#include "media/cast/cast_config.h" |
+#include "media/cast/cast_defines.h" |
+#include "media/cast/rtcp/rtcp.h" |
+#include "media/cast/rtcp/rtcp_defines.h" |
+ |
+namespace media { |
+namespace cast { |
+ |
+class RtcpBuilder { |
+ public: |
+ RtcpBuilder(PacedPacketSender* const paced_packet_sender, |
+ uint32 sending_ssrc, |
+ const std::string& c_name); |
+ |
+ virtual ~RtcpBuilder(); |
+ |
+ void SendRtcpFromRtpSender(uint32 packet_type_flags, |
+ const RtcpSenderInfo* sender_info, |
+ const RtcpDlrrReportBlock* dlrr, |
+ RtcpSenderLogMessage* sender_log); |
+ |
+ enum RtcpPacketType { |
+ kRtcpSr = 0x0002, |
+ kRtcpRr = 0x0004, |
+ kRtcpBye = 0x0008, |
+ kRtcpPli = 0x0010, |
+ kRtcpNack = 0x0020, |
+ kRtcpFir = 0x0040, |
+ kRtcpSrReq = 0x0200, |
+ kRtcpDlrr = 0x0400, |
+ kRtcpRrtr = 0x0800, |
+ kRtcpRpsi = 0x8000, |
+ kRtcpRemb = 0x10000, |
+ kRtcpCast = 0x20000, |
+ kRtcpSenderLog = 0x40000, |
+ kRtcpReceiverLog = 0x80000, |
+ }; |
+ |
+ private: |
+ void BuildSR(const RtcpSenderInfo& sender_info, |
+ const RtcpReportBlock* report_block, |
+ std::vector<uint8>* packet) const; |
+ |
+ void AddReportBlocks(const RtcpReportBlock& report_block, |
+ std::vector<uint8>* packet) const; |
+ |
+ void BuildSdec(std::vector<uint8>* packet) const; |
+ |
+ void BuildBye(std::vector<uint8>* packet) const; |
+ |
+ void BuildDlrrRb(const RtcpDlrrReportBlock* dlrr, |
+ std::vector<uint8>* packet) const; |
+ void BuildSenderLog(RtcpSenderLogMessage* sender_log_message, |
+ std::vector<uint8>* packet) const; |
+ |
+ const uint32 ssrc_; |
+ const std::string c_name_; |
+ |
+ // Not owned by this class. |
+ PacedPacketSender* transport_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RtcpBuilder); |
+}; |
+ |
+} // namespace cast |
+} // namespace media |
+ |
+#endif // MEDIA_CAST_NET_RTCP_NET_RTCP_SENDER_H_ |