OLD | NEW |
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/audio_sender.h" | 5 #include "media/cast/sender/audio_sender.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "media/cast/cast_defines.h" | 10 #include "media/cast/cast_defines.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 // TODO(miu): AudioSender needs to be like VideoSender in providing an upper | 63 // TODO(miu): AudioSender needs to be like VideoSender in providing an upper |
64 // limit on the number of in-flight frames. | 64 // limit on the number of in-flight frames. |
65 transport_config.stored_frames = max_unacked_frames_; | 65 transport_config.stored_frames = max_unacked_frames_; |
66 transport_config.aes_key = audio_config.aes_key; | 66 transport_config.aes_key = audio_config.aes_key; |
67 transport_config.aes_iv_mask = audio_config.aes_iv_mask; | 67 transport_config.aes_iv_mask = audio_config.aes_iv_mask; |
68 | 68 |
69 transport_sender->InitializeAudio( | 69 transport_sender->InitializeAudio( |
70 transport_config, | 70 transport_config, |
71 base::Bind(&AudioSender::OnReceivedCastFeedback, | 71 base::Bind(&AudioSender::OnReceivedCastFeedback, |
72 weak_factory_.GetWeakPtr()), | 72 weak_factory_.GetWeakPtr()), |
73 base::Bind(&AudioSender::OnReceivedRtt, weak_factory_.GetWeakPtr())); | 73 base::Bind(&AudioSender::OnMeasuredRoundTripTime, |
| 74 weak_factory_.GetWeakPtr())); |
74 } | 75 } |
75 | 76 |
76 AudioSender::~AudioSender() {} | 77 AudioSender::~AudioSender() {} |
77 | 78 |
78 void AudioSender::InsertAudio(scoped_ptr<AudioBus> audio_bus, | 79 void AudioSender::InsertAudio(scoped_ptr<AudioBus> audio_bus, |
79 const base::TimeTicks& recorded_time) { | 80 const base::TimeTicks& recorded_time) { |
80 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); | 81 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
81 if (cast_initialization_status_ != STATUS_AUDIO_INITIALIZED) { | 82 if (cast_initialization_status_ != STATUS_AUDIO_INITIALIZED) { |
82 NOTREACHED(); | 83 NOTREACHED(); |
83 return; | 84 return; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 encoded_frame->new_playout_delay_ms = | 139 encoded_frame->new_playout_delay_ms = |
139 target_playout_delay_.InMilliseconds(); | 140 target_playout_delay_.InMilliseconds(); |
140 } | 141 } |
141 transport_sender_->InsertCodedAudioFrame(*encoded_frame); | 142 transport_sender_->InsertCodedAudioFrame(*encoded_frame); |
142 } | 143 } |
143 | 144 |
144 void AudioSender::OnReceivedCastFeedback(const RtcpCastMessage& cast_feedback) { | 145 void AudioSender::OnReceivedCastFeedback(const RtcpCastMessage& cast_feedback) { |
145 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); | 146 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
146 | 147 |
147 if (is_rtt_available()) { | 148 if (is_rtt_available()) { |
148 // Having the RTT values implies the receiver sent back a receiver report | 149 // Having the RTT value implies the receiver sent back a receiver report |
149 // based on it having received a report from here. Therefore, ensure this | 150 // based on it having received a report from here. Therefore, ensure this |
150 // sender stops aggressively sending reports. | 151 // sender stops aggressively sending reports. |
151 if (num_aggressive_rtcp_reports_sent_ < kNumAggressiveReportsSentAtStart) { | 152 if (num_aggressive_rtcp_reports_sent_ < kNumAggressiveReportsSentAtStart) { |
152 VLOG(1) << "No longer a need to send reports aggressively (sent " | 153 VLOG(1) << "No longer a need to send reports aggressively (sent " |
153 << num_aggressive_rtcp_reports_sent_ << ")."; | 154 << num_aggressive_rtcp_reports_sent_ << ")."; |
154 num_aggressive_rtcp_reports_sent_ = kNumAggressiveReportsSentAtStart; | 155 num_aggressive_rtcp_reports_sent_ = kNumAggressiveReportsSentAtStart; |
155 ScheduleNextRtcpReport(); | 156 ScheduleNextRtcpReport(); |
156 } | 157 } |
157 } | 158 } |
158 | 159 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 << duration_in_flight.InMicroseconds() << " usec (" | 223 << duration_in_flight.InMicroseconds() << " usec (" |
223 << (target_playout_delay_ > base::TimeDelta() ? | 224 << (target_playout_delay_ > base::TimeDelta() ? |
224 100 * duration_in_flight / target_playout_delay_ : | 225 100 * duration_in_flight / target_playout_delay_ : |
225 kint64max) << "%)"; | 226 kint64max) << "%)"; |
226 return frames_in_flight >= max_unacked_frames_ || | 227 return frames_in_flight >= max_unacked_frames_ || |
227 duration_in_flight >= target_playout_delay_; | 228 duration_in_flight >= target_playout_delay_; |
228 } | 229 } |
229 | 230 |
230 } // namespace cast | 231 } // namespace cast |
231 } // namespace media | 232 } // namespace media |
OLD | NEW |