VENC模块调试

Version 1.2


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,4
    Gardient 前端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