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

Side by Side Diff: media/cast/sender/frame_sender.cc

Issue 1012573002: Remove rtcp_interval from cast_config (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « media/cast/sender/frame_sender.h ('k') | media/cast/sender/video_sender.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/sender/frame_sender.h" 5 #include "media/cast/sender/frame_sender.h"
6 6
7 #include "base/trace_event/trace_event.h" 7 #include "base/trace_event/trace_event.h"
8 8
9 namespace media { 9 namespace media {
10 namespace cast { 10 namespace cast {
11 namespace { 11 namespace {
12 12
13 const int kMinSchedulingDelayMs = 1; 13 const int kMinSchedulingDelayMs = 1;
14 const int kNumAggressiveReportsSentAtStart = 100; 14 const int kNumAggressiveReportsSentAtStart = 100;
15 15
16 // The additional number of frames that can be in-flight when input exceeds the 16 // The additional number of frames that can be in-flight when input exceeds the
17 // maximum frame rate. 17 // maximum frame rate.
18 const int kMaxFrameBurst = 5; 18 const int kMaxFrameBurst = 5;
19 19
20 } // namespace 20 } // namespace
21 21
22 // Convenience macro used in logging statements throughout this file. 22 // Convenience macro used in logging statements throughout this file.
23 #define SENDER_SSRC (is_audio_ ? "AUDIO[" : "VIDEO[") << ssrc_ << "] " 23 #define SENDER_SSRC (is_audio_ ? "AUDIO[" : "VIDEO[") << ssrc_ << "] "
24 24
25 FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment, 25 FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment,
26 bool is_audio, 26 bool is_audio,
27 CastTransportSender* const transport_sender, 27 CastTransportSender* const transport_sender,
28 base::TimeDelta rtcp_interval,
29 int rtp_timebase, 28 int rtp_timebase,
30 uint32 ssrc, 29 uint32 ssrc,
31 double max_frame_rate, 30 double max_frame_rate,
32 base::TimeDelta min_playout_delay, 31 base::TimeDelta min_playout_delay,
33 base::TimeDelta max_playout_delay, 32 base::TimeDelta max_playout_delay,
34 CongestionControl* congestion_control) 33 CongestionControl* congestion_control)
35 : cast_environment_(cast_environment), 34 : cast_environment_(cast_environment),
36 transport_sender_(transport_sender), 35 transport_sender_(transport_sender),
37 ssrc_(ssrc), 36 ssrc_(ssrc),
38 rtcp_interval_(rtcp_interval),
39 min_playout_delay_(min_playout_delay == base::TimeDelta() ? 37 min_playout_delay_(min_playout_delay == base::TimeDelta() ?
40 max_playout_delay : min_playout_delay), 38 max_playout_delay : min_playout_delay),
41 max_playout_delay_(max_playout_delay), 39 max_playout_delay_(max_playout_delay),
42 send_target_playout_delay_(false), 40 send_target_playout_delay_(false),
43 max_frame_rate_(max_frame_rate), 41 max_frame_rate_(max_frame_rate),
44 num_aggressive_rtcp_reports_sent_(0), 42 num_aggressive_rtcp_reports_sent_(0),
45 last_sent_frame_id_(0), 43 last_sent_frame_id_(0),
46 latest_acked_frame_id_(0), 44 latest_acked_frame_id_(0),
47 duplicate_ack_counter_(0), 45 duplicate_ack_counter_(0),
48 congestion_control_(congestion_control), 46 congestion_control_(congestion_control),
49 rtp_timebase_(rtp_timebase), 47 rtp_timebase_(rtp_timebase),
50 is_audio_(is_audio), 48 is_audio_(is_audio),
51 weak_factory_(this) { 49 weak_factory_(this) {
52 DCHECK(transport_sender_); 50 DCHECK(transport_sender_);
53 DCHECK_GT(rtp_timebase_, 0); 51 DCHECK_GT(rtp_timebase_, 0);
54 DCHECK(congestion_control_); 52 DCHECK(congestion_control_);
55 SetTargetPlayoutDelay(min_playout_delay_); 53 SetTargetPlayoutDelay(min_playout_delay_);
56 send_target_playout_delay_ = false; 54 send_target_playout_delay_ = false;
57 memset(frame_rtp_timestamps_, 0, sizeof(frame_rtp_timestamps_)); 55 memset(frame_rtp_timestamps_, 0, sizeof(frame_rtp_timestamps_));
58 } 56 }
59 57
60 FrameSender::~FrameSender() { 58 FrameSender::~FrameSender() {
61 } 59 }
62 60
63 void FrameSender::ScheduleNextRtcpReport() { 61 void FrameSender::ScheduleNextRtcpReport() {
64 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 62 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
65 base::TimeDelta time_to_next = rtcp_interval_;
66
67 time_to_next = std::max(
68 time_to_next, base::TimeDelta::FromMilliseconds(kMinSchedulingDelayMs));
69 63
70 cast_environment_->PostDelayedTask( 64 cast_environment_->PostDelayedTask(
71 CastEnvironment::MAIN, 65 CastEnvironment::MAIN, FROM_HERE,
72 FROM_HERE,
73 base::Bind(&FrameSender::SendRtcpReport, weak_factory_.GetWeakPtr(), 66 base::Bind(&FrameSender::SendRtcpReport, weak_factory_.GetWeakPtr(),
74 true), 67 true),
75 time_to_next); 68 base::TimeDelta::FromMilliseconds(kDefaultRtcpIntervalMs));
76 } 69 }
77 70
78 void FrameSender::SendRtcpReport(bool schedule_future_reports) { 71 void FrameSender::SendRtcpReport(bool schedule_future_reports) {
79 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 72 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
80 73
81 // Sanity-check: We should have sent at least the first frame by this point. 74 // Sanity-check: We should have sent at least the first frame by this point.
82 DCHECK(!last_send_time_.is_null()); 75 DCHECK(!last_send_time_.is_null());
83 76
84 // Create lip-sync info for the sender report. The last sent frame's 77 // Create lip-sync info for the sender report. The last sent frame's
85 // reference time and RTP timestamp are used to estimate an RTP timestamp in 78 // reference time and RTP timestamp are used to estimate an RTP timestamp in
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 VLOG(1) << SENDER_SSRC << "Dropping: In-flight duration would be too high."; 370 VLOG(1) << SENDER_SSRC << "Dropping: In-flight duration would be too high.";
378 return true; 371 return true;
379 } 372 }
380 373
381 // Next frame is accepted. 374 // Next frame is accepted.
382 return false; 375 return false;
383 } 376 }
384 377
385 } // namespace cast 378 } // namespace cast
386 } // namespace media 379 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/sender/frame_sender.h ('k') | media/cast/sender/video_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698