NuPlayerRenderer: adjust anchor time correctly for video only case.

Bug: 17922171
Change-Id: I4c7e9e7f5ab96d3675d012ae30f78ef945394103
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index d6bf1de..e5c64f6 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -72,6 +72,7 @@
       mHasVideo(false),
       mSyncQueues(false),
       mPaused(false),
+      mPauseStartedTimeRealUs(-1),
       mVideoSampleReceived(false),
       mVideoRenderingStarted(false),
       mVideoRenderingStartGeneration(0),
@@ -574,7 +575,9 @@
             if (!mHasAudio) {
                 mAnchorTimeMediaUs = mediaTimeUs;
                 mAnchorTimeRealUs = nowUs;
-                notifyPosition();
+                if (!mPaused || mVideoSampleReceived) {
+                    notifyPosition();
+                }
             }
             realTimeUs = nowUs;
         } else {
@@ -645,6 +648,10 @@
         }
     } else {
         mVideoLateByUs = 0ll;
+        if (!mHasAudio && !mVideoSampleReceived) {
+            mAnchorTimeMediaUs = -1;
+            mAnchorTimeRealUs = -1;
+        }
     }
 
     entry->mNotifyConsumed->setInt64("timestampNs", realTimeUs * 1000ll);
@@ -830,6 +837,9 @@
     {
          Mutex::Autolock autoLock(mLock);
          syncQueuesDone_l();
+         if (!mHasAudio) {
+             mPauseStartedTimeRealUs = -1;
+         }
     }
 
     ALOGV("flushing %s", audio ? "audio" : "video");
@@ -980,6 +990,9 @@
         ++mVideoQueueGeneration;
         prepareForMediaRenderingStart();
         mPaused = true;
+        if (!mHasAudio) {
+            mPauseStartedTimeRealUs = ALooper::GetNowUs();
+        }
     }
 
     mDrainAudioQueuePending = false;
@@ -1008,6 +1021,10 @@
 
     Mutex::Autolock autoLock(mLock);
     mPaused = false;
+    if (!mHasAudio && mPauseStartedTimeRealUs != -1) {
+        mAnchorTimeRealUs += ALooper::GetNowUs() - mPauseStartedTimeRealUs;
+        mPauseStartedTimeRealUs = -1;
+    }
 
     if (!mAudioQueue.empty()) {
         postDrainAudioQueue_l();