簡體   English   中英

Android MediaCodec如何創建解碼器?

[英]How does Android MediaCodec create a decoder?

我注意到java/android/media有一個名為createDecoderByType()的方法,該方法應該返回MediaCodec對象。 但是,當我查看GoogleGit上的MediaCodec.java 源代碼時 ,我真的看不到實際的解碼器是如何生成的。 這是該方法的代碼:

    public static MediaCodec createDecoderByType(String type) {
    return new MediaCodec(type, true /* nameIsType */, false /* encoder */);
}

然后,當我查看構造函數以查看返回的內容時,這就是我看到的內容:

    private MediaCodec(
        String name, boolean nameIsType, boolean encoder) {
    native_setup(name, nameIsType, encoder);
}

好,太棒了。 讓我們看一下native_setup() 定義如下:

    private native final void native_setup(
        String name, boolean nameIsType, boolean encoder);

該功能似乎沒有主體!

起初,我認為這意味着該方法將在子類中定義。 但是我看到此方法在其他功能正常的源代碼中直接在MediaCodec本身上調用。

所以我的問題是:有什么辦法可以追蹤並查看Android如何根據環境和參數創建給定類型的解碼器? 我似乎走到了盡頭,谷歌搜索沒有給我任何有益的結果。

我剛發布它的那一刻才找到答案。 問題出在native關鍵字。 來自GeeksforGeeks:

將native關鍵字應用於方法,以指示該方法是使用JNI(Java本機接口)以本機代碼實現的。

這意味着它可以用其他語言(例如C或C ++)編寫,也可以調用硬件。 我正在尋找的MediaCodec JNI代碼在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM