/* * Copyright 2020 Rockchip Electronics Co. LTD * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #ifndef INCLUDE_RT_MPI_RK_COMM_VGS_H_ #define INCLUDE_RT_MPI_RK_COMM_VGS_H_ #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ #include "rk_type.h" #include "rk_common.h" #include "rk_errno.h" #include "rk_comm_video.h" /* failure caused by malloc buffer */ #define RK_VGS_SUCCESS RK_SUCCESS #define RK_ERR_VGS_NOBUF RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOBUF) #define RK_ERR_VGS_BUF_EMPTY RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_EMPTY) #define RK_ERR_VGS_NULL_PTR RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR) #define RK_ERR_VGS_ILLEGAL_PARAM RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM) #define RK_ERR_VGS_BUF_FULL RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_FULL) #define RK_ERR_VGS_SYS_NOTREADY RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY) #define RK_ERR_VGS_NOT_SUPPORT RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_SUPPORT) #define RK_ERR_VGS_NOT_PERMITTED RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM) #define VGS_MAX_ARRAY_SIZE 100 typedef RK_S32 VGS_HANDLE; typedef enum rkVGS_COLOR_REVERT_MODE_E { VGS_COLOR_REVERT_NONE = 0, /* Not revert */ VGS_COLOR_REVERT_RGB, /* Revert RGB */ VGS_COLOR_REVERT_ALPHA, /* Revert alpha */ VGS_COLOR_REVERT_BOTH, /* Revert RGB and alpha*/ VGS_COLOR_REVERT_BUTT } VGS_COLOR_REVERT_MODE_E; typedef struct rkVGS_OSD_REVERT_S { RECT_S stSrcRect; /* OSD color revert area */ VGS_COLOR_REVERT_MODE_E enColorRevertMode; /* OSD color revert mode */ } VGS_OSD_REVERT_S; typedef struct rkVGS_TASK_ATTR_S { VIDEO_FRAME_INFO_S stImgIn; /* Input picture */ VIDEO_FRAME_INFO_S stImgOut; /* Output picture */ RK_U64 au64PrivateData[4]; /* RW; Private data of task */ RK_U32 reserved; /* RW; Debug information,state of current picture */ } VGS_TASK_ATTR_S; typedef struct rkVGS_DRAW_LINE_S { POINT_S stStartPoint; /* Line start point */ POINT_S stEndPoint; /* Line end point */ RK_U32 u32Thick; /* RW; Width of line */ RK_U32 u32Color; /* RW; Range: [0,0xFFFFFF]; Color of line */ } VGS_DRAW_LINE_S; typedef enum rkVGS_COVER_TYPE_E { COVER_RECT = 0, /* Retangle cover */ COVER_QUAD_RANGLE, /* Quadrangle cover */ COVER_BUTT } VGS_COVER_TYPE_E; typedef struct rkVGS_QUADRANGLE_COVER_S { RK_BOOL bSolid; /* Solid or hollow cover */ RK_U32 u32Thick; /* RW; Range: [2,8]; Thick of the hollow quadrangle */ POINT_S stPoint[4]; /* Four points of the quadrangle */ } VGS_QUADRANGLE_COVER_S; typedef struct rkVGS_ADD_COVER_S { VGS_COVER_TYPE_E enCoverType; /* Cover type */ union { RECT_S stDstRect; /* The rectangle area */ VGS_QUADRANGLE_COVER_S stQuadRangle; /* The quadrangle area */ }; RK_U32 u32Color; /* RW; Range: [0,0xFFFFFF]; Color of cover */ } VGS_ADD_COVER_S; typedef struct rkVGS_ADD_OSD_S { MB_BLK pMbBlk; RECT_S stRect; /* Osd area */ PIXEL_FORMAT_E enPixelFmt; /* Pixel format of osd */ RK_U32 u32FgAlpha; /* RW; Range: [0,255]; Foreground alpha of osd */ RK_U32 u32BgAlpha; /* RW; Range: [0,255]; Background alpha of osd */ } VGS_ADD_OSD_S; typedef enum rkVGS_SCLCOEF_MODE_E { VGS_SCLCOEF_NORMAL = 0, /* normal scale coefficient*/ VGS_SCLCOEF_TAP2 = 1, /* scale coefficient of 2 tap */ VGS_SCLCOEF_TAP4 = 2, /* scale coefficient of 4 tap */ VGS_SCLCOEF_TAP6 = 3, /* scale coefficient of 6 tap */ VGS_SCLCOEF_TAP8 = 4, /* scale coefficient of 8 tap */ VGS_SCLCOEF_BUTT } VGS_SCLCOEF_MODE_E; typedef enum rkVGS_MOSAIC_BLK_SIZE_E { RK_MOSAIC_BLK_SIZE_8 = 8, /* block size 8*8 of MOSAIC */ RK_MOSAIC_BLK_SIZE_16 = 16, /* block size 16*16 of MOSAIC */ RK_MOSAIC_BLK_SIZE_32 = 32, /* block size 32*32 of MOSAIC */ RK_MOSAIC_BLK_SIZE_64 = 64, /* block size 64*64 of MOSAIC */ RK_MOSAIC_BLK_SIZE_BUT } VGS_MOSAIC_BLK_SIZE_E; typedef struct rkVGS_MOSAIC_S { VGS_MOSAIC_BLK_SIZE_E enBlkSize; RECT_S stDstRect; /* RW; The rectangle area. */ } VGS_MOSAIC_S; typedef enum rkVGS_CROP_COORDINATE_E { VGS_CROP_RATIO_COOR = 0, /* Ratio coordinate. */ VGS_CROP_ABS_COOR /* Absolute coordinate. */ } VGS_CROP_COORDINATE_E; typedef struct rkVGS_CROP_INFO_S { VGS_CROP_COORDINATE_E enCropCoordinate; /* RW; Range: [0, 1]; Coordinate mode of the crop start point. */ RECT_S stCropRect; /* CROP rectangular. */ } VGS_CROP_INFO_S; #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif /* __RK_COMM_VGS_H__ */