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

Side by Side Diff: media/cast/rtcp/rtcp_sender.cc

Issue 100823015: Cast: move net->transport (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updating transport callback Created 6 years, 12 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_sender.h ('k') | media/cast/rtcp/rtcp_sender_unittest.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 2013 The Chromium Authors. All rights reserved. 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 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 #include "media/cast/rtcp/rtcp_sender.h" 5 #include "media/cast/rtcp/rtcp_sender.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "media/cast/cast_environment.h" 11 #include "media/cast/cast_environment.h"
12 #include "media/cast/net/cast_net_defines.h"
13 #include "media/cast/net/pacing/paced_sender.h"
14 #include "media/cast/rtcp/rtcp_utility.h" 12 #include "media/cast/rtcp/rtcp_utility.h"
13 #include "media/cast/transport/cast_transport_defines.h"
14 #include "media/cast/transport/pacing/paced_sender.h"
15 #include "net/base/big_endian.h" 15 #include "net/base/big_endian.h"
16 16
17 static const size_t kRtcpCastLogHeaderSize = 12; 17 static const size_t kRtcpCastLogHeaderSize = 12;
18 static const size_t kRtcpSenderFrameLogSize = 4; 18 static const size_t kRtcpSenderFrameLogSize = 4;
19 static const size_t kRtcpReceiverFrameLogSize = 8; 19 static const size_t kRtcpReceiverFrameLogSize = 8;
20 static const size_t kRtcpReceiverEventLogSize = 4; 20 static const size_t kRtcpReceiverEventLogSize = 4;
21 21
22 namespace { 22 namespace {
23 uint16 MergeEventTypeAndTimestampForWireFormat( 23 uint16 MergeEventTypeAndTimestampForWireFormat(
24 const media::cast::CastLoggingEvent& event, 24 const media::cast::CastLoggingEvent& event,
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 VLOG(1) << "total messages to send " << *total_number_of_messages_to_send; 118 VLOG(1) << "total messages to send " << *total_number_of_messages_to_send;
119 VLOG(1) << "rtcp log size " << *rtcp_log_size; 119 VLOG(1) << "rtcp log size " << *rtcp_log_size;
120 return true; 120 return true;
121 } 121 }
122 } // namespace 122 } // namespace
123 123
124 namespace media { 124 namespace media {
125 namespace cast { 125 namespace cast {
126 126
127 RtcpSender::RtcpSender(scoped_refptr<CastEnvironment> cast_environment, 127 RtcpSender::RtcpSender(scoped_refptr<CastEnvironment> cast_environment,
128 PacedPacketSender* outgoing_transport, 128 transport::PacedPacketSender* outgoing_transport,
129 uint32 sending_ssrc, 129 uint32 sending_ssrc,
130 const std::string& c_name) 130 const std::string& c_name)
131 : ssrc_(sending_ssrc), 131 : ssrc_(sending_ssrc),
132 c_name_(c_name), 132 c_name_(c_name),
133 transport_(outgoing_transport), 133 transport_(outgoing_transport),
134 cast_environment_(cast_environment) { 134 cast_environment_(cast_environment) {
135 DCHECK_LT(c_name_.length(), kRtcpCnameSize) << "Invalid config"; 135 DCHECK_LT(c_name_.length(), kRtcpCnameSize) << "Invalid config";
136 } 136 }
137 137
138 RtcpSender::~RtcpSender() {} 138 RtcpSender::~RtcpSender() {}
139 139
140 void RtcpSender::SendRtcpFromRtpReceiver( 140 void RtcpSender::SendRtcpFromRtpReceiver(
141 uint32 packet_type_flags, 141 uint32 packet_type_flags,
142 const RtcpReportBlock* report_block, 142 const transport::RtcpReportBlock* report_block,
143 const RtcpReceiverReferenceTimeReport* rrtr, 143 const RtcpReceiverReferenceTimeReport* rrtr,
144 const RtcpCastMessage* cast_message, 144 const RtcpCastMessage* cast_message,
145 RtcpReceiverLogMessage* receiver_log) { 145 RtcpReceiverLogMessage* receiver_log) {
146 if (packet_type_flags & kRtcpSr || 146 if (packet_type_flags & kRtcpSr ||
147 packet_type_flags & kRtcpDlrr || 147 packet_type_flags & kRtcpDlrr ||
148 packet_type_flags & kRtcpSenderLog) { 148 packet_type_flags & kRtcpSenderLog) {
149 NOTREACHED() << "Invalid argument"; 149 NOTREACHED() << "Invalid argument";
150 } 150 }
151 if (packet_type_flags & kRtcpPli || 151 if (packet_type_flags & kRtcpPli ||
152 packet_type_flags & kRtcpRpsi || 152 packet_type_flags & kRtcpRpsi ||
(...skipping 24 matching lines...) Expand all
177 } 177 }
178 if (packet_type_flags & kRtcpReceiverLog) { 178 if (packet_type_flags & kRtcpReceiverLog) {
179 DCHECK(receiver_log) << "Invalid argument"; 179 DCHECK(receiver_log) << "Invalid argument";
180 BuildReceiverLog(receiver_log, &packet); 180 BuildReceiverLog(receiver_log, &packet);
181 } 181 }
182 if (packet.empty()) return; // Sanity don't send empty packets. 182 if (packet.empty()) return; // Sanity don't send empty packets.
183 183
184 transport_->SendRtcpPacket(packet); 184 transport_->SendRtcpPacket(packet);
185 } 185 }
186 186
187 void RtcpSender::BuildRR(const RtcpReportBlock* report_block, 187 void RtcpSender::BuildRR(const transport::RtcpReportBlock* report_block,
188 std::vector<uint8>* packet) const { 188 std::vector<uint8>* packet) const {
189 size_t start_size = packet->size(); 189 size_t start_size = packet->size();
190 DCHECK_LT(start_size + 32, kIpPacketSize) << "Not enough buffer space"; 190 DCHECK_LT(start_size + 32, kIpPacketSize) << "Not enough buffer space";
191 if (start_size + 32 > kIpPacketSize) return; 191 if (start_size + 32 > kIpPacketSize) return;
192 192
193 uint16 number_of_rows = (report_block) ? 7 : 1; 193 uint16 number_of_rows = (report_block) ? 7 : 1;
194 packet->resize(start_size + 8); 194 packet->resize(start_size + 8);
195 195
196 net::BigEndianWriter big_endian_writer(&((*packet)[start_size]), 8); 196 net::BigEndianWriter big_endian_writer(&((*packet)[start_size]), 8);
197 big_endian_writer.WriteU8(0x80 + (report_block ? 1 : 0)); 197 big_endian_writer.WriteU8(0x80 + (report_block ? 1 : 0));
198 big_endian_writer.WriteU8(kPacketTypeReceiverReport); 198 big_endian_writer.WriteU8(kPacketTypeReceiverReport);
199 big_endian_writer.WriteU16(number_of_rows); 199 big_endian_writer.WriteU16(number_of_rows);
200 big_endian_writer.WriteU32(ssrc_); 200 big_endian_writer.WriteU32(ssrc_);
201 201
202 if (report_block) { 202 if (report_block) {
203 AddReportBlocks(*report_block, packet); // Adds 24 bytes. 203 AddReportBlocks(*report_block, packet); // Adds 24 bytes.
204 } 204 }
205 } 205 }
206 206
207 void RtcpSender::AddReportBlocks(const RtcpReportBlock& report_block, 207 void RtcpSender::AddReportBlocks(const transport::RtcpReportBlock& report_block,
208 std::vector<uint8>* packet) const { 208 std::vector<uint8>* packet) const {
209 size_t start_size = packet->size(); 209 size_t start_size = packet->size();
210 DCHECK_LT(start_size + 24, kIpPacketSize) << "Not enough buffer space"; 210 DCHECK_LT(start_size + 24, kIpPacketSize) << "Not enough buffer space";
211 if (start_size + 24 > kIpPacketSize) return; 211 if (start_size + 24 > kIpPacketSize) return;
212 212
213 packet->resize(start_size + 24); 213 packet->resize(start_size + 24);
214 214
215 net::BigEndianWriter big_endian_writer(&((*packet)[start_size]), 24); 215 net::BigEndianWriter big_endian_writer(&((*packet)[start_size]), 24);
216 big_endian_writer.WriteU32(report_block.media_ssrc); 216 big_endian_writer.WriteU32(report_block.media_ssrc);
217 big_endian_writer.WriteU8(report_block.fraction_lost); 217 big_endian_writer.WriteU8(report_block.fraction_lost);
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 if (frame_log_messages.event_log_messages_.empty()) { 649 if (frame_log_messages.event_log_messages_.empty()) {
650 // We sent all messages on this frame; pop the frame header. 650 // We sent all messages on this frame; pop the frame header.
651 receiver_log_message->pop_front(); 651 receiver_log_message->pop_front();
652 } 652 }
653 } 653 }
654 DCHECK_EQ(total_number_of_messages_to_send, 0); 654 DCHECK_EQ(total_number_of_messages_to_send, 0);
655 } 655 }
656 656
657 } // namespace cast 657 } // namespace cast
658 } // namespace media 658 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/rtcp/rtcp_sender.h ('k') | media/cast/rtcp/rtcp_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698