Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Unified Diff: media/audio/linux/alsa_output.cc

Issue 6776024: Fix Linux audio playback for short files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/linux/alsa_output.cc
diff --git a/media/audio/linux/alsa_output.cc b/media/audio/linux/alsa_output.cc
index d8e502cf7699b60b49c794be0faa2c289f8b0408..f933c35ad4782356bbc16289c5bd627c74112557 100644
--- a/media/audio/linux/alsa_output.cc
+++ b/media/audio/linux/alsa_output.cc
@@ -395,6 +395,10 @@ void AlsaPcmOutputStream::StartTask() {
return;
}
+ // Before starting, the buffer might have audio from previous user of this
+ // device.
+ buffer_->Clear();
Sergey Ulanov 2011/03/31 22:04:46 Does this mean we cut the sound that was playing b
davejcool 2011/04/09 03:10:43 By this time, the previous stream's usage of this
+
// When starting again, drop all packets in the device and prepare it again
// incase we are restarting from a pause state and need to flush old data.
int error = wrapper_->PcmDrop(playback_handle_);
@@ -579,6 +583,13 @@ void AlsaPcmOutputStream::WritePacket() {
// Seek forward in the buffer after we've written some data to ALSA.
buffer_->Seek(frames_written * bytes_per_output_frame_);
}
+ } else {
+ // If nothing left to write and playback hasn't started yet, start it now.
+ // This ensures that shorter sounds will still play.
+ if ((wrapper_->PcmState(playback_handle_) == SND_PCM_STATE_PREPARED) &&
+ GetCurrentDelay()) {
scherkus (not reviewing) 2011/03/31 22:08:10 GetCurrentDelay() > 0 ?
davejcool 2011/04/09 03:10:43 Yes, >0 is better, thanks!
+ wrapper_->PcmStart(playback_handle_);
+ }
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698