繁体   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