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 |