😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍怎么查看VDEC的proc调试信息 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰:2024-04-07 17:23:36
本文未经允许,不得转发!!!
目录
- 🎄一、概述
- 🎄二、属性、参数相关
- ✨2.1 模块参数(module param)
- ✨2.2 通道公共属性和参数(chn comm attr & params)
- ✨2.3 通道视频属性和参数(chn video attr & params)
- ✨2.4 通道图片属性和参数(chn pic attr & params)
- 🎄三、解码状态相关
- ✨3.1 通道状态(chn state)
- ✨3.2 详细流状态(detail stream state)
- ✨3.3 详细帧存状态(detail frame store state)
- ✨3.4 详细用户数据状态(detail user_data state)
- 🎄四
- 🎄五
- 🎄六、
🎄一、概述
海思平台在/proc
目录下提供了一个文件vdec
来实时记录的VDEC的一些属性、参数,以及解码的状态。在进行代码开发时,该文件可以帮助我们及时发现解码的问题。
cat /proc/umap/vdec
运行后,显示的信息可以大致可分成两部分,一个是设置的属性和参数;另一个是解码相关的实时状态。这些信息主要包括下面几点:
1、模块参数
2、通道公共属性和参数
3、通道视频属性和参数:JPED没有
4、通道图片属性和参数:仅JPED有
5、通道状态
6、详细流状态
7、详细帧存状态
8、详细用户数据状态
🎄二、属性、参数相关
✨2.1 模块参数(module param)
- g_vdec_max_chn_num:VDEC支持的最大解码通道数。
Linux系统可通过加载ssxxx_vdec.ko或ssxxx_vdec.ko时设置模块参数g_vdec_max_chn_num配置; - mini_buf_mode:是否使用码流Buffer省内存模式。
- 0:不使用;
- 1:使用。(注意:码流Buffer省内存模式只有在帧模式解码下有效)
- vb_src:解码帧存分配方式。
- MOD:模块VB;
- PRIVATE:私有VB;
- USER:用户VB
- g_vdec_compat_mode:解码兼容模式。
- 0:默认模式;
- 1:兼容模式,兼容编码跳帧参考配置错误的码流,会额外多使用一个帧存。
- max_video_width:视频解码支持的最大宽度。
- max_video_height:视频解码支持的最大高度。
- max_slice_num:视频解码支持的最大slice个数。
- vdh_msg_num:VDH解码消息池个数
- schedule_mode:系统调度模式。
- max_pic_width:图片解码支持的最大宽度。
- max_pic_height:图片解码支持的最大高度。
- progressive_en :是否支持progressive。 0:不支持; 1:支持。
- dynamic_alloc_en :是否动态分配progressive内存。0:静态分配;1:动态分配
- max_pic_width :capacity_strategy 最大解码宽高能力集策略。
- 0:模块宽高能力集;
- 1:通道宽高能力集。
✨2.2 通道公共属性和参数(chn comm attr & params)
- id:解码通道号
- type:解码通道类型。OT_PT_H264;OT_PT_H265;OT_PT_MJPEG;OT_PT_JPEG。
- max_w:配置的解码图像最大宽度。单位:像素。
- max_h :配置的解码图像最大高度。单位:像素。
- width :解码图像宽度。
- height :解码图像高度。
- send_mode:解码通道码流发送模式。包含两方面的内容。
- FRAME、 STREAM、 COMPAT:按帧、按流、兼容模式发送;
- BLOCK、 NOBLOCK、 TIMEOUT:阻塞、非阻塞、 timeout方式码流。
- str_buf_size:码流buffer大小。
- frame_buf_size:帧存buffer大小,仅在PrivateVB模式下有效。
- frame_buf_cnt:帧存buffer个数,仅在PrivateVB模式下有效。
- tmv_buf_size:Tmv buffer大小,仅在PrivateVB模式下有效。
- id:解码通道号
- state:解码通道是否开始接收码流。
- START:开始接收;
- STOP:停止接收
- display_num:显示帧个数。取值范围: [0, 16]
- display_mode:显示模式。取值范围: PLAYBACK、 PREVIEW。
- rotation:解码图像旋转角度。
- set_user_pic:是否设置了用户图片。
- enable_user_pic:是否使能用户图片。
- pic_pool_id:帧存所在的VB Pool ID,仅在PrivateVB和UserVB模式下有效。
- tmv_pool_id:Tmv所在的VB Pool ID,仅在PrivateVB和UserVB模式下有效。
✨2.3 通道视频属性和参数(chn video attr & params)
这是视频解码的,JPED解码没有这些属性和参数。
- id:解码通道号。
- vfmw_id: VFMW通道号。
- ref_num: 参考帧个数。取值范围: [0, 16]
- tmv_en: 是否支持时域运动矢量预测。
- err_threshold: 码流错误率阈值。
- dec_mode: 解码模式。
- out_order: 解码图像输出顺序。
- compress_mode: 是否支持解码输出图像压缩。
- video_format: 解码图像数据格式。
- id:解码通道号。
- max_vps_num: 支持的最大VPS个数,仅H265解码有效。
- max_sps_num: 支持的最大SPS个数。
- max_pps_num: 支持的最大PPS个数
- max_slice_segment_num: 支持的最大Slice个数
- id 解码通道号。
- composite_dec_en 是否使能复合解码。
- quick_mark_mode 快速释放参考帧模式
- deployment_mode 解码部署模式。仅SS626V100支持。
✨2.4 通道图片属性和参数(chn pic attr & params)
只有JPEG解码通道才有。
- id:解码通道号。
- pixel_format:JPEG图片输出格式。
- alpha:JPEG图片输出ARGB格式时的全局Alpha值。
🎄三、解码状态相关
✨3.1 通道状态(chn state)
- id:解码通道号。
- protocol_err:解码器上报协议错误次数。
- str_unsupport:解码器上报不支持规格的次数。
- pack_err:解码器上报码流语法错误的次数。
- ref_num_err:解码器上报码流参考帧帧数超过配置帧数的次数。
- pic_size_err:解码器上报解码图像超过通道大小的次数。
- format_err:不支持的格式。
- pic_buf_size_err:图像Buffer大小不够的次数。
- str_size_over:一帧码流太大了,当整个SCD buffer都装不下一帧码流时,强制清空SCD buffer。
- id:通道号。
- pts_buf_free:按帧发送时, VDEC帧队列的空闲个数。
- pts_buf_busy:按帧发送时, VDEC帧队列的使用个数。
- buf_len:VDEC码流buffer的剩余空间,以byte为单位。
- data_len:VDEC码流buffer的未读数据长度,以byte为单位。
- rd_rgn_len:VDEC码流buffer的已被VFMW读走但未经SCD切帧的码流。
- scd_left_len:SCD buffer剩余的未解码的码流。
- wr_rgn_len:VDEC码流buffer中写区间的长度,即写头与写尾之间的数据长度。
- id:通道号。
fps
:解码实际帧率- stream_end:接收到end_of_stream为1的次数。
- frame_end:帧结束次数。帧模式时为送码流次数,兼容模式时为end_of_frame的次数。
- timer_cnt:解码器内部定时器的启动次数
- notify:解码器内部事件上报的次数。
- unique_id:unique id计数。
- state:通道状态。
- send_vgs:提交vgs任务次数。
- vgs_back:vgs回调次数。
✨3.2 详细流状态(detail stream state)
- id:通道号。
- mpi_send_cnt:用户发送码流次数。
- mpi_send_len:用户发送码流累计长度,以byte为单位。
- end_code_cnt:VDEC内部增加结束码次数,仅在按帧发送时有效。
- end_code_len:VDEC内部增加码流累计长度,以byte为单位。
- vfmw_get_cnt:VFMW获取码流次数。
- vfmw_get_len:VFMW获取码流累计长度,以byte为单位。
- vfmw_rls_cnt:VFMW释放码流次数。
- vfmw_rls_len:VFMW释放码流累计长度,以byte为单位
- id:通道号。
- vfmw_latest_get_len:VFMW最后一次获取的数据长度,以byte为单位。
- vfmw_rls_fail_cnt:VFMW释放码流失败的次数。
- mpi_send_gap:用户发送每帧的间隔时间,以us为单位。流模式下不支持。
✨3.3 详细帧存状态(detail frame store state)
- id:通道号。
new_pic
:VFMW解码出图像帧数。get_pic
:从VFMW成功获取的图像帧数。- discard:VDEC丢弃图像帧数。
- no_display:设置解码图像不显示的次数。
- mpi_get:VDEC从用户态发送图像帧数。
- kernel_send:VDEC从内核态发送图像给其他模块的帧数。
- kernel_rls:用户或其他模块释放图像给VDEC的帧数。
- meet_end:VFMW已经解析的帧结束码次数。
- frame_in_vdec:解码器中缓存的未解码的帧数
- id:通道号。
- free_node:空闲帧存节点数。
- vfmw_node:VFMW正在占用的帧存节点个数。
- vgs_node:等待提交旋转任务的帧存节点个数。
- vgs_working_node:正在旋转的帧存节点个数。
- busy_node: 等待发送(或等待用户获取)的帧存节点数。
- user_node: 已发送(或用户已获取)的帧存节点数。
- ref_num: 当前作为参考帧的帧存节点个数。
- vb_cnt: 当前正在使用的帧存个数。
- max_vb_cnt: 最多可使用的解码帧存个数。max_vb_cnt = ref_num + display_num +1。
- rotate_vb_cnt: 当前正在使用的旋转输出帧存VB个数。rotate_vb_cnt最多可使用display_num +1个。
- id:通道号。
- available:是否有空闲的帧存。
- pic_vb_fail:获取pic VB失败的次数。
- tmv_vb_fail:获取mvp VB失败的次数。
- rotate_vb_fail:获取用于旋转输出VB失败的次数。
- pic_size:当前码流需要的帧存buffer实际大小。
- tmv_size:当前码流需要的tmv buffer实际大小。
- rotate_size:旋转输出图像需要的buffer实际大小。
- cur_pic_pts:最新解码图像的时间戳。
- id:通道号。
- dynamic_range:输出图像的动态范围。
- color_gamut:输出图像的色域范围
✨3.4 详细用户数据状态(detail user_data state)
- id:通道号。
- enable:是否使能用户数据。
- max_user_data_len:单个用户数据最大长度。单位: byte。
- free_buf_len:用户数据buffer空闲长度。单位: byte。
- data_buf_len:用户数据buffer已占用长度。单位: byte。
- id:通道号。
- mpi_get_cnt:用户获取用户数据次数。
- mpi_get_len:用户获取用户数据长度。单位: byte。
- mpi_rls_cnt:用户释放用户数据次数。
- mpi_rls_len:用户释放用户数据长度。单位: byte。
- discard_cnt:VDEC丢弃用户数据的次数。
- discard_len:VDEC丢弃用户数据长度。单位: byte。
- vdec_get_cnt:VDEC得到用户数据的次数。
- vdec_get_len:VDEC得到用户数据的长度。单位: byte
🎄四
🎄五
🎄六、
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁