| 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/base/pipeline.h" | 5 #include "media/base/pipeline.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 namespace media { | 30 namespace media { |
| 31 | 31 |
| 32 Pipeline::Pipeline( | 32 Pipeline::Pipeline( |
| 33 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, | 33 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 34 MediaLog* media_log) | 34 MediaLog* media_log) |
| 35 : task_runner_(task_runner), | 35 : task_runner_(task_runner), |
| 36 media_log_(media_log), | 36 media_log_(media_log), |
| 37 running_(false), | 37 running_(false), |
| 38 did_loading_progress_(false), | 38 did_loading_progress_(false), |
| 39 volume_(1.0f), | 39 volume_(1.0f), |
| 40 playback_rate_(0.0f), | 40 playback_rate_(0.0), |
| 41 status_(PIPELINE_OK), | 41 status_(PIPELINE_OK), |
| 42 state_(kCreated), | 42 state_(kCreated), |
| 43 renderer_ended_(false), | 43 renderer_ended_(false), |
| 44 text_renderer_ended_(false), | 44 text_renderer_ended_(false), |
| 45 demuxer_(NULL), | 45 demuxer_(NULL), |
| 46 pending_cdm_context_(nullptr), | 46 pending_cdm_context_(nullptr), |
| 47 weak_factory_(this) { | 47 weak_factory_(this) { |
| 48 media_log_->AddEvent(media_log_->CreatePipelineStateChangedEvent(kCreated)); | 48 media_log_->AddEvent(media_log_->CreatePipelineStateChangedEvent(kCreated)); |
| 49 media_log_->AddEvent( | 49 media_log_->AddEvent( |
| 50 media_log_->CreateEvent(MediaLogEvent::PIPELINE_CREATED)); | 50 media_log_->CreateEvent(MediaLogEvent::PIPELINE_CREATED)); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 FROM_HERE, | 117 FROM_HERE, |
| 118 base::Bind( | 118 base::Bind( |
| 119 &Pipeline::SeekTask, weak_factory_.GetWeakPtr(), time, seek_cb)); | 119 &Pipeline::SeekTask, weak_factory_.GetWeakPtr(), time, seek_cb)); |
| 120 } | 120 } |
| 121 | 121 |
| 122 bool Pipeline::IsRunning() const { | 122 bool Pipeline::IsRunning() const { |
| 123 base::AutoLock auto_lock(lock_); | 123 base::AutoLock auto_lock(lock_); |
| 124 return running_; | 124 return running_; |
| 125 } | 125 } |
| 126 | 126 |
| 127 float Pipeline::GetPlaybackRate() const { | 127 double Pipeline::GetPlaybackRate() const { |
| 128 base::AutoLock auto_lock(lock_); | 128 base::AutoLock auto_lock(lock_); |
| 129 return playback_rate_; | 129 return playback_rate_; |
| 130 } | 130 } |
| 131 | 131 |
| 132 void Pipeline::SetPlaybackRate(float playback_rate) { | 132 void Pipeline::SetPlaybackRate(double playback_rate) { |
| 133 if (playback_rate < 0.0f) | 133 if (playback_rate < 0.0) |
| 134 return; | 134 return; |
| 135 | 135 |
| 136 base::AutoLock auto_lock(lock_); | 136 base::AutoLock auto_lock(lock_); |
| 137 playback_rate_ = playback_rate; | 137 playback_rate_ = playback_rate; |
| 138 if (running_) { | 138 if (running_) { |
| 139 task_runner_->PostTask(FROM_HERE, | 139 task_runner_->PostTask(FROM_HERE, |
| 140 base::Bind(&Pipeline::PlaybackRateChangedTask, | 140 base::Bind(&Pipeline::PlaybackRateChangedTask, |
| 141 weak_factory_.GetWeakPtr(), | 141 weak_factory_.GetWeakPtr(), |
| 142 playback_rate)); | 142 playback_rate)); |
| 143 } | 143 } |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 if (state_ == kStopping || state_ == kStopped) | 548 if (state_ == kStopping || state_ == kStopped) |
| 549 return; | 549 return; |
| 550 | 550 |
| 551 SetState(kStopping); | 551 SetState(kStopping); |
| 552 pending_callbacks_.reset(); | 552 pending_callbacks_.reset(); |
| 553 status_ = error; | 553 status_ = error; |
| 554 | 554 |
| 555 DoStop(base::Bind(&Pipeline::OnStopCompleted, weak_factory_.GetWeakPtr())); | 555 DoStop(base::Bind(&Pipeline::OnStopCompleted, weak_factory_.GetWeakPtr())); |
| 556 } | 556 } |
| 557 | 557 |
| 558 void Pipeline::PlaybackRateChangedTask(float playback_rate) { | 558 void Pipeline::PlaybackRateChangedTask(double playback_rate) { |
| 559 DCHECK(task_runner_->BelongsToCurrentThread()); | 559 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 560 | 560 |
| 561 // Playback rate changes are only carried out while playing. | 561 // Playback rate changes are only carried out while playing. |
| 562 if (state_ != kPlaying) | 562 if (state_ != kPlaying) |
| 563 return; | 563 return; |
| 564 | 564 |
| 565 renderer_->SetPlaybackRate(playback_rate); | 565 renderer_->SetPlaybackRate(playback_rate); |
| 566 } | 566 } |
| 567 | 567 |
| 568 void Pipeline::VolumeChangedTask(float volume) { | 568 void Pipeline::VolumeChangedTask(float volume) { |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 736 metadata_cb_.Run(metadata); | 736 metadata_cb_.Run(metadata); |
| 737 } | 737 } |
| 738 | 738 |
| 739 void Pipeline::BufferingStateChanged(BufferingState new_buffering_state) { | 739 void Pipeline::BufferingStateChanged(BufferingState new_buffering_state) { |
| 740 DVLOG(1) << __FUNCTION__ << "(" << new_buffering_state << ") "; | 740 DVLOG(1) << __FUNCTION__ << "(" << new_buffering_state << ") "; |
| 741 DCHECK(task_runner_->BelongsToCurrentThread()); | 741 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 742 buffering_state_cb_.Run(new_buffering_state); | 742 buffering_state_cb_.Run(new_buffering_state); |
| 743 } | 743 } |
| 744 | 744 |
| 745 } // namespace media | 745 } // namespace media |
| OLD | NEW |