Fix playback rate w/o audio. Remove unused SetPlaybackRate().

NullAudioSink doesn't need to worry about playback rate since
AudioRendererAlgorithm already compresses/expands the data as
necessary.

The issue is easily seen by playing any of the sync clips and
timing how fast it takes for each rotation of the "clock" in
the video.  Setting playback rate to 2 will actually end up
being 4x as fast currently.

As a bonus, dropping this allows us to remove the now unused
AudioRendererSink::SetPlaybackRate() method.

BUG=none (?)
TEST=Play sync clip, time "clock" rotation at various speeds.


Review URL: https://chromiumcodereview.appspot.com/10837032

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149452 0039d316-1c4b-4281-b951-d872f2087c98
parent 951b12d5
...@@ -115,12 +115,6 @@ void RenderAudioSourceProvider::Pause(bool flush) { ...@@ -115,12 +115,6 @@ void RenderAudioSourceProvider::Pause(bool flush) {
is_running_ = false; is_running_ = false;
} }
void RenderAudioSourceProvider::SetPlaybackRate(float rate) {
base::AutoLock auto_lock(sink_lock_);
if (!client_)
default_sink_->SetPlaybackRate(rate);
}
bool RenderAudioSourceProvider::SetVolume(double volume) { bool RenderAudioSourceProvider::SetVolume(double volume) {
base::AutoLock auto_lock(sink_lock_); base::AutoLock auto_lock(sink_lock_);
if (!client_) if (!client_)
......
...@@ -56,7 +56,6 @@ class RenderAudioSourceProvider ...@@ -56,7 +56,6 @@ class RenderAudioSourceProvider
virtual void Stop() OVERRIDE; virtual void Stop() OVERRIDE;
virtual void Play() OVERRIDE; virtual void Play() OVERRIDE;
virtual void Pause(bool flush) OVERRIDE; virtual void Pause(bool flush) OVERRIDE;
virtual void SetPlaybackRate(float rate) OVERRIDE;
virtual bool SetVolume(double volume) OVERRIDE; virtual bool SetVolume(double volume) OVERRIDE;
virtual void Initialize(const media::AudioParameters& params, virtual void Initialize(const media::AudioParameters& params,
RenderCallback* renderer) OVERRIDE; RenderCallback* renderer) OVERRIDE;
......
...@@ -13,7 +13,6 @@ namespace media { ...@@ -13,7 +13,6 @@ namespace media {
NullAudioSink::NullAudioSink() NullAudioSink::NullAudioSink()
: initialized_(false), : initialized_(false),
playback_rate_(0.0),
playing_(false), playing_(false),
callback_(NULL), callback_(NULL),
thread_("NullAudioThread"), thread_("NullAudioThread"),
...@@ -62,11 +61,6 @@ void NullAudioSink::Pause(bool /* flush */) { ...@@ -62,11 +61,6 @@ void NullAudioSink::Pause(bool /* flush */) {
SetPlaying(false); SetPlaying(false);
} }
void NullAudioSink::SetPlaybackRate(float rate) {
base::AutoLock auto_lock(lock_);
playback_rate_ = rate;
}
bool NullAudioSink::SetVolume(double volume) { bool NullAudioSink::SetVolume(double volume) {
// Audio is always muted. // Audio is always muted.
return volume == 0.0; return volume == 0.0;
...@@ -89,7 +83,6 @@ void NullAudioSink::FillBufferTask() { ...@@ -89,7 +83,6 @@ void NullAudioSink::FillBufferTask() {
base::TimeDelta delay; base::TimeDelta delay;
// Only consume buffers when actually playing. // Only consume buffers when actually playing.
if (playing_) { if (playing_) {
DCHECK_GT(playback_rate_, 0.0f);
int requested_frames = params_.frames_per_buffer(); int requested_frames = params_.frames_per_buffer();
int frames_received = callback_->Render(audio_data_, requested_frames, 0); int frames_received = callback_->Render(audio_data_, requested_frames, 0);
int frames_per_millisecond = int frames_per_millisecond =
...@@ -111,9 +104,9 @@ void NullAudioSink::FillBufferTask() { ...@@ -111,9 +104,9 @@ void NullAudioSink::FillBufferTask() {
} }
} }
// Calculate our sleep duration, taking playback rate into consideration. // Calculate our sleep duration.
delay = base::TimeDelta::FromMilliseconds( delay = base::TimeDelta::FromMilliseconds(
frames_received / (frames_per_millisecond * playback_rate_)); frames_received / frames_per_millisecond);
} else { } else {
// If paused, sleep for 10 milliseconds before polling again. // If paused, sleep for 10 milliseconds before polling again.
delay = base::TimeDelta::FromMilliseconds(10); delay = base::TimeDelta::FromMilliseconds(10);
......
...@@ -33,7 +33,6 @@ class MEDIA_EXPORT NullAudioSink ...@@ -33,7 +33,6 @@ class MEDIA_EXPORT NullAudioSink
virtual void Stop() OVERRIDE; virtual void Stop() OVERRIDE;
virtual void Pause(bool flush) OVERRIDE; virtual void Pause(bool flush) OVERRIDE;
virtual void Play() OVERRIDE; virtual void Play() OVERRIDE;
virtual void SetPlaybackRate(float rate) OVERRIDE;
virtual bool SetVolume(double volume) OVERRIDE; virtual bool SetVolume(double volume) OVERRIDE;
// Enables audio frame hashing and reinitializes the MD5 context. Must be // Enables audio frame hashing and reinitializes the MD5 context. Must be
...@@ -58,7 +57,6 @@ class MEDIA_EXPORT NullAudioSink ...@@ -58,7 +57,6 @@ class MEDIA_EXPORT NullAudioSink
AudioParameters params_; AudioParameters params_;
bool initialized_; bool initialized_;
float playback_rate_;
bool playing_; bool playing_;
RenderCallback* callback_; RenderCallback* callback_;
......
...@@ -55,10 +55,6 @@ class AudioRendererSink ...@@ -55,10 +55,6 @@ class AudioRendererSink
// Resumes playback after calling Pause(). // Resumes playback after calling Pause().
virtual void Play() = 0; virtual void Play() = 0;
// Called to inform the sink of a change in playback rate. Override if
// subclass needs the playback rate.
virtual void SetPlaybackRate(float rate) {}
// Sets the playback volume, with range [0.0, 1.0] inclusive. // Sets the playback volume, with range [0.0, 1.0] inclusive.
// Returns |true| on success. // Returns |true| on success.
virtual bool SetVolume(double volume) = 0; virtual bool SetVolume(double volume) = 0;
......
...@@ -306,9 +306,6 @@ void AudioRendererImpl::SetPlaybackRate(float playback_rate) { ...@@ -306,9 +306,6 @@ void AudioRendererImpl::SetPlaybackRate(float playback_rate) {
DCHECK_LE(0.0f, playback_rate); DCHECK_LE(0.0f, playback_rate);
if (!stopped_) { if (!stopped_) {
// Notify sink of new playback rate.
sink_->SetPlaybackRate(playback_rate);
// We have two cases here: // We have two cases here:
// Play: GetPlaybackRate() == 0.0 && playback_rate != 0.0 // Play: GetPlaybackRate() == 0.0 && playback_rate != 0.0
// Pause: GetPlaybackRate() != 0.0 && playback_rate == 0.0 // Pause: GetPlaybackRate() != 0.0 && playback_rate == 0.0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment