xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_comm_vgs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */
2*4882a593Smuzhiyun /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #ifndef INCLUDE_RT_MPI_RK_COMM_VGS_H_
5*4882a593Smuzhiyun #define INCLUDE_RT_MPI_RK_COMM_VGS_H_
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifdef __cplusplus
8*4882a593Smuzhiyun #if __cplusplus
9*4882a593Smuzhiyun extern "C" {
10*4882a593Smuzhiyun #endif
11*4882a593Smuzhiyun #endif /* __cplusplus */
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include "rk_type.h"
14*4882a593Smuzhiyun #include "rk_common.h"
15*4882a593Smuzhiyun #include "rk_errno.h"
16*4882a593Smuzhiyun #include "rk_comm_video.h"
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* failure caused by malloc buffer */
19*4882a593Smuzhiyun #define RK_VGS_SUCCESS             RK_SUCCESS
20*4882a593Smuzhiyun #define RK_ERR_VGS_NOBUF           RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOBUF)
21*4882a593Smuzhiyun #define RK_ERR_VGS_BUF_EMPTY       RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_EMPTY)
22*4882a593Smuzhiyun #define RK_ERR_VGS_NULL_PTR        RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR)
23*4882a593Smuzhiyun #define RK_ERR_VGS_ILLEGAL_PARAM   RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM)
24*4882a593Smuzhiyun #define RK_ERR_VGS_BUF_FULL        RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_FULL)
25*4882a593Smuzhiyun #define RK_ERR_VGS_SYS_NOTREADY    RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY)
26*4882a593Smuzhiyun #define RK_ERR_VGS_NOT_SUPPORT     RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_SUPPORT)
27*4882a593Smuzhiyun #define RK_ERR_VGS_NOT_PERMITTED   RK_DEF_ERR(RK_ID_VGS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM)
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define VGS_MAX_ARRAY_SIZE               100
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun typedef RK_S32 VGS_HANDLE;
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun typedef enum rkVGS_COLOR_REVERT_MODE_E {
34*4882a593Smuzhiyun     VGS_COLOR_REVERT_NONE = 0,          /* Not revert */
35*4882a593Smuzhiyun     VGS_COLOR_REVERT_RGB,               /* Revert RGB */
36*4882a593Smuzhiyun     VGS_COLOR_REVERT_ALPHA,             /* Revert alpha */
37*4882a593Smuzhiyun     VGS_COLOR_REVERT_BOTH,              /* Revert RGB and alpha*/
38*4882a593Smuzhiyun     VGS_COLOR_REVERT_BUTT
39*4882a593Smuzhiyun } VGS_COLOR_REVERT_MODE_E;
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun typedef struct rkVGS_OSD_REVERT_S {
42*4882a593Smuzhiyun     RECT_S                       stSrcRect;             /* OSD color revert area */
43*4882a593Smuzhiyun     VGS_COLOR_REVERT_MODE_E      enColorRevertMode;     /* OSD color revert mode */
44*4882a593Smuzhiyun } VGS_OSD_REVERT_S;
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun typedef struct rkVGS_TASK_ATTR_S {
47*4882a593Smuzhiyun     VIDEO_FRAME_INFO_S       stImgIn;                   /* Input picture */
48*4882a593Smuzhiyun     VIDEO_FRAME_INFO_S       stImgOut;                  /* Output picture */
49*4882a593Smuzhiyun     RK_U64                   au64PrivateData[4];        /* RW; Private data of task */
50*4882a593Smuzhiyun     RK_U32                   reserved;                  /* RW; Debug information,state of current picture */
51*4882a593Smuzhiyun } VGS_TASK_ATTR_S;
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun typedef struct rkVGS_DRAW_LINE_S {
54*4882a593Smuzhiyun     POINT_S                     stStartPoint;           /* Line start point */
55*4882a593Smuzhiyun     POINT_S                     stEndPoint;             /* Line end point */
56*4882a593Smuzhiyun     RK_U32                      u32Thick;               /* RW; Width of line */
57*4882a593Smuzhiyun     RK_U32                      u32Color;               /* RW; Range: [0,0xFFFFFF]; Color of line */
58*4882a593Smuzhiyun } VGS_DRAW_LINE_S;
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun typedef enum rkVGS_COVER_TYPE_E {
61*4882a593Smuzhiyun     COVER_RECT = 0,             /* Retangle cover */
62*4882a593Smuzhiyun     COVER_QUAD_RANGLE,          /* Quadrangle cover */
63*4882a593Smuzhiyun     COVER_BUTT
64*4882a593Smuzhiyun } VGS_COVER_TYPE_E;
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun typedef struct rkVGS_QUADRANGLE_COVER_S {
67*4882a593Smuzhiyun     RK_BOOL              bSolid;            /* Solid or hollow cover */
68*4882a593Smuzhiyun     RK_U32               u32Thick;          /* RW; Range: [2,8]; Thick of the hollow quadrangle */
69*4882a593Smuzhiyun     POINT_S              stPoint[4];        /* Four points of the quadrangle */
70*4882a593Smuzhiyun } VGS_QUADRANGLE_COVER_S;
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun typedef struct rkVGS_ADD_COVER_S {
73*4882a593Smuzhiyun     VGS_COVER_TYPE_E                    enCoverType;    /* Cover type */
74*4882a593Smuzhiyun     union {
75*4882a593Smuzhiyun         RECT_S                          stDstRect;      /* The rectangle area */
76*4882a593Smuzhiyun         VGS_QUADRANGLE_COVER_S          stQuadRangle;   /* The quadrangle area */
77*4882a593Smuzhiyun     };
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun     RK_U32                              u32Color;       /* RW; Range: [0,0xFFFFFF]; Color of cover */
80*4882a593Smuzhiyun } VGS_ADD_COVER_S;
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun typedef struct rkVGS_ADD_OSD_S {
83*4882a593Smuzhiyun     MB_BLK                    pMbBlk;
84*4882a593Smuzhiyun     RECT_S                    stRect;               /* Osd area */
85*4882a593Smuzhiyun     PIXEL_FORMAT_E            enPixelFmt;           /* Pixel format of osd */
86*4882a593Smuzhiyun     RK_U32                    u32FgAlpha;           /* RW; Range: [0,255]; Foreground alpha of osd */
87*4882a593Smuzhiyun     RK_U32                    u32BgAlpha;           /* RW; Range: [0,255]; Background alpha of osd */
88*4882a593Smuzhiyun } VGS_ADD_OSD_S;
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun typedef enum rkVGS_SCLCOEF_MODE_E {
91*4882a593Smuzhiyun     VGS_SCLCOEF_NORMAL   = 0,    /* normal scale coefficient*/
92*4882a593Smuzhiyun     VGS_SCLCOEF_TAP2     = 1,    /* scale coefficient of 2 tap */
93*4882a593Smuzhiyun     VGS_SCLCOEF_TAP4     = 2,    /* scale coefficient of 4 tap */
94*4882a593Smuzhiyun     VGS_SCLCOEF_TAP6     = 3,    /* scale coefficient of 6 tap */
95*4882a593Smuzhiyun     VGS_SCLCOEF_TAP8     = 4,    /* scale coefficient of 8 tap */
96*4882a593Smuzhiyun     VGS_SCLCOEF_BUTT
97*4882a593Smuzhiyun } VGS_SCLCOEF_MODE_E;
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun typedef enum rkVGS_MOSAIC_BLK_SIZE_E {
100*4882a593Smuzhiyun     RK_MOSAIC_BLK_SIZE_8  = 8, /* block size 8*8 of MOSAIC */
101*4882a593Smuzhiyun     RK_MOSAIC_BLK_SIZE_16 = 16, /* block size 16*16 of MOSAIC */
102*4882a593Smuzhiyun     RK_MOSAIC_BLK_SIZE_32 = 32, /* block size 32*32 of MOSAIC */
103*4882a593Smuzhiyun     RK_MOSAIC_BLK_SIZE_64 = 64, /* block size 64*64 of MOSAIC */
104*4882a593Smuzhiyun     RK_MOSAIC_BLK_SIZE_BUT
105*4882a593Smuzhiyun } VGS_MOSAIC_BLK_SIZE_E;
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun typedef struct rkVGS_MOSAIC_S {
108*4882a593Smuzhiyun     VGS_MOSAIC_BLK_SIZE_E enBlkSize;
109*4882a593Smuzhiyun     RECT_S stDstRect; /* RW; The rectangle area. */
110*4882a593Smuzhiyun } VGS_MOSAIC_S;
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun typedef enum rkVGS_CROP_COORDINATE_E {
113*4882a593Smuzhiyun     VGS_CROP_RATIO_COOR = 0,   /* Ratio coordinate. */
114*4882a593Smuzhiyun     VGS_CROP_ABS_COOR          /* Absolute coordinate. */
115*4882a593Smuzhiyun } VGS_CROP_COORDINATE_E;
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun typedef struct rkVGS_CROP_INFO_S {
118*4882a593Smuzhiyun     VGS_CROP_COORDINATE_E   enCropCoordinate;   /* RW; Range: [0, 1]; Coordinate mode of the crop start point. */
119*4882a593Smuzhiyun     RECT_S                  stCropRect;         /* CROP rectangular. */
120*4882a593Smuzhiyun } VGS_CROP_INFO_S;
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun #ifdef __cplusplus
123*4882a593Smuzhiyun #if __cplusplus
124*4882a593Smuzhiyun }
125*4882a593Smuzhiyun #endif
126*4882a593Smuzhiyun #endif /* __cplusplus */
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #endif /* __RK_COMM_VGS_H__ */
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun 
131