summaryrefslogtreecommitdiffstats
path: root/core/jni/android_media_JetPlayer.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
commitd83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/jni/android_media_JetPlayer.cpp
parent076357b8567458d4b6dfdcf839ef751634cd2bfb (diff)
downloadframeworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/jni/android_media_JetPlayer.cpp')
-rw-r--r--core/jni/android_media_JetPlayer.cpp542
1 files changed, 0 insertions, 542 deletions
diff --git a/core/jni/android_media_JetPlayer.cpp b/core/jni/android_media_JetPlayer.cpp
deleted file mode 100644
index e345af6..0000000
--- a/core/jni/android_media_JetPlayer.cpp
+++ /dev/null
@@ -1,542 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//FIXME: remove log before release
-#define LOG_NDEBUG 0
-#define LOG_TAG "JET_JNI"
-
-
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include "jni.h"
-#include "JNIHelp.h"
-#include "android_runtime/AndroidRuntime.h"
-
-#include "utils/Log.h"
-#include "media/JetPlayer.h"
-
-
-using namespace android;
-
-// ----------------------------------------------------------------------------
-static const char* const kClassPathName = "android/media/JetPlayer";
-
-// ----------------------------------------------------------------------------
-struct fields_t {
- // these fields provide access from C++ to the...
- jclass jetClass; // JetPlayer java class global ref
- jmethodID postNativeEventInJava; // java method to post events to the Java thread from native
- jfieldID nativePlayerInJavaObj; // stores in Java the native JetPlayer object
-};
-
-static fields_t javaJetPlayerFields;
-
-
-// ----------------------------------------------------------------------------
-// ----------------------------------------------------------------------------
-
-/*
- * This function is called from JetPlayer instance's render thread
- */
-static void
-jetPlayerEventCallback(int what, int arg1=0, int arg2=0, void* javaTarget = NULL)
-{
- JNIEnv *env = AndroidRuntime::getJNIEnv();
- if(env) {
- env->CallStaticVoidMethod(
- javaJetPlayerFields.jetClass, javaJetPlayerFields.postNativeEventInJava,
- javaTarget,
- what, arg1, arg2);
- if (env->ExceptionCheck()) {
- env->ExceptionDescribe();
- env->ExceptionClear();
- }
- } else {
- LOGE("JET jetPlayerEventCallback(): No JNI env for JET event callback, can't post event.");
- return;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-// ----------------------------------------------------------------------------
-
-static jboolean
-android_media_JetPlayer_setup(JNIEnv *env, jobject thiz, jobject weak_this,
- jint maxTracks, jint trackBufferSize)
-{
- //LOGV("android_media_JetPlayer_setup(): entering.");
- JetPlayer* lpJet = new JetPlayer(env->NewGlobalRef(weak_this), maxTracks, trackBufferSize);
-
- EAS_RESULT result = lpJet->init();
-
- if(result==EAS_SUCCESS) {
- // save our newly created C++ JetPlayer in the "nativePlayerInJavaObj" field
- // of the Java object (in mNativePlayerInJavaObj)
- env->SetIntField(thiz, javaJetPlayerFields.nativePlayerInJavaObj, (int)lpJet);
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_setup(): initialization failed with EAS error code %d", (int)result);
- delete lpJet;
- env->SetIntField(weak_this, javaJetPlayerFields.nativePlayerInJavaObj, 0);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static void
-android_media_JetPlayer_finalize(JNIEnv *env, jobject thiz)
-{
- LOGV("android_media_JetPlayer_finalize(): entering.");
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if(lpJet != NULL) {
- lpJet->release();
- delete lpJet;
- }
-
- LOGV("android_media_JetPlayer_finalize(): exiting.");
-}
-
-
-// ----------------------------------------------------------------------------
-static void
-android_media_JetPlayer_release(JNIEnv *env, jobject thiz)
-{
- android_media_JetPlayer_finalize(env, thiz);
- env->SetIntField(thiz, javaJetPlayerFields.nativePlayerInJavaObj, 0);
- LOGV("android_media_JetPlayer_release() done");
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_loadFromFile(JNIEnv *env, jobject thiz, jstring path)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for openFile()");
- }
-
- // set up event callback function
- lpJet->setEventCallback(jetPlayerEventCallback);
-
- const char *pathStr = env->GetStringUTFChars(path, NULL);
- if (pathStr == NULL) { // Out of memory
- LOGE("android_media_JetPlayer_openFile(): aborting, out of memory");
- jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
- return JNI_FALSE;
- }
-
- LOGV("android_media_JetPlayer_openFile(): trying to open %s", pathStr );
- EAS_RESULT result = lpJet->loadFromFile(pathStr);
- env->ReleaseStringUTFChars(path, pathStr);
-
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_openFile(): file successfully opened");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_openFile(): failed to open file with EAS error %d",
- (int)result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_loadFromFileD(JNIEnv *env, jobject thiz,
- jobject fileDescriptor, jlong offset, jlong length)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for openFile()");
- }
-
- // set up event callback function
- lpJet->setEventCallback(jetPlayerEventCallback);
-
- LOGV("android_media_JetPlayer_openFileDescr(): trying to load JET file through its fd" );
- EAS_RESULT result = lpJet->loadFromFD(getParcelFileDescriptorFD(env, fileDescriptor),
- (long long)offset, (long long)length); // cast params to types used by EAS_FILE
-
- if(result==EAS_SUCCESS) {
- LOGV("android_media_JetPlayer_openFileDescr(): file successfully opened");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_openFileDescr(): failed to open file with EAS error %d",
- (int)result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_closeFile(JNIEnv *env, jobject thiz)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for closeFile()");
- }
-
- if( lpJet->closeFile()==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_closeFile(): file successfully closed");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_closeFile(): failed to close file");
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_play(JNIEnv *env, jobject thiz)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for play()");
- }
-
- EAS_RESULT result = lpJet->play();
- if( result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_play(): play successful");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_play(): failed to play with EAS error code %ld",
- result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_pause(JNIEnv *env, jobject thiz)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for pause()");
- }
-
- EAS_RESULT result = lpJet->pause();
- if( result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_pause(): pause successful");
- return JNI_TRUE;
- } else {
- if(result==EAS_ERROR_QUEUE_IS_EMPTY) {
- LOGV("android_media_JetPlayer_pause(): paused with an empty queue");
- return JNI_TRUE;
- } else
- LOGE("android_media_JetPlayer_pause(): failed to pause with EAS error code %ld",
- result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_queueSegment(JNIEnv *env, jobject thiz,
- jint segmentNum, jint libNum, jint repeatCount, jint transpose, jint muteFlags,
- jbyte userID)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for queueSegment()");
- }
-
- EAS_RESULT result
- = lpJet->queueSegment(segmentNum, libNum, repeatCount, transpose, muteFlags, userID);
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_queueSegment(): segment successfully queued");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_queueSegment(): failed with EAS error code %ld",
- result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_queueSegmentMuteArray(JNIEnv *env, jobject thiz,
- jint segmentNum, jint libNum, jint repeatCount, jint transpose, jbooleanArray muteArray,
- jbyte userID)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for queueSegmentMuteArray()");
- }
-
- EAS_RESULT result=EAS_FAILURE;
-
- jboolean *muteTracks = NULL;
- muteTracks = env->GetBooleanArrayElements(muteArray, NULL);
- if (muteTracks == NULL) {
- LOGE("android_media_JetPlayer_queueSegment(): failed to read track mute mask.");
- return JNI_FALSE;
- }
-
- EAS_U32 muteMask=0;
- int maxTracks = lpJet->getMaxTracks();
- for (jint trackIndex=0; trackIndex<maxTracks; trackIndex++) {
- if(muteTracks[maxTracks-1-trackIndex]==JNI_TRUE)
- muteMask = (muteMask << 1) | 0x00000001;
- else
- muteMask = muteMask << 1;
- }
- //LOGV("android_media_JetPlayer_queueSegmentMuteArray(): FINAL mute mask =0x%08lX", mask);
-
- result = lpJet->queueSegment(segmentNum, libNum, repeatCount, transpose, muteMask, userID);
-
- env->ReleaseBooleanArrayElements(muteArray, muteTracks, 0);
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_queueSegmentMuteArray(): segment successfully queued");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_queueSegmentMuteArray(): failed with EAS error code %ld",
- result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_setMuteFlags(JNIEnv *env, jobject thiz,
- jint muteFlags /*unsigned?*/, jboolean bSync)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for setMuteFlags()");
- }
-
- EAS_RESULT result;
- result = lpJet->setMuteFlags(muteFlags, bSync==JNI_TRUE ? true : false);
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_setMuteFlags(): mute flags successfully updated");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_setMuteFlags(): failed with EAS error code %ld", result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_setMuteArray(JNIEnv *env, jobject thiz,
- jbooleanArray muteArray, jboolean bSync)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for setMuteArray()");
- }
-
- EAS_RESULT result=EAS_FAILURE;
-
- jboolean *muteTracks = NULL;
- muteTracks = env->GetBooleanArrayElements(muteArray, NULL);
- if (muteTracks == NULL) {
- LOGE("android_media_JetPlayer_setMuteArray(): failed to read track mute mask.");
- return JNI_FALSE;
- }
-
- EAS_U32 muteMask=0;
- int maxTracks = lpJet->getMaxTracks();
- for (jint trackIndex=0; trackIndex<maxTracks; trackIndex++) {
- if(muteTracks[maxTracks-1-trackIndex]==JNI_TRUE)
- muteMask = (muteMask << 1) | 0x00000001;
- else
- muteMask = muteMask << 1;
- }
- //LOGV("android_media_JetPlayer_setMuteArray(): FINAL mute mask =0x%08lX", muteMask);
-
- result = lpJet->setMuteFlags(muteMask, bSync==JNI_TRUE ? true : false);
-
- env->ReleaseBooleanArrayElements(muteArray, muteTracks, 0);
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_setMuteArray(): mute flags successfully updated");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_setMuteArray(): \
- failed to update mute flags with EAS error code %ld", result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_setMuteFlag(JNIEnv *env, jobject thiz,
- jint trackId, jboolean muteFlag, jboolean bSync)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for setMuteFlag()");
- }
-
- EAS_RESULT result;
- result = lpJet->setMuteFlag(trackId,
- muteFlag==JNI_TRUE ? true : false, bSync==JNI_TRUE ? true : false);
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_setMuteFlag(): mute flag successfully updated for track %d", trackId);
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_setMuteFlag(): failed to update mute flag for track %d with EAS error code %ld",
- trackId, result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_triggerClip(JNIEnv *env, jobject thiz, jint clipId)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for triggerClip()");
- }
-
- EAS_RESULT result;
- result = lpJet->triggerClip(clipId);
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_triggerClip(): triggerClip successful for clip %d", clipId);
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_triggerClip(): triggerClip for clip %d failed with EAS error code %ld",
- clipId, result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-static jboolean
-android_media_JetPlayer_clearQueue(JNIEnv *env, jobject thiz)
-{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
- thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if (lpJet == NULL ) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Unable to retrieve JetPlayer pointer for clearQueue()");
- }
-
- EAS_RESULT result = lpJet->clearQueue();
- if(result==EAS_SUCCESS) {
- //LOGV("android_media_JetPlayer_clearQueue(): clearQueue successful");
- return JNI_TRUE;
- } else {
- LOGE("android_media_JetPlayer_clearQueue(): clearQueue failed with EAS error code %ld",
- result);
- return JNI_FALSE;
- }
-}
-
-
-// ----------------------------------------------------------------------------
-// ----------------------------------------------------------------------------
-static JNINativeMethod gMethods[] = {
- // name, signature, funcPtr
- {"native_setup", "(Ljava/lang/Object;II)Z", (void *)android_media_JetPlayer_setup},
- {"native_finalize", "()V", (void *)android_media_JetPlayer_finalize},
- {"native_release", "()V", (void *)android_media_JetPlayer_release},
- {"native_loadJetFromFile",
- "(Ljava/lang/String;)Z", (void *)android_media_JetPlayer_loadFromFile},
- {"native_loadJetFromFileD", "(Ljava/io/FileDescriptor;JJ)Z",
- (void *)android_media_JetPlayer_loadFromFileD},
- {"native_closeJetFile","()Z", (void *)android_media_JetPlayer_closeFile},
- {"native_playJet", "()Z", (void *)android_media_JetPlayer_play},
- {"native_pauseJet", "()Z", (void *)android_media_JetPlayer_pause},
- {"native_queueJetSegment",
- "(IIIIIB)Z", (void *)android_media_JetPlayer_queueSegment},
- {"native_queueJetSegmentMuteArray",
- "(IIII[ZB)Z", (void *)android_media_JetPlayer_queueSegmentMuteArray},
- {"native_setMuteFlags","(IZ)Z", (void *)android_media_JetPlayer_setMuteFlags},
- {"native_setMuteArray","([ZZ)Z", (void *)android_media_JetPlayer_setMuteArray},
- {"native_setMuteFlag", "(IZZ)Z", (void *)android_media_JetPlayer_setMuteFlag},
- {"native_triggerClip", "(I)Z", (void *)android_media_JetPlayer_triggerClip},
- {"native_clearQueue", "()Z", (void *)android_media_JetPlayer_clearQueue},
-};
-
-#define JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME "mNativePlayerInJavaObj"
-#define JAVA_NATIVEJETPOSTEVENT_CALLBACK_NAME "postEventFromNative"
-
-
-int register_android_media_JetPlayer(JNIEnv *env)
-{
- jclass jetPlayerClass = NULL;
- javaJetPlayerFields.jetClass = NULL;
- javaJetPlayerFields.postNativeEventInJava = NULL;
- javaJetPlayerFields.nativePlayerInJavaObj = NULL;
-
- // Get the JetPlayer java class
- jetPlayerClass = env->FindClass(kClassPathName);
- if (jetPlayerClass == NULL) {
- LOGE("Can't find %s", kClassPathName);
- return -1;
- }
- javaJetPlayerFields.jetClass = (jclass)env->NewGlobalRef(jetPlayerClass);
-
- // Get the mNativePlayerInJavaObj variable field
- javaJetPlayerFields.nativePlayerInJavaObj = env->GetFieldID(
- jetPlayerClass,
- JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME, "I");
- if (javaJetPlayerFields.nativePlayerInJavaObj == NULL) {
- LOGE("Can't find AudioTrack.%s", JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME);
- return -1;
- }
-
- // Get the callback to post events from this native code to Java
- javaJetPlayerFields.postNativeEventInJava = env->GetStaticMethodID(javaJetPlayerFields.jetClass,
- JAVA_NATIVEJETPOSTEVENT_CALLBACK_NAME, "(Ljava/lang/Object;III)V");
- if (javaJetPlayerFields.postNativeEventInJava == NULL) {
- LOGE("Can't find Jet.%s", JAVA_NATIVEJETPOSTEVENT_CALLBACK_NAME);
- return -1;
- }
-
- return AndroidRuntime::registerNativeMethods(env,
- kClassPathName, gMethods, NELEM(gMethods));
-}