summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2015-05-31 23:04:15 -0700
committerAndy Hung <hunga@google.com>2015-06-03 22:42:03 -0700
commit85e48142f726770d3b65caa1f29d8b98f8d5db6b (patch)
treee20152866b7021c28085caf329fa91c7abbe13e8 /media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
parent288da02b1f074f9f3c191f1838f135d4633b3d34 (diff)
downloadframeworks_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.cpp10
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) {