summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorenal@chromium.org <enal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-05 22:19:11 +0000
committerenal@chromium.org <enal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-05 22:19:11 +0000
commitfe6e57cdfa4af1a194f2e35ffa32b6c09c184ed8 (patch)
treee010f3551087a8275f170d5a72b26750ecc7cd91
parentf063fb05525be179db513f33a63b1ff3fd529b81 (diff)
downloadchromium_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.cc8
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_);