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
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::fillAudioBuffer(void *buffer, size_t size) {
     Mutex::Autolock autoLock(mLock);
 
-    if (!mUseAudioCallback || mPaused) {
+    if (!mUseAudioCallback) {
         return 0;
     }
 
@@ -1291,7 +1291,9 @@
         if (offloadingAudio()) {
             mAudioSink->pause();
             mAudioSink->flush();
-            mAudioSink->start();
+            if (!mPaused) {
+                mAudioSink->start();
+            }
         } else {
             mAudioSink->pause();
             mAudioSink->flush();
@@ -1665,7 +1667,9 @@
                 // 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) {