😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍怎么查看VDEC的proc调试信息 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰:2024-04-07 17:23:36

本文未经允许,不得转发!!!


在这里插入图片描述

🎄一、概述

海思平台在/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

在这里插入图片描述

🎄四

在这里插入图片描述

🎄五

在这里插入图片描述

🎄六、

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

Logo

海思 HiSpark 开发者社区是上海海思为开发者搭建的内容和交流平台,依托完备芯片解决方案、专业开发环境、开源/开放的软件资源与社区技术内容,构建完整服务生态开发者的闭环体系。

更多推荐