Toybrick

【调试技巧】VPU硬解码时间打印和FAQ

jefferyzhang

超级版主

积分
2447
发表于 2019-8-28 09:44:20    查看: 813|回复: 0 | [复制链接]    打印 | 显示全部楼层

前言:

很多人问如何知道是在硬件解码还是软件解码?如何知道解码时间?那这里我们提供一个内部调试接口给大家,方便大家查看。


调试方法:

1. 打开驱动调试打印:

  1. echo 0x0100 > /sys/module/rk_vcodec/parameters/debug
复制代码


2. 开始运行你的解码程序

3. 查看打印信息

因为打印信息是printk出来的,无法直接在程序运行界面看到。
可以通过串口查看,或者通过cat /proc/kmesg查看,或者使用命令dmesg查看。

如果看到如下格式的信息,说明正在使用硬件解码,并且解码时间是2ms (H.264 - 1080P 解码时间)
[173711.220703] rk_vcodec: rkvdec task: 2 ms
[173711.223787] rk_vcodec: rkvdec task: 2 ms
[173711.226786] rk_vcodec: rkvdec task: 2 ms
[173711.229797] rk_vcodec: rkvdec task: 2 ms
[173711.251252] rk_vcodec: rkvdec task: 2 ms
[173711.254284] rk_vcodec: rkvdec task: 2 ms


FAQ:

Q:OpenCV 为什么用了硬件解码速度还是很慢?
A:我们从log可以看到,实际上硬件解码时间仅需要1-2ms,但是因为兼容性对接FFMPEG,并且opencv和ffmpeg间又有很多次memcpy的行为,效率降低是意料之内的,     所以我们建议正式项目还是直接采用mpp库调用我们VPU解码。

Q:MPP开始运行时报错:
      mpp_rt: NOT found ion allocator
      mpp_rt: found drm allocator
      mpp: deprecated block control, use timeout control instead
A:这些都不是错误,因为MPP是rk通用接口,兼容目前RK所有芯片,所以他会对芯片的类型和控制方式以及新旧版本做兼容,
     这些打印只是在寻找兼容该平台的接口而已,并不是错误。
     第一行和第二行是在寻找物理buffer分配方式,rk3399pro和1808使用drm框架,所以不兼容ion分配。
     第三行是对接的接口旧了,使用新的接口替代而已。

回复

使用道具 举报

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

本版积分规则

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


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