Toybrick

标题: 【调试技巧】VPU硬解码时间打印和FAQ [打印本页]

作者: jefferyzhang    时间: 2019-8-28 09:44
标题: 【调试技巧】VPU硬解码时间打印和FAQ

前言:

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


调试方法:

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


作者: Carlos    时间: 2020-1-3 14:48
请问打印出这种信息是什么情况
[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    时间: 2020-1-3 14:54
Carlos 发表于 2020-1-3 14:48
请问打印出这种信息是什么情况
[282834.430337] uvcvideo: Failed to resubmit video URB (-1).
[282880.28 ...

什么板子?这可能是驱动问题
作者: Carlos    时间: 2020-1-3 15:16
rk3399的板子
作者: Carlos    时间: 2020-1-3 15:21
Carlos 发表于 2020-1-3 15:16
rk3399的板子

在运行“RK3399Pro入门教程(10)RTSP推流介绍”那个程序时候打印的信息,板子是ubuntu16.04的
作者: jefferyzhang    时间: 2020-1-3 15:25
Carlos 发表于 2020-1-3 15:21
在运行“RK3399Pro入门教程(10)RTSP推流介绍”那个程序时候打印的信息,板子是ubuntu16.04的 ...

不知道你板子是谁提供的,也不清楚你的驱动和mpp是不是匹配,建议你直接联系卖你板子的工程师
作者: Carlos    时间: 2020-1-3 15:36
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    时间: 2020-4-3 17:30
sudo echo 0x0100 > /sys/module/rk_vcodec/parameters/debug
bash: /sys/module/rk_vcodec/parameters/debug: Permission denied

作者: tanggou    时间: 2020-7-29 11:41
搞定,1ms
作者: tanggou    时间: 2020-7-29 11:42
[ 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

作者: tanggou    时间: 2020-7-29 11:44
Carlos 发表于 2020-1-3 15:36
我又执行了一下程序,它报的信息是这样的:
[358813.708211] rk_vcodec: vpu2_enc task: 3 ms
[358813.71 ...

你是enc,显然不对。
作者: tanggou    时间: 2020-7-29 11:45
christian 发表于 2020-4-3 17:30
sudo echo 0x0100 > /sys/module/rk_vcodec/parameters/debug
bash: /sys/module/rk_vcodec/parameters/de ...

加sudo,...............
作者: tanggou    时间: 2020-8-21 15:39
这样就可以查看是硬解码以及解码时间了
作者: 入门小白    时间: 2021-1-27 17:22
FFmpeg拉取rtsp流,送入到mpp进行解码,解码后的yuv播放正常,为啥解码时间输出为0呢?而且解码过程中cpu占用率还是很高,
[31217.065132] rk_vcodec: rkvdec task: 0 ms
[31217.066667] rk_vcodec: rkvdec task: 0 ms
[31217.156705] rk_vcodec: rkvdec task: 0 ms
[31217.158307] rk_vcodec: rkvdec task: 0 ms
[31217.248383] rk_vcodec: rkvdec task: 0 ms
[31217.249933] rk_vcodec: rkvdec task: 0 ms
[31217.339978] rk_vcodec: rkvdec task: 0 ms
[31217.341388] rk_vcodec: rkvdec task: 0 ms
[31217.431367] rk_vcodec: rkvdec task: 0 ms
[31217.432999] rk_vcodec: rkvdec task: 0 ms
[31217.522981] rk_vcodec: rkvdec task: 0 ms
[31217.525787] rk_vcodec: rkvdec task: 0 ms
[31217.614894] rk_vcodec: rkvdec task: 0 ms
[31217.617317] rk_vcodec: rkvdec task: 0 ms
[31217.706353] rk_vcodec: rkvdec task: 0 ms
[31217.708957] rk_vcodec: rkvdec task: 0 ms
[31217.798953] rk_vcodec: rkvdec task: 0 ms
[31217.801296] rk_vcodec: rkvdec task: 0 ms
[31217.890997] rk_vcodec: rkvdec task: 0 ms
[31217.893226] rk_vcodec: rkvdec task: 0 ms
[31217.982473] rk_vcodec: rkvdec task: 0 ms
[31217.985805] rk_vcodec: rkvdec task: 0 ms
[31217.987405] rk_vcodec: rkvdec task: 0 ms
[31218.119818] rk_vcodec: rkvdec task: 0 ms
[31218.122146] rk_vcodec: rkvdec task: 0 ms
[31218.211430] rk_vcodec: rkvdec task: 0 ms
[31218.212844] rk_vcodec: rkvdec task: 0 ms
[31218.302809] rk_vcodec: rkvdec task: 0 ms
[31218.304254] rk_vcodec: rkvdec task: 0 ms
[31218.394365] rk_vcodec: rkvdec task: 0 ms
[31218.395979] rk_vcodec: rkvdec task: 0 ms

作者: 986247    时间: 2021-2-22 14:34
tanggou 发表于 2020-7-29 11:45
加sudo,...............

同问,问题解决了吗,
作者: wjghm2008    时间: 2021-9-15 14:56
我也出现这个问题了,莫名其妙的问题,突然解码就不行了。
请问怎么解决啊?

[ 4510.386069] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 4534.142676] wl_run_escan: LEGACY_SCAN sync ID: 74, bssidx: 0
作者: jefferyzhang    时间: 2021-9-15 15:31
wjghm2008 发表于 2021-9-15 14:56
我也出现这个问题了,莫名其妙的问题,突然解码就不行了。
请问怎么解决啊?

这两个log都不是错误log,都是正常的
作者: wjghm2008    时间: 2021-9-16 13:59
jefferyzhang 发表于 2021-9-15 15:31
这两个log都不是错误log,都是正常的

好的,多谢。
这个 log,表示什么意思,在哪里能看到相关的资料啊。
作者: tomaito    时间: 2021-9-18 14:29
我在解码的时候cat /proc/kmsg 显示如下
  1. <3>[18407.492275]  rk_vcodec: vpu_service_ioctl:2138: error: unknow vpu service ioctl cmd 40086c01
复制代码


没有显示时间




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3