8.4. 数据类型¶
视频解码相关数据类型、数据结构定义如下:
VDEC_CHN_ATTR_S:解码通道属性。
VDEC_ATTR_VIDEO_S:视频解码视频通道属性。
VIDEO_MODE_E:码流发送方式枚举。
VDEC_CHN_STATUS_S:通道状态结构体。
VDEC_DECODE_ERROR_S:解码错误信息结构体。
VDEC_CHN_PARAM_S:解码通道高级参数结构体。
VDEC_PARAM_VIDEO_S:视频解码高级参数结构体。
VDEC_PARAM_PICTURE_S:图片解码高级参数结构体。
VIDEO_DEC_MODE_E:解码模式枚举。
VIDEO_OUTPUT_ORDER_E:解码输出顺序枚举。
COMPRESS_MODE_E:解码图像压缩模式枚举。
H264_PRTCL_PARAM_S: H.264 协议相关的内存分配参数。
H265_PRTCL_PARAM_S: H.265 协议相关的内存分配参数。
VDEC_PRTCL_PARAM_S:协议相关的内存分配参数结构体。
VDEC_STREAM_S:解码码流结构体。
VDEC_USERDATA_S:用户数据结构体。
VIDEO_DISPLAY_MODE_E:显示模式枚举。
VDEC_CHN_POOL_S:定义解码通道绑定的 VB 池结构体。
8.4.1. VDEC_CHN_ATTR_S¶
【说明】
定义解码通道属性结构体。
【定义】
typedef struct _VDEC_CHN_ATTR_S {
PAYLOAD_TYPE_E enType;
VIDEO_MODE_E enMode;
CVI_U32 u32PicWidth;
CVI_U32 u32PicHeight;
CVI_U32 u32StreamBufSize;
CVI_U32 u32FrameBufSize;
CVI_U32 u32FrameBufCnt;
union {
VDEC_ATTR_VIDEO_S
stVdecVideoAttr;
};
} VDEC_CHN_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
enType |
解码协议类型枚举值。Video Codec 常使用枚举:PT_JPEG/ PT_H264/PT_MJPEG |
enMode |
码流发送方式。目前仅支持VIDEO_MODE_FRAME |
u32PicWidth |
通道支持的解码图像最大宽(以像素为单位) |
u32PicHeight |
通道支持的解码图像最大高(以像素为单位) |
u32StreamBufSize |
码流缓存的大小。 (u32StreamBufSize = u32Width * u32Height) |
u32FrameBufSize |
解码图像帧存 buffer 大小。(随enType而异) |
u32FrameBufCnt |
解码图像帧存个数。 |
stVdecVideoAttr |
视频(H.264)解码通道属性。 |
【注意事项】
CV181x VDEC模块支持PT_JPEG/PT_MJPEG/PT_H264,CV180X支持PT_JPEG/PT_MJPEG。
【相关数据类型及接口】
无。
8.4.2. VDEC_ATTR_VIDEO_S¶
【说明】
定义视频解码视频通道属性。
【定义】
typedef struct _VDEC_ATTR_VIDEO_S {
CVI_U32 u32RefFrameNum;
CVI_BOOL bTemporalMvpEnable;
CVI_U32 u32TmvBufSize;
} VDEC_ATTR_VIDEO_S;
【成员】
成员名称 描述 |
描述 |
---|---|
u32RefFrameNum |
参考帧的数目。 (目前不支持) |
bTemporalMvpEnable |
是否支持时域运动矢量预测。(目前不支持) |
u32TmvBufSize |
视频解码图像 Tmv Buffer 大小。(目前不支持) |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.3. VIDEO_MODE_E¶
【说明】
定义码流发送方式。
【定义】
typedef enum _VIDEO_MODE_E {
VIDEO_MODE_STREAM = 0,
VIDEO_MODE_FRAME,
VIDEO_MODE_COMPAT,
VIDEO_MODE_BUTT
} VIDEO_MODE_E;
【成员】
成员名称描述 |
描述 |
---|---|
VIDEO_MODE_STREAM |
按流方式发送码流。JPEG/MJPEG 解码不支持此模式。(目前不支持) |
VIDEO_MODE_FRAME |
按帧方式发送码流。 |
VIDEO_MODE_COMPAT |
兼容模式发送码流。(目前不支持) |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.4. VDEC_CHN_STATUS_S¶
【说明】
定义通道状态结构体。
【定义】
typedef struct _VDEC_CHN_STATUS_S {
PAYLOAD_TYPE_E enType;
CVI_S32 u32LeftStreamBytes;
CVI_S32 u32LeftStreamFrames;
CVI_S32 u32LeftPics;
CVI_BOOL bStartRecvStream;
CVI_U32 u32RecvStreamFrames;
CVI_U32 u32DecodeStreamFrames;
VDEC_DECODE_ERROR_S stVdecDecErr;
CVI_U32 u32Width;
CVI_U32 u32Height;
} VDEC_CHN_STATUS_S;
【成员】
成员名称描述 |
描述 |
---|---|
enType |
解码协议。常使用枚举:PT_JPEG/ PT_H264/ PT_MJPEG |
u32LeftStreamBytes |
码流 buffer 中待解码的 byte 数,包括正在解码的当前帧中 未解码的 byte数。 |
u32LeftStreamFrames |
码流 buffer 中待解码的帧数,不包括正在解码的当前帧。 -1 表示无效。 |
u32LeftPics |
图像 buffer 中剩余的 pic 数目。 |
bStartRecvStream |
解码器是否已经启动接收码流。 |
u32RecvStreamFrames |
码流 buffer 中已接收码流帧数。 -1表示无效。 |
u32DecodeStreamFrames |
码流 buffer 中已解码帧数。 |
stVdecDecErr |
解码错误信息。 |
u32Width |
图像宽度 |
u32Height |
图像高度 |
【注意事项】
CV181x VDEC模块支持PT_JPEG/PT_MJPEG/PT_H264,CV180X支持PT_JPEG/PT_MJPEG。
【相关数据类型及接口】
无。
8.4.5. VDEC_DECODE_ERROR_S¶
【说明】
定义解码错误信息结构体。
【定义】
typedef struct _VDEC_DECODE_ERROR_S {
CVI_S32 s32FormatErr;
CVI_S32 s32PicSizeErrSet;
CVI_S32 s32StreamUnsprt;
CVI_S32 s32PackErr;
CVI_S32 s32PrtclNumErrSet;
CVI_S32 s32RefErrSet;
CVI_S32 s32PicBufSizeErrSet;
CVI_S32 s32StreamSizeOver;
CVI_S32 s32VdecStreamNotRelease;
} VDEC_DECODE_ERROR_S;
【成员】
成员名称 |
描述 |
---|---|
s32FormatErr |
不支持的格式。 |
s32PicSizeErrSet |
图像的宽(或高)比通道的宽(或高)大。 |
s32StreamUnsprt |
不支持的规格(码流规格与处理器宣称支持的规格不一致)。 |
s32PackErr |
码流有错。 |
s32PrtclNumErrSet |
设置的协议参数个数不够。比如:Slice、Pps、Sps个 数。 |
s32RefErrSet |
设置的参考帧个数不够。 |
s32PicBufSizeErrSet |
图像 buffer 内存大小不够。 |
s32StreamSizeOver |
一帧码流太大了,当整个 SCDbuffer都装不下一帧码流 时,强制清空SCDbuffer。 |
s32VdecStreamNotRelease |
VFMW 内部管理码流错误,出现长时间不释放码流的情况。 |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.6. VDEC_CHN_PARAM_S¶
【说明】
定义解码通道高级参数。
【定义】
typedef struct _VDEC_CHN_PARAM_S {
PAYLOAD_TYPE_E enType;
CVI_U32 u32DisplayFrameNum;
union {
VDEC_PARAM_VIDEO_S
stVdecVideoParam;
VDEC_PARAM_PICTURE_S
stVdecPictureParam;
};
} VDEC_CHN_PARAM_S;
【成员】
成员名称 |
描述 |
---|---|
enType |
常使用枚举:PT_JPEG/ PT_H264/PT_MJPEG |
u32DisplayFrameNum |
解码缓存图像的最小帧数。 |
stVdecVideoParam |
视频(H.264/H.265)解码高级参数。 |
stVdecPictureParam |
图片(JPEG/MJPEG)解码高级参数 |
【注意事项】
CV181x VDEC模块支持PT_JPEG/PT_MJPEG/PT_H264,CV180X支持PT_JPEG/PT_MJPEG。
【相关数据类型及接口】
8.4.7. VDEC_PARAM_VIDEO_S¶
【说明】
定义视频解码高级参数。
【定义】
typedef struct _VDEC_PARAM_VIDEO_S {
CVI_S32 s32ErrThreshold;
VIDEO_DEC_MODE_E enDecMode;
VIDEO_OUTPUT_ORDER_E enOutputOrder;
COMPRESS_MODE_E enCompressMode;
VIDEO_FORMAT_E enVideoFormat;
} VDEC_PARAM_VIDEO_S;
【成员】
成员名称 |
描述 |
---|---|
s32ErrThreshold |
错误阈值。 取值范围:[0, 100]。
0代表有错即丢
100 代表无。
|
enDecMode |
解码模式 |
enOutputOrder |
解码图像输出顺序。 |
enCompressMode |
解码图像压缩模式。
COMPRESS_MODE_NONE = 0,
COMPRESS_MODE_TILE,
COMPRESS_MODE_LINE,
COMPRESS_MODE_FRAME,
|
enVideoFormat |
解码图像数据格式。 |
【注意事项】
无。
【相关数据类型及接口】
此参数设定与VI 模块相关。
8.4.8. VDEC_PARAM_PICTURE_S¶
【说明】
定义图形解码高级参数。
【定义】
typedef struct _VDEC_PARAM_PICTURE_S {
PIXEL_FORMAT_E enPixelFormat;
CVI_U32 u32Alpha;
} VDEC_PARAM_PICTURE_S;
【成员】
成员名称 |
描述 |
---|---|
enPixelFormat |
JPEG(MJPEG)解码输出格式。请参阅: |
u32Alpha |
ARGB 格式输出时的全局 alpha,仅 ARGB 输出时有效。(目前不支持) |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.9. VIDEO_DEC_MODE_E¶
【说明】
定义视频解码模式枚举。
【定义】
typedef enum _VIDEO_DEC_MODE_E {
VIDEO_DEC_MODE_IPB = 0,
VIDEO_DEC_MODE_IP,
VIDEO_DEC_MODE_I,
VIDEO_DEC_MODE_BUTT
} VIDEO_DEC_MODE_E;
【成员】
成员名称 |
描述 |
---|---|
VIDEO_DEC_MODE_IPB |
IPB 模式,即 I、P、B 帧都解码。 |
VIDEO_DEC_MODE_IP |
IP 模式,即只解码 I 帧和 P 帧。 |
VIDEO_DEC_MODE_I |
I 模式,即只解码 I 帧。 |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.10. VIDEO_OUTPUT_ORDER_E¶
【说明】
定义视频解码输出顺序枚举。
【定义】
typedef enum _VIDEO_OUTPUT_ORDER_E {
VIDEO_OUTPUT_ORDER_DISP = 0,
VIDEO_OUTPUT_ORDER_DEC,
VIDEO_OUTPUT_ORDER_BUTT
} VIDEO_OUTPUT_ORDER_E;
【成员】
成员名称 |
描述 |
---|---|
VIDEO_OUTPUT_ORDER_DISP |
显示序输出。 |
VIDEO_OUTPUT_ORDER_DEC |
解码序输出。 |
【注意事项】
解码有 B 帧的码流应设置为显示序输出。
【相关数据类型及接口】
无。
8.4.11. COMPRESS_MODE_E¶
【说明】
定义解码图像压缩模式枚举。
【定义】
typedef enum _COMPRESS_MODE_E {
COMPRESS_MODE_NONE = 0,
COMPRESS_MODE_TILE,
COMPRESS_MODE_LINE,
COMPRESS_MODE_FRAME,
COMPRESS_MODE_BUTT
} COMPRESS_MODE_E;
【成员】
成员名称 |
描述 |
---|---|
COMPRESS_MODE_NONE |
不压缩。 |
COMPRESS_MODE_TILE |
预留 |
COMPRESS_MODE_LINE |
预留 |
COMPRESS_MODE_FRAME |
预留 |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.12. H264_PRTCL_PARAM_S¶
【说明】
与 H.264 协议相关的内存分配参数。
【定义】
typedef struct _H264_PRTCL_PARAM_S {
CVI_S32 s32MaxSliceNum;
CVI_S32 s32MaxSpsNum;
CVI_S32 s32MaxPpsNum;
} H264_PRTCL_PARAM_S;
【成员】
成员名称 |
描述 |
---|---|
s32MaxSliceNum |
该通道解码支持的最大 Slice 个数。 |
s32MaxSpsNum |
该通道解码支持的最大 SPS 个数。 |
s32MaxSpsNum |
该通道解码支持的最大 PPS 个数。 |
【注意事项】
无。
【相关数据类型及接口】
8.4.13. H265_PRTCL_PARAM_S¶
【说明】
定义与 H.265 协议相关的内存分配参数。
【定义】
typedef struct _H265_PRTCL_PARAM_S {
CVI_S32 s32MaxSliceSegmentNum;
CVI_S32 s32MaxVpsNum;
CVI_S32 s32MaxSpsNum;
CVI_S32 s32MaxPpsNum;
} H265_PRTCL_PARAM_S;
【成员】
成员名称 |
描述 |
---|---|
s32MaxSliceSegmentNum |
该通道解码支持的最大 SliceSegment 个数。 |
s32MaxVpsNum |
该通道解码支持的最大 VPS 个数。 |
s32MaxSpsNum |
该通道解码支持的最大 SPS 个数。 |
s32MaxPpsNum |
该通道解码支持的最大 PPS 个数。 |
【注意事项】
CV181x VDEC模块支持PT_JPEG/PT_MJPEG/PT_H264,CV180X支持PT_JPEG/PT_MJPEG。
【相关数据类型及接口】
8.4.14. VDEC_PRTCL_PARAM_S¶
【说明】
定义与协议相关的内存分配参数。
【定义】
typedef struct _VDEC_PRTCL_PARAM_S {
PAYLOAD_TYPE_E
enType;
union {
H264_PRTCL_PARAM_S
stH264PrtclParam;
H265_PRTCL_PARAM_S
stH265PrtclParam;
};
} VDEC_PRTCL_PARAM_S;
【成员】
成员名称 |
描述 |
---|---|
enType |
解码通道支持的协议。 |
stH264PrtclParam |
H.264 协议参数。 |
stH265PrtclParam |
H.265 协议参数。 |
【注意事项】
CV181x VDEC模块支持PT_JPEG/PT_MJPEG/PT_H264,CV180X支持PT_JPEG/PT_MJPEG。
【相关数据类型及接口】
无。
8.4.15. VDEC_STREAM_S¶
【说明】
定义视频解码的码流结构体。
【定义】
typedef struct _VDEC_STREAM_S {
CVI_U32 u32Len;
CVI_U64 u64PTS;
CVI_BOOL bEndOfFrame;
CVI_BOOL bEndOfStream;
CVI_BOOL bDisplay;
CVI_U8 *pu8Addr;
} VDEC_STREAM_S;
【成员】
成员名称 |
描述 |
---|---|
u32Len |
码流包的长度。 |
u64PTS |
码流包的时间戳。 |
bEndOfFrame |
当前帧是否结束。 |
bEndOfStream |
是否发完所有码流。 |
pu8Addr |
码流包的地址。 |
bDisplay |
当前帧是否输出显示。 |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.16. VDEC_USERDATA_S¶
【说明】
定义用户数据结构体。
【定义】
typedef struct _VDEC_USERDATA_S {
CVI_U64 u64PhyAddr;
CVI_U32 u32Len;
CVI_BOOL bValid;
CVI_U8 *pu8Addr;
} VDEC_USERDATA_S;
【成员】
成员名称 |
描述 |
---|---|
u32PhyAddr |
用户数据的物理地址 |
u32Len |
用户数据的长度。 |
bValid |
当前数据的有效标识。 |
pu8Addr |
用户数据的虚拟地址。 |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.17. VIDEO_DISPLAY_MODE_E¶
【说明】
定义显示模式枚举。
【定义】
typedef enum _VIDEO_DISPLAY_MODE_E {
VIDEO_DISPLAY_MODE_PREVIEW = 0x0,
VIDEO_DISPLAY_MODE_PLAYBACK = 0x1,
VIDEO_DISPLAY_MODE_MAX
} VIDEO_DISPLAY_MODE_E;
【成员】
成员名称 |
描述 |
---|---|
VIDEO_DISPLAY_MODE_PREVIEW |
预览模式。 |
VIDEO_DISPLAY_MODE_PLAYBACK |
回放模式。 |
【注意事项】
无。
【相关数据类型及接口】
无。
8.4.18. VDEC_PARAM_MOD_S¶
【说明】
解码相关模块参数。
【定义】
typedef struct _VDEC_MOD_PARAM_S {
VB_SOURCE_E enVdecVBSource;
CVI_U32 u32MiniBufMode;
CVI_U32 u32ParallelMode;
VDEC_VIDEO_MOD_PARAM_S stVideoModParam;
VDEC_PICTURE_MOD_PARAM_S stPictureModParam;
} VDEC_MOD_PARAM_S;
【成员】
成员名称 |
描述 |
---|---|
enVdecVBSource |
解码帧存 VB 来源。
取值范围:仅支持
VB_SOURCE_COMMON,
VB_SOURCE_USER
|
u32MiniBufMode |
码流 buffer 配置模式 |
u32ParallelMode |
VDH 解码模式 |
stVideoModParam |
视频解码模块参数。对JPEG/MJPEG 无效。 |
stPictureModParam |
图片解码模块参数。对H264/H265 无效。 |
【注意事项】
无。
【相关数据类型及接口】
8.4.19. VDEC_VIDEO_MOD_PARAM_S¶
【说明】
定义视频解码模块参数结构体
【定义】
typedef struct _VDEC_VIDEO_MOD_PARAM_S {
CVI_U32 u32MaxPicWidth;
CVI_U32 u32MaxPicHeight;
CVI_U32 u32MaxSliceNum;
CVI_U32 u32VdhMsgNum;
CVI_U32 u32VdhBinSize;
CVI_U32 u32VdhExtMemLevel;
} VDEC_VIDEO_MOD_PARAM_S;
【成员】
成员名称 |
描述 |
---|---|
u32MaxPicWidth |
视频解码支持的最大宽度。
取值范围:参见表7-1,最小值为H.264/H.265解码支持分辨率的最小宽度。
最大值为 H.264/H.265解码支持分辨率的最大宽度。默认为最大值。
|
u32MaxPicHeight |
视频解码支持的最大高度。
取值范围:参见表7-1,最小值为H.264/H.265解码支持分辨率的最小宽度。
最大值为H.264/H.265解码支持分辨率的最大宽度。默认为最大值。
|
u32MaxSliceNum |
H.264/H.265 解码支持的最大 slice 个数。
取值范围:最小值为 1,
最大值为H264/H265解码支持 slice的最大个数。
默认为最大值。
|
u32VdhMsgNum |
VDH 解码消息池个数。 |
u32VdhBinSize |
VDH 解码用来缓存 bin 数据 buffer的大小。 |
u32VdhExtMemLevel |
VDH 解码片外内存分配级别。 |
【注意事项】
CV181x VDEC模块支持PT_JPEG/PT_MJPEG/PT_H264,CV180X支持PT_JPEG/PT_MJPEG。
【相关数据类型及接口】
8.4.20. VDEC_PICTURE_MOD_PARAM_S¶
【说明】
定义图片解码模块参数结构体。
【定义】
typedef struct _VDEC_PICTURE_MOD_PARAM_S {
CVI_U32 u32MaxPicWidth;
CVI_U32 u32MaxPicHeight;
CVI_BOOL bSupportProgressive;
CVI_BOOL bDynamicAllocate;
VDEC_CAPACITY_STRATEGY_E enCapStrategy;
} VDEC_PICTURE_MOD_PARAM_S;
【成员】
成员名称 |
描述 |
---|---|
u32MaxPicWidth |
图片解码支持的
最大宽度,默认值为当前处理器支持最大宽度。
取值范围:最小值为 JPEG/MJPEG 解码支持分辨率的最小宽度。
最大值为JPEG/MJPEG 解码支持分辨率的最大宽度。默认为最大值。
|
u32MaxPicHeight |
图片解码支持的最大高度,默认值为当前处理器支持最大高度。
取值范围:最小值为 JPEG/MJPEG 解码支持分辨率的最小宽度。
最大值为JPEG/MJPEG 解码支持分辨率的最大宽度。默认为最大值。
|
bSupportProgressive |
JPEG/MJPEG 解码是否支持 progressive 格式。 |
bDynamicAllocate |
JPEG/MJPEG 解码支持 progressive 格式时,所需 buf 分配方式,默认值为 0。 |
enCapStrategy |
解码图像的最大宽高能力集策略。 |
【注意事项】
无。
【相关数据类型及接口】
8.4.21. VDEC_CHN_POOL_S¶
【说明】
定义解码通道绑定的 VB 池结构体。
【定义】
typedef struct _VDEC_CHN_POOL_S {
VB_POOL hPicVbPool;
VB_POOL hTmvVbPool;
} VDEC_CHN_POOL_S;
【成员】
成员名称 |
描述 |
---|---|
hPicVbPool |
用于存储 Picture 的 VB 池 Poold |
hTmvVbPool |
用于存储 Tmv 的 VB 池PoolId。 |
【注意事项】
无。
【相关数据类型及接口】