Android MediaExtractor Construction & Destruction

来源:互联网 发布:剑网三李白捏脸数据 编辑:程序博客网 时间:2024/05/18 22:55

1. Loadlibrary

(1) MediaExtractor
file: MediaExtractor.java

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

(2)android_media_MediaExtractor_native_init
file: android_media_MediaExtractor.cpp

Created with Raphaël 2.1.0MediaExtractorMediaExtractorandroid_media_MediaExtractorandroid_media_MediaExtractorDataSourceDataSourcenative_initandroid_media_MediaExtractor_initRegisterDefaultSniffers

2. new

Created with Raphaël 2.1.0MediaExtractorMediaExtractorandroid_media_MediaExtractorandroid_media_MediaExtractorJMediaExtractorJMediaExtractorNuMediaExtractorNuMediaExtractorMediaExtractornative_setupnewnewmImpIsetMediaExtractor

(1)android_media_MediaExtractor_native_setup
file: android_media_MediaExtractor.cpp

static void android_media_MediaExtractor_native_setup(        JNIEnv *env, jobject thiz) {    sp<JMediaExtractor> extractor = new JMediaExtractor(env, thiz);    setMediaExtractor(env,thiz, extractor);}

(2) setMediaExtractor

static sp<JMediaExtractor> setMediaExtractor(        JNIEnv *env, jobject thiz, const sp<JMediaExtractor> &extractor) {    sp<JMediaExtractor> old =        (JMediaExtractor *)env->GetLongField(thiz, gFields.context);    if (extractor != NULL) {        extractor->incStrong(thiz);    }    if (old != NULL) {        old->decStrong(thiz);    }    env->SetLongField(thiz, gFields.context, (jlong)extractor.get());    return old;}

3. finalize

(1)native_finalize
(2) android_media_MediaExtractor_release
(3)setMediaExtractor(env, thiz, null)

Created with Raphaël 2.1.0MediaExtractorMediaExtractorandroid_media_MediaExtractorandroid_media_MediaExtractorfinalizenative_finalizeandroid_media_MediaExtractor_releasesetMediaExtractor(null)
0 0
原创粉丝点击