[英]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.