Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(972)

Unified Diff: media/base/pipeline.cc

Issue 376013003: Rename media::Clock to media::TimeDeltaInterpolator and update API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/pipeline.cc
diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc
index 90444c446506d4409989ff13da85b048f39d16a0..00ac71214d194260510237a7dd29f5be68ccf3b2 100644
--- a/media/base/pipeline.cc
+++ b/media/base/pipeline.cc
@@ -19,11 +19,11 @@
#include "base/synchronization/condition_variable.h"
#include "media/base/audio_decoder.h"
#include "media/base/audio_renderer.h"
-#include "media/base/clock.h"
#include "media/base/filter_collection.h"
#include "media/base/media_log.h"
#include "media/base/text_renderer.h"
#include "media/base/text_track_config.h"
+#include "media/base/time_delta_interpolator.h"
#include "media/base/video_decoder.h"
#include "media/base/video_decoder_config.h"
#include "media/base/video_renderer.h"
@@ -41,8 +41,8 @@ Pipeline::Pipeline(
did_loading_progress_(false),
volume_(1.0f),
playback_rate_(0.0f),
- clock_(new Clock(&default_tick_clock_)),
- clock_state_(CLOCK_PAUSED),
+ interpolator_(new TimeDeltaInterpolator(&default_tick_clock_)),
+ interpolation_state_(INTERPOLATION_STOPPED),
status_(PIPELINE_OK),
state_(kCreated),
audio_ended_(false),
@@ -156,7 +156,7 @@ void Pipeline::SetVolume(float volume) {
TimeDelta Pipeline::GetMediaTime() const {
base::AutoLock auto_lock(lock_);
- return std::min(clock_->Elapsed(), duration_);
+ return std::min(interpolator_->GetInterpolatedTime(), duration_);
}
Ranges<TimeDelta> Pipeline::GetBufferedTimeRanges() const {
@@ -181,8 +181,9 @@ PipelineStatistics Pipeline::GetStatistics() const {
return statistics_;
}
-void Pipeline::SetClockForTesting(Clock* clock) {
- clock_.reset(clock);
+void Pipeline::SetTimeDeltaInterpolatorForTesting(
+ TimeDeltaInterpolator* interpolator) {
+ interpolator_.reset(interpolator);
}
void Pipeline::SetErrorForTesting(PipelineStatus status) {
@@ -290,15 +291,15 @@ void Pipeline::OnAudioTimeUpdate(TimeDelta time, TimeDelta max_time) {
DCHECK_LE(time.InMicroseconds(), max_time.InMicroseconds());
base::AutoLock auto_lock(lock_);
- if (clock_state_ == CLOCK_WAITING_FOR_AUDIO_TIME_UPDATE &&
- time < clock_->Elapsed()) {
+ if (interpolation_state_ == INTERPOLATION_WAITING_FOR_AUDIO_TIME_UPDATE &&
+ time < interpolator_->GetInterpolatedTime()) {
return;
}
if (state_ == kSeeking)
return;
- clock_->SetTime(time, max_time);
+ interpolator_->SetTime(time, max_time);
StartClockIfWaitingForTimeUpdate_Locked();
}
@@ -312,8 +313,8 @@ void Pipeline::OnVideoTimeUpdate(TimeDelta max_time) {
return;
base::AutoLock auto_lock(lock_);
- DCHECK_NE(clock_state_, CLOCK_WAITING_FOR_AUDIO_TIME_UPDATE);
- clock_->SetMaxTime(max_time);
+ DCHECK_NE(interpolation_state_, INTERPOLATION_WAITING_FOR_AUDIO_TIME_UPDATE);
+ interpolator_->SetMaxTime(max_time);
}
void Pipeline::SetDuration(TimeDelta duration) {
@@ -378,7 +379,7 @@ void Pipeline::StateTransitionTask(PipelineStatus status) {
base::AutoLock l(lock_);
// We do not want to start the clock running. We only want to set the
// base media time so our timestamp calculations will be correct.
- clock_->SetTime(base::TimeDelta(), base::TimeDelta());
+ interpolator_->SetTime(base::TimeDelta(), base::TimeDelta());
}
if (!audio_renderer_ && !video_renderer_) {
done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER);
@@ -640,7 +641,7 @@ void Pipeline::PlaybackRateChangedTask(float playback_rate) {
{
base::AutoLock auto_lock(lock_);
- clock_->SetPlaybackRate(playback_rate);
+ interpolator_->SetPlaybackRate(playback_rate);
}
if (audio_renderer_)
@@ -689,7 +690,7 @@ void Pipeline::SeekTask(TimeDelta time, const PipelineStatusCB& seek_cb) {
{
base::AutoLock auto_lock(lock_);
PauseClockAndStopRendering_Locked();
- clock_->SetTime(time, time);
+ interpolator_->SetTime(time, time);
acolwell GONE FROM CHROMIUM 2014/07/09 00:42:46 This form appears to be used in a bunch of places.
scherkus (not reviewing) 2014/07/09 01:54:31 I'm going to the keep the API roughly intact for t
}
DoSeek(time, base::Bind(
&Pipeline::OnStateTransition, base::Unretained(this)));
@@ -707,7 +708,7 @@ void Pipeline::DoAudioRendererEnded() {
// Start clock since there is no more audio to trigger clock updates.
{
base::AutoLock auto_lock(lock_);
- clock_->SetMaxTime(duration_);
+ interpolator_->SetMaxTime(duration_);
StartClockIfWaitingForTimeUpdate_Locked();
}
@@ -753,7 +754,7 @@ void Pipeline::RunEndedCallbackIfNeeded() {
{
base::AutoLock auto_lock(lock_);
PauseClockAndStopRendering_Locked();
- clock_->SetTime(duration_, duration_);
+ interpolator_->SetTime(duration_, duration_);
}
DCHECK_EQ(status_, PIPELINE_OK);
@@ -870,7 +871,7 @@ void Pipeline::PausePlayback() {
void Pipeline::StartPlayback() {
DVLOG(1) << __FUNCTION__;
DCHECK_EQ(state_, kPlaying);
- DCHECK_EQ(clock_state_, CLOCK_PAUSED);
+ DCHECK_EQ(interpolation_state_, INTERPOLATION_STOPPED);
DCHECK(!WaitingForEnoughData());
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -878,43 +879,43 @@ void Pipeline::StartPlayback() {
// We use audio stream to update the clock. So if there is such a
// stream, we pause the clock until we receive a valid timestamp.
base::AutoLock auto_lock(lock_);
- clock_state_ = CLOCK_WAITING_FOR_AUDIO_TIME_UPDATE;
+ interpolation_state_ = INTERPOLATION_WAITING_FOR_AUDIO_TIME_UPDATE;
audio_renderer_->StartRendering();
} else {
base::AutoLock auto_lock(lock_);
- clock_state_ = CLOCK_PLAYING;
- clock_->SetMaxTime(duration_);
- clock_->Play();
+ interpolation_state_ = INTERPOLATION_STARTED;
+ interpolator_->SetMaxTime(duration_);
acolwell GONE FROM CHROMIUM 2014/07/09 00:42:46 Yeah.. this stuff should be in the interpolator_
scherkus (not reviewing) 2014/07/09 01:54:31 Ditto.
+ interpolator_->StartInterpolating();
}
}
void Pipeline::PauseClockAndStopRendering_Locked() {
lock_.AssertAcquired();
- switch (clock_state_) {
- case CLOCK_PAUSED:
+ switch (interpolation_state_) {
+ case INTERPOLATION_STOPPED:
return;
- case CLOCK_WAITING_FOR_AUDIO_TIME_UPDATE:
+ case INTERPOLATION_WAITING_FOR_AUDIO_TIME_UPDATE:
audio_renderer_->StopRendering();
break;
- case CLOCK_PLAYING:
+ case INTERPOLATION_STARTED:
if (audio_renderer_)
audio_renderer_->StopRendering();
- clock_->Pause();
+ interpolator_->StopInterpolating();
break;
}
- clock_state_ = CLOCK_PAUSED;
+ interpolation_state_ = INTERPOLATION_STOPPED;
}
void Pipeline::StartClockIfWaitingForTimeUpdate_Locked() {
lock_.AssertAcquired();
- if (clock_state_ != CLOCK_WAITING_FOR_AUDIO_TIME_UPDATE)
+ if (interpolation_state_ != INTERPOLATION_WAITING_FOR_AUDIO_TIME_UPDATE)
return;
- clock_state_ = CLOCK_PLAYING;
- clock_->Play();
+ interpolation_state_ = INTERPOLATION_STARTED;
+ interpolator_->StartInterpolating();
}
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698