| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/filters/audio_renderer_impl.h" | 5 #include "media/filters/audio_renderer_impl.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 DCHECK_EQ(state_, kPlaying); | 123 DCHECK_EQ(state_, kPlaying); |
| 124 DCHECK(sink_playing_); | 124 DCHECK(sink_playing_); |
| 125 lock_.AssertAcquired(); | 125 lock_.AssertAcquired(); |
| 126 | 126 |
| 127 sink_playing_ = false; | 127 sink_playing_ = false; |
| 128 | 128 |
| 129 base::AutoUnlock auto_unlock(lock_); | 129 base::AutoUnlock auto_unlock(lock_); |
| 130 sink_->Pause(); | 130 sink_->Pause(); |
| 131 } | 131 } |
| 132 | 132 |
| 133 void AudioRendererImpl::SetMediaTime(base::TimeDelta time) { |
| 134 DVLOG(1) << __FUNCTION__ << "(" << time.InMicroseconds() << ")"; |
| 135 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 136 |
| 137 base::AutoLock auto_lock(lock_); |
| 138 DCHECK(!rendering_); |
| 139 DCHECK_EQ(state_, kFlushed); |
| 140 |
| 141 start_timestamp_ = time; |
| 142 } |
| 143 |
| 133 void AudioRendererImpl::Flush(const base::Closure& callback) { | 144 void AudioRendererImpl::Flush(const base::Closure& callback) { |
| 134 DVLOG(1) << __FUNCTION__; | 145 DVLOG(1) << __FUNCTION__; |
| 135 DCHECK(task_runner_->BelongsToCurrentThread()); | 146 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 136 | 147 |
| 137 base::AutoLock auto_lock(lock_); | 148 base::AutoLock auto_lock(lock_); |
| 138 DCHECK_EQ(state_, kPlaying); | 149 DCHECK_EQ(state_, kPlaying); |
| 139 DCHECK(flush_cb_.is_null()); | 150 DCHECK(flush_cb_.is_null()); |
| 140 | 151 |
| 141 flush_cb_ = callback; | 152 flush_cb_ = callback; |
| 142 ChangeState_Locked(kFlushing); | 153 ChangeState_Locked(kFlushing); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 | 223 |
| 213 if (sink_) { | 224 if (sink_) { |
| 214 sink_->Stop(); | 225 sink_->Stop(); |
| 215 sink_ = NULL; | 226 sink_ = NULL; |
| 216 } | 227 } |
| 217 | 228 |
| 218 audio_buffer_stream_.reset(); | 229 audio_buffer_stream_.reset(); |
| 219 task_runner_->PostTask(FROM_HERE, callback); | 230 task_runner_->PostTask(FROM_HERE, callback); |
| 220 } | 231 } |
| 221 | 232 |
| 222 void AudioRendererImpl::StartPlayingFrom(base::TimeDelta timestamp) { | 233 void AudioRendererImpl::StartPlaying() { |
| 223 DVLOG(1) << __FUNCTION__ << "(" << timestamp.InMicroseconds() << ")"; | 234 DVLOG(1) << __FUNCTION__; |
| 224 DCHECK(task_runner_->BelongsToCurrentThread()); | 235 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 225 | 236 |
| 226 base::AutoLock auto_lock(lock_); | 237 base::AutoLock auto_lock(lock_); |
| 227 DCHECK(!sink_playing_); | 238 DCHECK(!sink_playing_); |
| 228 DCHECK_EQ(state_, kFlushed); | 239 DCHECK_EQ(state_, kFlushed); |
| 229 DCHECK_EQ(buffering_state_, BUFFERING_HAVE_NOTHING); | 240 DCHECK_EQ(buffering_state_, BUFFERING_HAVE_NOTHING); |
| 230 DCHECK(!pending_read_) << "Pending read must complete before seeking"; | 241 DCHECK(!pending_read_) << "Pending read must complete before seeking"; |
| 231 | 242 |
| 232 ChangeState_Locked(kPlaying); | 243 ChangeState_Locked(kPlaying); |
| 233 start_timestamp_ = timestamp; | |
| 234 | |
| 235 AttemptRead_Locked(); | 244 AttemptRead_Locked(); |
| 236 } | 245 } |
| 237 | 246 |
| 238 void AudioRendererImpl::Initialize(DemuxerStream* stream, | 247 void AudioRendererImpl::Initialize(DemuxerStream* stream, |
| 239 const PipelineStatusCB& init_cb, | 248 const PipelineStatusCB& init_cb, |
| 240 const StatisticsCB& statistics_cb, | 249 const StatisticsCB& statistics_cb, |
| 241 const TimeCB& time_cb, | 250 const TimeCB& time_cb, |
| 242 const BufferingStateCB& buffering_state_cb, | 251 const BufferingStateCB& buffering_state_cb, |
| 243 const base::Closure& ended_cb, | 252 const base::Closure& ended_cb, |
| 244 const PipelineStatusCB& error_cb) { | 253 const PipelineStatusCB& error_cb) { |
| (...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 << buffering_state; | 710 << buffering_state; |
| 702 DCHECK_NE(buffering_state_, buffering_state); | 711 DCHECK_NE(buffering_state_, buffering_state); |
| 703 lock_.AssertAcquired(); | 712 lock_.AssertAcquired(); |
| 704 buffering_state_ = buffering_state; | 713 buffering_state_ = buffering_state; |
| 705 | 714 |
| 706 task_runner_->PostTask(FROM_HERE, | 715 task_runner_->PostTask(FROM_HERE, |
| 707 base::Bind(buffering_state_cb_, buffering_state_)); | 716 base::Bind(buffering_state_cb_, buffering_state_)); |
| 708 } | 717 } |
| 709 | 718 |
| 710 } // namespace media | 719 } // namespace media |
| OLD | NEW |