文档
注册
评分
提单
论坛
小AI

hi_video_frame

说明

定义视频原始图像帧结构。

定义

typedef struct {
    hi_u32              width;
    hi_u32              height;
    hi_video_field      field;
    hi_pixel_format     pixel_format;
    hi_video_format     video_format;
    hi_compress_mode    compress_mode;
    hi_dynamic_range    dynamic_range;
    hi_color_gamut      color_gamut;

    hi_u32              header_stride[HI_MAX_COLOR_COMPONENT];
    hi_u32              width_stride[HI_MAX_COLOR_COMPONENT];
    hi_u32              height_stride[HI_MAX_COLOR_COMPONENT];

    hi_u64              header_phys_addr[HI_MAX_COLOR_COMPONENT];
    hi_u64              phys_addr[HI_MAX_COLOR_COMPONENT];
    hi_void* ATTRIBUTE  header_virt_addr[HI_MAX_COLOR_COMPONENT];
    hi_void* ATTRIBUTE  virt_addr[HI_MAX_COLOR_COMPONENT];

    hi_u32              time_ref;
    hi_u64              pts;

    hi_u64              user_data[HI_MAX_USER_DATA_NUM];
    hi_u32              frame_flag; 
    hi_video_supplement supplement;
} hi_video_frame;

成员

成员名称

描述

width

图像宽度。

height

图像高度。

field

帧场模式。预留参数。

pixel_format

视频图像像素格式。

video_format

视频图像格式。

compress_mode

视频压缩模式。

dynamic_range

动态范围。预留参数。

color_gamut

色域范围。预留参数。

header_stride

图像压缩头跨距。预留参数。

width_stride

输出图像分量的宽度数据跨距。YUV图像则为Y、U、V分量的数据跨距。RGB图像则为R、G、B分量的数据跨距。

height_stride

输出图像分量的高度数据跨距。YUV图像则为Y、U、V分量的数据跨距。RGB图像则为R、G、B分量的数据跨距。

若涉及VI视频采集、ISP系统控制、VPSS视频处理、VENC视频编码、JPEGE图片编码功能时,该参数作为预留参数,暂不支持。

header_phys_addr

压缩头物理地址。预留参数。

phys_addr

物理地址。预留参数。

header_virt_addr

压缩头虚拟地址。预留参数。

virt_addr

图像在Device内存中的起始虚拟地址。

作为输入图像时,对于YUV图像,virt_addr[0]为图像起始地址,也是Y分量起始地址,virt_addr[1]为U分量起始地址,virt_addr[2]为V分量起始地址;

作为输出图像时,对于YUV和RGB图像,virt_addr[0]为图像在device上的起始地址,virt_addr[1]和virt_addr[2]为保留字段。

time_ref

图像帧序列号。

解码场景下,该参数预留。

JPEGE编码场景下,该参数预留。

VENC编码场景下,针对每一帧设置该参数时,按照帧的顺序,该参数值需递增且为偶数,例如,第一帧时该参数值设置为2,第二帧时该参数值设置为4,以此类推。

pts

图像时间戳。

user_data

私有数据。预留参数。

frame_flag

  • VDEC解码场景下,该参数表示该帧解码是否成功,不管成功或失败,用户都需及时释放输入、输出内存,对于解码失败的帧,系统不保证按照显示序或解码序按顺序输出,本参数取值范围:
    • 0:解码成功。
    • 1:解码失败,可能由于输入码流异常、设置的码流格式与实际码流不一致等问题导致。
    • 2:隔行码流场景下使用,隔行码流每帧发送两场,带两块输出内存;解码时其中一块内存无图像输出,属于正常现象,用户需及时释放内存;隔行码流的解码输出数据都在奇数场对应的输出buffer中。
    • 3:参考帧个数设置错误导致解码失败。
    • 4:VDEC解码帧存大小设置错误导致解码失败。
  • JPEGD解码场景下,该参数表示该帧解码是否成功,不管成功或失败,用户都需及时释放输入、输出内存,本参数取值范围:
    • 0:解码成功。
    • 1:解码失败,可能由于输入码流异常、设置的码流格式与实际码流不一致等问题导致。
    • 4:JPEGD解码输出内存大小过小导致解码失败,可提前调用hi_mpi_vdec_get_jpegd_output_info接口获取输出内存大小。
    • 5:仅JPEGD解码场景使用,表示JPEGD解码配置参数设置错误,例如,设置的宽高超出限制、设置的目标解码格式不支持等。
  • VENC编码场景下,不同bit位用于使能不同的功能:
    • 该参数的bit0表示是否使能slice_temporal_mvp_enabled_flag语法(表示帧间预测是否使用时域MV(MotionVector)预测),取值范围如下,但仅H265协议下该参数生效
      • 0:slice_temporal_mvp_enabled_flag为True,表示使用时域MV预测。
      • 1:slice_temporal_mvp_enabled_flag为False,表示不使用时域MV预测。
    • 该参数的bit1表示是否使能图像扩边,取值范围如下,H264/H265协议下该参数生效:
      • 0:表示使能图像扩边。
      • 1:表示关闭图像扩边。
  • 在JPEGE编码场景下,取值0或1,但当前版本暂未使用该参数,参数值无效

supplement

图像的补充信息。

Atlas 200I/500 A2推理产品上,VI模块接口会使用该参数,并由VI模块内部自动完成初始化,其它功能该参数为透传参数。

Atlas 推理系列产品上,该参数为透传参数。

Atlas A2训练系列产品/Atlas 800I A2推理产品上,该参数为透传参数。

注意事项

10bit数据不压缩时在内存中的存储方式是紧凑排列的。

10bit YUV段压缩数据存储是前8bit和后2bit分开存储。

10bit tile 64*16 数据(即VDH(video decoder hardware)解码之后的数据)不管是压缩还是非压缩,在内存中的存储方式都是前8bit和后2bit分开存储。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词