OSDN Git Service

Optimize HW_AV_SYNC playback by avoiding multiple timestamp block allocations.
authorPaul McLean <pmclean@google.com>
Tue, 11 Apr 2017 19:52:05 +0000 (12:52 -0700)
committerPaul McLean <pmclean@google.com>
Tue, 11 Apr 2017 19:52:05 +0000 (12:52 -0700)
Bug: 33627517
Test: CTS and Manual
Change-Id: Ic27d630d27efef48fc0d1db023aaec556e62e073

media/java/android/media/AudioTrack.java

index 7f5d3a0..bf5939f 100644 (file)
@@ -2523,8 +2523,11 @@ public class AudioTrack extends PlayerBase
             mAvSyncHeader = ByteBuffer.allocate(16);
             mAvSyncHeader.order(ByteOrder.BIG_ENDIAN);
             mAvSyncHeader.putInt(0x55550001);
-            mAvSyncHeader.putInt(sizeInBytes);
-            mAvSyncHeader.putLong(timestamp);
+        }
+
+        if (mAvSyncBytesRemaining == 0) {
+            mAvSyncHeader.putInt(4, sizeInBytes);
+            mAvSyncHeader.putLong(8, timestamp);
             mAvSyncHeader.position(0);
             mAvSyncBytesRemaining = sizeInBytes;
         }
@@ -2556,9 +2559,6 @@ public class AudioTrack extends PlayerBase
         }
 
         mAvSyncBytesRemaining -= ret;
-        if (mAvSyncBytesRemaining == 0) {
-            mAvSyncHeader = null;
-        }
 
         return ret;
     }