VENC模块调试
1. cat¶
-
调试信息
#cat /proc/mi_modules/mi_venc/mi_vencN //Venc 3.0之前,N取0/1,0表示编码h264和h265的device0,1表示编码jpeg的device1;Venc 3.0,N取0/8,0表示编码h264/h265的device0,8表示编码jpeg的device8。
-
调试信息分析
记录当前某VENC device的使用状况,以及device属性、layer属性、inputport属性,可以动态地获取到这些信息,方便调试和测试。
-
参数说明
参数 描述 Dev info DevId 设备号,作为Dev ID使用 (对映内核MI_VENC_Dev_e) IrqNum 中断号 IsrTotalCnt 各种类型的irq总数 IsrFrmDoneCnt frame done类型的irq总数 IsrBufFullCnt buffer full类型的irq总数 IsrSliceDoneCnt slice done的isr 总数 IsrRingFullCnt ring buffer full类型的irq总数 IsrTimeoutCnt 超时的isr总数 IsrOtherCnt other类型的irq总数 MaxTaskCnt 支持同时处理的最多task个数 WorkingTaskCnt 正在处理的task个数 SupportRing 是否支持HW RING SupportImi 是否支持HW REALTIME NeedPadding 是否需要MI SYS clear padding CmdqHandle cmdq handle value CmdqBufSize CmdqBufSize ResetTime 设备重启时间 MaxW 设备使用最大分辨率的宽度 MaxH 设备使用最大分辨率的高度 AlignMaxw 对齐的最大宽度 AlignMaxH 对齐的最大高度 CHN info ChnId Channel ID 通道号 bStart 是否已开始接收数据 RefMemPA 底层driver要求的硬件物理位址 RefMemSize 底层driver要求的硬件内存大小 AlMemPA 底层driver要求的CPU物理位址 AlMemVA 底层driver要求的CPU虚拟位址 AlMemSize 底层driver要求的CPU内存大小 State 底层处理状态:
typedef enum
{
E_MI_VENC_BUFSTATE_IDLE = 0,
E_MI_VENC_BUFSTATE_ENCODE,
E_MI_VENC_BUFSTATE_WAIT_CMDQ,
E_MI_VENC_BUFSTATE_CHECK,
E_MI_VENC_BUFSTATE_DROP,
E_MI_VENC_BUFSTATE_DROP_FORCE,
E_MI_VENC_BUFSTATE_RECOVER,
E_MI_VENC_BUFSTATE_BUF_FULL,
E_MI_VENC_BUFSTATE_MAX
} MI_VENC_BufferState_e;EnPred 代表base层的帧是否被base层其它帧用作参考 base base层的周期,取值范围:(0, +∞) enhance enhance层的周期,取值范围:[0, 255] MaxStreamCnt 最大输出缓存张数 FrameIdx 当前frame的序号:
before venc3.0, 取值为:1,2,3,4
after venc3.0,取值为:1,2,4Gardient 前端isp传递过来的梯度值 Fps_1s 统计1s内的输出帧率 kbps 统计1s内的输出码率 Fps10s 统计10s内的输出帧率 kbps 统计10s内的输出码率 RingBufStartLine ring start line in ring mode RingBufHeight ring buffer height in ring mode QueryCnt APP调用MI_VENC_Query的次数 GetStreamCnt APP调用MI_VENC_GetStream的次数 RlsStreamCnt APP调用MI_VENC_ReleaseStream的次数 PollReadyCnt APP调用select/poll成功的次数 PollFailCnt APP调用select/poll失败的次数 Inputport info ChnId Channel ID 通道号 Width 画面宽度 (pixels) Height 画面高度 (pixels) SrcFrmRate 来源每秒帧数,通常以此作为rate control的参数 MaxW 最大画面宽度 (pixels) MaxH 最大画面高度 (pixels) FrameCnt 已处理的帧数 DropFrameCnt 已丢弃的帧数 BlockCnt 已接收到的input picture总数,但当前还在处理上一张input picture从而需rewind Outputport info ChnId Channel ID 通道号 CODEC 使用何种CODEC: H264,H265,MJPG Profile Profile值 BufSize 由user设定的每帧最大缓存 (bytes) MinAllocSize 允许的最小的Size RefNum 最大参考帧数 bByFrame 后级是否一次取走一帧?
0:否,通常代表按包取数据
1:是FrameCnt 已处理的帧数 DropCnt 已经编码完但丢掉的帧总数 ReEncCnt 重编码的帧总数 RingUnreadCnt output pool里还未被取走的帧总数 RingTotalCnt output pool里的帧总数 UsrLockedCnt user已拿住的帧总数 RateCtl Rate Control的算法:CBR, VBR, FixQp等 GOP Group of Picture大小 MaxBitrate CBR, VBR时,最大的目标码率。(bits per second) IPQPDelta 平均QP值与当前I帧QP的差值 MaxQp VBR时,允许的最大QP MinQp VBR时,允许的最小QP MaxIQP VBR时,允许的最大的I帧QP MinIQP VBR时,允许的最小的I帧QP QpMap QPMAP模式下允许用户自由决定码率控制的策略 AbsQp 使用绝对Qp的值 ModeMap 0 decided byhw;1 force skip;2 force intra
2. echo¶
功能 | dump input buffer |
---|---|
命令 | echo dump_in [ChnId] [num] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] :通道号 [num] : 需要dump_in的总张数 [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo dump_in 0 10 /mnt > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | dump output stream |
---|---|
命令 | echo dump_out [ChnId] [num] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] :通道号 [num] : 需要dump_out的总张数 [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo dump_out 0 100 /mnt > /proc/mi_modules/mi_venc/mi_venc1 |
功能 | Show all used device info |
---|---|
命令 | echo show all [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [Status] :0-1 0:Show only requested device info 1:Show all used device info. with created channels [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo show_all 1 > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | show output frame countparam |
---|---|
命令 | echo frame_cnt [ChnId] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] :通道号 [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo frame_cnt 0 > /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~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | 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~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | 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 |
功能 | Set debug level for super frame flow |
---|---|
命令 | echo dbg_supfrm [ChnId] [debug_level]> /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] :通道号 [debug_level]: 0.none; 1.warn; 2.info; [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo dbg_supfrm 0 2 > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | Set debug level for super frame lost flow |
---|---|
命令 | echo dbg_frmlost [ChnId] [debug_level]> /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] :通道号 [debug_level]: 0.none; 1.warn; 2.info; [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo dbg_frmlost 0 2 > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | Set debug level for get frame flow |
---|---|
命令 | echo dbg_getout [ChnId] [debug_level]> /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] :通道号 [debug_level]: 0.none; 1.warn; 2.info; [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo dbg_getout 0 2 > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | dump dump customer qp map |
---|---|
命令 | echo dump_map $channel_num $dump_times $dump_path > /proc/mi_modules/mi_venc/mi_venc0 |
参数说明 | [ChnId] :通道号 $channel_num : channel_num $dump_times : dump 次数 $dump_path : dump目标路径 [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 |
举例 | echo dump_map 0 1 /mnt > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | Dump the corresponding phyAddr |
---|---|
命令 | echo dump_dram [ChnId]> /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] :通道号 [DevID] :设备号[0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo dump_dram 0 /mnt > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | Enable to run shell scripts when hang |
---|---|
命令 | echo run_sh [Status] [path]> /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [Status]: 1:enable 0:disable [path]: 文件的路径 [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo run_sh 1 /mnt/dump_mhal_venc_status_hook.sh > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | Enable to recover when hang |
---|---|
命令 | echo en_recover [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [Status]: 1:enable 0:disable; 2:show [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo en_recover 0 > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | show output stream info |
---|---|
命令 | echo show_out [ChnId] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] : 通道号 [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo show_out 0 > /proc/mi_modules/mi_venc/mi_venc0 |
功能 | dynamic debug sed roi info or sad info |
---|---|
命令 | echo debug_sed [ChnId] [SedType] [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] : 通道号 [SedType]: 0: show/disable ive detector algorithm roi info 1: show/disable cnn detector algorithm roi info 2: show/disable motion detector algorithm roi info [Status] : ture:enable false:disable [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo debug_sed 0 0 true > /proc/mi_modules/mi_venc/mi_venc0 说明:show ive detector algorithm roi info echo debug_sed 0 1 true > /proc/mi_modules/mi_venc/mi_venc0 说明:show cnn detector algorithm roi info echo debug_sed 0 2 true > /proc/mi_modules/mi_venc/mi_venc0 说明:show motion detector algorithm roi info |
功能 | enable show sram info (m6 platform) |
---|---|
命令 | echo debug_sram [ChnId] [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID] |
参数说明 | [ChnId] : 通道号 [Status] : ture:enable false:disable [DevID] :设备号 [0~1] 0:表示编码h264和h265的device0 1: 表示编码jpeg的device1 |
举例 | echo debug_sram 0 true > /proc/mi_modules/mi_venc/mi_venc0 |