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