summaryrefslogtreecommitdiffstats
path: root/media/audio
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-05 16:50:29 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-05 16:50:29 +0000
commit5e29a201ab6458eba739ffe43f9659e37bd2e559 (patch)
tree86cf0f91a38bb6163757c829afa658c7f6e742f6 /media/audio
parent9077551a8558d5644e165864a5b86d8d53351d97 (diff)
downloadchromium_src-5e29a201ab6458eba739ffe43f9659e37bd2e559.zip
chromium_src-5e29a201ab6458eba739ffe43f9659e37bd2e559.tar.gz
chromium_src-5e29a201ab6458eba739ffe43f9659e37bd2e559.tar.bz2
Revert 138939 - alsa_output: Drain and pause pcm when stopping.
Call snd_pcm_drain when the output's Stop() function is called. This will keep some alsa interfaces from repeating the last samples played until Close() is called. This will also guarantee that all samples are played back if Close() is called immediately following Stop(). BUG=chromium-os:31211 TEST=Manual, play and pause youtube, both FLASH and HTML5 videos using the following alsa plugins as a sink for alsa_output: plug, hw, dmix, pulse, cras, jack. Observe that pauses are clean without repeated samples. Review URL: https://chromiumcodereview.appspot.com/10413075 TBR=dgreid@chromium.org Review URL: https://chromiumcodereview.appspot.com/10533007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140538 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio')
-rw-r--r--media/audio/linux/alsa_output.cc3
-rw-r--r--media/audio/linux/alsa_output_unittest.cc6
-rw-r--r--media/audio/linux/alsa_wrapper.cc4
-rw-r--r--media/audio/linux/alsa_wrapper.h1
4 files changed, 0 insertions, 14 deletions
diff --git a/media/audio/linux/alsa_output.cc b/media/audio/linux/alsa_output.cc
index 3d402c5..2f8461b 100644
--- a/media/audio/linux/alsa_output.cc
+++ b/media/audio/linux/alsa_output.cc
@@ -335,9 +335,6 @@ void AlsaPcmOutputStream::Stop() {
// Reset the callback, so that it is not called anymore.
set_source_callback(NULL);
- // Finish playing samples and pause the pcm.
- wrapper_->PcmDrain(playback_handle_);
-
TransitionTo(kIsStopped);
}
diff --git a/media/audio/linux/alsa_output_unittest.cc b/media/audio/linux/alsa_output_unittest.cc
index 74d7dca..31b4795e 100644
--- a/media/audio/linux/alsa_output_unittest.cc
+++ b/media/audio/linux/alsa_output_unittest.cc
@@ -43,7 +43,6 @@ class MockAlsaWrapper : public AlsaWrapper {
snd_pcm_stream_t stream, int mode));
MOCK_METHOD1(PcmClose, int(snd_pcm_t* handle));
MOCK_METHOD1(PcmPrepare, int(snd_pcm_t* handle));
- MOCK_METHOD1(PcmDrain, int(snd_pcm_t* handle));
MOCK_METHOD1(PcmDrop, int(snd_pcm_t* handle));
MOCK_METHOD2(PcmDelay, int(snd_pcm_t* handle, snd_pcm_sframes_t* delay));
MOCK_METHOD3(PcmWritei, snd_pcm_sframes_t(snd_pcm_t* handle,
@@ -451,11 +450,6 @@ TEST_F(AlsaPcmOutputStreamTest, StartStop) {
test_stream->Start(&mock_callback);
message_loop_.RunAllPending();
- EXPECT_CALL(mock_alsa_wrapper_, PcmDrain(kFakeHandle))
- .WillOnce(Return(0));
-
- test_stream->Stop();
-
EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
.WillOnce(Return(0));
EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
diff --git a/media/audio/linux/alsa_wrapper.cc b/media/audio/linux/alsa_wrapper.cc
index 06110f8..67331b4 100644
--- a/media/audio/linux/alsa_wrapper.cc
+++ b/media/audio/linux/alsa_wrapper.cc
@@ -43,10 +43,6 @@ int AlsaWrapper::PcmPrepare(snd_pcm_t* handle) {
return snd_pcm_prepare(handle);
}
-int AlsaWrapper::PcmDrain(snd_pcm_t* handle) {
- return snd_pcm_drain(handle);
-}
-
int AlsaWrapper::PcmDrop(snd_pcm_t* handle) {
return snd_pcm_drop(handle);
}
diff --git a/media/audio/linux/alsa_wrapper.h b/media/audio/linux/alsa_wrapper.h
index f6a810b..30d9463 100644
--- a/media/audio/linux/alsa_wrapper.h
+++ b/media/audio/linux/alsa_wrapper.h
@@ -27,7 +27,6 @@ class MEDIA_EXPORT AlsaWrapper {
snd_pcm_stream_t stream, int mode);
virtual int PcmClose(snd_pcm_t* handle);
virtual int PcmPrepare(snd_pcm_t* handle);
- virtual int PcmDrain(snd_pcm_t* handle);
virtual int PcmDrop(snd_pcm_t* handle);
virtual int PcmDelay(snd_pcm_t* handle, snd_pcm_sframes_t* delay);
virtual snd_pcm_sframes_t PcmWritei(snd_pcm_t* handle,