MediaSync: fix message delay based on play time for pending audio frames.

Bug: 19666434
Change-Id: Ia9ad3858d4ddccf8aa476f2506785f1d76f90b32
diff --git a/media/jni/android_media_MediaSync.cpp b/media/jni/android_media_MediaSync.cpp
index 72dacdf..f192262 100644
--- a/media/jni/android_media_MediaSync.cpp
+++ b/media/jni/android_media_MediaSync.cpp
@@ -86,6 +86,10 @@
     return mSync->updateQueuedAudioData(sizeInBytes, presentationTimeUs);
 }
 
+status_t JMediaSync::getPlayTimeForPendingAudioFrames(int64_t *outTimeUs) {
+    return mSync->getPlayTimeForPendingAudioFrames(outTimeUs);
+}
+
 }  // namespace android
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -268,6 +272,21 @@
     return JNI_TRUE;
 }
 
+static jlong android_media_MediaSync_native_getPlayTimeForPendingAudioFrames(
+        JNIEnv *env, jobject thiz) {
+    sp<JMediaSync> sync = getMediaSync(env, thiz);
+    if (sync == NULL) {
+        throwExceptionAsNecessary(env, INVALID_OPERATION);
+    }
+
+    int64_t playTimeUs = 0;
+    status_t err = sync->getPlayTimeForPendingAudioFrames(&playTimeUs);
+    if (err != NO_ERROR) {
+        throwExceptionAsNecessary(env, err);
+    }
+    return (jlong)playTimeUs;
+}
+
 static void
 android_media_MediaSync_setSyncSettings(JNIEnv *env, jobject thiz, jobject settings)
 {
@@ -387,6 +406,10 @@
       "(Landroid/media/MediaTimestamp;)Z",
       (void *)android_media_MediaSync_native_getTimestamp },
 
+    { "native_getPlayTimeForPendingAudioFrames",
+      "()J",
+      (void *)android_media_MediaSync_native_getPlayTimeForPendingAudioFrames },
+
     { "native_init", "()V", (void *)android_media_MediaSync_native_init },
 
     { "native_setup", "()V", (void *)android_media_MediaSync_native_setup },