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