分享

BiliBili

 黄三岁大爱人生 2018-05-26
 JNI提供接口形式:
  1. static JNINativeMethod g_methods[] = {  
  2.     {  
  3.         "_setDataSource",  
  4.         "(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V",  
  5.         (void *) IjkMediaPlayer_setDataSourceAndHeaders  
  6.     },  
  7.     { "_setDataSourceFd",       "(I)V",     (void *) IjkMediaPlayer_setDataSourceFd },  
  8.     { "_setDataSource",         "(Ltv/danmaku/ijk/media/player/misc/IMediaDataSource;)V", (void *)IjkMediaPlayer_setDataSourceCallback },  
  9.   
  10.     { "_setVideoSurface",       "(Landroid/view/Surface;)V", (void *) IjkMediaPlayer_setVideoSurface },  
  11.     { "_prepareAsync",          "()V",      (void *) IjkMediaPlayer_prepareAsync },  
  12.     { "_start",                 "()V",      (void *) IjkMediaPlayer_start },  
  13.     { "_stop",                  "()V",      (void *) IjkMediaPlayer_stop },  
  14.     { "seekTo",                 "(J)V",     (void *) IjkMediaPlayer_seekTo },  
  15.     { "_pause",                 "()V",      (void *) IjkMediaPlayer_pause },  
  16.     { "isPlaying",              "()Z",      (void *) IjkMediaPlayer_isPlaying },  
  17.     { "getCurrentPosition",     "()J",      (void *) IjkMediaPlayer_getCurrentPosition },  
  18.     { "getDuration",            "()J",      (void *) IjkMediaPlayer_getDuration },  
  19.     { "_release",               "()V",      (void *) IjkMediaPlayer_release },  
  20.     { "_reset",                 "()V",      (void *) IjkMediaPlayer_reset },  
  21.     { "setVolume",              "(FF)V",    (void *) IjkMediaPlayer_setVolume },  
  22.     { "getAudioSessionId",      "()I",      (void *) IjkMediaPlayer_getAudioSessionId },  
  23.     { "native_init",            "()V",      (void *) IjkMediaPlayer_native_init },  
  24.     { "native_setup",           "(Ljava/lang/Object;)V", (void *) IjkMediaPlayer_native_setup },  
  25.     { "native_finalize",        "()V",      (void *) IjkMediaPlayer_native_finalize },  
  26.   
  27.     { "_setOption",             "(ILjava/lang/String;Ljava/lang/String;)V", (void *) IjkMediaPlayer_setOption },  
  28.     { "_setOption",             "(ILjava/lang/String;J)V",                  (void *) IjkMediaPlayer_setOptionLong },  
  29.   
  30.     { "_getColorFormatName",    "(I)Ljava/lang/String;",    (void *) IjkMediaPlayer_getColorFormatName },  
  31.     { "_getVideoCodecInfo",     "()Ljava/lang/String;",     (void *) IjkMediaPlayer_getVideoCodecInfo },  
  32.     { "_getAudioCodecInfo",     "()Ljava/lang/String;",     (void *) IjkMediaPlayer_getAudioCodecInfo },  
  33.     { "_getMediaMeta",          "()Landroid/os/Bundle;",    (void *) IjkMediaPlayer_getMediaMeta },  
  34.     { "_setLoopCount",          "(I)V",                     (void *) IjkMediaPlayer_setLoopCount },  
  35.     { "_getLoopCount",          "()I",                      (void *) IjkMediaPlayer_getLoopCount },  
  36.     { "_getPropertyFloat",      "(IF)F",                    (void *) ijkMediaPlayer_getPropertyFloat },  
  37.     { "_setPropertyFloat",      "(IF)V",                    (void *) ijkMediaPlayer_setPropertyFloat },  
  38.     { "_getPropertyLong",       "(IJ)J",                    (void *) ijkMediaPlayer_getPropertyLong },  
  39.     { "_setPropertyLong",       "(IJ)V",                    (void *) ijkMediaPlayer_setPropertyLong },  
  40.     { "_setStreamSelected",     "(IZ)V",                    (void *) ijkMediaPlayer_setStreamSelected },  
  41.   
  42.     { "native_profileBegin",    "(Ljava/lang/String;)V",    (void *) IjkMediaPlayer_native_profileBegin },  
  43.     { "native_profileEnd",      "()V",                      (void *) IjkMediaPlayer_native_profileEnd },  
  44.   
  45.     { "native_setLogLevel",     "(I)V",                     (void *) IjkMediaPlayer_native_setLogLevel },  
  46. };  
  47.   
  48. JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved)  
  49. {  
  50.     JNIEnv* env = NULL;  
  51.   
  52.     g_jvm = vm;  
  53.     if ((*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_4) != JNI_OK) {  
  54.         return -1;  
  55.     }  
  56.     assert(env != NULL);  
  57.   
  58.     pthread_mutex_init(&g_clazz.mutex, NULL );  
  59.   
  60.     // FindClass returns LocalReference  
  61.     IJK_FIND_JAVA_CLASS(env, g_clazz.clazz, JNI_CLASS_IJKPLAYER);  
  62.     (*env)->RegisterNatives(env, g_clazz.clazz, g_methods, NELEM(g_methods) );  
  63.   
  64.     ijkmp_global_init();  
  65.     ijkmp_global_set_inject_callback(inject_callback);  
  66.   
  67.     FFmpegApi_global_init(env);  
  68.   
  69.     return JNI_VERSION_1_4;  
  70. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多