xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_comm_sys.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_COMMON_SYS_H_
5*4882a593Smuzhiyun #define INCLUDE_RT_MPI_RK_COMMON_SYS_H_
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #include "rk_type.h"
8*4882a593Smuzhiyun #include "rk_errno.h"
9*4882a593Smuzhiyun // #include "rk_debug.h"
10*4882a593Smuzhiyun #include "rk_comm_video.h"
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifdef __cplusplus
13*4882a593Smuzhiyun #if __cplusplus
14*4882a593Smuzhiyun extern "C" {
15*4882a593Smuzhiyun #endif
16*4882a593Smuzhiyun #endif /* End of #ifdef __cplusplus */
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #define BIND_DEST_MAXNUM         64
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define RK_TRACE_SYS(level, fmt, ...) \
21*4882a593Smuzhiyun     do { \
22*4882a593Smuzhiyun         RK_TRACE(level, RK_ID_SYS, "[Func]:%s [Line]:%d [Info]:" fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
23*4882a593Smuzhiyun     } while (0)
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun typedef struct rkVPSS_VENC_WRAP_PARAM_S {
26*4882a593Smuzhiyun     RK_BOOL bAllOnline;
27*4882a593Smuzhiyun      /*
28*4882a593Smuzhiyun       * Input frame rate of VIPROC(linear/Frame mode WDR is the
29*4882a593Smuzhiyun       * sensor frame rate, and the line mode WDR is the frame
30*4882a593Smuzhiyun       * rate after synthesis)
31*4882a593Smuzhiyun       */
32*4882a593Smuzhiyun     RK_U32 u32FrameRate;
33*4882a593Smuzhiyun     RK_U32 u32FullLinesStd; /* Total height of sensor, include of VBlank */
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun     SIZE_S stLargeStreamSize; /* VENC Large Stream Size */
36*4882a593Smuzhiyun     SIZE_S stSmallStreamSize; /* VENC Small Stream Size */
37*4882a593Smuzhiyun } VPSS_VENC_WRAP_PARAM_S;
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun typedef struct rkMPP_SYS_CONFIG_S {
40*4882a593Smuzhiyun     RK_U32 u32Align;
41*4882a593Smuzhiyun } MPP_SYS_CONFIG_S;
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun typedef struct rkSYS_VIRMEM_INFO_S {
44*4882a593Smuzhiyun     RK_U64 u64PhyAddr;
45*4882a593Smuzhiyun     RK_BOOL bCached;
46*4882a593Smuzhiyun } SYS_VIRMEM_INFO_S;
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun typedef struct rkMPP_BIND_DEST_S {
49*4882a593Smuzhiyun     RK_U32 u32Num;
50*4882a593Smuzhiyun     MPP_CHN_S astMppChn[BIND_DEST_MAXNUM];
51*4882a593Smuzhiyun } MPP_BIND_DEST_S;
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun typedef enum rkSCALE_RANGE_E {
54*4882a593Smuzhiyun     SCALE_RANGE_0 = 0, /* scale range <   8/64 */
55*4882a593Smuzhiyun     SCALE_RANGE_1, /* scale range >=  8/64 */
56*4882a593Smuzhiyun     SCALE_RANGE_2, /* scale range >= 10/64 */
57*4882a593Smuzhiyun     SCALE_RANGE_3, /* scale range >= 15/64 */
58*4882a593Smuzhiyun     SCALE_RANGE_4, /* scale range >= 19/64 */
59*4882a593Smuzhiyun     SCALE_RANGE_5, /* scale range >= 24/64 */
60*4882a593Smuzhiyun     SCALE_RANGE_6, /* scale range >= 29/64 */
61*4882a593Smuzhiyun     SCALE_RANGE_7, /* scale range >= 33/64 */
62*4882a593Smuzhiyun     SCALE_RANGE_8, /* scale range >= 35/64 */
63*4882a593Smuzhiyun     SCALE_RANGE_9, /* scale range >= 38/64 */
64*4882a593Smuzhiyun     SCALE_RANGE_10, /* scale range >= 42/64 */
65*4882a593Smuzhiyun     SCALE_RANGE_11, /* scale range >= 45/64 */
66*4882a593Smuzhiyun     SCALE_RANGE_12, /* scale range >= 48/64 */
67*4882a593Smuzhiyun     SCALE_RANGE_13, /* scale range >= 51/64 */
68*4882a593Smuzhiyun     SCALE_RANGE_14, /* scale range >= 53/64 */
69*4882a593Smuzhiyun     SCALE_RANGE_15, /* scale range >= 55/64 */
70*4882a593Smuzhiyun     SCALE_RANGE_16, /* scale range >= 57/64 */
71*4882a593Smuzhiyun     SCALE_RANGE_17, /* scale range >= 60/64 */
72*4882a593Smuzhiyun     SCALE_RANGE_18, /* scale range >  1     */
73*4882a593Smuzhiyun     SCALE_RANGE_BUTT,
74*4882a593Smuzhiyun } SCALE_RANGE_E;
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun typedef enum rkCOEFF_LEVEL_E {
77*4882a593Smuzhiyun     COEFF_LEVEL_0 = 0, /* coefficient level 0 */
78*4882a593Smuzhiyun     COEFF_LEVEL_1, /* coefficient level 1 */
79*4882a593Smuzhiyun     COEFF_LEVEL_2, /* coefficient level 2 */
80*4882a593Smuzhiyun     COEFF_LEVEL_3, /* coefficient level 3 */
81*4882a593Smuzhiyun     COEFF_LEVEL_4, /* coefficient level 4 */
82*4882a593Smuzhiyun     COEFF_LEVEL_5, /* coefficient level 5 */
83*4882a593Smuzhiyun     COEFF_LEVEL_6, /* coefficient level 6 */
84*4882a593Smuzhiyun     COEFF_LEVEL_7, /* coefficient level 7 */
85*4882a593Smuzhiyun     COEFF_LEVEL_8, /* coefficient level 8 */
86*4882a593Smuzhiyun     COEFF_LEVEL_9, /* coefficient level 9 */
87*4882a593Smuzhiyun     COEFF_LEVEL_10, /* coefficient level 10 */
88*4882a593Smuzhiyun     COEFF_LEVEL_11, /* coefficient level 11 */
89*4882a593Smuzhiyun     COEFF_LEVEL_12, /* coefficient level 12 */
90*4882a593Smuzhiyun     COEFF_LEVEL_13, /* coefficient level 13 */
91*4882a593Smuzhiyun     COEFF_LEVEL_14, /* coefficient level 14 */
92*4882a593Smuzhiyun     COEFF_LEVEL_15, /* coefficient level 15 */
93*4882a593Smuzhiyun     COEFF_LEVEL_16, /* coefficient level 16 */
94*4882a593Smuzhiyun     COEFF_LEVEL_17, /* coefficient level 17 */
95*4882a593Smuzhiyun     COEFF_LEVEL_18, /* coefficient level 18 */
96*4882a593Smuzhiyun     COEFF_LEVEL_BUTT,
97*4882a593Smuzhiyun } COEFF_LEVEL_E;
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun typedef struct rkSCALE_COEFF_LEVEL_S {
100*4882a593Smuzhiyun     COEFF_LEVEL_E enHorLum; /* horizontal luminance   coefficient level */
101*4882a593Smuzhiyun     COEFF_LEVEL_E enHorChr; /* horizontal chrominance coefficient level */
102*4882a593Smuzhiyun     COEFF_LEVEL_E enVerLum; /* vertical   luminance   coefficient level */
103*4882a593Smuzhiyun     COEFF_LEVEL_E enVerChr; /* vertical   chrominance coefficient level */
104*4882a593Smuzhiyun } SCALE_COEFF_LEVEL_S;
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun typedef struct rkSCALE_RANGE_S {
107*4882a593Smuzhiyun     SCALE_RANGE_E enHorizontal;
108*4882a593Smuzhiyun     SCALE_RANGE_E enVertical;
109*4882a593Smuzhiyun } SCALE_RANGE_S;
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun typedef struct rkSCALE_COEFF_INFO_S {
112*4882a593Smuzhiyun     SCALE_RANGE_S stScaleRange;
113*4882a593Smuzhiyun     SCALE_COEFF_LEVEL_S stScaleCoeffLevel;
114*4882a593Smuzhiyun } SCALE_COEFF_INFO_S;
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun typedef struct rkGPS_INFO_S {
117*4882a593Smuzhiyun    /*
118*4882a593Smuzhiyun     * GPS LatitudeRef Indicates whether the latitude
119*4882a593Smuzhiyun     * is north or south latitude,'N'/'S', default 'N'
120*4882a593Smuzhiyun     */
121*4882a593Smuzhiyun     RK_CHAR chGPSLatitudeRef;
122*4882a593Smuzhiyun     /*
123*4882a593Smuzhiyun      * GPS Latitude is expressed as degrees, minutes and
124*4882a593Smuzhiyun      * seconds,a typical format like "dd/1,mm/1,ss/1",
125*4882a593Smuzhiyun      * default 0/0, 0/0, 0/0
126*4882a593Smuzhiyun      */
127*4882a593Smuzhiyun     RK_U32 au32GPSLatitude[3][2];
128*4882a593Smuzhiyun     /*
129*4882a593Smuzhiyun      * GPS LongitudeRef Indicates whether the longitude
130*4882a593Smuzhiyun      * is east or west longitude, 'E'/'W', default 'E'
131*4882a593Smuzhiyun      */
132*4882a593Smuzhiyun     RK_CHAR chGPSLongitudeRef;
133*4882a593Smuzhiyun     /*
134*4882a593Smuzhiyun      * GPS Longitude is expressed as degrees, minutes
135*4882a593Smuzhiyun      * and seconds,a typical format like "dd/1,mm/1,ss/1",
136*4882a593Smuzhiyun      * default 0/0, 0/0, 0/0
137*4882a593Smuzhiyun      */
138*4882a593Smuzhiyun     RK_U32 au32GPSLongitude[3][2];
139*4882a593Smuzhiyun     /*
140*4882a593Smuzhiyun      * GPS AltitudeRef Indicates the reference altitude
141*4882a593Smuzhiyun      * used, 0 - above sea level, 1 - below sea level
142*4882a593Smuzhiyun      * default 0
143*4882a593Smuzhiyun      */
144*4882a593Smuzhiyun     RK_U8 u8GPSAltitudeRef;
145*4882a593Smuzhiyun     /*
146*4882a593Smuzhiyun      * GPS AltitudeRef Indicates the altitude based on
147*4882a593Smuzhiyun      * the reference u8GPSAltitudeRef, the reference unit
148*4882a593Smuzhiyun      * is meters, default 0/0
149*4882a593Smuzhiyun      */
150*4882a593Smuzhiyun     RK_U32 au32GPSAltitude[2];
151*4882a593Smuzhiyun } GPS_INFO_S;
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun typedef enum rkCHN_INPUT_MODE_E {
154*4882a593Smuzhiyun     CHN_INPUT_MODE_NORMAL,          /* CHN receive all packet */
155*4882a593Smuzhiyun     CHN_INPUT_MODE_REMAIN_NEWEST,   /* CHN remain newest packet */
156*4882a593Smuzhiyun     CHN_INPUT_MODE_DROP_ALWAYS,     /* CHN drop all packet */
157*4882a593Smuzhiyun     CHN_INPUT_MODE_BUTT
158*4882a593Smuzhiyun } CHN_INPUT_MODE_E;
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun typedef struct rkRAW_FRAME_COMPRESS_PARAM_S {
161*4882a593Smuzhiyun     RK_U32 u32CompRatio_10Bit; /* compression ratio of 10 bit */
162*4882a593Smuzhiyun     RK_U32 u32CompRatio_12Bit; /* compression ratio of 12 bit */
163*4882a593Smuzhiyun     RK_U32 u32CompRatio_14Bit; /* compression ratio of 14 bit */
164*4882a593Smuzhiyun } RAW_FRAME_COMPRESS_PARAM_S;
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun #define RK_ERR_SYS_NULL_PTR      RK_DEF_ERR(RK_ID_SYS, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR)
167*4882a593Smuzhiyun #define RK_ERR_SYS_NOTREADY      RK_DEF_ERR(RK_ID_SYS, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY)
168*4882a593Smuzhiyun #define RK_ERR_SYS_NOT_PERM      RK_DEF_ERR(RK_ID_SYS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM)
169*4882a593Smuzhiyun #define RK_ERR_SYS_NOMEM         RK_DEF_ERR(RK_ID_SYS, RK_ERR_LEVEL_ERROR, RK_ERR_NOMEM)
170*4882a593Smuzhiyun #define RK_ERR_SYS_ILLEGAL_PARAM RK_DEF_ERR(RK_ID_SYS, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM)
171*4882a593Smuzhiyun #define RK_ERR_SYS_BUSY          RK_DEF_ERR(RK_ID_SYS, RK_ERR_LEVEL_ERROR, RK_ERR_BUSY)
172*4882a593Smuzhiyun #define RK_ERR_SYS_NOT_SUPPORT   RK_DEF_ERR(RK_ID_SYS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_SUPPORT)
173*4882a593Smuzhiyun 
174*4882a593Smuzhiyun #ifdef __cplusplus
175*4882a593Smuzhiyun #if __cplusplus
176*4882a593Smuzhiyun }
177*4882a593Smuzhiyun #endif
178*4882a593Smuzhiyun #endif /* __cplusplus */
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun #endif /* INCLUDE_RT_MPI_RK_COMMON_SYS_H_ */
181*4882a593Smuzhiyun 
182