MediaCodec 支持的codec list

对于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 vendor.huaweitv.hardware.hwtvdriverbase@1.0-service
  859 mediacodec   20   0  78M 6.1M 5.4M S  5.6   0.1   0:02.22 media.codec hw/android.hardware.media.omx@1.0-service
  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/android.hardware.media.omx@1.0-service

再看一下此service 的rc 文件,frameworks\av\services\mediacodec\android.hardware.media.omx@1.0-service.rc

service vendor.media.omx /vendor/bin/hw/android.hardware.media.omx@1.0-service
    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) << "mediacodecservice starting";
    signal(SIGPIPE, SIG_IGN);
    SetUpMinijail(kSystemSeccompPolicyPath, kVendorSeccompPolicyPath);

    android::Proce
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值