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/renderers/renderer_impl.h" | 5 #include "media/renderers/renderer_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 if (old_rate == 0 && playback_rate > 0) | 198 if (old_rate == 0 && playback_rate > 0) |
199 video_renderer_->OnTimeStateChanged(true); | 199 video_renderer_->OnTimeStateChanged(true); |
200 else if (old_rate > 0 && playback_rate == 0) | 200 else if (old_rate > 0 && playback_rate == 0) |
201 video_renderer_->OnTimeStateChanged(false); | 201 video_renderer_->OnTimeStateChanged(false); |
202 } | 202 } |
203 | 203 |
204 void RendererImpl::SetVolume(float volume) { | 204 void RendererImpl::SetVolume(float volume) { |
205 DVLOG(1) << __FUNCTION__; | 205 DVLOG(1) << __FUNCTION__; |
206 DCHECK(task_runner_->BelongsToCurrentThread()); | 206 DCHECK(task_runner_->BelongsToCurrentThread()); |
207 | 207 |
208 audio_volume_ = volume; | |
wolenetz
2016/03/30 00:31:32
ISTM that this could be more readable and correct
servolk
2016/03/30 01:29:49
That's a very good point. But please keep in mind
wolenetz
2016/03/30 20:08:11
I think in short-term, while we're still decoding
| |
208 if (audio_renderer_) | 209 if (audio_renderer_) |
209 audio_renderer_->SetVolume(volume); | 210 audio_renderer_->SetVolume(volume); |
210 } | 211 } |
211 | 212 |
212 base::TimeDelta RendererImpl::GetMediaTime() { | 213 base::TimeDelta RendererImpl::GetMediaTime() { |
213 // No BelongsToCurrentThread() checking because this can be called from other | 214 // No BelongsToCurrentThread() checking because this can be called from other |
214 // threads. | 215 // threads. |
215 return time_source_->CurrentMediaTime(); | 216 return time_source_->CurrentMediaTime(); |
216 } | 217 } |
217 | 218 |
218 bool RendererImpl::HasAudio() { | 219 bool RendererImpl::HasAudio() { |
219 DCHECK(task_runner_->BelongsToCurrentThread()); | 220 DCHECK(task_runner_->BelongsToCurrentThread()); |
220 return audio_renderer_ != NULL; | 221 return audio_renderer_ != NULL; |
221 } | 222 } |
222 | 223 |
223 bool RendererImpl::HasVideo() { | 224 bool RendererImpl::HasVideo() { |
224 DCHECK(task_runner_->BelongsToCurrentThread()); | 225 DCHECK(task_runner_->BelongsToCurrentThread()); |
225 return video_renderer_ != NULL; | 226 return video_renderer_ != NULL; |
226 } | 227 } |
227 | 228 |
229 void RendererImpl::OnEnabledAudioStreamsChanged( | |
230 const std::vector<const DemuxerStream*>& enabledAudioStreams) { | |
231 DCHECK(task_runner_->BelongsToCurrentThread()); | |
232 DemuxerStream* audio_stream = | |
233 demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO); | |
234 | |
235 bool audio_stream_enabled = false; | |
236 for (const DemuxerStream* demuxer_stream : enabledAudioStreams) { | |
237 DCHECK_EQ(demuxer_stream->type(), DemuxerStream::AUDIO); | |
238 if (demuxer_stream == audio_stream) | |
239 audio_stream_enabled = true; | |
240 } | |
241 | |
242 if (audio_renderer_) { | |
243 if (audio_stream_enabled) { | |
244 DVLOG(5) << __FUNCTION__ << " enabled audio. SetVolume=" << audio_volume_; | |
245 audio_renderer_->SetVolume(audio_volume_); | |
246 } else { | |
247 DVLOG(5) << __FUNCTION__ << " disabled audio. SetVolume=0"; | |
248 audio_renderer_->SetVolume(0); | |
249 } | |
250 } | |
251 } | |
252 | |
253 void RendererImpl::OnSelectedVideoStreamChanged( | |
254 const DemuxerStream* selectedVideoStream) { | |
255 DCHECK(task_runner_->BelongsToCurrentThread()); | |
256 DemuxerStream* video_stream = | |
257 demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); | |
258 if (selectedVideoStream) { | |
259 CHECK_EQ(selectedVideoStream, video_stream); | |
260 } | |
261 } | |
262 | |
228 void RendererImpl::DisableUnderflowForTesting() { | 263 void RendererImpl::DisableUnderflowForTesting() { |
229 DVLOG(1) << __FUNCTION__; | 264 DVLOG(1) << __FUNCTION__; |
230 DCHECK(task_runner_->BelongsToCurrentThread()); | 265 DCHECK(task_runner_->BelongsToCurrentThread()); |
231 DCHECK_EQ(state_, STATE_UNINITIALIZED); | 266 DCHECK_EQ(state_, STATE_UNINITIALIZED); |
232 | 267 |
233 underflow_disabled_for_testing_ = true; | 268 underflow_disabled_for_testing_ = true; |
234 } | 269 } |
235 | 270 |
236 void RendererImpl::EnableClocklessVideoPlaybackForTesting() { | 271 void RendererImpl::EnableClocklessVideoPlaybackForTesting() { |
237 DVLOG(1) << __FUNCTION__; | 272 DVLOG(1) << __FUNCTION__; |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
660 } | 695 } |
661 | 696 |
662 // After OnError() returns, the pipeline may destroy |this|. | 697 // After OnError() returns, the pipeline may destroy |this|. |
663 base::ResetAndReturn(&error_cb_).Run(error); | 698 base::ResetAndReturn(&error_cb_).Run(error); |
664 | 699 |
665 if (!flush_cb_.is_null()) | 700 if (!flush_cb_.is_null()) |
666 base::ResetAndReturn(&flush_cb_).Run(); | 701 base::ResetAndReturn(&flush_cb_).Run(); |
667 } | 702 } |
668 | 703 |
669 } // namespace media | 704 } // namespace media |
OLD | NEW |