int ASDK_Build__loadClass(JNIEnv *env) { IJK_FIND_JAVA_CLASS( env, g_clazz_VERSION.clazz, "android/os/Build$VERSION"); IJK_FIND_JAVA_STATIC_FIELD(env, g_clazz_VERSION.jfid_SDK_INT, g_clazz_VERSION.clazz, "SDK_INT", "I"); return 0; }
JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv* env = NULL; g_jvm = vm; if ((*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_4) != JNI_OK) { return -1; } assert(env != NULL); pthread_mutex_init(&g_clazz.mutex, NULL ); // FindClass returns LocalReference IJK_FIND_JAVA_CLASS(env, g_clazz.clazz, JNI_CLASS_IJKPLAYER); (*env)->RegisterNatives(env, g_clazz.clazz, g_methods, NELEM(g_methods) ); g_clazz.mNativeMediaPlayer = (*env)->GetFieldID(env, g_clazz.clazz, "mNativeMediaPlayer", "J"); IJK_CHECK_RET(g_clazz.mNativeMediaPlayer, -1, "missing mNativeMediaPlayer"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_postEventFromNative, g_clazz.clazz, "postEventFromNative", "(Ljava/lang/Object;IIILjava/lang/Object;)V"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_onSelectCodec, g_clazz.clazz, "onSelectCodec", "(Ljava/lang/Object;Ljava/lang/String;II)Ljava/lang/String;"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_onControlResolveSegmentCount, g_clazz.clazz, "onControlResolveSegmentCount", "(Ljava/lang/Object;)I"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_onControlResolveSegmentDuration, g_clazz.clazz, "onControlResolveSegmentDuration", "(Ljava/lang/Object;I)I"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_onControlResolveSegmentUrl, g_clazz.clazz, "onControlResolveSegmentUrl", "(Ljava/lang/Object;I)Ljava/lang/String;"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_onControlResolveSegmentOfflineMrl, g_clazz.clazz, "onControlResolveSegmentOfflineMrl", "(Ljava/lang/Object;I)Ljava/lang/String;"); ijkmp_global_init(); FFmpegApi_global_init(env); return JNI_VERSION_1_4; }
JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv* env = NULL; g_jvm = vm; if ((*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_4) != JNI_OK) { return -1; } assert(env != NULL); pthread_mutex_init(&g_clazz.mutex, NULL ); // FindClass returns LocalReference IJK_FIND_JAVA_CLASS(env, g_clazz.clazz, JNI_CLASS_IJKPLAYER); (*env)->RegisterNatives(env, g_clazz.clazz, g_methods, NELEM(g_methods) ); ijkmp_global_init(); ijkmp_global_set_inject_callback(inject_callback); FFmpegApi_global_init(env); return JNI_VERSION_1_4; }
int SDL_AMediaCodecJava__loadClass(JNIEnv *env) { jint sdk_int = SDL_Android_GetApiLevel(); ALOGI("MediaCodec: API-%d\n", sdk_int); if (sdk_int < IJK_API_16_JELLY_BEAN) { return 0; } //-------------------- IJK_FIND_JAVA_CLASS( env, g_clazz.clazz, "android/media/MediaCodec"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_createByCodecName, g_clazz.clazz, "createByCodecName", "(Ljava/lang/String;)Landroid/media/MediaCodec;"); IJK_FIND_JAVA_STATIC_METHOD(env, g_clazz.jmid_createDecoderByType, g_clazz.clazz, "createDecoderByType", "(Ljava/lang/String;)Landroid/media/MediaCodec;"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_configure, g_clazz.clazz, "configure", "(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_dequeueInputBuffer, g_clazz.clazz, "dequeueInputBuffer", "(J)I"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_dequeueOutputBuffer, g_clazz.clazz, "dequeueOutputBuffer", "(Landroid/media/MediaCodec$BufferInfo;J)I"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_flush, g_clazz.clazz, "flush", "()V"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_getInputBuffers, g_clazz.clazz, "getInputBuffers", "()[Ljava/nio/ByteBuffer;"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_getOutputBuffers, g_clazz.clazz, "getOutputBuffers", "()[Ljava/nio/ByteBuffer;"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_getOutputFormat, g_clazz.clazz, "getOutputFormat", "()Landroid/media/MediaFormat;"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_queueInputBuffer, g_clazz.clazz, "queueInputBuffer", "(IIIJI)V"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_release, g_clazz.clazz, "release", "()V"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_releaseOutputBuffer, g_clazz.clazz, "releaseOutputBuffer", "(IZ)V"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_start, g_clazz.clazz, "start", "()V"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_stop, g_clazz.clazz, "stop", "()V"); /*- if (sdk_int >= IJK_API_18_JELLY_BEAN_MR2) { IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_getCodecInfo, g_clazz.clazz, "getCodecInfo", "(I)Landroid/media/MediaCodecInfo;"); IJK_FIND_JAVA_METHOD(env, g_clazz.jmid_getName, g_clazz.clazz, "getName", "()Ljava/lang/String;"); } */ //-------------------- IJK_FIND_JAVA_CLASS( env, g_clazz_BufferInfo.clazz, "android/media/MediaCodec$BufferInfo"); IJK_FIND_JAVA_METHOD(env, g_clazz_BufferInfo.jmid__ctor, g_clazz_BufferInfo.clazz, "<init>" , "()V"); IJK_FIND_JAVA_FIELD(env, g_clazz_BufferInfo.jfid_flags, g_clazz_BufferInfo.clazz, "flags", "I"); IJK_FIND_JAVA_FIELD(env, g_clazz_BufferInfo.jfid_offset, g_clazz_BufferInfo.clazz, "offset", "I"); IJK_FIND_JAVA_FIELD(env, g_clazz_BufferInfo.jfid_presentationTimeUs, g_clazz_BufferInfo.clazz, "presentationTimeUs", "J"); IJK_FIND_JAVA_FIELD(env, g_clazz_BufferInfo.jfid_size, g_clazz_BufferInfo.clazz, "size", "I"); SDLTRACE("android.media.MediaCodec$BufferInfo class loaded"); SDLTRACE("android.media.MediaCodec class loaded"); return 0; }