Toybrick

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

jefferyzhang

版主

积分
12822
发表于 2019-8-28 09:44:20    查看: 45278|回复: 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分配。
     第三行是对接的接口旧了,使用新的接口替代而已。

回复

使用道具 举报

Carlos

注册会员

积分
90
发表于 2020-1-3 14:48:25 | 显示全部楼层
请问打印出这种信息是什么情况
[282834.430337] uvcvideo: Failed to resubmit video URB (-1).
[282880.282180] uvcvideo: Failed to resubmit video URB (-1).
[282880.289007] uvcvideo: Failed to resubmit video URB (-1).
[282880.295832] uvcvideo: Failed to resubmit video URB (-1).
[282880.302644] uvcvideo: Failed to resubmit video URB (-1).
[282880.309450] uvcvideo: Failed to resubmit video URB (-1).
[344560.493239] rk_vcodec: vpu_service_ioctl:1844: error: unknow vpu service ioctl cmd 40086c01
[344689.110281] rk-vcodec ff650000.vpu_service: closed
[344769.139201] rk_vcodec: vpu_service_ioctl:1844: error: unknow vpu service ioctl cmd 40086c01
[344769.165704] rk-vcodec ff650000.vpu_service: closed
[344769.202801] rk-vcodec ff650000.vpu_service: closed
[344769.230817] rk-vcodec ff650000.vpu_service: closed
[344769.262316] rk-vcodec ff650000.vpu_service: closed
[344769.302352] rk-vcodec ff650000.vpu_service: closed
[344769.331337] rk-vcodec ff650000.vpu_service: closed
[344769.361913] rk-vcodec ff650000.vpu_service: closed
[344769.396967] rk-vcodec ff650000.vpu_service: closed
[344769.430898] rk-vcodec ff650000.vpu_service: closed
[344769.467257] rk-vcodec ff650000.vpu_service: closed
回复

使用道具 举报

jefferyzhang

版主

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

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

使用道具 举报

Carlos

注册会员

积分
90
发表于 2020-1-3 15:16:53 | 显示全部楼层
rk3399的板子
回复

使用道具 举报

Carlos

注册会员

积分
90
发表于 2020-1-3 15:21:01 | 显示全部楼层

在运行“RK3399Pro入门教程(10)RTSP推流介绍”那个程序时候打印的信息,板子是ubuntu16.04的
回复

使用道具 举报

jefferyzhang

版主

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

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

使用道具 举报

Carlos

注册会员

积分
90
发表于 2020-1-3 15:36:54 | 显示全部楼层
jefferyzhang 发表于 2020-1-3 15:25
不知道你板子是谁提供的,也不清楚你的驱动和mpp是不是匹配,建议你直接联系卖你板子的工程师 ...

我又执行了一下程序,它报的信息是这样的:
[358813.708211] rk_vcodec: vpu2_enc task: 3 ms
[358813.710587] rk-vcodec ff650000.vpu_service: closed
[358813.738622] rk_vcodec: vpu2_enc task: 3 ms
[358813.740911] rk-vcodec ff650000.vpu_service: closed
[358813.769701] rk_vcodec: vpu2_enc task: 3 ms
[358813.771808] rk-vcodec ff650000.vpu_service: closed
[358813.801404] rk_vcodec: vpu2_enc task: 3 ms
[358813.803660] rk-vcodec ff650000.vpu_service: closed
[358813.829368] rk_vcodec: vpu2_enc task: 3 ms
[358813.839999] rk-vcodec ff650000.vpu_service: closed
[358813.882892] rk_vcodec: vpu2_enc task: 3 ms
[358813.884686] rk-vcodec ff650000.vpu_service: closed
[358813.922180] rk_vcodec: vpu2_enc task: 3 ms
[358813.924092] rk-vcodec ff650000.vpu_service: closed
[358813.960250] rk_vcodec: vpu2_enc task: 3 ms
[360440.595181] rk-vcodec ff650000.vpu_service: closed
摄像头rtsp推流后,画面就出现了几秒,之后就黑屏断开了
回复

使用道具 举报

christian

注册会员

积分
132
发表于 2020-4-3 17:30:16 | 显示全部楼层
sudo echo 0x0100 > /sys/module/rk_vcodec/parameters/debug
bash: /sys/module/rk_vcodec/parameters/debug: Permission denied
回复

使用道具 举报

tanggou

注册会员

积分
179
发表于 2020-7-29 11:41:19 | 显示全部楼层
搞定,1ms
回复

使用道具 举报

tanggou

注册会员

积分
179
发表于 2020-7-29 11:42:12 | 显示全部楼层
[ 7224.129596] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 7353.369115] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 7740.119340] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 9101.283872] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 9101.290618] rk_vcodec: vpu2_dec task: 1 ms
[ 9277.804616] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 9277.811286] rk_vcodec: vpu2_dec task: 1 ms
[ 9402.429458] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 9402.435700] rk_vcodec: vpu2_dec task: 1 ms
[ 9525.892570] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 9525.898911] rk_vcodec: vpu2_dec task: 1 ms
回复

使用道具 举报

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

本版积分规则

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


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