| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/base/composite_filter.h" | 5 #include "media/base/composite_filter.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/stl_util-inl.h" | 8 #include "base/stl_util-inl.h" |
| 9 #include "media/base/callback.h" | 9 #include "media/base/callback.h" |
| 10 | 10 |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 | 227 |
| 228 void CompositeFilter::ChangeState(State new_state) { | 228 void CompositeFilter::ChangeState(State new_state) { |
| 229 DCHECK_EQ(message_loop_, MessageLoop::current()); | 229 DCHECK_EQ(message_loop_, MessageLoop::current()); |
| 230 state_ = new_state; | 230 state_ = new_state; |
| 231 } | 231 } |
| 232 | 232 |
| 233 void CompositeFilter::StartSerialCallSequence() { | 233 void CompositeFilter::StartSerialCallSequence() { |
| 234 DCHECK_EQ(message_loop_, MessageLoop::current()); | 234 DCHECK_EQ(message_loop_, MessageLoop::current()); |
| 235 error_ = PIPELINE_OK; | 235 error_ = PIPELINE_OK; |
| 236 | 236 |
| 237 if (filters_.size() > 0) { | 237 if (!filters_.empty()) { |
| 238 sequence_index_ = 0; | 238 sequence_index_ = 0; |
| 239 CallFilter(filters_[sequence_index_], | 239 CallFilter(filters_[sequence_index_], |
| 240 NewThreadSafeCallback(&CompositeFilter::SerialCallback)); | 240 NewThreadSafeCallback(&CompositeFilter::SerialCallback)); |
| 241 } else { | 241 } else { |
| 242 sequence_index_ = 0; | 242 sequence_index_ = 0; |
| 243 SerialCallback(); | 243 SerialCallback(); |
| 244 } | 244 } |
| 245 } | 245 } |
| 246 | 246 |
| 247 void CompositeFilter::StartParallelCallSequence() { | 247 void CompositeFilter::StartParallelCallSequence() { |
| 248 DCHECK_EQ(message_loop_, MessageLoop::current()); | 248 DCHECK_EQ(message_loop_, MessageLoop::current()); |
| 249 error_ = PIPELINE_OK; | 249 error_ = PIPELINE_OK; |
| 250 | 250 |
| 251 if (filters_.size() > 0) { | 251 if (!filters_.empty()) { |
| 252 sequence_index_ = 0; | 252 sequence_index_ = 0; |
| 253 for (size_t i = 0; i < filters_.size(); i++) { | 253 for (size_t i = 0; i < filters_.size(); i++) { |
| 254 CallFilter(filters_[i], | 254 CallFilter(filters_[i], |
| 255 NewThreadSafeCallback(&CompositeFilter::ParallelCallback)); | 255 NewThreadSafeCallback(&CompositeFilter::ParallelCallback)); |
| 256 } | 256 } |
| 257 } else { | 257 } else { |
| 258 sequence_index_ = 0; | 258 sequence_index_ = 0; |
| 259 ParallelCallback(); | 259 ParallelCallback(); |
| 260 } | 260 } |
| 261 } | 261 } |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 | 333 |
| 334 void CompositeFilter::SerialCallback() { | 334 void CompositeFilter::SerialCallback() { |
| 335 DCHECK_EQ(message_loop_, MessageLoop::current()); | 335 DCHECK_EQ(message_loop_, MessageLoop::current()); |
| 336 if (error_ != PIPELINE_OK) { | 336 if (error_ != PIPELINE_OK) { |
| 337 // We encountered an error. Terminate the sequence now. | 337 // We encountered an error. Terminate the sequence now. |
| 338 ChangeState(kError); | 338 ChangeState(kError); |
| 339 HandleError(error_); | 339 HandleError(error_); |
| 340 return; | 340 return; |
| 341 } | 341 } |
| 342 | 342 |
| 343 if (filters_.size() > 0) | 343 if (!filters_.empty()) |
| 344 sequence_index_++; | 344 sequence_index_++; |
| 345 | 345 |
| 346 if (sequence_index_ == filters_.size()) { | 346 if (sequence_index_ == filters_.size()) { |
| 347 // All filters have been successfully called without error. | 347 // All filters have been successfully called without error. |
| 348 OnCallSequenceDone(); | 348 OnCallSequenceDone(); |
| 349 } else if (GetNextState(state_) == kStopPending) { | 349 } else if (GetNextState(state_) == kStopPending) { |
| 350 // Abort sequence early and start issuing Stop() calls. | 350 // Abort sequence early and start issuing Stop() calls. |
| 351 ChangeState(kStopPending); | 351 ChangeState(kStopPending); |
| 352 StartSerialCallSequence(); | 352 StartSerialCallSequence(); |
| 353 } else { | 353 } else { |
| 354 // We aren't done with the sequence. Call the next filter. | 354 // We aren't done with the sequence. Call the next filter. |
| 355 CallFilter(filters_[sequence_index_], | 355 CallFilter(filters_[sequence_index_], |
| 356 NewThreadSafeCallback(&CompositeFilter::SerialCallback)); | 356 NewThreadSafeCallback(&CompositeFilter::SerialCallback)); |
| 357 } | 357 } |
| 358 } | 358 } |
| 359 | 359 |
| 360 void CompositeFilter::ParallelCallback() { | 360 void CompositeFilter::ParallelCallback() { |
| 361 DCHECK_EQ(message_loop_, MessageLoop::current()); | 361 DCHECK_EQ(message_loop_, MessageLoop::current()); |
| 362 | 362 |
| 363 if (filters_.size() > 0) | 363 if (!filters_.empty()) |
| 364 sequence_index_++; | 364 sequence_index_++; |
| 365 | 365 |
| 366 if (sequence_index_ == filters_.size()) { | 366 if (sequence_index_ == filters_.size()) { |
| 367 if (error_ != PIPELINE_OK) { | 367 if (error_ != PIPELINE_OK) { |
| 368 // We encountered an error. | 368 // We encountered an error. |
| 369 ChangeState(kError); | 369 ChangeState(kError); |
| 370 HandleError(error_); | 370 HandleError(error_); |
| 371 return; | 371 return; |
| 372 } | 372 } |
| 373 | 373 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 | 542 |
| 543 void CompositeFilter::FilterHostImpl::SetCurrentReadPosition(int64 offset) { | 543 void CompositeFilter::FilterHostImpl::SetCurrentReadPosition(int64 offset) { |
| 544 host_->SetCurrentReadPosition(offset); | 544 host_->SetCurrentReadPosition(offset); |
| 545 } | 545 } |
| 546 | 546 |
| 547 int64 CompositeFilter::FilterHostImpl::GetCurrentReadPosition() { | 547 int64 CompositeFilter::FilterHostImpl::GetCurrentReadPosition() { |
| 548 return host_->GetCurrentReadPosition(); | 548 return host_->GetCurrentReadPosition(); |
| 549 } | 549 } |
| 550 | 550 |
| 551 } // namespace media | 551 } // namespace media |
| OLD | NEW |