MediaCodec 支持的codec list

本文深入探讨Android系统中MediaCodecList的生成过程,包括Codec Service、OMX实例化、OmxStore实例化等步骤。分析了如何查看和创建MediaCodec支持的编码解码器,特别是通过组件名称和MIME类型的方式。还详细介绍了不同codec的排名优先级和系统属性对rank的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于Android Multimedia 来说,无可避免要使用的MediaCodec 支持的Codec List,本文章目的是理清MediaCodecList 是怎么产生的?怎么查看当前MediaCodec 支持的Codec List?

以Android S 为code base 进行分析。

一、Codec Service

系统起来后,Codec Service 也已经ready.

可以在播放MM 下,android console 下 敲 top 看看

Tasks: 431 total,   2 running, 429 sleeping,   0 stopped,   0 zombie
  Mem:  3151492K total,  2757436K used,   394056K free,     7932K buffers
 Swap:  1572860K total,   723712K used,   849148K free,  1168260K cached
400%cpu  99%user   3%nice  59%sys 231%idle   1%iow   0%irq   8%sirq   0%host
  PID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ ARGS                                                                                                                                                                        
  504 audioserver  20   0  69M  13M 4.1M S 77.0   0.4 177:50.14 android.hardware.audio.service
  550 system       -2  -8 3.1G  37M  32M S 19.0   1.2   1:51.02 surfaceflinger
  855 media        20   0 397M  17M  13M S 12.0   0.5   0:05.16 mediaserver
  531 root         20   0 111M 8.2M 6.5M S  9.6   0.2   9:39.52 [email protected]
  859 mediacodec   20   0  78M 6.1M 5.4M S  5.6   0.1   0:02.22 media.codec hw/[email protected]
  542 audioserver  20   0 2.6G  20M  17M S  5.0   0.6   5:17.14 audioserver

pid 859 就是 codec service.

ls  /proc/859/exe

lrwxrwxrwx   1 mediacodec camera 0 2023-03-27 20:20 exe -> /vendor/bin/hw/[email protected]

再看一下此service 的rc 文件,frameworks\av\services\mediacodec\[email protected]

service vendor.media.omx /vendor/bin/hw/[email protected]
    class main
    user mediacodec
    group camera drmrpc mediadrm
    ioprio rt 4
    writepid /dev/cpuset/foreground/tasks
此Service 对应的main 函数在frameworks\av\services\mediacodec\main_codecservice.cpp 中
// Must match location in Android.mk.
static const char kSystemSeccompPolicyPath[] =
        "/system/etc/seccomp_policy/mediacodec.policy";
static const char kVendorSeccompPolicyPath[] =
        "/vendor/etc/seccomp_policy/mediacodec.policy";
int main(int argc __unused, char** argv)
{
    strcpy(argv[0], "media.codec");
    LOG(INFO) << "mediacodecservi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值