diff options
author | Glenn Kasten <gkasten@google.com> | 2013-09-04 15:33:20 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-09-04 15:33:20 -0700 |
commit | 44b4fd2cb9440dfbd5eca5758d9cabcdeaab0a1b (patch) | |
tree | 85ed92f9f10233dd7968828c586f96fc0f935d86 /core/jni | |
parent | 411af374f9a2fbfb8a88565afdc8fa9ddb7148a9 (diff) | |
parent | 04c58e9ec12c65c15738ba456f18a1f36416b0cc (diff) | |
download | frameworks_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.cpp | 25 |
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", |