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

Side by Side Diff: media/cast/transport/rtp_sender/rtp_sender.cc

Issue 281453003: Cast: Simplify code path for RTCP sender report (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged Created 6 years, 7 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
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/transport/rtp_sender/rtp_sender.h" 5 #include "media/cast/transport/rtp_sender/rtp_sender.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/rand_util.h" 8 #include "base/rand_util.h"
9 #include "media/cast/transport/cast_transport_defines.h" 9 #include "media/cast/transport/cast_transport_defines.h"
10 #include "media/cast/transport/pacing/paced_sender.h" 10 #include "media/cast/transport/pacing/paced_sender.h"
11 11
12 namespace media { 12 namespace media {
13 namespace cast { 13 namespace cast {
14 namespace transport { 14 namespace transport {
15 15
16 // Schedule the RTP statistics callback every 33mS. As this interval affects the
17 // time offset of the render and playout times, we want it in the same ball park
18 // as the frame rate.
19 static const int kStatsCallbackIntervalMs = 33;
20
21 RtpSender::RtpSender( 16 RtpSender::RtpSender(
22 base::TickClock* clock, 17 base::TickClock* clock,
23 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner, 18 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
24 PacedSender* const transport) 19 PacedSender* const transport)
25 : clock_(clock), 20 : clock_(clock),
26 transport_(transport), 21 transport_(transport),
27 stats_callback_(),
28 transport_task_runner_(transport_task_runner), 22 transport_task_runner_(transport_task_runner),
29 weak_factory_(this) { 23 weak_factory_(this) {
30 // Randomly set sequence number start value. 24 // Randomly set sequence number start value.
31 config_.sequence_number = base::RandInt(0, 65535); 25 config_.sequence_number = base::RandInt(0, 65535);
32 } 26 }
33 27
34 RtpSender::~RtpSender() {} 28 RtpSender::~RtpSender() {}
35 29
36 bool RtpSender::InitializeAudio(const CastTransportAudioConfig& config) { 30 bool RtpSender::InitializeAudio(const CastTransportAudioConfig& config) {
37 storage_.reset(new PacketStorage(config.rtp.max_outstanding_frames)); 31 storage_.reset(new PacketStorage(config.rtp.max_outstanding_frames));
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 } 129 }
136 } 130 }
137 131
138 void RtpSender::UpdateSequenceNumber(Packet* packet) { 132 void RtpSender::UpdateSequenceNumber(Packet* packet) {
139 uint16 new_sequence_number = packetizer_->NextSequenceNumber(); 133 uint16 new_sequence_number = packetizer_->NextSequenceNumber();
140 int index = 2; 134 int index = 2;
141 (*packet)[index] = (static_cast<uint8>(new_sequence_number)); 135 (*packet)[index] = (static_cast<uint8>(new_sequence_number));
142 (*packet)[index + 1] = (static_cast<uint8>(new_sequence_number >> 8)); 136 (*packet)[index + 1] = (static_cast<uint8>(new_sequence_number >> 8));
143 } 137 }
144 138
145 void RtpSender::SubscribeRtpStatsCallback(
146 const CastTransportRtpStatistics& callback) {
147 stats_callback_ = callback;
148 ScheduleNextStatsReport();
149 }
150
151 void RtpSender::ScheduleNextStatsReport() {
152 transport_task_runner_->PostDelayedTask(
153 FROM_HERE,
154 base::Bind(&RtpSender::RtpStatistics, weak_factory_.GetWeakPtr()),
155 base::TimeDelta::FromMilliseconds(kStatsCallbackIntervalMs));
156 }
157
158 void RtpSender::RtpStatistics() {
159 RtcpSenderInfo sender_info;
160 base::TimeTicks time_sent;
161 uint32 rtp_timestamp = 0;
162 packetizer_->LastSentTimestamp(&time_sent, &rtp_timestamp);
163 sender_info.send_packet_count = packetizer_->send_packets_count();
164 sender_info.send_octet_count = packetizer_->send_octet_count();
165 stats_callback_.Run(sender_info, time_sent, rtp_timestamp);
166 ScheduleNextStatsReport();
167 }
168
169 } // namespace transport 139 } // namespace transport
170 } // namespace cast 140 } // namespace cast
171 } // namespace media 141 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/transport/rtp_sender/rtp_sender.h ('k') | media/cast/transport/transport_audio_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698