summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-09-04 15:33:20 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-09-04 15:33:20 -0700
commit44b4fd2cb9440dfbd5eca5758d9cabcdeaab0a1b (patch)
tree85ed92f9f10233dd7968828c586f96fc0f935d86 /core/jni
parent411af374f9a2fbfb8a88565afdc8fa9ddb7148a9 (diff)
parent04c58e9ec12c65c15738ba456f18a1f36416b0cc (diff)
downloadframeworks_base-44b4fd2cb9440dfbd5eca5758d9cabcdeaab0a1b.zip
frameworks_base-44b4fd2cb9440dfbd5eca5758d9cabcdeaab0a1b.tar.gz
frameworks_base-44b4fd2cb9440dfbd5eca5758d9cabcdeaab0a1b.tar.bz2
am 04c58e9e: Merge "Java API for AudioTrack timestamps" into klp-dev
* commit '04c58e9ec12c65c15738ba456f18a1f36416b0cc': Java API for AudioTrack timestamps
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_media_AudioTrack.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 51ba52a..225bf06 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -742,6 +742,30 @@ static jint android_media_AudioTrack_get_latency(JNIEnv *env, jobject thiz) {
// ----------------------------------------------------------------------------
+static jint android_media_AudioTrack_get_timestamp(JNIEnv *env, jobject thiz, jlongArray jTimestamp) {
+ sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
+
+ if (lpTrack == NULL) {
+ ALOGE("Unable to retrieve AudioTrack pointer for getTimestamp()");
+ return AUDIOTRACK_ERROR;
+ }
+ AudioTimestamp timestamp;
+ status_t status = lpTrack->getTimestamp(timestamp);
+ if (status == OK) {
+ jlong* nTimestamp = (jlong *) env->GetPrimitiveArrayCritical(jTimestamp, NULL);
+ if (nTimestamp == NULL) {
+ ALOGE("Unable to get array for getTimestamp()");
+ return AUDIOTRACK_ERROR;
+ }
+ nTimestamp[0] = (jlong) timestamp.mPosition;
+ nTimestamp[1] = (jlong) ((timestamp.mTime.tv_sec * 1000000000LL) + timestamp.mTime.tv_nsec);
+ env->ReleasePrimitiveArrayCritical(jTimestamp, nTimestamp, 0);
+ }
+ return (jint) android_media_translateErrorCode(status);
+}
+
+
+// ----------------------------------------------------------------------------
static jint android_media_AudioTrack_set_loop(JNIEnv *env, jobject thiz,
jint loopStart, jint loopEnd, jint loopCount) {
sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
@@ -869,6 +893,7 @@ static JNINativeMethod gMethods[] = {
{"native_set_position", "(I)I", (void *)android_media_AudioTrack_set_position},
{"native_get_position", "()I", (void *)android_media_AudioTrack_get_position},
{"native_get_latency", "()I", (void *)android_media_AudioTrack_get_latency},
+ {"native_get_timestamp", "([J)I", (void *)android_media_AudioTrack_get_timestamp},
{"native_set_loop", "(III)I", (void *)android_media_AudioTrack_set_loop},
{"native_reload_static", "()I", (void *)android_media_AudioTrack_reload},
{"native_get_output_sample_rate",