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_base.h" | 5 #include "media/filters/audio_renderer_base.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/callback.h" | 11 #include "base/callback.h" |
| 12 #include "base/callback_helpers.h" |
12 #include "base/logging.h" | 13 #include "base/logging.h" |
13 #include "media/base/filter_host.h" | 14 #include "media/base/filter_host.h" |
14 | 15 |
15 namespace media { | 16 namespace media { |
16 | 17 |
17 AudioRendererBase::AudioRendererBase() | 18 AudioRendererBase::AudioRendererBase() |
18 : state_(kUninitialized), | 19 : state_(kUninitialized), |
19 pending_read_(false), | 20 pending_read_(false), |
20 received_end_of_stream_(false), | 21 received_end_of_stream_(false), |
21 rendered_end_of_stream_(false), | 22 rendered_end_of_stream_(false), |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 } | 170 } |
170 | 171 |
171 switch (state_) { | 172 switch (state_) { |
172 case kUninitialized: | 173 case kUninitialized: |
173 NOTREACHED(); | 174 NOTREACHED(); |
174 return; | 175 return; |
175 case kPaused: | 176 case kPaused: |
176 if (buffer && !buffer->IsEndOfStream()) | 177 if (buffer && !buffer->IsEndOfStream()) |
177 algorithm_->EnqueueBuffer(buffer); | 178 algorithm_->EnqueueBuffer(buffer); |
178 DCHECK(!pending_read_); | 179 DCHECK(!pending_read_); |
179 ResetAndRunCB(&pause_cb_); | 180 base::ResetAndReturn(&pause_cb_).Run(); |
180 return; | 181 return; |
181 case kSeeking: | 182 case kSeeking: |
182 if (IsBeforeSeekTime(buffer)) { | 183 if (IsBeforeSeekTime(buffer)) { |
183 ScheduleRead_Locked(); | 184 ScheduleRead_Locked(); |
184 return; | 185 return; |
185 } | 186 } |
186 if (buffer && !buffer->IsEndOfStream()) { | 187 if (buffer && !buffer->IsEndOfStream()) { |
187 algorithm_->EnqueueBuffer(buffer); | 188 algorithm_->EnqueueBuffer(buffer); |
188 if (!algorithm_->IsQueueFull()) | 189 if (!algorithm_->IsQueueFull()) |
189 return; | 190 return; |
190 } | 191 } |
191 state_ = kPaused; | 192 state_ = kPaused; |
192 ResetAndRunCB(&seek_cb_, PIPELINE_OK); | 193 base::ResetAndReturn(&seek_cb_).Run(PIPELINE_OK); |
193 return; | 194 return; |
194 case kPlaying: | 195 case kPlaying: |
195 case kUnderflow: | 196 case kUnderflow: |
196 case kRebuffering: | 197 case kRebuffering: |
197 if (buffer && !buffer->IsEndOfStream()) | 198 if (buffer && !buffer->IsEndOfStream()) |
198 algorithm_->EnqueueBuffer(buffer); | 199 algorithm_->EnqueueBuffer(buffer); |
199 return; | 200 return; |
200 case kStopped: | 201 case kStopped: |
201 return; | 202 return; |
202 } | 203 } |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 base::AutoLock auto_lock(lock_); | 304 base::AutoLock auto_lock(lock_); |
304 return algorithm_->playback_rate(); | 305 return algorithm_->playback_rate(); |
305 } | 306 } |
306 | 307 |
307 bool AudioRendererBase::IsBeforeSeekTime(const scoped_refptr<Buffer>& buffer) { | 308 bool AudioRendererBase::IsBeforeSeekTime(const scoped_refptr<Buffer>& buffer) { |
308 return (state_ == kSeeking) && buffer && !buffer->IsEndOfStream() && | 309 return (state_ == kSeeking) && buffer && !buffer->IsEndOfStream() && |
309 (buffer->GetTimestamp() + buffer->GetDuration()) < seek_timestamp_; | 310 (buffer->GetTimestamp() + buffer->GetDuration()) < seek_timestamp_; |
310 } | 311 } |
311 | 312 |
312 } // namespace media | 313 } // namespace media |
OLD | NEW |