diff options
48 files changed, 124 insertions, 123 deletions
@@ -19,6 +19,7 @@ Addanki Gandhi Kishor <kishor.ag@samsung.com> Adenilson Cavalcanti <a.cavalcanti@samsung.com> Aditya Bhargava <heuristicist@gmail.com> Ajay Berwal <ajay.berwal@samsung.com> +Ajay Berwal <a.berwal@samsung.com> Ajith Kumar V <ajith.v@samsung.com> Aku Kotkavuo <a.kotkavuo@partner.samsung.com> Alex Gabriel <minilogo@gmail.com> diff --git a/chromecast/browser/media/cma_message_filter_host.cc b/chromecast/browser/media/cma_message_filter_host.cc index 899b9ef..d3664c9 100644 --- a/chromecast/browser/media/cma_message_filter_host.cc +++ b/chromecast/browser/media/cma_message_filter_host.cc @@ -442,7 +442,7 @@ void CmaMessageFilterHost::Stop(int media_id) { } void CmaMessageFilterHost::SetPlaybackRate( - int media_id, float playback_rate) { + int media_id, double playback_rate) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); MediaPipelineHost* media_pipeline = LookupById(media_id); if (!media_pipeline) diff --git a/chromecast/browser/media/cma_message_filter_host.h b/chromecast/browser/media/cma_message_filter_host.h index 763727c..e000574 100644 --- a/chromecast/browser/media/cma_message_filter_host.h +++ b/chromecast/browser/media/cma_message_filter_host.h @@ -77,7 +77,7 @@ class CmaMessageFilterHost void StartPlayingFrom(int media_id, base::TimeDelta time); void Flush(int media_id); void Stop(int media_id); - void SetPlaybackRate(int media_id, float playback_rate); + void SetPlaybackRate(int media_id, double playback_rate); void SetVolume(int media_id, TrackId track_id, float volume); void NotifyPipeWrite(int media_id, TrackId track_id); void NotifyExternalSurface(int surface_id, diff --git a/chromecast/browser/media/media_pipeline_host.cc b/chromecast/browser/media/media_pipeline_host.cc index ff97612..ff3eb69 100644 --- a/chromecast/browser/media/media_pipeline_host.cc +++ b/chromecast/browser/media/media_pipeline_host.cc @@ -142,7 +142,7 @@ void MediaPipelineHost::Stop() { media_pipeline_->Stop(); } -void MediaPipelineHost::SetPlaybackRate(float playback_rate) { +void MediaPipelineHost::SetPlaybackRate(double playback_rate) { DCHECK(thread_checker_.CalledOnValidThread()); media_pipeline_->SetPlaybackRate(playback_rate); } diff --git a/chromecast/browser/media/media_pipeline_host.h b/chromecast/browser/media/media_pipeline_host.h index 1dea01e..dc15db9 100644 --- a/chromecast/browser/media/media_pipeline_host.h +++ b/chromecast/browser/media/media_pipeline_host.h @@ -59,7 +59,7 @@ class MediaPipelineHost { void Flush(const ::media::PipelineStatusCB& status_cb); void Stop(); - void SetPlaybackRate(float playback_rate); + void SetPlaybackRate(double playback_rate); void SetVolume(TrackId track_id, float playback_rate); void SetCdm(BrowserCdmCast* cdm); diff --git a/chromecast/common/media/cma_messages.h b/chromecast/common/media/cma_messages.h index 414913b..3fbed3d 100644 --- a/chromecast/common/media/cma_messages.h +++ b/chromecast/common/media/cma_messages.h @@ -41,7 +41,7 @@ IPC_MESSAGE_CONTROL1(CmaHostMsg_Stop, int /* Media pipeline ID */) IPC_MESSAGE_CONTROL2(CmaHostMsg_SetPlaybackRate, int /* Media pipeline ID */, - float /* Playback rate */) + double /* Playback rate */) IPC_MESSAGE_CONTROL3(CmaHostMsg_CreateAvPipe, int /* Media pipeline ID */, diff --git a/chromecast/media/base/switching_media_renderer.cc b/chromecast/media/base/switching_media_renderer.cc index 79b7d1ef..b0a12c3 100644 --- a/chromecast/media/base/switching_media_renderer.cc +++ b/chromecast/media/base/switching_media_renderer.cc @@ -78,7 +78,7 @@ void SwitchingMediaRenderer::StartPlayingFrom(base::TimeDelta time) { GetRenderer()->StartPlayingFrom(time); } -void SwitchingMediaRenderer::SetPlaybackRate(float playback_rate) { +void SwitchingMediaRenderer::SetPlaybackRate(double playback_rate) { GetRenderer()->SetPlaybackRate(playback_rate); } diff --git a/chromecast/media/base/switching_media_renderer.h b/chromecast/media/base/switching_media_renderer.h index 2739f40..c32b1d4 100644 --- a/chromecast/media/base/switching_media_renderer.h +++ b/chromecast/media/base/switching_media_renderer.h @@ -43,7 +43,7 @@ class SwitchingMediaRenderer : public ::media::Renderer { const ::media::CdmAttachedCB& cdm_attached_cb) override; void Flush(const base::Closure& flush_cb) override; void StartPlayingFrom(base::TimeDelta time) override; - void SetPlaybackRate(float playback_rate) override; + void SetPlaybackRate(double playback_rate) override; void SetVolume(float volume) override; base::TimeDelta GetMediaTime() override; bool HasAudio() override; diff --git a/chromecast/media/cma/filters/cma_renderer.cc b/chromecast/media/cma/filters/cma_renderer.cc index bc29b4f..0de0634 100644 --- a/chromecast/media/cma/filters/cma_renderer.cc +++ b/chromecast/media/cma/filters/cma_renderer.cc @@ -55,7 +55,7 @@ CmaRenderer::CmaRenderer(scoped_ptr<MediaPipeline> media_pipeline, initial_video_hole_created_(false), time_interpolator_( new ::media::TimeDeltaInterpolator(&default_tick_clock_)), - playback_rate_(1.0f), + playback_rate_(1.0), weak_factory_(this) { weak_this_ = weak_factory_.GetWeakPtr(); thread_checker_.DetachFromThread(); @@ -185,7 +185,7 @@ void CmaRenderer::StartPlayingFrom(base::TimeDelta time) { CompleteStateTransition(kPlaying); } -void CmaRenderer::SetPlaybackRate(float playback_rate) { +void CmaRenderer::SetPlaybackRate(double playback_rate) { CMALOG(kLogControl) << __FUNCTION__ << ": " << playback_rate; DCHECK(thread_checker_.CalledOnValidThread()); media_pipeline_->SetPlaybackRate(playback_rate); diff --git a/chromecast/media/cma/filters/cma_renderer.h b/chromecast/media/cma/filters/cma_renderer.h index 25fec41..d33699e 100644 --- a/chromecast/media/cma/filters/cma_renderer.h +++ b/chromecast/media/cma/filters/cma_renderer.h @@ -50,7 +50,7 @@ class CmaRenderer : public ::media::Renderer { const base::Closure& waiting_for_decryption_key_cb) override; void Flush(const base::Closure& flush_cb) override; void StartPlayingFrom(base::TimeDelta time) override; - void SetPlaybackRate(float playback_rate) override; + void SetPlaybackRate(double playback_rate) override; void SetVolume(float volume) override; base::TimeDelta GetMediaTime() override; bool HasAudio() override; @@ -137,7 +137,7 @@ class CmaRenderer : public ::media::Renderer { // as playback progresses. scoped_ptr< ::media::TimeDeltaInterpolator> time_interpolator_; - float playback_rate_; + double playback_rate_; base::WeakPtr<CmaRenderer> weak_this_; base::WeakPtrFactory<CmaRenderer> weak_factory_; diff --git a/chromecast/media/cma/pipeline/media_pipeline.h b/chromecast/media/cma/pipeline/media_pipeline.h index 2b82c4f..6b127cb 100644 --- a/chromecast/media/cma/pipeline/media_pipeline.h +++ b/chromecast/media/cma/pipeline/media_pipeline.h @@ -57,7 +57,7 @@ class MediaPipeline { virtual void Stop() = 0; // Set the playback rate. - virtual void SetPlaybackRate(float playback_rate) = 0; + virtual void SetPlaybackRate(double playback_rate) = 0; private: DISALLOW_COPY_AND_ASSIGN(MediaPipeline); diff --git a/chromecast/media/cma/pipeline/media_pipeline_impl.cc b/chromecast/media/cma/pipeline/media_pipeline_impl.cc index c713f9a..ced7df14 100644 --- a/chromecast/media/cma/pipeline/media_pipeline_impl.cc +++ b/chromecast/media/cma/pipeline/media_pipeline_impl.cc @@ -263,7 +263,7 @@ void MediaPipelineImpl::Stop() { video_pipeline_->Stop(); } -void MediaPipelineImpl::SetPlaybackRate(float rate) { +void MediaPipelineImpl::SetPlaybackRate(double rate) { CMALOG(kLogControl) << __FUNCTION__ << " rate=" << rate; DCHECK(thread_checker_.CalledOnValidThread()); target_playback_rate_ = rate; diff --git a/chromecast/media/cma/pipeline/media_pipeline_impl.h b/chromecast/media/cma/pipeline/media_pipeline_impl.h index 166b8f9..eb14a55 100644 --- a/chromecast/media/cma/pipeline/media_pipeline_impl.h +++ b/chromecast/media/cma/pipeline/media_pipeline_impl.h @@ -51,7 +51,7 @@ class MediaPipelineImpl : public MediaPipeline { void StartPlayingFrom(base::TimeDelta time) override; void Flush(const ::media::PipelineStatusCB& status_cb) override; void Stop() override; - void SetPlaybackRate(float playback_rate) override; + void SetPlaybackRate(double playback_rate) override; AudioPipelineImpl* GetAudioPipelineImpl() const; VideoPipelineImpl* GetVideoPipelineImpl() const; diff --git a/chromecast/renderer/media/media_pipeline_proxy.cc b/chromecast/renderer/media/media_pipeline_proxy.cc index 7a454b1..830ac0f 100644 --- a/chromecast/renderer/media/media_pipeline_proxy.cc +++ b/chromecast/renderer/media/media_pipeline_proxy.cc @@ -34,7 +34,7 @@ class MediaPipelineProxyInternal { void StartPlayingFrom(const base::TimeDelta& time); void Flush(const ::media::PipelineStatusCB& status_cb); void Stop(); - void SetPlaybackRate(float playback_rate); + void SetPlaybackRate(double playback_rate); private: void Shutdown(); @@ -135,7 +135,7 @@ void MediaPipelineProxyInternal::StartPlayingFrom(const base::TimeDelta& time) { client_.error_cb.Run(::media::PIPELINE_ERROR_ABORT); } -void MediaPipelineProxyInternal::SetPlaybackRate(float playback_rate) { +void MediaPipelineProxyInternal::SetPlaybackRate(double playback_rate) { DCHECK(thread_checker_.CalledOnValidThread()); media_channel_proxy_->Send(scoped_ptr<IPC::Message>( new CmaHostMsg_SetPlaybackRate( @@ -274,7 +274,7 @@ void MediaPipelineProxy::Stop() { FORWARD_ON_IO_THREAD(Stop); } -void MediaPipelineProxy::SetPlaybackRate(float playback_rate) { +void MediaPipelineProxy::SetPlaybackRate(double playback_rate) { DCHECK(thread_checker_.CalledOnValidThread()); FORWARD_ON_IO_THREAD(SetPlaybackRate, playback_rate); } diff --git a/chromecast/renderer/media/media_pipeline_proxy.h b/chromecast/renderer/media/media_pipeline_proxy.h index 0d22795..decec65 100644 --- a/chromecast/renderer/media/media_pipeline_proxy.h +++ b/chromecast/renderer/media/media_pipeline_proxy.h @@ -50,7 +50,7 @@ class MediaPipelineProxy : public MediaPipeline { void StartPlayingFrom(base::TimeDelta time) override; void Flush(const ::media::PipelineStatusCB& status_cb) override; void Stop() override; - void SetPlaybackRate(float playback_rate) override; + void SetPlaybackRate(double playback_rate) override; private: void OnProxyFlushDone(const ::media::PipelineStatusCB& status_cb, diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h index 37940e6..26700f6 100644 --- a/media/base/mock_filters.h +++ b/media/base/mock_filters.h @@ -34,7 +34,7 @@ class MockDemuxer : public Demuxer { // Demuxer implementation. MOCK_METHOD3(Initialize, void(DemuxerHost* host, const PipelineStatusCB& cb, bool)); - MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); + MOCK_METHOD1(SetPlaybackRate, void(double playback_rate)); MOCK_METHOD2(Seek, void(base::TimeDelta time, const PipelineStatusCB& cb)); MOCK_METHOD0(Stop, void()); MOCK_METHOD0(OnAudioRendererDisabled, void()); @@ -179,7 +179,7 @@ class MockRenderer : public Renderer { const base::Closure& waiting_for_decryption_key_cb)); MOCK_METHOD1(Flush, void(const base::Closure& flush_cb)); MOCK_METHOD1(StartPlayingFrom, void(base::TimeDelta timestamp)); - MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); + MOCK_METHOD1(SetPlaybackRate, void(double playback_rate)); MOCK_METHOD1(SetVolume, void(float volume)); MOCK_METHOD0(GetMediaTime, base::TimeDelta()); MOCK_METHOD0(HasAudio, bool()); @@ -200,7 +200,7 @@ class MockTimeSource : public TimeSource { // TimeSource implementation. MOCK_METHOD0(StartTicking, void()); MOCK_METHOD0(StopTicking, void()); - MOCK_METHOD1(SetPlaybackRate, void(float)); + MOCK_METHOD1(SetPlaybackRate, void(double)); MOCK_METHOD1(SetMediaTime, void(base::TimeDelta)); MOCK_METHOD0(CurrentMediaTime, base::TimeDelta()); MOCK_METHOD1(GetWallClockTime, base::TimeTicks(base::TimeDelta)); diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc index c39ddcd..4a39704 100644 --- a/media/base/pipeline.cc +++ b/media/base/pipeline.cc @@ -37,7 +37,7 @@ Pipeline::Pipeline( running_(false), did_loading_progress_(false), volume_(1.0f), - playback_rate_(0.0f), + playback_rate_(0.0), status_(PIPELINE_OK), state_(kCreated), renderer_ended_(false), @@ -121,13 +121,13 @@ bool Pipeline::IsRunning() const { return running_; } -float Pipeline::GetPlaybackRate() const { +double Pipeline::GetPlaybackRate() const { base::AutoLock auto_lock(lock_); return playback_rate_; } -void Pipeline::SetPlaybackRate(float playback_rate) { - if (playback_rate < 0.0f) +void Pipeline::SetPlaybackRate(double playback_rate) { + if (playback_rate < 0.0) return; base::AutoLock auto_lock(lock_); @@ -552,7 +552,7 @@ void Pipeline::ErrorChangedTask(PipelineStatus error) { DoStop(base::Bind(&Pipeline::OnStopCompleted, weak_factory_.GetWeakPtr())); } -void Pipeline::PlaybackRateChangedTask(float playback_rate) { +void Pipeline::PlaybackRateChangedTask(double playback_rate) { DCHECK(task_runner_->BelongsToCurrentThread()); // Playback rate changes are only carried out while playing. diff --git a/media/base/pipeline.h b/media/base/pipeline.h index f10bc39..b63be00 100644 --- a/media/base/pipeline.h +++ b/media/base/pipeline.h @@ -141,17 +141,17 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost { bool IsRunning() const; // Gets the current playback rate of the pipeline. When the pipeline is - // started, the playback rate will be 0.0f. A rate of 1.0f indicates + // started, the playback rate will be 0.0. A rate of 1.0 indicates // that the pipeline is rendering the media at the standard rate. Valid - // values for playback rate are >= 0.0f. - float GetPlaybackRate() const; + // values for playback rate are >= 0.0. + double GetPlaybackRate() const; - // Attempt to adjust the playback rate. Setting a playback rate of 0.0f pauses - // all rendering of the media. A rate of 1.0f indicates a normal playback - // rate. Values for the playback rate must be greater than or equal to 0.0f. + // Attempt to adjust the playback rate. Setting a playback rate of 0.0 pauses + // all rendering of the media. A rate of 1.0 indicates a normal playback + // rate. Values for the playback rate must be greater than or equal to 0.0. // // TODO(scherkus): What about maximum rate? Does HTML5 specify a max? - void SetPlaybackRate(float playback_rate); + void SetPlaybackRate(double playback_rate); // Gets the current volume setting being used by the audio renderer. When // the pipeline is started, this value will be 1.0f. Valid values range @@ -242,7 +242,7 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost { void ErrorChangedTask(PipelineStatus error); // Carries out notifying filters that the playback rate has changed. - void PlaybackRateChangedTask(float playback_rate); + void PlaybackRateChangedTask(double playback_rate); // Carries out notifying filters that the volume has changed. void VolumeChangedTask(float volume); @@ -319,10 +319,10 @@ class MEDIA_EXPORT Pipeline : public DemuxerHost { // filters. float volume_; - // Current playback rate (>= 0.0f). This value is set immediately via + // Current playback rate (>= 0.0). This value is set immediately via // SetPlaybackRate() and a task is dispatched on the task runner to notify // the filters. - float playback_rate_; + double playback_rate_; // Current duration as reported by |demuxer_|. base::TimeDelta duration_; diff --git a/media/base/pipeline_unittest.cc b/media/base/pipeline_unittest.cc index 09d9fdd..d4f9fa0 100644 --- a/media/base/pipeline_unittest.cc +++ b/media/base/pipeline_unittest.cc @@ -209,7 +209,7 @@ class PipelineTest : public ::testing::Test { if (start_status == PIPELINE_OK) { EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); - EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); + EXPECT_CALL(*renderer_, SetPlaybackRate(0.0)); EXPECT_CALL(*renderer_, SetVolume(1.0f)); EXPECT_CALL(*renderer_, StartPlayingFrom(start_time_)) .WillOnce(SetBufferingState(&buffering_state_cb_, @@ -337,9 +337,9 @@ TEST_F(PipelineTest, NotStarted) { // Setting should still work. EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); - pipeline_->SetPlaybackRate(-1.0f); + pipeline_->SetPlaybackRate(-1.0); EXPECT_EQ(0.0f, pipeline_->GetPlaybackRate()); - pipeline_->SetPlaybackRate(1.0f); + pipeline_->SetPlaybackRate(1.0); EXPECT_EQ(1.0f, pipeline_->GetPlaybackRate()); // Setting should still work. @@ -640,7 +640,7 @@ TEST_F(PipelineTest, ErrorDuringSeek) { SetRendererExpectations(); StartPipelineAndExpect(PIPELINE_OK); - float playback_rate = 1.0f; + double playback_rate = 1.0; EXPECT_CALL(*renderer_, SetPlaybackRate(playback_rate)); pipeline_->SetPlaybackRate(playback_rate); message_loop_.RunUntilIdle(); @@ -675,7 +675,7 @@ static void TestNoCallsAfterError( EXPECT_TRUE(message_loop->IsIdleForTesting()); // Make calls on pipeline after error has occurred. - pipeline->SetPlaybackRate(0.5f); + pipeline->SetPlaybackRate(0.5); pipeline->SetVolume(0.5f); // No additional tasks should be queued as a result of these calls. @@ -877,7 +877,7 @@ class PipelineTeardownTest : public PipelineTest { EXPECT_CALL(callbacks_, OnMetadata(_)); // If we get here it's a successful initialization. - EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); + EXPECT_CALL(*renderer_, SetPlaybackRate(0.0)); EXPECT_CALL(*renderer_, SetVolume(1.0f)); EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) .WillOnce(SetBufferingState(&buffering_state_cb_, diff --git a/media/base/renderer.h b/media/base/renderer.h index 31661c4..75372fb 100644 --- a/media/base/renderer.h +++ b/media/base/renderer.h @@ -65,7 +65,7 @@ class MEDIA_EXPORT Renderer { virtual void StartPlayingFrom(base::TimeDelta time) = 0; // Updates the current playback rate. The default playback rate should be 1. - virtual void SetPlaybackRate(float playback_rate) = 0; + virtual void SetPlaybackRate(double playback_rate) = 0; // Sets the output volume. The default volume should be 1. virtual void SetVolume(float volume) = 0; diff --git a/media/base/time_delta_interpolator.cc b/media/base/time_delta_interpolator.cc index 11ba1cd..acff37e 100644 --- a/media/base/time_delta_interpolator.cc +++ b/media/base/time_delta_interpolator.cc @@ -16,7 +16,7 @@ TimeDeltaInterpolator::TimeDeltaInterpolator(base::TickClock* tick_clock) : tick_clock_(tick_clock), interpolating_(false), upper_bound_(kNoTimestamp()), - playback_rate_(1.0f) { + playback_rate_(1.0) { DCHECK(tick_clock_); } @@ -37,7 +37,7 @@ base::TimeDelta TimeDeltaInterpolator::StopInterpolating() { return lower_bound_; } -void TimeDeltaInterpolator::SetPlaybackRate(float playback_rate) { +void TimeDeltaInterpolator::SetPlaybackRate(double playback_rate) { lower_bound_ = GetInterpolatedTime(); reference_ = tick_clock_->NowTicks(); playback_rate_ = playback_rate; diff --git a/media/base/time_delta_interpolator.h b/media/base/time_delta_interpolator.h index af7535d..7dbda69 100644 --- a/media/base/time_delta_interpolator.h +++ b/media/base/time_delta_interpolator.h @@ -42,7 +42,7 @@ class MEDIA_EXPORT TimeDeltaInterpolator { // Sets a new rate at which to interpolate. // // |tick_clock| will be queried for a new reference time value. - void SetPlaybackRate(float playback_rate); + void SetPlaybackRate(double playback_rate); // Sets the two timestamps to interpolate between at |playback_rate_|. // |upper_bound| must be greater or equal to |lower_bound|. @@ -72,7 +72,7 @@ class MEDIA_EXPORT TimeDeltaInterpolator { // |lower_bound_| and |upper_bound_|. base::TimeTicks reference_; - float playback_rate_; + double playback_rate_; DISALLOW_COPY_AND_ASSIGN(TimeDeltaInterpolator); }; diff --git a/media/base/time_delta_interpolator_unittest.cc b/media/base/time_delta_interpolator_unittest.cc index 04242f1..04ee8f7 100644 --- a/media/base/time_delta_interpolator_unittest.cc +++ b/media/base/time_delta_interpolator_unittest.cc @@ -40,7 +40,7 @@ TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_DoubleSpeed) { const base::TimeDelta kZero; const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(5); - interpolator_.SetPlaybackRate(2.0f); + interpolator_.SetPlaybackRate(2.0); EXPECT_EQ(kZero, interpolator_.StartInterpolating()); AdvanceSystemTime(kTimeToAdvance); EXPECT_EQ(2 * kTimeToAdvance, interpolator_.GetInterpolatedTime()); @@ -50,7 +50,7 @@ TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_HalfSpeed) { const base::TimeDelta kZero; const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(4); - interpolator_.SetPlaybackRate(0.5f); + interpolator_.SetPlaybackRate(0.5); EXPECT_EQ(kZero, interpolator_.StartInterpolating()); AdvanceSystemTime(kTimeToAdvance); EXPECT_EQ(kTimeToAdvance / 2, interpolator_.GetInterpolatedTime()); @@ -68,9 +68,9 @@ TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_ZeroSpeed) { EXPECT_EQ(kZero, interpolator_.StartInterpolating()); AdvanceSystemTime(kPlayDuration1); - interpolator_.SetPlaybackRate(0.0f); + interpolator_.SetPlaybackRate(0.0); AdvanceSystemTime(kPlayDuration2); - interpolator_.SetPlaybackRate(1.0f); + interpolator_.SetPlaybackRate(1.0); AdvanceSystemTime(kPlayDuration3); EXPECT_EQ(kExpected, interpolator_.GetInterpolatedTime()); @@ -86,14 +86,14 @@ TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_MultiSpeed) { const base::TimeDelta kExpected = kPlayDuration1 / 2 + kPlayDuration2 + 2 * kPlayDuration3; - interpolator_.SetPlaybackRate(0.5f); + interpolator_.SetPlaybackRate(0.5); EXPECT_EQ(kZero, interpolator_.StartInterpolating()); AdvanceSystemTime(kPlayDuration1); - interpolator_.SetPlaybackRate(1.0f); + interpolator_.SetPlaybackRate(1.0); AdvanceSystemTime(kPlayDuration2); - interpolator_.SetPlaybackRate(2.0f); + interpolator_.SetPlaybackRate(2.0); AdvanceSystemTime(kPlayDuration3); EXPECT_EQ(kExpected, interpolator_.GetInterpolatedTime()); } diff --git a/media/base/time_source.h b/media/base/time_source.h index 71fe858..d025de2 100644 --- a/media/base/time_source.h +++ b/media/base/time_source.h @@ -27,7 +27,7 @@ class MEDIA_EXPORT TimeSource { // Updates the current playback rate. It is expected that values from // CurrentMediaTime() will eventually reflect the new playback rate (e.g., the // media time will advance at half speed if the rate was set to 0.5f). - virtual void SetPlaybackRate(float playback_rate) = 0; + virtual void SetPlaybackRate(double playback_rate) = 0; // Sets the media time to start ticking from. Only valid to call while the // time source is not ticking. diff --git a/media/base/wall_clock_time_source.cc b/media/base/wall_clock_time_source.cc index e58162e..0369306 100644 --- a/media/base/wall_clock_time_source.cc +++ b/media/base/wall_clock_time_source.cc @@ -12,7 +12,7 @@ namespace media { WallClockTimeSource::WallClockTimeSource() : tick_clock_(new base::DefaultTickClock()), ticking_(false), - playback_rate_(1.0f) { + playback_rate_(1.0) { } WallClockTimeSource::~WallClockTimeSource() { @@ -35,7 +35,7 @@ void WallClockTimeSource::StopTicking() { reference_wall_ticks_ = tick_clock_->NowTicks(); } -void WallClockTimeSource::SetPlaybackRate(float playback_rate) { +void WallClockTimeSource::SetPlaybackRate(double playback_rate) { DVLOG(1) << __FUNCTION__ << "(" << playback_rate << ")"; base::AutoLock auto_lock(lock_); // Estimate current media time using old rate to use as a new base time for diff --git a/media/base/wall_clock_time_source.h b/media/base/wall_clock_time_source.h index d3d210e..1de6518 100644 --- a/media/base/wall_clock_time_source.h +++ b/media/base/wall_clock_time_source.h @@ -25,7 +25,7 @@ class MEDIA_EXPORT WallClockTimeSource : public TimeSource { // TimeSource implementation. void StartTicking() override; void StopTicking() override; - void SetPlaybackRate(float playback_rate) override; + void SetPlaybackRate(double playback_rate) override; void SetMediaTime(base::TimeDelta time) override; base::TimeDelta CurrentMediaTime() override; base::TimeTicks GetWallClockTime(base::TimeDelta time) override; diff --git a/media/blink/buffered_data_source.cc b/media/blink/buffered_data_source.cc index ed93848..d5f32b1 100644 --- a/media/blink/buffered_data_source.cc +++ b/media/blink/buffered_data_source.cc @@ -189,11 +189,11 @@ void BufferedDataSource::Abort() { frame_ = NULL; } -void BufferedDataSource::MediaPlaybackRateChanged(float playback_rate) { +void BufferedDataSource::MediaPlaybackRateChanged(double playback_rate) { DCHECK(render_task_runner_->BelongsToCurrentThread()); DCHECK(loader_.get()); - if (playback_rate < 0.0f) + if (playback_rate < 0.0) return; playback_rate_ = playback_rate; diff --git a/media/blink/buffered_data_source.h b/media/blink/buffered_data_source.h index e149bb0..32f1481 100644 --- a/media/blink/buffered_data_source.h +++ b/media/blink/buffered_data_source.h @@ -100,7 +100,7 @@ class MEDIA_EXPORT BufferedDataSource : public DataSource { // Notifies changes in playback state for controlling media buffering // behavior. - void MediaPlaybackRateChanged(float playback_rate); + void MediaPlaybackRateChanged(double playback_rate); void MediaIsPlaying(); void MediaIsPaused(); bool media_has_played() const { return media_has_played_; } @@ -229,7 +229,7 @@ class MEDIA_EXPORT BufferedDataSource : public DataSource { int bitrate_; // Current playback rate. - float playback_rate_; + double playback_rate_; scoped_refptr<MediaLog> media_log_; diff --git a/media/blink/buffered_data_source_unittest.cc b/media/blink/buffered_data_source_unittest.cc index eed8674..3776fd6 100644 --- a/media/blink/buffered_data_source_unittest.cc +++ b/media/blink/buffered_data_source_unittest.cc @@ -234,9 +234,9 @@ class BufferedDataSourceTest : public testing::Test { return loader()->defer_strategy_; } int data_source_bitrate() { return data_source_->bitrate_; } - int data_source_playback_rate() { return data_source_->playback_rate_; } + double data_source_playback_rate() { return data_source_->playback_rate_; } int loader_bitrate() { return loader()->bitrate_; } - int loader_playback_rate() { return loader()->playback_rate_; } + double loader_playback_rate() { return loader()->playback_rate_; } bool is_local_source() { return data_source_->assume_fully_buffered(); } void set_might_be_reused_from_cache_in_future(bool value) { loader()->might_be_reused_from_cache_in_future_ = value; @@ -560,9 +560,9 @@ TEST_F(BufferedDataSourceTest, DefaultValues) { EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); EXPECT_EQ(0, data_source_bitrate()); - EXPECT_EQ(0.0f, data_source_playback_rate()); + EXPECT_EQ(0.0, data_source_playback_rate()); EXPECT_EQ(0, loader_bitrate()); - EXPECT_EQ(0.0f, loader_playback_rate()); + EXPECT_EQ(0.0, loader_playback_rate()); EXPECT_TRUE(data_source_->loading()); Stop(); @@ -594,10 +594,10 @@ TEST_F(BufferedDataSourceTest, SetBitrate) { TEST_F(BufferedDataSourceTest, MediaPlaybackRateChanged) { InitializeWith206Response(); - data_source_->MediaPlaybackRateChanged(2.0f); + data_source_->MediaPlaybackRateChanged(2.0); message_loop_.RunUntilIdle(); - EXPECT_EQ(2.0f, data_source_playback_rate()); - EXPECT_EQ(2.0f, loader_playback_rate()); + EXPECT_EQ(2.0, data_source_playback_rate()); + EXPECT_EQ(2.0, loader_playback_rate()); // Read so far ahead to cause the loader to get recreated. BufferedResourceLoader* old_loader = loader(); diff --git a/media/blink/buffered_resource_loader.cc b/media/blink/buffered_resource_loader.cc index b2598ea..51ec8fe 100644 --- a/media/blink/buffered_resource_loader.cc +++ b/media/blink/buffered_resource_loader.cc @@ -54,12 +54,12 @@ static const int kForwardWaitThreshold = 2 * kMegabyte; // Computes the suggested backward and forward capacity for the buffer // if one wants to play at |playback_rate| * the natural playback speed. // Use a value of 0 for |bitrate| if it is unknown. -static void ComputeTargetBufferWindow(float playback_rate, int bitrate, +static void ComputeTargetBufferWindow(double playback_rate, int bitrate, int* out_backward_capacity, int* out_forward_capacity) { static const int kDefaultBitrate = 200 * 1024 * 8; // 200 Kbps. static const int kMaxBitrate = 20 * kMegabyte * 8; // 20 Mbps. - static const float kMaxPlaybackRate = 25.0; + static const double kMaxPlaybackRate = 25.0; static const int kTargetSecondsBufferedAhead = 10; static const int kTargetSecondsBufferedBehind = 2; @@ -71,12 +71,12 @@ static void ComputeTargetBufferWindow(float playback_rate, int bitrate, // Only scale the buffer window for playback rates greater than 1.0 in // magnitude and clamp to prevent overflow. bool backward_playback = false; - if (playback_rate < 0.0f) { + if (playback_rate < 0.0) { backward_playback = true; - playback_rate *= -1.0f; + playback_rate *= -1.0; } - playback_rate = std::max(playback_rate, 1.0f); + playback_rate = std::max(playback_rate, 1.0); playback_rate = std::min(playback_rate, kMaxPlaybackRate); int bytes_per_second = (bitrate / 8.0) * playback_rate; @@ -101,7 +101,7 @@ BufferedResourceLoader::BufferedResourceLoader( int64 last_byte_position, DeferStrategy strategy, int bitrate, - float playback_rate, + double playback_rate, MediaLog* media_log) : buffer_(kMinBufferCapacity, kMinBufferCapacity), loader_failed_(false), @@ -571,7 +571,7 @@ void BufferedResourceLoader::UpdateDeferStrategy(DeferStrategy strategy) { UpdateDeferBehavior(); } -void BufferedResourceLoader::SetPlaybackRate(float playback_rate) { +void BufferedResourceLoader::SetPlaybackRate(double playback_rate) { playback_rate_ = playback_rate; // This is a pause so don't bother updating the buffer window as we'll likely diff --git a/media/blink/buffered_resource_loader.h b/media/blink/buffered_resource_loader.h index 2b9cf57..cb02720 100644 --- a/media/blink/buffered_resource_loader.h +++ b/media/blink/buffered_resource_loader.h @@ -85,7 +85,7 @@ class MEDIA_EXPORT BufferedResourceLoader int64 last_byte_position, DeferStrategy strategy, int bitrate, - float playback_rate, + double playback_rate, MediaLog* media_log); virtual ~BufferedResourceLoader(); @@ -179,7 +179,7 @@ class MEDIA_EXPORT BufferedResourceLoader // Sets the playback rate to the given value and updates buffer window // accordingly. - void SetPlaybackRate(float playback_rate); + void SetPlaybackRate(double playback_rate); // Sets the bitrate to the given value and updates buffer window // accordingly. @@ -314,7 +314,7 @@ class MEDIA_EXPORT BufferedResourceLoader int bitrate_; // Playback rate of the media. - float playback_rate_; + double playback_rate_; scoped_refptr<MediaLog> media_log_; diff --git a/media/blink/buffered_resource_loader_unittest.cc b/media/blink/buffered_resource_loader_unittest.cc index f046d60..1fdd6d8 100644 --- a/media/blink/buffered_resource_loader_unittest.cc +++ b/media/blink/buffered_resource_loader_unittest.cc @@ -1068,7 +1068,7 @@ TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_Zero) { TEST_F(BufferedResourceLoaderTest, BufferWindow_PlaybackRate_BelowLowerBound) { Initialize(kHttpUrl, -1, -1); Start(); - loader_->SetPlaybackRate(0.1f); + loader_->SetPlaybackRate(0.1); CheckBufferWindowBounds(); StopWhenLoad(); } diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc index 8fa7a7f..ac67b21 100644 --- a/media/blink/webmediaplayer_impl.cc +++ b/media/blink/webmediaplayer_impl.cc @@ -122,7 +122,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( opaque_(false), paused_(true), seeking_(false), - playback_rate_(0.0f), + playback_rate_(0.0), ended_(false), pending_seek_(false), pending_seek_seconds_(0.0f), @@ -269,7 +269,7 @@ void WebMediaPlayerImpl::pause() { const bool was_already_paused = paused_ || playback_rate_ == 0; paused_ = true; - pipeline_.SetPlaybackRate(0.0f); + pipeline_.SetPlaybackRate(0.0); if (data_source_) data_source_->MediaIsPaused(); UpdatePausedTime(); diff --git a/media/filters/audio_clock_unittest.cc b/media/filters/audio_clock_unittest.cc index 7b4d85fd..3fe437e 100644 --- a/media/filters/audio_clock_unittest.cc +++ b/media/filters/audio_clock_unittest.cc @@ -19,7 +19,7 @@ class AudioClockTest : public testing::Test { void WroteAudio(int frames_written, int frames_requested, int delay_frames, - float playback_rate) { + double playback_rate) { clock_.WroteAudio( frames_written, frames_requested, delay_frames, playback_rate); } diff --git a/media/filters/audio_renderer_algorithm.cc b/media/filters/audio_renderer_algorithm.cc index 16e903c..0d59d39 100644 --- a/media/filters/audio_renderer_algorithm.cc +++ b/media/filters/audio_renderer_algorithm.cc @@ -49,8 +49,8 @@ namespace media { // Max/min supported playback rates for fast/slow audio. Audio outside of these // ranges are muted. // Audio at these speeds would sound better under a frequency domain algorithm. -static const float kMinPlaybackRate = 0.5f; -static const float kMaxPlaybackRate = 4.0f; +static const double kMinPlaybackRate = 0.5; +static const double kMaxPlaybackRate = 4.0; // Overlap-and-add window size in milliseconds. static const int kOlaWindowSizeMs = 20; @@ -144,7 +144,7 @@ void AudioRendererAlgorithm::Initialize(const AudioParameters& params) { int AudioRendererAlgorithm::FillBuffer(AudioBus* dest, int dest_offset, int requested_frames, - float playback_rate) { + double playback_rate) { if (playback_rate == 0) return 0; @@ -237,7 +237,7 @@ bool AudioRendererAlgorithm::CanPerformWsola() const { search_block_index_ + search_block_size <= frames; } -bool AudioRendererAlgorithm::RunOneWsolaIteration(float playback_rate) { +bool AudioRendererAlgorithm::RunOneWsolaIteration(double playback_rate) { if (!CanPerformWsola()) return false; @@ -263,7 +263,7 @@ bool AudioRendererAlgorithm::RunOneWsolaIteration(float playback_rate) { return true; } -void AudioRendererAlgorithm::UpdateOutputTime(float playback_rate, +void AudioRendererAlgorithm::UpdateOutputTime(double playback_rate, double time_change) { output_time_ += time_change; // Center of the search region, in frames. @@ -272,7 +272,7 @@ void AudioRendererAlgorithm::UpdateOutputTime(float playback_rate, search_block_index_ = search_block_center_index - search_block_center_offset_; } -void AudioRendererAlgorithm::RemoveOldInputFrames(float playback_rate) { +void AudioRendererAlgorithm::RemoveOldInputFrames(double playback_rate) { const int earliest_used_index = std::min(target_block_index_, search_block_index_); if (earliest_used_index <= 0) diff --git a/media/filters/audio_renderer_algorithm.h b/media/filters/audio_renderer_algorithm.h index 25ac811..2005bfe 100644 --- a/media/filters/audio_renderer_algorithm.h +++ b/media/filters/audio_renderer_algorithm.h @@ -51,7 +51,7 @@ class MEDIA_EXPORT AudioRendererAlgorithm { int FillBuffer(AudioBus* dest, int dest_offset, int requested_frames, - float playback_rate); + double playback_rate); // Clears |audio_buffer_|. void FlushBuffers(); @@ -101,15 +101,15 @@ class MEDIA_EXPORT AudioRendererAlgorithm { // Run one iteration of WSOLA, if there are sufficient frames. This will // overlap-and-add one block to |wsola_output_|, hence, |num_complete_frames_| // is incremented by |ola_hop_size_|. - bool RunOneWsolaIteration(float playback_rate); + bool RunOneWsolaIteration(double playback_rate); // Seek |audio_buffer_| forward to remove frames from input that are not used // any more. State of the WSOLA will be updated accordingly. - void RemoveOldInputFrames(float playback_rate); + void RemoveOldInputFrames(double playback_rate); // Update |output_time_| by |time_change|. In turn |search_block_index_| is // updated. - void UpdateOutputTime(float playback_rate, double time_change); + void UpdateOutputTime(double playback_rate, double time_change); // Is |target_block_| fully within |search_block_|? If so, we don't need to // perform the search. diff --git a/media/filters/audio_renderer_algorithm_unittest.cc b/media/filters/audio_renderer_algorithm_unittest.cc index 47ce30e..003cd51 100644 --- a/media/filters/audio_renderer_algorithm_unittest.cc +++ b/media/filters/audio_renderer_algorithm_unittest.cc @@ -239,7 +239,7 @@ class AudioRendererAlgorithmTest : public testing::Test { EXPECT_NEAR(playback_rate, actual_playback_rate, playback_rate / 100.0); } - void WsolaTest(float playback_rate) { + void WsolaTest(double playback_rate) { const int kSampleRateHz = 48000; const ChannelLayout kChannelLayout = CHANNEL_LAYOUT_STEREO; const int kBytesPerSample = 2; @@ -640,11 +640,11 @@ TEST_F(AudioRendererAlgorithmTest, QuadraticInterpolation_Colinear) { } TEST_F(AudioRendererAlgorithmTest, WsolaSlowdown) { - WsolaTest(0.6f); + WsolaTest(0.6); } TEST_F(AudioRendererAlgorithmTest, WsolaSpeedup) { - WsolaTest(1.6f); + WsolaTest(1.6); } TEST_F(AudioRendererAlgorithmTest, FillBufferOffset) { diff --git a/media/mojo/interfaces/media_renderer.mojom b/media/mojo/interfaces/media_renderer.mojom index 9165a33..616e677 100644 --- a/media/mojo/interfaces/media_renderer.mojom +++ b/media/mojo/interfaces/media_renderer.mojom @@ -25,7 +25,7 @@ interface MediaRenderer { StartPlayingFrom(int64 time_usec); // Updates the current playback rate. The default playback rate should be 1. - SetPlaybackRate(float playback_rate); + SetPlaybackRate(double playback_rate); // Sets the output volume. The default volume should be 1. SetVolume(float volume); diff --git a/media/mojo/services/mojo_renderer_impl.cc b/media/mojo/services/mojo_renderer_impl.cc index d1b41a6..73e677d 100644 --- a/media/mojo/services/mojo_renderer_impl.cc +++ b/media/mojo/services/mojo_renderer_impl.cc @@ -103,7 +103,7 @@ void MojoRendererImpl::StartPlayingFrom(base::TimeDelta time) { remote_media_renderer_->StartPlayingFrom(time.InMicroseconds()); } -void MojoRendererImpl::SetPlaybackRate(float playback_rate) { +void MojoRendererImpl::SetPlaybackRate(double playback_rate) { DVLOG(2) << __FUNCTION__; DCHECK(task_runner_->BelongsToCurrentThread()); remote_media_renderer_->SetPlaybackRate(playback_rate); diff --git a/media/mojo/services/mojo_renderer_impl.h b/media/mojo/services/mojo_renderer_impl.h index cea3284..7b955a2 100644 --- a/media/mojo/services/mojo_renderer_impl.h +++ b/media/mojo/services/mojo_renderer_impl.h @@ -44,7 +44,7 @@ class MojoRendererImpl : public Renderer, public mojo::MediaRendererClient { const CdmAttachedCB& cdm_attached_cb) override; void Flush(const base::Closure& flush_cb) override; void StartPlayingFrom(base::TimeDelta time) override; - void SetPlaybackRate(float playback_rate) override; + void SetPlaybackRate(double playback_rate) override; void SetVolume(float volume) override; base::TimeDelta GetMediaTime() override; bool HasAudio() override; diff --git a/media/mojo/services/mojo_renderer_service.cc b/media/mojo/services/mojo_renderer_service.cc index 0601c2c..ba81a21 100644 --- a/media/mojo/services/mojo_renderer_service.cc +++ b/media/mojo/services/mojo_renderer_service.cc @@ -93,7 +93,7 @@ void MojoRendererService::StartPlayingFrom(int64_t time_delta_usec) { SchedulePeriodicMediaTimeUpdates(); } -void MojoRendererService::SetPlaybackRate(float playback_rate) { +void MojoRendererService::SetPlaybackRate(double playback_rate) { DVLOG(2) << __FUNCTION__ << ": " << playback_rate; DCHECK_EQ(state_, STATE_PLAYING); renderer_->SetPlaybackRate(playback_rate); diff --git a/media/mojo/services/mojo_renderer_service.h b/media/mojo/services/mojo_renderer_service.h index 6003515..1b81168 100644 --- a/media/mojo/services/mojo_renderer_service.h +++ b/media/mojo/services/mojo_renderer_service.h @@ -44,7 +44,7 @@ class MEDIA_EXPORT MojoRendererService const mojo::Closure& callback) override; void Flush(const mojo::Closure& callback) override; void StartPlayingFrom(int64_t time_delta_usec) override; - void SetPlaybackRate(float playback_rate) override; + void SetPlaybackRate(double playback_rate) override; void SetVolume(float volume) override; private: diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc index 6f839db..dbc1b8e 100644 --- a/media/renderers/audio_renderer_impl.cc +++ b/media/renderers/audio_renderer_impl.cc @@ -52,7 +52,7 @@ AudioRendererImpl::AudioRendererImpl( audio_buffer_stream_( new AudioBufferStream(task_runner, decoders.Pass(), media_log)), hardware_config_(hardware_config), - playback_rate_(0), + playback_rate_(0.0), state_(kUninitialized), buffering_state_(BUFFERING_HAVE_NOTHING), rendering_(false), @@ -100,7 +100,7 @@ void AudioRendererImpl::StartRendering_Locked() { DCHECK(task_runner_->BelongsToCurrentThread()); DCHECK_EQ(state_, kPlaying); DCHECK(!sink_playing_); - DCHECK_NE(playback_rate_, 0); + DCHECK_NE(playback_rate_, 0.0); lock_.AssertAcquired(); sink_playing_ = true; @@ -535,7 +535,7 @@ bool AudioRendererImpl::CanRead_Locked() { !algorithm_->IsQueueFull(); } -void AudioRendererImpl::SetPlaybackRate(float playback_rate) { +void AudioRendererImpl::SetPlaybackRate(double playback_rate) { DVLOG(1) << __FUNCTION__ << "(" << playback_rate << ")"; DCHECK(task_runner_->BelongsToCurrentThread()); DCHECK_GE(playback_rate, 0); @@ -546,7 +546,7 @@ void AudioRendererImpl::SetPlaybackRate(float playback_rate) { // We have two cases here: // Play: current_playback_rate == 0 && playback_rate != 0 // Pause: current_playback_rate != 0 && playback_rate == 0 - float current_playback_rate = playback_rate_; + double current_playback_rate = playback_rate_; playback_rate_ = playback_rate; if (!rendering_) diff --git a/media/renderers/audio_renderer_impl.h b/media/renderers/audio_renderer_impl.h index 366b492..bd11f40 100644 --- a/media/renderers/audio_renderer_impl.h +++ b/media/renderers/audio_renderer_impl.h @@ -68,7 +68,7 @@ class MEDIA_EXPORT AudioRendererImpl // TimeSource implementation. void StartTicking() override; void StopTicking() override; - void SetPlaybackRate(float rate) override; + void SetPlaybackRate(double rate) override; void SetMediaTime(base::TimeDelta time) override; base::TimeDelta CurrentMediaTime() override; base::TimeTicks GetWallClockTime(base::TimeDelta time) override; diff --git a/media/renderers/audio_renderer_impl_unittest.cc b/media/renderers/audio_renderer_impl_unittest.cc index 98782c9..1fe5bdd 100644 --- a/media/renderers/audio_renderer_impl_unittest.cc +++ b/media/renderers/audio_renderer_impl_unittest.cc @@ -212,7 +212,7 @@ class AudioRendererImplTest : public ::testing::Test { void StartTicking() { renderer_->StartTicking(); - renderer_->SetPlaybackRate(1.0f); + renderer_->SetPlaybackRate(1.0); } void StopTicking() { renderer_->StopTicking(); } @@ -721,18 +721,18 @@ TEST_F(AudioRendererImplTest, SetPlaybackRate) { // Rendering hasn't started. Sink should always be paused. EXPECT_EQ(FakeAudioRendererSink::kPaused, sink_->state()); - renderer_->SetPlaybackRate(0.0f); + renderer_->SetPlaybackRate(0.0); EXPECT_EQ(FakeAudioRendererSink::kPaused, sink_->state()); - renderer_->SetPlaybackRate(1.0f); + renderer_->SetPlaybackRate(1.0); EXPECT_EQ(FakeAudioRendererSink::kPaused, sink_->state()); // Rendering has started with non-zero rate. Rate changes will affect sink // state. renderer_->StartTicking(); EXPECT_EQ(FakeAudioRendererSink::kPlaying, sink_->state()); - renderer_->SetPlaybackRate(0.0f); + renderer_->SetPlaybackRate(0.0); EXPECT_EQ(FakeAudioRendererSink::kPaused, sink_->state()); - renderer_->SetPlaybackRate(1.0f); + renderer_->SetPlaybackRate(1.0); EXPECT_EQ(FakeAudioRendererSink::kPlaying, sink_->state()); // Rendering has stopped. Sink should be paused. @@ -741,10 +741,10 @@ TEST_F(AudioRendererImplTest, SetPlaybackRate) { // Start rendering with zero playback rate. Sink should be paused until // non-zero rate is set. - renderer_->SetPlaybackRate(0.0f); + renderer_->SetPlaybackRate(0.0); renderer_->StartTicking(); EXPECT_EQ(FakeAudioRendererSink::kPaused, sink_->state()); - renderer_->SetPlaybackRate(1.0f); + renderer_->SetPlaybackRate(1.0); EXPECT_EQ(FakeAudioRendererSink::kPlaying, sink_->state()); } diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc index 62caf9d..30eeb4f 100644 --- a/media/renderers/renderer_impl.cc +++ b/media/renderers/renderer_impl.cc @@ -35,7 +35,7 @@ RendererImpl::RendererImpl( video_renderer_(video_renderer.Pass()), time_source_(NULL), time_ticking_(false), - playback_rate_(0), + playback_rate_(0.0), audio_buffering_state_(BUFFERING_HAVE_NOTHING), video_buffering_state_(BUFFERING_HAVE_NOTHING), audio_ended_(false), @@ -166,7 +166,7 @@ void RendererImpl::StartPlayingFrom(base::TimeDelta time) { video_renderer_->StartPlayingFrom(time); } -void RendererImpl::SetPlaybackRate(float playback_rate) { +void RendererImpl::SetPlaybackRate(double playback_rate) { DVLOG(1) << __FUNCTION__ << "(" << playback_rate << ")"; DCHECK(task_runner_->BelongsToCurrentThread()); @@ -176,7 +176,7 @@ void RendererImpl::SetPlaybackRate(float playback_rate) { time_source_->SetPlaybackRate(playback_rate); - const float old_rate = playback_rate_; + const double old_rate = playback_rate_; playback_rate_ = playback_rate; if (!time_ticking_ || !video_renderer_) return; diff --git a/media/renderers/renderer_impl.h b/media/renderers/renderer_impl.h index 3f90271..7911848 100644 --- a/media/renderers/renderer_impl.h +++ b/media/renderers/renderer_impl.h @@ -55,7 +55,7 @@ class MEDIA_EXPORT RendererImpl : public Renderer { const CdmAttachedCB& cdm_attached_cb) final; void Flush(const base::Closure& flush_cb) final; void StartPlayingFrom(base::TimeDelta time) final; - void SetPlaybackRate(float playback_rate) final; + void SetPlaybackRate(double playback_rate) final; void SetVolume(float volume) final; base::TimeDelta GetMediaTime() final; bool HasAudio() final; @@ -152,7 +152,7 @@ class MEDIA_EXPORT RendererImpl : public Renderer { TimeSource* time_source_; scoped_ptr<WallClockTimeSource> wall_clock_time_source_; bool time_ticking_; - float playback_rate_; + double playback_rate_; // The time to start playback from after starting/seeking has completed. base::TimeDelta start_time_; diff --git a/media/renderers/renderer_impl_unittest.cc b/media/renderers/renderer_impl_unittest.cc index 9fcefe4..df4c8cc 100644 --- a/media/renderers/renderer_impl_unittest.cc +++ b/media/renderers/renderer_impl_unittest.cc @@ -217,7 +217,7 @@ class RendererImplTest : public ::testing::Test { base::RunLoop().RunUntilIdle(); } - void SetPlaybackRate(float playback_rate) { + void SetPlaybackRate(double playback_rate) { EXPECT_CALL(time_source_, SetPlaybackRate(playback_rate)); renderer_impl_->SetPlaybackRate(playback_rate); base::RunLoop().RunUntilIdle(); @@ -227,7 +227,7 @@ class RendererImplTest : public ::testing::Test { return renderer_impl_->GetMediaTime().InMilliseconds(); } - bool IsMediaTimeAdvancing(float playback_rate) { + bool IsMediaTimeAdvancing(double playback_rate) { int64 start_time_ms = GetMediaTimeMs(); const int64 time_to_advance_ms = 100; @@ -242,7 +242,7 @@ class RendererImplTest : public ::testing::Test { } bool IsMediaTimeAdvancing() { - return IsMediaTimeAdvancing(1.0f); + return IsMediaTimeAdvancing(1.0); } // Fixture members. @@ -377,8 +377,8 @@ TEST_F(RendererImplTest, FlushAfterUnderflow) { TEST_F(RendererImplTest, SetPlaybackRate) { InitializeWithAudioAndVideo(); - SetPlaybackRate(1.0f); - SetPlaybackRate(2.0f); + SetPlaybackRate(1.0); + SetPlaybackRate(2.0); } TEST_F(RendererImplTest, SetVolume) { |