OSDN Git Service

AudioPlayer: timestamp fixes for compress offload
authorHaynes Mathew George <hgeorge@codeaurora.org>
Mon, 5 Aug 2013 18:00:37 +0000 (11:00 -0700)
committerEric Laurent <elaurent@google.com>
Thu, 29 Aug 2013 21:24:57 +0000 (14:24 -0700)
Use realtime queried from AudioTrack as the only time for compress
offload playback.

Change-Id: I314447637715c4864690c94173260165369146cb

media/libstagefright/AudioPlayer.cpp

index 2418aab..e38e261 100644 (file)
@@ -680,6 +680,14 @@ size_t AudioPlayer::fillBuffer(void *data, size_t size) {
 
 int64_t AudioPlayer::getRealTimeUs() {
     Mutex::Autolock autoLock(mLock);
+    if (useOffload()) {
+        if (mSeeking) {
+            return mSeekTimeUs;
+        }
+        mPositionTimeRealUs = getOutputPlayPositionUs_l();
+        return mPositionTimeRealUs;
+    }
+
     return getRealTimeUsLocked();
 }
 
@@ -741,11 +749,6 @@ int64_t AudioPlayer::getMediaTimeUs() {
         return 0;
     }
 
-    if (useOffload()) {
-        mPositionTimeRealUs = getOutputPlayPositionUs_l();
-        return mPositionTimeRealUs;
-    }
-
     int64_t realTimeOffset = getRealTimeUsLocked() - mPositionTimeRealUs;
     if (realTimeOffset < 0) {
         realTimeOffset = 0;
@@ -758,8 +761,14 @@ bool AudioPlayer::getMediaTimeMapping(
         int64_t *realtime_us, int64_t *mediatime_us) {
     Mutex::Autolock autoLock(mLock);
 
-    *realtime_us = mPositionTimeRealUs;
-    *mediatime_us = mPositionTimeMediaUs;
+    if (useOffload()) {
+        mPositionTimeRealUs = getOutputPlayPositionUs_l();
+        *realtime_us = mPositionTimeRealUs;
+        *mediatime_us = mPositionTimeRealUs;
+    } else {
+        *realtime_us = mPositionTimeRealUs;
+        *mediatime_us = mPositionTimeMediaUs;
+    }
 
     return mPositionTimeRealUs != -1 && mPositionTimeMediaUs != -1;
 }