| 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 "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 current_time_(kNoTimestamp()), | 24 current_time_(kNoTimestamp()), |
| 25 bytes_per_frame_(0), | 25 bytes_per_frame_(0), |
| 26 bytes_per_second_(0), | 26 bytes_per_second_(0), |
| 27 stopped_(false), | 27 stopped_(false), |
| 28 sink_(sink), | 28 sink_(sink), |
| 29 is_initialized_(false), | 29 is_initialized_(false), |
| 30 read_cb_(base::Bind(&AudioRendererImpl::DecodedAudioReady, | 30 read_cb_(base::Bind(&AudioRendererImpl::DecodedAudioReady, |
| 31 base::Unretained(this))) { | 31 base::Unretained(this))) { |
| 32 } | 32 } |
| 33 | 33 |
| 34 AudioRendererImpl::~AudioRendererImpl() { | |
| 35 // Stop() should have been called and |algorithm_| should have been destroyed. | |
| 36 DCHECK(state_ == kUninitialized || state_ == kStopped); | |
| 37 DCHECK(!algorithm_.get()); | |
| 38 } | |
| 39 | |
| 40 void AudioRendererImpl::Play(const base::Closure& callback) { | 34 void AudioRendererImpl::Play(const base::Closure& callback) { |
| 41 { | 35 { |
| 42 base::AutoLock auto_lock(lock_); | 36 base::AutoLock auto_lock(lock_); |
| 43 DCHECK_EQ(kPaused, state_); | 37 DCHECK_EQ(kPaused, state_); |
| 44 state_ = kPlaying; | 38 state_ = kPlaying; |
| 45 callback.Run(); | 39 callback.Run(); |
| 46 } | 40 } |
| 47 | 41 |
| 48 if (stopped_) | 42 if (stopped_) |
| 49 return; | 43 return; |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 state_ = kRebuffering; | 213 state_ = kRebuffering; |
| 220 } | 214 } |
| 221 } | 215 } |
| 222 | 216 |
| 223 void AudioRendererImpl::SetVolume(float volume) { | 217 void AudioRendererImpl::SetVolume(float volume) { |
| 224 if (stopped_) | 218 if (stopped_) |
| 225 return; | 219 return; |
| 226 sink_->SetVolume(volume); | 220 sink_->SetVolume(volume); |
| 227 } | 221 } |
| 228 | 222 |
| 223 AudioRendererImpl::~AudioRendererImpl() { |
| 224 // Stop() should have been called and |algorithm_| should have been destroyed. |
| 225 DCHECK(state_ == kUninitialized || state_ == kStopped); |
| 226 DCHECK(!algorithm_.get()); |
| 227 } |
| 228 |
| 229 void AudioRendererImpl::DecodedAudioReady(scoped_refptr<Buffer> buffer) { | 229 void AudioRendererImpl::DecodedAudioReady(scoped_refptr<Buffer> buffer) { |
| 230 base::AutoLock auto_lock(lock_); | 230 base::AutoLock auto_lock(lock_); |
| 231 DCHECK(state_ == kPaused || state_ == kSeeking || state_ == kPlaying || | 231 DCHECK(state_ == kPaused || state_ == kSeeking || state_ == kPlaying || |
| 232 state_ == kUnderflow || state_ == kRebuffering || state_ == kStopped); | 232 state_ == kUnderflow || state_ == kRebuffering || state_ == kStopped); |
| 233 | 233 |
| 234 CHECK(pending_read_); | 234 CHECK(pending_read_); |
| 235 pending_read_ = false; | 235 pending_read_ = false; |
| 236 | 236 |
| 237 if (buffer && buffer->IsEndOfStream()) { | 237 if (buffer && buffer->IsEndOfStream()) { |
| 238 received_end_of_stream_ = true; | 238 received_end_of_stream_ = true; |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 base::Time::kMicrosecondsPerSecond * bytes / bytes_per_second_); | 499 base::Time::kMicrosecondsPerSecond * bytes / bytes_per_second_); |
| 500 } | 500 } |
| 501 return base::TimeDelta(); | 501 return base::TimeDelta(); |
| 502 } | 502 } |
| 503 | 503 |
| 504 void AudioRendererImpl::OnRenderError() { | 504 void AudioRendererImpl::OnRenderError() { |
| 505 host()->DisableAudioRenderer(); | 505 host()->DisableAudioRenderer(); |
| 506 } | 506 } |
| 507 | 507 |
| 508 } // namespace media | 508 } // namespace media |
| OLD | NEW |