---
title: hi_video_frame
description: "定义视频原始图像帧结构。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgc/aclcppdevg_03_1099.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgc/aclcppdevg_03_1099.html
indexId: b8824bda3120752c406e93284e663ea5655a31853a2e2b22ad4c3d38d4351314105
---
# 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编码场景下，该参数表示是否使能slice\_temporal\_mvp\_enabled\_flag语法（表示帧间预测是否使用时域MV（MotionVector）预测），取值范围如下，但仅H265协议下该参数生效： 0：slice\_temporal\_mvp\_enabled\_flag为True，表示使用时域MV预测。 1：slice\_temporal\_mvp\_enabled\_flag为False，表示不使用时域MV预测。 在JPEGE编码场景下，取值0或1，但当前版本暂未使用该参数，参数值无效。 |
| supplement | 图像的补充信息。 Atlas 200/500 A2推理产品上，VI模块接口会使用该参数，并由VI模块内部自动完成初始化，其它功能该参数为透传参数。 |


#### 注意事项

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

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

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