欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

Android MediaExtractor Construction & Destruction,mediaextractor

来源: 开发者 投稿于  被查看 27040 次 评论:259

Android MediaExtractor Construction & Destruction,mediaextractor


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)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关频道:

用户评论