diff options
-rw-r--r-- | chrome/renderer/media/audio_renderer_impl.cc | 3 | ||||
-rw-r--r-- | chrome/renderer/media/audio_renderer_impl.h | 4 | ||||
-rw-r--r-- | chrome/renderer/media/audio_renderer_impl_unittest.cc | 6 | ||||
-rw-r--r-- | media/audio/audio_output_controller.cc | 9 |
4 files changed, 14 insertions, 8 deletions
diff --git a/chrome/renderer/media/audio_renderer_impl.cc b/chrome/renderer/media/audio_renderer_impl.cc index e5c2f0c..f71282c 100644 --- a/chrome/renderer/media/audio_renderer_impl.cc +++ b/chrome/renderer/media/audio_renderer_impl.cc @@ -82,7 +82,8 @@ void AudioRendererImpl::OnStop() { NewRunnableMethod(this, &AudioRendererImpl::DestroyTask)); } -void AudioRendererImpl::OnReadComplete(media::Buffer* buffer_in) { +void AudioRendererImpl::ConsumeAudioSamples( + scoped_refptr<media::Buffer> buffer_in) { AutoLock auto_lock(lock_); if (stopped_) return; diff --git a/chrome/renderer/media/audio_renderer_impl.h b/chrome/renderer/media/audio_renderer_impl.h index 5c27ef3..da48506 100644 --- a/chrome/renderer/media/audio_renderer_impl.h +++ b/chrome/renderer/media/audio_renderer_impl.h @@ -86,14 +86,14 @@ class AudioRendererImpl : public media::AudioRendererBase, virtual void OnStop(); // Called when the decoder completes a Read(). - virtual void OnReadComplete(media::Buffer* buffer_in); + virtual void ConsumeAudioSamples(scoped_refptr<media::Buffer> buffer_in); private: // For access to constructor and IO thread methods. friend class AudioRendererImplTest; FRIEND_TEST_ALL_PREFIXES(AudioRendererImplTest, Stop); FRIEND_TEST_ALL_PREFIXES(AudioRendererImplTest, - DestroyedMessageLoop_OnReadComplete); + DestroyedMessageLoop_ConsumeAudioSamples); // Helper methods. // Convert number of bytes to duration of time using information about the // number of channels, sample rate and sample bits. diff --git a/chrome/renderer/media/audio_renderer_impl_unittest.cc b/chrome/renderer/media/audio_renderer_impl_unittest.cc index 632da5e..4a4ec65 100644 --- a/chrome/renderer/media/audio_renderer_impl_unittest.cc +++ b/chrome/renderer/media/audio_renderer_impl_unittest.cc @@ -128,7 +128,7 @@ TEST_F(AudioRendererImplTest, Stop) { // It's possible that the upstream decoder replies right after being stopped. scoped_refptr<media::Buffer> buffer = new media::DataBuffer(kSize); - renderer_->OnReadComplete(buffer); + renderer_->ConsumeAudioSamples(buffer); } TEST_F(AudioRendererImplTest, DestroyedMessageLoop_SetPlaybackRate) { @@ -149,11 +149,11 @@ TEST_F(AudioRendererImplTest, DestroyedMessageLoop_SetVolume) { renderer_->Stop(stop_callback_.NewCallback()); } -TEST_F(AudioRendererImplTest, DestroyedMessageLoop_OnReadComplete) { +TEST_F(AudioRendererImplTest, DestroyedMessageLoop_ConsumeAudioSamples) { // Kill the message loop and verify OnReadComplete() still works. message_loop_.reset(); scoped_refptr<media::Buffer> buffer = new media::DataBuffer(kSize); - renderer_->OnReadComplete(buffer); + renderer_->ConsumeAudioSamples(buffer); EXPECT_CALL(stop_callback_, OnFilterCallback()); renderer_->Stop(stop_callback_.NewCallback()); } diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc index a6317be..602e232 100644 --- a/media/audio/audio_output_controller.cc +++ b/media/audio/audio_output_controller.cc @@ -134,9 +134,14 @@ void AudioOutputController::SetVolume(double volume) { void AudioOutputController::EnqueueData(const uint8* data, uint32 size) { // Write data to the push source and ask for more data if needed. AutoLock auto_lock(lock_); - buffer_.Append(data, size); pending_request_ = false; - SubmitOnMoreData_Locked(); + // If |size| is set to 0, it indicates that the audio source doesn't have + // more data right now, and so it doesn't make sense to send additional + // request. + if (size) { + buffer_.Append(data, size); + SubmitOnMoreData_Locked(); + } } void AudioOutputController::DoCreate(AudioParameters params, |