diff options
author | Andy Hung <hunga@google.com> | 2015-05-31 23:04:15 -0700 |
---|---|---|
committer | Andy Hung <hunga@google.com> | 2015-06-03 22:42:03 -0700 |
commit | 85e48142f726770d3b65caa1f29d8b98f8d5db6b (patch) | |
tree | e20152866b7021c28085caf329fa91c7abbe13e8 /media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | |
parent | 288da02b1f074f9f3c191f1838f135d4633b3d34 (diff) | |
download | frameworks_av-85e48142f726770d3b65caa1f29d8b98f8d5db6b.zip frameworks_av-85e48142f726770d3b65caa1f29d8b98f8d5db6b.tar.gz frameworks_av-85e48142f726770d3b65caa1f29d8b98f8d5db6b.tar.bz2 |
NuPlayer: Allow audio callback to fill buffer when paused
If a pause lasts more than a few seconds, the audio device
enters standby. When the audio device comes out of standby,
it typically requests a large amount of data to fill its buffers
(especially severe for deep buffer PCM mode).
To avoid a glitch, continue to service the audio callback
when paused.
Also, we do not start the audio sink if we are paused to avoid
audio playback in video preview mode.
Bug: 19062223
Bug: 21198655
Change-Id: I987337a87e6c875aeb381df8ad37c7139c42dc72
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index f8b21e5..5022439 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -692,7 +692,7 @@ size_t NuPlayer::Renderer::AudioSinkCallback( size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) { Mutex::Autolock autoLock(mLock); - if (!mUseAudioCallback || mPaused) { + if (!mUseAudioCallback) { return 0; } @@ -1291,7 +1291,9 @@ void NuPlayer::Renderer::onFlush(const sp<AMessage> &msg) { if (offloadingAudio()) { mAudioSink->pause(); mAudioSink->flush(); - mAudioSink->start(); + if (!mPaused) { + mAudioSink->start(); + } } else { mAudioSink->pause(); mAudioSink->flush(); @@ -1665,7 +1667,9 @@ status_t NuPlayer::Renderer::onOpenAudioSink( // before reaching the hardware. // TODO mCurrentOffloadInfo = offloadInfo; - err = mAudioSink->start(); + if (!mPaused) { // for preview mode, don't start if paused + err = mAudioSink->start(); + } ALOGV_IF(err == OK, "openAudioSink: offload succeeded"); } if (err != OK) { |