WEB开发网
开发学院手机开发Android 开发 Android Codec 集成和 video Overlay 阅读

Android Codec 集成和 video Overlay

 2010-07-01 15:05:00 来源:WEB开发网   
核心提示:除了这些spec和guide之外,现成的例子就是android已经封装好的omx core了,Android Codec 集成和 video Overlay(2),也就codecs_v2/omx里面的内容,如果有裸codec,将来还可以使用偷懒的方法,也就是说只实现相应的component,封装成omx从技术 讲应该是

除了这些spec和guide之外,现成的例子就是android已经封装好的omx core了,也就codecs_v2/omx里面的内容。如果有裸codec,封装成omx从技术 讲应该是不难的,基本过程就是先封装成omx,然后再封装成pv_omx,不过opemax IL层的spec很复杂,要做的工作可能比较多。

编译好的omx library 我们可以按照FSL的方式放在prebuilt目录下面,并提供相应的配置文件,比如fslomx.cfg,在这里说一下我们封装好的library是如何被调用的。所有编译好的library最后都会被放在/system/lib目录,android会在/etc读取所有的.cfg文件,然后根据 UUID来判断是否为omx封装好的library,如果UUID匹配的话它就会到lib目录中载入相应的library。这里涉及到一个重要的文件 /opencore/external/codecs_v2/omx/omx_mastercore/src /pv_omxmastercore.cpp。由这个文件来负责当存在多个omx core的时候的处理。

omxmastercore.cpp管理一个优先权的问题,比如说当存在多个omx core,而且每个omx core都具有一个mp3 decode component 时我们应该使用哪一个component进行解码?omxmastercore对这个选择的处理过程是这样的:

a、根据.cfg的文件名的字母排列顺序载入.cfg文件,也就是说fslomx.cfg会比pvomx.cfg先载入

b、根据UUID一个一个判断是否为omx封装的library,如果是的话就载入相应的library,并对omx core下所有的component进行注册

[换句话说就是配置文件名字母靠前的会被先载入,相应component注册也会被注册在前面]

c、omxmastercore根据应用 程序要求的role(比如mp3)及其要求的配置去注册的component中寻找满足要求的component,一旦找到就选定进行解码

因此如果你想使用自己的codec来进行解码,必须使你的配置文件名排在前面,或者如果不需要其他的omx core的话干脆删除它的配置文件。我曾经做过一个实验,去掉fsl的codec , 51播视频就会直接卡死,如果去掉android自带的codec视频和音频都无法播放,因为fsl现在只提供了视频的硬解码,当应用程序找不到音频的解码的时候就会直接报错。从侧面来说fsl的 video codec还是很牛B的,它调用了/external/fsl_imx_lib/vpu中的接口。

因此总的来说实现codec的移植应该是不难的,将来还可以使用偷懒的方法,也就是说只实现相应的component,把它注册到android已有的 omx core中,这个注册是在/external/opencore/codecs_v2/omx/omx_common/src

Tags:Android Codec 集成

编辑录入:coldstar [复制链接] [打 印]
赞助商链接