Toybrick

调用ffmpeg的rkmpp硬解码CPU占用高的问题

自由的学习

注册会员

积分
165
发表于 2023-9-5 09:50:41    查看: 1226|回复: 3 | [复制链接]    打印 | 显示全部楼层
本帖最后由 自由的学习 于 2023-9-5 10:44 编辑

为了一套代码适配多个平台的板子,这边采用ffmpeg的硬件编解码,使用avcodec_receive_frame(codec_ctx, frame)取出的frame数据为空 ,此时CPU占用率是和调用mpp原生api解码差不多的,为了取得frame,我这边做了re = av_hwframe_transfer_data(f, frame, 0);处理,这样CPU的占用率就立马彪上来了,不知道有没有朋友遇过相同问题,该如何规避,还有不知可以通过什么方法监测相关硬件的使用率。ffmpeg的版本用的是6.0



回复

使用道具 举报

jefferyzhang

版主

积分
12768
发表于 2023-9-5 10:39:28 | 显示全部楼层
任何第三方库都不可能做到0拷贝兼容嵌入式,如果你写代码都是用第三方库,cpu就不可能低。
他随便一个生产消费者模式就给你图片来一次拷贝,动不动格式用cpu转一下,rotate一下,cpu一下子就飞天了。
但凡你用第三方库都不可能做成产品,这里都还不说ffmpeg侵权的问题
回复

使用道具 举报

自由的学习

注册会员

积分
165
 楼主| 发表于 2023-9-5 11:03:50 | 显示全部楼层
jefferyzhang 发表于 2023-9-5 10:39
任何第三方库都不可能做到0拷贝兼容嵌入式,如果你写代码都是用第三方库,cpu就不可能低。
他随便一个生产 ...

好的 那请问我这边可以通过什么方式实时监测硬件编解码器的使用率
回复

使用道具 举报

jefferyzhang

版主

积分
12768
发表于 2023-9-5 11:30:02 | 显示全部楼层
自由的学习 发表于 2023-9-5 11:03
好的 那请问我这边可以通过什么方式实时监测硬件编解码器的使用率

硬件编码器是一个DSP,分时复用,只有0%占用和100%占用两种情况,不存在占用率一说。
当你能理解这个时候,你就知道可以用统计编码时间来看是否还有空闲时间片。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表