如何注册OMX核心以添加新的解码器

sam*_*sam 2 android android-framework stagefright openmax

我指的是帖子:

Android:如何将解码器集成到多媒体框架中

在它之后我已经注册了我的新解码器(目前Android不支持)media_codecs.xml.

上述帖子的第2步要求我执行OMX核心注册.但是,由于我对这个主题不熟悉,我无法按照第2步进行操作.

我在C中有解码器的工作代码,已经移植到android.

所以我要求是否有人可以提供以下信息:

  • 为Android目前不支持的解码器执行OMX代码注册的分步指南.

  • 我应该在哪里将我的工作C代码放在源代码树中,以及如何指定编译器来编译它

  • 最后,我想告诉我,我正在研究ICS代码,
    解码器源代码的输出是YUV420.

任何人请提供上述查询的指示.提前致谢.

Gan*_*esh 6

如果您不打算拥有自己的OMX Core,那么您可以考虑将编解码器添加到SoftOMXComponent插件本身,如下所述.

注意:这个答案假定您有重新编译的部分能力AOSP代码,并可以更换重建库的平台上.

第1步:OMX组件注册

此处SoftOMXComponent显示的源文件中,添加组件名称,如下所示

{ "OMX.sam.custom.h264.decoder", "sam_h264dec", "video_decoder.avc" }
Run Code Online (Sandbox Code Playgroud)

这里"OMX.sam.custom.h264.decoder"代表您的组件名称,"sam_h264dec"表示存储在文件系统中的库名称的后缀(下面更多),并"video_decoder.avc"表示您的解码器的角色,在此示例中是一个H.264视频解码器.

第2步:生成库

您的OMX组件应构建为可动态加载的库,其名称将"libstagefright_soft_sam_h264dec.so"位于文件系统的/ system/lib中.

第3步:创建组件

Stagefright框架代码会寻找一个名为符号createSoftOMXComponent创建组件.因此,步骤2中提到的编解码器库应该支持此功能.

通过这些步骤并假设您的编解码器OMXAndroid扩展兼容,您应该能够集成解码器.

提示1:如果您希望始终选择组件,请确保步骤1中所述的组件名称已在kComponents所示参考中的阵列顶部注册.

提示2:如果您想了解更多关于代动态可装载库的话题,你可以参考GSM Decoder代码所示这里.