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

Side by Side Diff: media/cast/video_sender/video_sender.cc

Issue 69603002: Incorporating logging into Cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clean up Created 7 years, 1 month 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/video_sender/video_sender.h" 5 #include "media/cast/video_sender/video_sender.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 scoped_refptr<CastEnvironment> cast_environment, 52 scoped_refptr<CastEnvironment> cast_environment,
53 const VideoSenderConfig& video_config, 53 const VideoSenderConfig& video_config,
54 VideoEncoderController* const video_encoder_controller, 54 VideoEncoderController* const video_encoder_controller,
55 PacedPacketSender* const paced_packet_sender) 55 PacedPacketSender* const paced_packet_sender)
56 : incoming_feedback_ssrc_(video_config.incoming_feedback_ssrc), 56 : incoming_feedback_ssrc_(video_config.incoming_feedback_ssrc),
57 rtp_max_delay_( 57 rtp_max_delay_(
58 base::TimeDelta::FromMilliseconds(video_config.rtp_max_delay_ms)), 58 base::TimeDelta::FromMilliseconds(video_config.rtp_max_delay_ms)),
59 max_frame_rate_(video_config.max_frame_rate), 59 max_frame_rate_(video_config.max_frame_rate),
60 cast_environment_(cast_environment), 60 cast_environment_(cast_environment),
61 rtcp_feedback_(new LocalRtcpVideoSenderFeedback(this)), 61 rtcp_feedback_(new LocalRtcpVideoSenderFeedback(this)),
62 rtp_sender_(new RtpSender(cast_environment->Clock(), NULL, &video_config, 62 rtp_sender_(new RtpSender(cast_environment, NULL, &video_config,
63 paced_packet_sender)), 63 paced_packet_sender)),
64 last_acked_frame_id_(-1), 64 last_acked_frame_id_(-1),
65 last_sent_frame_id_(-1), 65 last_sent_frame_id_(-1),
66 last_sent_key_frame_id_(-1), 66 last_sent_key_frame_id_(-1),
67 duplicate_ack_(0), 67 duplicate_ack_(0),
68 last_skip_count_(0), 68 last_skip_count_(0),
69 congestion_control_(cast_environment->Clock(), 69 congestion_control_(cast_environment->Clock(),
70 video_config.congestion_control_back_off, 70 video_config.congestion_control_back_off,
71 video_config.max_bitrate, 71 video_config.max_bitrate,
72 video_config.min_bitrate, 72 video_config.min_bitrate,
73 video_config.start_bitrate), 73 video_config.start_bitrate),
74 weak_factory_(this) { 74 weak_factory_(this) {
75 max_unacked_frames_ = static_cast<uint8>(video_config.rtp_max_delay_ms * 75 max_unacked_frames_ = static_cast<uint8>(video_config.rtp_max_delay_ms *
76 video_config.max_frame_rate / 1000) + 1; 76 video_config.max_frame_rate / 1000) + 1;
77 VLOG(1) << "max_unacked_frames " << static_cast<int>(max_unacked_frames_); 77 VLOG(1) << "max_unacked_frames " << static_cast<int>(max_unacked_frames_);
78 DCHECK_GT(max_unacked_frames_, 0) << "Invalid argument"; 78 DCHECK_GT(max_unacked_frames_, 0) << "Invalid argument";
79 79
80 rtp_video_sender_statistics_.reset( 80 rtp_video_sender_statistics_.reset(
81 new LocalRtpVideoSenderStatistics(rtp_sender_.get())); 81 new LocalRtpVideoSenderStatistics(rtp_sender_.get()));
82 82
83 if (video_config.use_external_encoder) { 83 if (video_config.use_external_encoder) {
84 DCHECK(video_encoder_controller) << "Invalid argument"; 84 DCHECK(video_encoder_controller) << "Invalid argument";
85 video_encoder_controller_ = video_encoder_controller; 85 video_encoder_controller_ = video_encoder_controller;
86 } else { 86 } else {
87 video_encoder_ = new VideoEncoder(cast_environment, video_config, 87 video_encoder_ = new VideoEncoder(cast_environment, video_config,
88 max_unacked_frames_); 88 max_unacked_frames_);
89 video_encoder_controller_ = video_encoder_.get(); 89 video_encoder_controller_ = video_encoder_.get();
90 } 90 }
91 rtcp_.reset(new Rtcp( 91 rtcp_.reset(new Rtcp(
92 cast_environment_->Clock(), 92 cast_environment_,
93 rtcp_feedback_.get(), 93 rtcp_feedback_.get(),
94 paced_packet_sender, 94 paced_packet_sender,
95 rtp_video_sender_statistics_.get(), 95 rtp_video_sender_statistics_.get(),
96 NULL, 96 NULL,
97 video_config.rtcp_mode, 97 video_config.rtcp_mode,
98 base::TimeDelta::FromMilliseconds(video_config.rtcp_interval), 98 base::TimeDelta::FromMilliseconds(video_config.rtcp_interval),
99 true, 99 true,
100 video_config.sender_ssrc, 100 video_config.sender_ssrc,
101 video_config.rtcp_c_name)); 101 video_config.rtcp_c_name));
102 102
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 ScheduleNextSkippedFramesCheck(); 242 ScheduleNextSkippedFramesCheck();
243 } 243 }
244 244
245 void VideoSender::OnReceivedCastFeedback(const RtcpCastMessage& cast_feedback) { 245 void VideoSender::OnReceivedCastFeedback(const RtcpCastMessage& cast_feedback) {
246 base::TimeDelta rtt; 246 base::TimeDelta rtt;
247 base::TimeDelta avg_rtt; 247 base::TimeDelta avg_rtt;
248 base::TimeDelta min_rtt; 248 base::TimeDelta min_rtt;
249 base::TimeDelta max_rtt; 249 base::TimeDelta max_rtt;
250 250
251 if (rtcp_->Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)) { 251 if (rtcp_->Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)) {
252 cast_environment_->Logging()->InsertGenericEvent(kRttMs,
253 rtt.InMilliseconds());
252 // Don't use a RTT lower than our average. 254 // Don't use a RTT lower than our average.
253 rtt = std::max(rtt, avg_rtt); 255 rtt = std::max(rtt, avg_rtt);
254 } else { 256 } else {
255 // We have no measured value use default. 257 // We have no measured value use default.
256 rtt = base::TimeDelta::FromMilliseconds(kStartRttMs); 258 rtt = base::TimeDelta::FromMilliseconds(kStartRttMs);
257 } 259 }
258 if (cast_feedback.missing_frames_and_packets_.empty()) { 260 if (cast_feedback.missing_frames_and_packets_.empty()) {
259 // No lost packets. 261 // No lost packets.
260 int resend_frame = -1; 262 int resend_frame = -1;
261 if (last_sent_frame_id_ == -1) return; 263 if (last_sent_frame_id_ == -1) return;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 296
295 uint32 new_bitrate = 0; 297 uint32 new_bitrate = 0;
296 if (congestion_control_.OnNack(rtt, &new_bitrate)) { 298 if (congestion_control_.OnNack(rtt, &new_bitrate)) {
297 video_encoder_controller_->SetBitRate(new_bitrate); 299 video_encoder_controller_->SetBitRate(new_bitrate);
298 } 300 }
299 } 301 }
300 ReceivedAck(cast_feedback.ack_frame_id_); 302 ReceivedAck(cast_feedback.ack_frame_id_);
301 } 303 }
302 304
303 void VideoSender::ReceivedAck(uint8 acked_frame_id) { 305 void VideoSender::ReceivedAck(uint8 acked_frame_id) {
306 cast_environment_->Logging()->InsertGenericEvent(kAckReceived,
307 acked_frame_id);
304 VLOG(1) << "ReceivedAck:" << static_cast<int>(acked_frame_id); 308 VLOG(1) << "ReceivedAck:" << static_cast<int>(acked_frame_id);
305 last_acked_frame_id_ = acked_frame_id; 309 last_acked_frame_id_ = acked_frame_id;
306 UpdateFramesInFlight(); 310 UpdateFramesInFlight();
307 } 311 }
308 312
309 void VideoSender::UpdateFramesInFlight() { 313 void VideoSender::UpdateFramesInFlight() {
310 if (last_sent_frame_id_ != -1) { 314 if (last_sent_frame_id_ != -1) {
311 DCHECK_GE(255, last_sent_frame_id_); 315 DCHECK_GE(255, last_sent_frame_id_);
312 DCHECK_LE(0, last_sent_frame_id_); 316 DCHECK_LE(0, last_sent_frame_id_);
313 uint8 frames_in_flight; 317 uint8 frames_in_flight;
(...skipping 18 matching lines...) Expand all
332 void VideoSender::ResendFrame(uint8 resend_frame_id) { 336 void VideoSender::ResendFrame(uint8 resend_frame_id) {
333 MissingFramesAndPacketsMap missing_frames_and_packets; 337 MissingFramesAndPacketsMap missing_frames_and_packets;
334 PacketIdSet missing; 338 PacketIdSet missing;
335 missing_frames_and_packets.insert(std::make_pair(resend_frame_id, missing)); 339 missing_frames_and_packets.insert(std::make_pair(resend_frame_id, missing));
336 rtp_sender_->ResendPackets(missing_frames_and_packets); 340 rtp_sender_->ResendPackets(missing_frames_and_packets);
337 last_send_time_ = cast_environment_->Clock()->NowTicks(); 341 last_send_time_ = cast_environment_->Clock()->NowTicks();
338 } 342 }
339 343
340 } // namespace cast 344 } // namespace cast
341 } // namespace media 345 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698