Toybrick

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

jefferyzhang

版主

积分
12953
楼主
发表于 2019-8-28 09:44:20    查看: 49126|回复: 21 | [复制链接]    打印 | 显示全部楼层
本帖最后由 jefferyzhang 于 2023-8-29 15:45 编辑

前言:

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


调试方法:

1. 打开驱动调试打印(调试节点开关根据芯片和kernel版本不同会有所变化,但大体路径相似):

  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分配。
     第三行是对接的接口旧了,使用新的接口替代而已。

回复

使用道具 举报

jefferyzhang

版主

积分
12953
沙发
 楼主| 发表于 2020-1-3 14:54:45 | 显示全部楼层
Carlos 发表于 2020-1-3 14:48
请问打印出这种信息是什么情况
[282834.430337] uvcvideo: Failed to resubmit video URB (-1).
[282880.28 ...

什么板子?这可能是驱动问题
回复

使用道具 举报

jefferyzhang

版主

积分
12953
板凳
 楼主| 发表于 2020-1-3 15:25:59 | 显示全部楼层
Carlos 发表于 2020-1-3 15:21
在运行“RK3399Pro入门教程(10)RTSP推流介绍”那个程序时候打印的信息,板子是ubuntu16.04的 ...

不知道你板子是谁提供的,也不清楚你的驱动和mpp是不是匹配,建议你直接联系卖你板子的工程师
回复

使用道具 举报

jefferyzhang

版主

积分
12953
地板
 楼主| 发表于 2021-9-15 15:31:59 | 显示全部楼层
wjghm2008 发表于 2021-9-15 14:56
我也出现这个问题了,莫名其妙的问题,突然解码就不行了。
请问怎么解决啊?

这两个log都不是错误log,都是正常的
回复

使用道具 举报

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

本版积分规则

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


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