Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4935d05e authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Untangle MediaPlayer, MediaRecorder, MediaScanner and MediaMetadataRetriever JNI

code, so that creating one of those doesn't initialize all the others. Shaves
a hundred milliseconds or so off music app startup time.
parent f2beab58
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ public class MediaMetadataRetriever
{
    static {
        System.loadLibrary("media_jni");
        native_init();
    }

    // The field below is accessed by native methods
@@ -212,6 +213,7 @@ public class MediaMetadataRetriever
     */
    public native void release();
    private native void native_setup();
    private static native void native_init();

    private native final void native_finalize();

+2 −0
Original line number Diff line number Diff line
@@ -466,6 +466,7 @@ public class MediaPlayer

    static {
        System.loadLibrary("media_jni");
        native_init();
    }

    private final static String TAG = "MediaPlayer";
@@ -1109,6 +1110,7 @@ public class MediaPlayer
     */
    private native final int native_setMetadataFilter(Parcel request);

    private static native final void native_init();
    private native final void native_setup(Object mediaplayer_this);
    private native final void native_finalize();

+3 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ public class MediaRecorder
{
    static {
        System.loadLibrary("media_jni");
        native_init();
    }
    private final static String TAG = "MediaRecorder";

@@ -655,6 +656,8 @@ public class MediaRecorder
     */
    public native void release();

    private static native final void native_init();

    private native final void native_setup(Object mediarecorder_this) throws IllegalStateException;

    private native final void native_finalize();
+2 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ public class MediaScanner
{
    static {
        System.loadLibrary("media_jni");
        native_init();
    }

    private final static String TAG = "MediaScanner";
@@ -1404,6 +1405,7 @@ public class MediaScanner

    public native byte[] extractAlbumArt(FileDescriptor fd);

    private static native final void native_init();
    private native final void native_setup();
    private native final void native_finalize();
    @Override
+0 −7
Original line number Diff line number Diff line
@@ -169,13 +169,6 @@ static JNINativeMethod gMethods[] = {
int register_android_media_AmrInputStream(JNIEnv *env)
{
    const char* const kClassPathName = "android/media/AmrInputStream";
    jclass clazz;

    clazz = env->FindClass(kClassPathName);
    if (clazz == NULL) {
        LOGE("Can't find %s", kClassPathName);
        return -1;
    }

    return AndroidRuntime::registerNativeMethods(env,
            kClassPathName, gMethods, NELEM(gMethods));
Loading