VENC Debug SOP¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 02/22/2024 |
前言¶
本文阅读对象为FAE及软件开发相关人员,旨在介绍开发过程中遇到VENC(H264/H265/Jpeg编码)相关问题时,如何对一些常见问题进行初步分析与排查,以及怀疑是SDK问题时需要提供的相关信息与执行命令。
1. Debug常用的基本操作和命令¶
1.1 proc echo 命令¶
| 功能 | Dump input buffer |
|---|---|
| 命令 | echo dump_in [ChnId] [num] [dump_path] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
| 参数说明 | [ChnId]:通道号 [num]:需要dump_in的总张数 [dump_path]:保存文件的路径 [DevID]:设备号,0 表示H264/H265编码,8表示Jpe |
| 举例 | echo dump_in 0 10 /mnt > /proc/mi_modules/mi_venc/mi_venc0 |
| 功能 | Dump output stream |
|---|---|
| 命令 | echo dump_out [ChnId] [num] [dump_path] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
| 参数说明 | [ChnId]:通道号 [num]:需要dump_out的总张数 [dump_path]:保存文件的路径 [DevID]:设备号,0 表示H264/H265编码,8表示Jpe |
| 举例 | echo dump_out 0 100 /mnt > /proc/mi_modules/mi_venc/mi_venc0 |
| 功能 | Drop/Release the corresponding channel output task |
|---|---|
| 命令 | echo drop_out [ChnId] [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
| 参数说明 | [ChnId]:通道号,为a时代表所有通道 [Status]: r : release the corresponding channel output task d : drop the corresponding channel output task [DevID]:设备号,0 表示H264/H265编码,8表示Jpe |
| 举例 | echo drop_out 0 d > /proc/mi_modules/mi_venc/mi_venc0 说明:drop channel 0 output task echo drop_out 0 r > /proc/mi_modules/mi_venc/mi_venc0 说明:release channel 0 output task echo drop_out a d > /proc/mi_modules/mi_venc/mi_venc0 说明:drop the whole channel output task echo drop_out a r > /proc/mi_modules/mi_venc/mi_venc0 说明: release the whole channel output task |
| 功能 | Drop/Release the corresponding channel input task |
|---|---|
| 命令 | echo drop_in [ChnId] [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
| 参数说明 | [ChnId]:通道号,为a时代表所有通道 [Status]: r : release the corresponding channel input task d : drop the corresponding channel input task [DevID]:设备号,0 表示H264/H265编码,8表示Jpe |
| 举例 | echo drop_in 0 d > /proc/mi_modules/mi_venc/mi_venc0 说明:drop channel 0 input task echo drop_in 0 r > /proc/mi_modules/mi_venc/mi_venc0 说明:release channel 0 input task echo drop_in a d > /proc/mi_modules/mi_venc/mi_venc0 说明:drop the whole channel input task echo drop_in a r > /proc/mi_modules/mi_venc/mi_venc0 说明: release the whole channel input task |
| 功能 | 动态修改Venc Sdk打印等级 |
|---|---|
| 命令 | echo [log_level] > proc/mi_modules/mi_venc/debug_level |
| 参数说明 | [log_level]:log等级,取值范围[2,7],默认是2,值越大打印越多 |
| 举例 | echo 7 > proc/mi_modules/mi_venc/debug_level |
1.2 proc cat 命令¶
功能 |
命令 |
|---|---|
| 获取编码Proc h264/5 Pipline信息 | cat /proc/mi_modules/mi_venc/mi_venc0 |
| 获取编码Proc Jpe Pipline信息 | cat /proc/mi_modules/mi_venc/mi_venc8 |
| 获取编码Proc 额外的Hal Device信息 | cat /proc/mi_modules/mi_venc/debug_hal/dev_info |
| 获取编码Proc 额外的Hal Channel信息 | cat /proc/mi_modules/mi_venc/debug_hal/ctx_info |
| 获取编码H264/H265 Clk信息 | cat /proc/mi_modules/mi_venc/debug_hal/ven_clock* |
| 获取编码Jpe Clk信息 | cat /proc/mi_modules/mi_venc/debug_hal/jpe_clock |
1.3 其它说明¶
- proc中截图说明可能会因为版本迭代有小差异,请只关注红色框部分
- H264/5码流是否花屏可使用VLC播放或者码流分析工具 Intel Video Pro Analyzer,JPE则使用正常图片工具即可。
- 找Venc Owner分析请尽可能提供:a.所有的proc cat 命令,并且连续执行3次 b.串口log和Kmsg c.前级SCL的proc d.Pipline
2. 常见问题基本分析¶
2.1 码流花屏¶
debug 流程参考图如下:


此处的码流花屏不包括马赛克效应,因为编码本身是有损的,如果码率低画质差原理上就可能出现马赛克。
2.2 播放无流¶
debug 流程参考图如下:




2.3 帧率异常¶
debug 流程参考图如下:



2.4 码率不足或超标¶
debug 流程参考图如下:


流程参考图中检查实时码率需要注意: 1. 只有CBR存在不足的状况,其它码率控制方式只有超标。 2. Kbps1s/Kbps10 H264/5存在因为I帧间隔(Gop)设定差异出现包含I帧时偏大,不包含则偏小的状况。尽量以Gop为准,为了准确KbpsGop统计时如果Gop设定超过6s,会强制按2s统计 3. JPE没有P帧的概念,直接看Kbps1s即可。
2.5 马赛克效应¶
debug 流程参考图如下:

2.6 I帧Size太大¶
debug 流程参考图如下:


2.7 呼吸效应¶
debug 流程参考图如下:

2.8 颜色有色差¶
请调用API MI_VENC_SetH264Trans/MI_VENC_SetH265Trans将参数s32ChromaQpIndexOffset设置为负数(Ex:-12/-6)确认是否有改善。
理论上值越小越有效果,但值太小整体Qp会被抬高大概1,需要平衡整体画质和色差问题. 若无效果请抓YUV和原始码流提供给VENC Owner确认