Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/blink/webmediaplayer_impl.h" | 5 #include "media/blink/webmediaplayer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 284 | 284 |
| 285 void WebMediaPlayerImpl::pause() { | 285 void WebMediaPlayerImpl::pause() { |
| 286 DVLOG(1) << __FUNCTION__; | 286 DVLOG(1) << __FUNCTION__; |
| 287 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 287 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 288 | 288 |
| 289 const bool was_already_paused = paused_ || playback_rate_ == 0; | 289 const bool was_already_paused = paused_ || playback_rate_ == 0; |
| 290 paused_ = true; | 290 paused_ = true; |
| 291 pipeline_.SetPlaybackRate(0.0f); | 291 pipeline_.SetPlaybackRate(0.0f); |
| 292 if (data_source_) | 292 if (data_source_) |
| 293 data_source_->MediaIsPaused(); | 293 data_source_->MediaIsPaused(); |
| 294 paused_time_ = pipeline_.GetMediaTime(); | 294 UpdatePausedTime(); |
| 295 | 295 |
| 296 media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PAUSE)); | 296 media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PAUSE)); |
| 297 | 297 |
| 298 if (!was_already_paused && delegate_) | 298 if (!was_already_paused && delegate_) |
| 299 delegate_->DidPause(this); | 299 delegate_->DidPause(this); |
| 300 } | 300 } |
| 301 | 301 |
| 302 bool WebMediaPlayerImpl::supportsSave() const { | 302 bool WebMediaPlayerImpl::supportsSave() const { |
| 303 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 303 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 304 return supports_save_; | 304 return supports_save_; |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 742 seek(pending_seek_seconds_); | 742 seek(pending_seek_seconds_); |
| 743 return; | 743 return; |
| 744 } | 744 } |
| 745 | 745 |
| 746 if (status != PIPELINE_OK) { | 746 if (status != PIPELINE_OK) { |
| 747 OnPipelineError(status); | 747 OnPipelineError(status); |
| 748 return; | 748 return; |
| 749 } | 749 } |
| 750 | 750 |
| 751 // Update our paused time. | 751 // Update our paused time. |
| 752 if (paused_) | 752 UpdatePausedTime(); |
| 753 paused_time_ = pipeline_.GetMediaTime(); | |
| 754 | 753 |
| 755 should_notify_time_changed_ = time_changed; | 754 should_notify_time_changed_ = time_changed; |
| 756 } | 755 } |
| 757 | 756 |
| 758 void WebMediaPlayerImpl::OnPipelineEnded() { | 757 void WebMediaPlayerImpl::OnPipelineEnded() { |
| 759 DVLOG(1) << __FUNCTION__; | 758 DVLOG(1) << __FUNCTION__; |
| 760 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 759 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 761 | 760 |
| 762 // Ignore state changes until we've completed all outstanding seeks. | 761 // Ignore state changes until we've completed all outstanding seeks. |
| 763 if (seeking_ || pending_seek_) | 762 if (seeking_ || pending_seek_) |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1023 base::WaitableEvent event(false, false); | 1022 base::WaitableEvent event(false, false); |
| 1024 compositor_task_runner_->PostTask(FROM_HERE, | 1023 compositor_task_runner_->PostTask(FROM_HERE, |
| 1025 base::Bind(&GetCurrentFrameAndSignal, | 1024 base::Bind(&GetCurrentFrameAndSignal, |
| 1026 base::Unretained(compositor_), | 1025 base::Unretained(compositor_), |
| 1027 &video_frame, | 1026 &video_frame, |
| 1028 &event)); | 1027 &event)); |
| 1029 event.Wait(); | 1028 event.Wait(); |
| 1030 return video_frame; | 1029 return video_frame; |
| 1031 } | 1030 } |
| 1032 | 1031 |
| 1032 void WebMediaPlayerImpl::UpdatePausedTime() { | |
| 1033 DCHECK(main_task_runner_->BelongsToCurrentThread()); | |
| 1034 if (paused_) { | |
|
xhwang
2015/01/08 22:44:50
I felt it more clear to keep the |paused_| check o
DaleCurtis
2015/01/08 23:16:41
Done.
| |
| 1035 paused_time_ = | |
| 1036 ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime(); | |
|
xhwang
2015/01/08 22:44:50
Hmm, please remind me in what case can |ended_| be
DaleCurtis
2015/01/08 23:16:41
pause() is always called upon ended from HTMLMedia
xhwang
2015/01/08 23:26:19
Thanks for the info! Maybe add a comment to make t
DaleCurtis
2015/01/08 23:41:53
Done.
| |
| 1037 } | |
| 1038 } | |
| 1039 | |
| 1033 } // namespace media | 1040 } // namespace media |
| OLD | NEW |