| 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 |