如何添加媒体类型和对应的编解码器

Stagefright中OMXCodec中根据Extractor中的MIME创建对应编解码器组件的流程如下:
这里写图片描述

所有支持的编解码类型都是在AwesomePlayer初始化的时候就创建好的.
硬编解码器从hardware/XXX/media/libstagefrighthw/libstagefrighthw.so中加载
软编解码器从frameworks/av/media/libstagefright/codec/libstagefright_soft_XXX.so中加载
所有支持的媒体类型可以在文件夹中 frameworks/av/media/libstagefright/data/ 中看到
这些文件会在厂商定制的时候覆盖

硬编解码器和软编解码器的区别是命名方式

static bool IsSoftwareCodec(const char *componentName) {
    if (!strncmp("OMX.google.", componentName, 11)) {
        return true;
    }

#ifdef DOLBY_UDC
    if (!strncmp("OMX.dolby.", componentName, 10)) {
        return true;
    }
#endif // DOLBY_END

    if (!strncmp("OMX.", componentName, 4)) {
        return false;
    }

    return true;
}

如果需要添加新支持的媒体类型或者编解码器组件, 需要一下步骤
硬编解码
- 将编解码相关文件放在hardware/XXX/media/libstagefrighthw/ 继承OMXPluginBase
- 在Android.mk设置LOCAL_MODULE := libstagefrighthw
- 将所支持编解码的媒体文件类型添加到media_codec.xml中
- 在OMXCodec.cpp中将支持的MIME类型添加到kMimeToRole[]

软编解码
- 将文件放到frameworks/av/media/libstagefright/codecs/
- 继承SimpleSoftOMXComponent
- 在Android.mk设置LOCAL_MODULE := libstagefright_soft_XXX
- 将所支持编解码的媒体文件类型定义在media_codec.xml中
- 在OMXCodec.cpp中将新支持的MIME类型添加到kMimeToRole[]
- 在SoftOMXPlugin.cpp添加编解码组件对应的名字到kComponents中,格式 { “OMX.google.aac.decoder”, “XXX”, “audio_decoder.aac” }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值