跳到主要内容
版本:2.9.0

视频图形子系统(VGS)

概述

VGS(Video Graphics Sub-System)视频图形子系统,主要是对输入的图像进行缩放、旋转、抠图、打 COVER、画线等操作。

基本概念

  • task

    对一幅图像完成具体的一个或多个操作,比如打 OSD、缩放或旋转等。VGS 默认的最大的 task 数为 200。

  • job

    VGS 管理 task 的结构,一个 job 里可以包含多个 task,VGS 保证 task 按照添加到 job 的顺序一次性提交硬件执行。VGS 默认的最大的 job 数为 100。

  • HANDLE

    任务句柄,标识一个 job。


功能描述

VGS 的功能包括缩放、抠图、旋转、打 OSD、打 COVER、画线、打 mosaic。

  • 缩放

    VGS 支持对一幅图像进行缩放,最大支持图像宽高放大和缩小 32 倍。支持单分量 Y 缩放。

  • 旋转

    VGS 支持对一幅图像进行 0、90、180、270 角度的旋转。

  • 打 OSD

    VGS 支持在一幅图像上面叠加一张位图、支持批量打 OSD。打 OSD 操作不支持对输入的位图进行反色操作。打 OSD 时输入和输出图像使用的是同一块内存。

  • 打 COVER

    VGS 支持对一幅图像进行遮挡操作,遮挡的形状为矩形或者任意的四边形。当 COVER 为矩形的时候,COVER 只能是实心;COVER 为任意四边形的时候,COVER 可以是实心或者空心的。打 COVER 操作时,输入和输出图像使用的是同一块内存。

  • 画线

    VGS 支持对一幅图像进行画线操作,支持批量画线操作。画线操作时,输入和输出图像使用的是同一块内存。

  • 打 mosaic

    VGS 支持对一幅图像进行打 mosaic 操作,支持不同的块大小输入,支持批量进行打 mosaic 操作。打 mosaic 操作时,输入和输出图像使用的是同一块内存。


硬件规格

芯片平台 VGS 硬件规格如下所示。

数据格式宽度对齐像素高度对齐像素像素比特数
ZH_FMT_YUV420SP
ZH_FMT_YUV420SP_VU
1618
ZH_FMT_RGB888
ZH_FMT_BGR888
64124
ZH_FMT_BGRA888
ZH_FMT_RGBA888
16132

注意:

VGS 支持图像大小在 64x64 到 8192x8192 范围内的缩放。


API参考

该功能模块为用户提供以下 MPI:


ZH_MPI_VGS_BeginJob

描述

启动一个 job。

语法

ZH_S32 ZH_MPI_VGS_BeginJob(VGS_HANDLE *phHandle);

参数

参数名称数据类型描述输入/输出
phHandleVGS_HANDLE*返回的 job handle。输出

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 可一次启动多个 job。但必须判断 ZH_MPI_VGS_BeginJob 函数返回成功后,才能使用 phHandle 返回的 HANDLE。
  • phHandle 不能为空指针或非法指针。

示例代码

ZH_S32 s32Ret = ZH_SUCCESS;
VGS_HANDLE hHandle;
VGS_TASK_ATTR_S stTask;

s32Ret = ZH_MPI_VGS_BeginJob(&hHandle);
if (s32Ret != ZH_SUCCESS) {
VGS_ERROR_PROCESS(s32Ret);
}

s32Ret = ZH_MPI_VGS_AddScaleTask(hHandle, &stTask, VGS_SCLCOEF_NORMAL);
if (s32Ret != ZH_SUCCESS) {
ZH_MPI_VGS_CancelJob(hHandle);
VGS_ERROR_PROCESS(s32Ret);
}

s32Ret = ZH_MPI_VGS_EndJob(hHandle);
if (s32Ret != ZH_SUCCESS) {
ZH_MPI_VGS_CancelJob(hHandle);
VGS_ERROR_PROCESS(s32Ret);
}

ZH_MPI_VGS_EndJob

描述

提交一个 job。

语法

ZH_S32 ZH_MPI_VGS_EndJob(VGS_HANDLE hHandle);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job。否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。

ZH_MPI_VGS_CancelJob

描述

取消一个 job。

语法

ZH_S32 ZH_MPI_VGS_CancelJob(VGS_HANDLE hHandle);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

hHandle 标识的 job 必须是已经启动的 job。


ZH_MPI_VGS_AddScaleTask

描述

向一个已经启动的 job 中添加缩放 task。

语法

ZH_S32 ZH_MPI_VGS_AddScaleTask(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, VGS_SCLCOEF_MODE_E enScaleCoefMode);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
enScaleCoefModeVGS_SCLCOEF_MODE_E缩放系数模式,暂不支持。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 输入图像的宽高、对齐方式参考硬件规格中的图像格式对齐说明。
  • 缩放时输入或者输出的宽高如不符合 VGS 模块要求的对齐,job 缩放失败。
  • 做缩放任务,输入和输出的可以是不同的两块内存。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddCropTask

描述

向一个已经启动的 job 中添加裁剪 task。

语法

ZH_S32 ZH_MPI_VGS_AddCropTask(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_CROP_INFO_S *pstVgsCrop);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
pstVgsCropconst VGS_CROP_INFO_S*需要裁剪的区域。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 输入图像的宽高、对齐方式参考硬件规格中的图像格式对齐说明。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddDrawLineTask

描述

向一个已经启动的 job 中添加画线 task。

语法

ZH_S32 ZH_MPI_VGS_AddDrawLineTask(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_DRAW_LINE_S *pstVgsDrawLine);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
pstVgsDrawLineconst VGS_DRAW_LINE_S*VGS 画线属性配置指针。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做画线任务输入和输出使用的是同一块 buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddCoverTask

描述

向一个已经启动的 job 中添加打 COVERtask。

语法

ZH_S32 ZH_MPI_VGS_AddCoverTask(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_ADD_COVER_S *pstVgsAddCover);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
pstVgsAddCoverconst VGS_ADD_COVER_S*VGS 打 COVER 属性配置指针。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做 COVER 任务输入和输出使用的是同一块 buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddOsdTask

描述

向一个已经启动的 job 中添加打 OSD task。

语法

ZH_S32 ZH_MPI_VGS_AddOsdTask(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_ADD_OSD_S *pstVgsAddOsd);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
pstVgsAddOsdconst VGS_ADD_OSD_S*VGS 打 OSD 属性配置指针。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做 OSD 任务输入和输出使用的是同一块 buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddRotationTask

描述

向一个已经启动的 job 中添加旋转 task。

语法

ZH_S32 ZH_MPI_VGS_AddRotationTask(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, ROTATION_E enRotationAngle);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针 。输入
enRotationAngleROTATION_E旋转角度。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddMosaicTask

描述

向一个已经启动的 job 中添加打马赛克 task。

语法

ZH_S32 ZH_MPI_VGS_AddMosaicTask(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_MOSAIC_S *pstVgsMosaic);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
pstVgsMosaicconst VGS_MOSAIC_S*Mosaic 属性配置结构体。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做 mosaic 任务输入和输出的图像为同一块 buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddDrawLineTaskArray

描述

向一个已经启动的 job 中添加批量画线 task。

语法

ZH_S32 ZH_MPI_VGS_AddDrawLineTaskArray(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_DRAW_LINE_S astVgsDrawLine[], ZH_U32 u32ArraySize);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
astVgsDrawLineconst VGS_DRAW_LINE_SVGS 画线属性配置结构体数组。输入
u32ArraySizeZH_U32VGS 画线数目,范围[1,100]。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做批量画线任务输入和输出的图像为同一块 buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddCoverTaskArray

描述

向一个已经启动的 job 中添加批量打 COVERtask。

语法

ZH_S32 ZH_MPI_VGS_AddCoverTaskArray(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_ADD_COVER_S astVgsAddCover[], ZH_U32 u32ArraySize);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
astVgsAddCoverconst VGS_ADD_COVER_SVGS 打 COVER 属性配置结构体数组。输入
u32ArraySizeZH_U32VGS Cover数目,范围[1,100]。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job,否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做批量 COVER 任务输入和输出的图像为同一块 buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 中的举例。


ZH_MPI_VGS_AddOsdTaskArray

描述

向一个已经启动的 job 中添加批量打 OSD task。

语法

ZH_S32 ZH_MPI_VGS_AddOsdTaskArray(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_ADD_OSD_S astVgsAddOsd[], ZH_U32 u32ArraySize);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针输入
astVgsAddOsdconst VGS_ADD_OSD_SVGS 打 OSD 属性配置结构体数组输入
u32ArraySizeZH_U32VGS OSD数目,范围[1,100]输入

返回值

返回值描述
0成功
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job。否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做批量叠加OSD任务时,输入和输出的图像为同一块buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 的举例


ZH_MPI_VGS_AddMosaicTaskArray

描述

向一个已经启动的 job 中添加批量打 mosaic task。

语法

ZH_S32 ZH_MPI_VGS_AddMosaicTaskArray(VGS_HANDLE hHandle, const VGS_TASK_ATTR_S *pstTask, const VGS_MOSAIC_S astVgsMosaic[], ZH_U32 u32ArraySize);

参数

参数名称数据类型描述输入/输出
hHandleVGS_HANDLE表示一个已启动 job 的 HANDLE。输入
pstTaskconst VGS_TASK_ATTR_S*VGS task 属性指针。输入
astVgsMosaicconst VGS_MOSAIC_SVGS 打 mosaic 属性配置结构体数组。输入
u32ArraySizeZH_U32mosaic 数目,范围[1,100]。输入

返回值

返回值描述
0成功。
非 0失败,见 VGS 错误码

注意事项

  • 如果此接口返回失败,必须调用 ZH_MPI_VGS_CancelJob 接口取消掉 hHandle 标识的 job。否则会导致 hHandle 标识的 job 不能再被循环利用。
  • hHandle 标识的 job 必须是已经启动的 job。
  • 做批量 mosaic 任务时,输入和输出的图像为同一块 buffer。

示例代码

参考 ZH_MPI_VGS_BeginJob 的举例。


数据类型

VGS模块相关数据类型定义如下:


VGS_HANDLE

说明

VGS job 的句柄。

定义

typedef ZH_S32 VGS_HANDLE;

VGS_TASK_ATTR_S

说明

VGS task 的属性。

定义

typedef struct zhVGS_TASK_ATTR_S {
VIDEO_FRAME_INFO_S stimgIn;
VIDEO_FRAME_INFO_S stimgOut;
ZH_U64 au64privateData[4];
ZH_U32 reserved;
} VGS_TASK_ATTR_S;

成员

参数名称数据类型描述
stimgInVIDEO_FRAME_INFO_S输入图像属性。
stimgOutVIDEO_FRAME_INFO_S输出图像属性。
au64privateDataZH_U64与 task 相关的私有数据,VGS 不会使用和修改其中的数据。
reservedZH_U32保留项。

VGS_CROP_COORDINATE_E

说明

VGS 裁剪起始坐标的模式。

定义

typedef enum zhVGS_CROP_COORDINATE_E {
VGS_CROP_RATIO_COOR = 0, /* Ratio coordinate. */
VGS_CROP_ABS_COOR /* Absolute coordinate. */
} VGS_CROP_COORDINATE_E;

成员

参数名称描述
VGS_CROP_RATIO_COOR相对坐标。
VGS_CROP_ABS_COOR绝对坐标。

注意事项

相对坐标,即起始点的坐标值是以与当前图像宽高的比率来表示,使用时需做转换,具体请参见 VGS_CROP_INFO_S


VGS_CROP_INFO_S

说明

VGS 裁剪所需要的相关配置。

定义

typedef struct zhVGS_CROP_INFO_S {
VGS_CROP_COORDINATE_E enCropCoordinate;
RECT_S stCropRect;
} VGS_CROP_INFO_S;

成员

参数名称数据类型描述
enCropCoordinateVGS_CROP_COORDINATE_ECROP 起始点坐标模式。
stCropRectRECT_SCROP 的矩形区域。

注意事项

  • 若 enCropCoordinate 为 VGS_CROP_RATIO_COOR(相对坐标模式),使用 stCropRect 的成员时应做转换。
    公式为:s32X = 起始点坐标 × 原始图像宽度 / 1000。合法取值范围:[0,999],计算完成后会进行取整操作和对齐操作。
    该方法同样适用于纵坐标计算。
  • u32Width = 区域宽度 × 实际图像宽度 / 1000,区域宽度取值范围:[1,1000]。计算完成后会进行取整操作和对齐操作。公式同样适用于区域高度计算。

VGS_DRAW_LINE_S

说明

VGS 画线操作的相关配置。

定义

typedef struct zhVGS_DRAW_LINE_S {
POINT_S stStartPoint;
POINT_S stEndPoint;
ZH_U32 u32Thick;
ZH_U32 u32Color;
} VGS_DRAW_LINE_S;

成员

参数名称数据类型描述
stStartPointPOINT_S线的起始点坐标。
stEndPointPOINT_S线的结束点坐标。
u32ThickZH_U32线的宽度。
u32ColorZH_U32线的颜色,RGBA8888 格式,取值范围 [0x0, 0xFFFFFFFF]。

VGS_COVER_TYPE_E

说明

VGS 上的 COVER 类型。

定义

typedef enum zhVGS_COVER_TYPE_E {
COVER_RECT = 0,
COVER_QUAD_RANGE,
COVER_BUTT
} VGS_COVER_TYPE_E;

成员

参数名称描述
COVER_RECT矩形 COVER。
COVER_QUAD_RANGE任意四边形 COVER。

VGS_ADD_COVER_S

说明

VGS 上 COVER 的配置。

定义

typedef struct zhVGS_ADD_COVER_S {
VGS_COVER_TYPE_E enCoverType;
union {
RECT_S stDstRect;
VGS_QUADRANGLE_COVER_S stQuadRangle;
};
ZH_U32 u32Color;
} VGS_ADD_COVER_S;

成员

参数名称数据类型描述
enCoverTypeVGS_COVER_TYPE_ECOVER 类型。
stDstRectRECT_S矩形 COVER 的位置和宽高。
stQuadRangleVGS_QUADRANGLE_COVER_S任意四边形 COVER 的相关配置。四点坐标值和边框厚度。
u32ColorZH_U32COVER 的颜色,RGBA8888 格式,取值范围 [0x0, 0xFFFFFFFF]。

VGS_COLOR_REVERT_MODE_E

说明

VGS上OSD反色模式的配置。

定义

typedef enum zhVGS_COLOR_REVERT_MODE_E {
VGS_COLOR_REVERT_NONE = 0,
VGS_COLOR_REVERT_RGB,
VGS_COLOR_REVERT_ALPHA,
VGS_COLOR_REVERT_BOTH,
VGS_COLOR_REVERT_BUTT
} VGS_COLOR_REVERT_MODE_E;

成员

参数名称描述
VGS_COLOR_REVERT_NONE不反色。
VGS_COLOR_REVERT_RGB仅对 RGB 反色。
VGS_COLOR_REVERT_ALPHA仅对 alpha 反色。
VGS_COLOR_REVERT_BOTH对 RGB 和 alpha 反色。

VGS_OSD_REVERT_S

说明

VGS 上 OSD 反色的配置。

定义

typedef struct zhVGS_OSD_REVERT_S {
RECT_S stSrcRect;
VGS_COLOR_REVERT_MODE_E enColorRevertMode;
} VGS_OSD_REVERT_S;

成员

参数名称数据类型描述
stSrcRectRECT_SOSD 反色的起始坐标及宽高。位置和宽高值均要求 2 对齐。
enColorRevertModeVGS_COLOR_REVERT_MODE_EOSD 反色模式。

VGS_ADD_OSD_S

说明

VGS 上 OSD 的配置。

定义

typedef struct zhVGS_ADD_OSD_S {
MB_BLK pMbBlk;
RECT_S stRect;
PIXEL_FORMAT_E enPixelFmt;
ZH_U32 u32FgAlpha;
ZH_U32 u32BgAlpha;
} VGS_ADD_OSD_S;

成员

参数名称数据类型描述
stRectMB_BLKOSD 的起始坐标及宽高。
enPixelFmtRECT_SOSD 的像素格式。
pMbBlkPIXEL_FORMAT_EOSD 图像的物理地址。
u32FgAlphaZH_U32像素格式为 RGBA5551 或 BGRA5551 时,OSD 的前景 alpha 值。
u32BgAlphaZH_U32像素格式为 RGBA5551 或 BGRA5551 时,OSD 的背景 alpha 值。

VGS_MOSAIC_BLK_SIZE_E

说明

mosaic 块大小枚举。

定义

typedef enum zhVGS_MOSAIC_BLK_SIZE_E {
ZH_MOSAIC_BLK_SIZE_8 = 8,
ZH_MOSAIC_BLK_SIZE_16 = 16,
ZH_MOSAIC_BLK_SIZE_32 = 32,
ZH_MOSAIC_BLK_SIZE_64 = 64,
ZH_MOSAIC_BLK_SIZE_BUTT
} VGS_MOSAIC_BLK_SIZE_E;

成员

参数名称描述
ZH_MOSAIC_BLK_SIZE_88x8 大小的 Mosaic 块。
ZH_MOSAIC_BLK_SIZE_1616x16 大小的 Mosaic 块。
ZH_MOSAIC_BLK_SIZE_3232x32 大小的 Mosaic 块。
ZH_MOSAIC_BLK_SIZE_6464x64 大小的 Mosaic 块。

VGS_MOSAIC_S

说明

VGS 上 mosaic 的配置。

定义

typedef struct VGS_MOSAIC_S {
VGS_MOSAIC_BLK_SIZE_E enBlkSize;
RECT_S stDstRect;
} VGS_MOSAIC_S;

成员

参数名称数据类型描述
enBlkSizeVGS_MOSAIC_BLK_SIZE_Emosaic 块大小。
stDstRectRECT_S矩形坐标。

VGS_SCLCOEF_MODE_E

说明

VGS 缩放系数模式枚举。

定义

typedef enum zhVGS_SCLCOEF_MODE_E {
VGS_SCLCOEF_NORMAL = 0,
VGS_SCLCOEF_TAP2 = 1,
VGS_SCLCOEF_TAP4 = 2,
VGS_SCLCOEF_TAP6 = 3,
VGS_SCLCOEF_TAP8 = 4,
VGS_SCLCOEF_BUTT
} VGS_SCLCOEF_MODE_E;

成员

参数名称描述
VGS_SCLCOEF_NORMAL普通缩放系数。
VGS_SCLCOEF_TAP22 阶抽头缩放系数。
VGS_SCLCOEF_TAP44 阶抽头缩放系数。
VGS_SCLCOEF_TAP66 阶抽头缩放系数。
VGS_SCLCOEF_TAP88 阶抽头缩放系数。

VGS 错误码

VGS API错误码如下:

错误代码宏定义描述
0xA007800EZH_ERR_VGS_BUF_EMPTYVGS 的 job/task 或 node 节点已经使用完毕。
0xA0078003ZH_ERR_VGS_ILLEGAL_PARAMVGS 参数设置无效。
0xA0078006ZH_ERR_VGS_NULL_PTR输入参数空指针错误。
0xA0078008ZH_ERR_VGS_NOT_SUPPORTED操作不支持。
0xA0078009ZH_ERR_VGS_NOT_PERMITTED操作不允许。
0xA007800DZH_ERR_VGS_NOBUF分配内存失败。
0xA0078010ZH_ERR_VGS_SYS_NOTREADY系统未初始化。
0xA007800FZH_ERR_VGS_BUF_FULL没有剩余 buffer。