diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-05 16:50:29 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-05 16:50:29 +0000 |
commit | 5e29a201ab6458eba739ffe43f9659e37bd2e559 (patch) | |
tree | 86cf0f91a38bb6163757c829afa658c7f6e742f6 /media/audio | |
parent | 9077551a8558d5644e165864a5b86d8d53351d97 (diff) | |
download | chromium_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.cc | 3 | ||||
-rw-r--r-- | media/audio/linux/alsa_output_unittest.cc | 6 | ||||
-rw-r--r-- | media/audio/linux/alsa_wrapper.cc | 4 | ||||
-rw-r--r-- | media/audio/linux/alsa_wrapper.h | 1 |
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, |