diff options
author | enal@chromium.org <enal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-05 22:19:11 +0000 |
---|---|---|
committer | enal@chromium.org <enal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-05 22:19:11 +0000 |
commit | fe6e57cdfa4af1a194f2e35ffa32b6c09c184ed8 (patch) | |
tree | e010f3551087a8275f170d5a72b26750ecc7cd91 | |
parent | f063fb05525be179db513f33a63b1ff3fd529b81 (diff) | |
download | chromium_src-fe6e57cdfa4af1a194f2e35ffa32b6c09c184ed8.zip chromium_src-fe6e57cdfa4af1a194f2e35ffa32b6c09c184ed8.tar.gz chromium_src-fe6e57cdfa4af1a194f2e35ffa32b6c09c184ed8.tar.bz2 |
When audio player restarts after pause it first was playing wrong data.
Problem is that host was getting buffer with pre-pause data from renderer
immediately after restarting. Fix is for renderer to set length of data in
buffer to zero when getting "pause".
BUG=98944
TEST=Start any audio clip, pause, seek to different location, and play again.
TEST=There should be no traces of previous sounds, only new ones.
Review URL: http://codereview.chromium.org/8149001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104187 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/renderer/media/audio_renderer_impl.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/content/renderer/media/audio_renderer_impl.cc b/content/renderer/media/audio_renderer_impl.cc index ac6aca0..c81e658 100644 --- a/content/renderer/media/audio_renderer_impl.cc +++ b/content/renderer/media/audio_renderer_impl.cc @@ -459,8 +459,14 @@ void AudioRendererImpl::Run() { int bytes; while (sizeof(bytes) == socket_->Receive(&bytes, sizeof(bytes))) { - if (bytes == media::AudioOutputController::kPauseMark) + if (bytes == media::AudioOutputController::kPauseMark) { + // When restarting playback, host should get new data, + // not what is currently in the buffer. + media::SetActualDataSizeInBytes(shared_memory_.get(), + shared_memory_size_, + 0); continue; + } else if (bytes < 0) break; base::AutoLock auto_lock(lock_); |