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_VIDEO_H_ 5*4882a593Smuzhiyun #define INCLUDE_RT_MPI_RK_COMMON_VIDEO_H_ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include "rk_type.h" 8*4882a593Smuzhiyun #include "rk_common.h" 9*4882a593Smuzhiyun #include "rk_comm_mb.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifdef __cplusplus 12*4882a593Smuzhiyun #if __cplusplus 13*4882a593Smuzhiyun extern "C" { 14*4882a593Smuzhiyun #endif 15*4882a593Smuzhiyun #endif /* __cplusplus */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define SRC_LENS_COEF_SEG 2 18*4882a593Smuzhiyun #define DST_LENS_COEF_SEG 3 19*4882a593Smuzhiyun #define SRC_LENS_COEF_NUM 4 20*4882a593Smuzhiyun #define DST_LENS_COEF_NUM 4 21*4882a593Smuzhiyun #define DST_LENS_COEF_SEG_POINT (DST_LENS_COEF_SEG - 1) 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define RK_COLOR_YUV_Y_PLANE 0 24*4882a593Smuzhiyun #define RK_COLOR_YUV_UV_PLANE 1 25*4882a593Smuzhiyun #define RK_COLOR_RGB_PLANE 0 26*4882a593Smuzhiyun #define RK_MAX_COLOR_COMPONENT 2 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define ISP_BAYER_CHN (4) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun typedef enum rkOPERATION_MODE_E { 31*4882a593Smuzhiyun OPERATION_MODE_AUTO = 0, 32*4882a593Smuzhiyun OPERATION_MODE_MANUAL = 1, 33*4882a593Smuzhiyun OPERATION_MODE_BUTT 34*4882a593Smuzhiyun } OPERATION_MODE_E; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun /*Angle of rotation*/ 38*4882a593Smuzhiyun typedef enum rkROTATION_E { 39*4882a593Smuzhiyun ROTATION_0 = 0, 40*4882a593Smuzhiyun ROTATION_90 = 1, 41*4882a593Smuzhiyun ROTATION_180 = 2, 42*4882a593Smuzhiyun ROTATION_270 = 3, 43*4882a593Smuzhiyun ROTATION_BUTT 44*4882a593Smuzhiyun } ROTATION_E; 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun typedef enum rkMIRROR_E { 47*4882a593Smuzhiyun MIRROR_NONE = 0, 48*4882a593Smuzhiyun MIRROR_HORIZONTAL = 1, /* RW; MIRROR */ 49*4882a593Smuzhiyun MIRROR_VERTICAL = 2, /* RW; FLIP */ 50*4882a593Smuzhiyun MIRROR_BOTH = 3, /* RW; MIRROR and FLIP */ 51*4882a593Smuzhiyun MIRROR_BUTT 52*4882a593Smuzhiyun } MIRROR_E; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun typedef enum rkMB_SOURCE_E { 55*4882a593Smuzhiyun MB_SOURCE_COMMON = 0, 56*4882a593Smuzhiyun MB_SOURCE_MODULE = 1, 57*4882a593Smuzhiyun MB_SOURCE_PRIVATE = 2, 58*4882a593Smuzhiyun MB_SOURCE_USER = 3, 59*4882a593Smuzhiyun MB_SOURCE_BUTT 60*4882a593Smuzhiyun } MB_SOURCE_E; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun typedef enum rkDATA_RATE_E { 63*4882a593Smuzhiyun DATA_RATE_X1 = 0, /* RW; output 1 pixel per clock */ 64*4882a593Smuzhiyun DATA_RATE_X2 = 1, /* RW; output 2 pixel per clock */ 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun DATA_RATE_BUTT 67*4882a593Smuzhiyun } DATA_RATE_E; 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun typedef struct rkBORDER_S { 70*4882a593Smuzhiyun RK_U32 u32TopWidth; 71*4882a593Smuzhiyun RK_U32 u32BottomWidth; 72*4882a593Smuzhiyun RK_U32 u32LeftWidth; 73*4882a593Smuzhiyun RK_U32 u32RightWidth; 74*4882a593Smuzhiyun RK_U32 u32Color; 75*4882a593Smuzhiyun } BORDER_S; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun typedef struct rkPOINT_S { 78*4882a593Smuzhiyun RK_S32 s32X; 79*4882a593Smuzhiyun RK_S32 s32Y; 80*4882a593Smuzhiyun } POINT_S; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun typedef struct rkSIZE_S { 83*4882a593Smuzhiyun RK_U32 u32Width; 84*4882a593Smuzhiyun RK_U32 u32Height; 85*4882a593Smuzhiyun } SIZE_S; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun typedef struct rkRECT_S { 88*4882a593Smuzhiyun RK_S32 s32X; 89*4882a593Smuzhiyun RK_S32 s32Y; 90*4882a593Smuzhiyun RK_U32 u32Width; 91*4882a593Smuzhiyun RK_U32 u32Height; 92*4882a593Smuzhiyun } RECT_S; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun typedef struct rkVIDEO_REGION_INFO_S { 95*4882a593Smuzhiyun RK_U32 u32RegionNum; /* W; count of the region */ 96*4882a593Smuzhiyun RECT_S ATTRIBUTE* pstRegion; /* W; region attribute */ 97*4882a593Smuzhiyun } VIDEO_REGION_INFO_S; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun typedef struct rkCROP_INFO_S { 100*4882a593Smuzhiyun RK_BOOL bEnable; 101*4882a593Smuzhiyun RECT_S stRect; 102*4882a593Smuzhiyun } CROP_INFO_S; 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun typedef struct rkFRAME_RATE_CTRL_S { 105*4882a593Smuzhiyun RK_S32 s32SrcFrameRate; /* RW; source frame rate */ 106*4882a593Smuzhiyun RK_S32 s32DstFrameRate; /* RW; dest frame rate */ 107*4882a593Smuzhiyun } FRAME_RATE_CTRL_S; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun typedef enum rkASPECT_RATIO_E { 110*4882a593Smuzhiyun ASPECT_RATIO_NONE = 0, /* full screen */ 111*4882a593Smuzhiyun ASPECT_RATIO_AUTO = 1, /* ratio no change, 1:1*/ 112*4882a593Smuzhiyun ASPECT_RATIO_MANUAL = 2, /* ratio manual set */ 113*4882a593Smuzhiyun ASPECT_RATIO_BUTT 114*4882a593Smuzhiyun } ASPECT_RATIO_E; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun typedef struct rkASPECT_RATIO_S { 117*4882a593Smuzhiyun ASPECT_RATIO_E enMode; /* aspect ratio mode: none/auto/manual */ 118*4882a593Smuzhiyun RK_U32 u32BgColor; /* background color, RGB 888 */ 119*4882a593Smuzhiyun RECT_S stVideoRect; /* valid in ASPECT_RATIO_MANUAL mode */ 120*4882a593Smuzhiyun } ASPECT_RATIO_S; 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #define RK_VIDEO_FMT_MASK 0x000f0000 123*4882a593Smuzhiyun #define RK_VIDEO_FMT_YUV 0x00000000 124*4882a593Smuzhiyun #define RK_VIDEO_FMT_RGB 0x00010000 125*4882a593Smuzhiyun #define RK_VIDEO_FMT_BAYER 0X00020000 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun typedef enum rkPIXEL_FORMAT_E { 128*4882a593Smuzhiyun RK_FMT_YUV420SP = RK_VIDEO_FMT_YUV, /* YYYY... UV... */ 129*4882a593Smuzhiyun RK_FMT_YUV420SP_10BIT, 130*4882a593Smuzhiyun RK_FMT_YUV422SP, /* YYYY... UVUV... */ 131*4882a593Smuzhiyun RK_FMT_YUV422SP_10BIT, ///< Not part of ABI 132*4882a593Smuzhiyun RK_FMT_YUV420P, /* YYYY... UUUU... VVVV */ 133*4882a593Smuzhiyun RK_FMT_YUV420P_VU, /* YYYY... VVVV... UUUU */ 134*4882a593Smuzhiyun RK_FMT_YUV420SP_VU, /* YYYY... VUVUVU... */ 135*4882a593Smuzhiyun RK_FMT_YUV422P, /* YYYY... UUUU... VVVV */ 136*4882a593Smuzhiyun RK_FMT_YUV422SP_VU, /* YYYY... VUVUVU... */ 137*4882a593Smuzhiyun RK_FMT_YUV422_YUYV, /* YUYVYUYV... */ 138*4882a593Smuzhiyun RK_FMT_YUV422_UYVY, /* UYVYUYVY... */ 139*4882a593Smuzhiyun RK_FMT_YUV400SP, /* YYYY... */ 140*4882a593Smuzhiyun RK_FMT_YUV440SP, /* YYYY... UVUV... */ 141*4882a593Smuzhiyun RK_FMT_YUV411SP, /* YYYY... UV... */ 142*4882a593Smuzhiyun RK_FMT_YUV444, /* YUVYUVYUV... */ 143*4882a593Smuzhiyun RK_FMT_YUV444SP, /* YYYY... UVUVUVUV... */ 144*4882a593Smuzhiyun RK_FMT_YUV444P, /* YYYY... UUUU... VVVV */ 145*4882a593Smuzhiyun RK_FMT_YUV422_YVYU, /* YVYUYVYU... */ 146*4882a593Smuzhiyun RK_FMT_YUV422_VYUY, /* VYUYVYUY... */ 147*4882a593Smuzhiyun RK_FMT_YUV_BUTT, 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun RK_FMT_RGB565 = RK_VIDEO_FMT_RGB, /* 16-bit RGB */ 150*4882a593Smuzhiyun RK_FMT_BGR565, /* 16-bit RGB */ 151*4882a593Smuzhiyun RK_FMT_RGB555, /* 15-bit RGB */ 152*4882a593Smuzhiyun RK_FMT_BGR555, /* 15-bit RGB */ 153*4882a593Smuzhiyun RK_FMT_RGB444, /* 12-bit RGB */ 154*4882a593Smuzhiyun RK_FMT_BGR444, /* 12-bit RGB */ 155*4882a593Smuzhiyun RK_FMT_RGB888, /* 24-bit RGB */ 156*4882a593Smuzhiyun RK_FMT_BGR888, /* 24-bit RGB */ 157*4882a593Smuzhiyun RK_FMT_RGB101010, /* 30-bit RGB */ 158*4882a593Smuzhiyun RK_FMT_BGR101010, /* 30-bit RGB */ 159*4882a593Smuzhiyun RK_FMT_ARGB1555, /* 16-bit RGB */ 160*4882a593Smuzhiyun RK_FMT_ABGR1555, /* 16-bit RGB */ 161*4882a593Smuzhiyun RK_FMT_ARGB4444, /* 16-bit RGB */ 162*4882a593Smuzhiyun RK_FMT_ABGR4444, /* 16-bit RGB */ 163*4882a593Smuzhiyun RK_FMT_ARGB8565, /* 24-bit RGB */ 164*4882a593Smuzhiyun RK_FMT_ABGR8565, /* 24-bit RGB */ 165*4882a593Smuzhiyun RK_FMT_ARGB8888, /* 32-bit RGB */ 166*4882a593Smuzhiyun RK_FMT_ABGR8888, /* 32-bit RGB */ 167*4882a593Smuzhiyun RK_FMT_BGRA8888, /* 32-bit RGB */ 168*4882a593Smuzhiyun RK_FMT_RGBA8888, /* 32-bit RGB */ 169*4882a593Smuzhiyun RK_FMT_RGBA5551, /* 16-bit RGB */ 170*4882a593Smuzhiyun RK_FMT_BGRA5551, /* 16-bit RGB */ 171*4882a593Smuzhiyun RK_FMT_BGRA4444, /* 16-bit RGB */ 172*4882a593Smuzhiyun RK_FMT_RGBA4444, /* 16-bit RGB */ 173*4882a593Smuzhiyun RK_FMT_XBGR8888, /* 32-bit RGB */ 174*4882a593Smuzhiyun RK_FMT_RGB_BUTT, 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun RK_FMT_2BPP, 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SBGGR_8BPP = RK_VIDEO_FMT_BAYER, /* 8-bit raw */ 179*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SGBRG_8BPP, /* 8-bit raw */ 180*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SGRBG_8BPP, /* 8-bit raw */ 181*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SRGGB_8BPP, /* 8-bit raw */ 182*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SBGGR_10BPP, /* 10-bit raw */ 183*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SGBRG_10BPP, /* 10-bit raw */ 184*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SGRBG_10BPP, /* 10-bit raw */ 185*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SRGGB_10BPP, /* 10-bit raw */ 186*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SBGGR_12BPP, /* 12-bit raw */ 187*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SGBRG_12BPP, /* 12-bit raw */ 188*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SGRBG_12BPP, /* 12-bit raw */ 189*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SRGGB_12BPP, /* 12-bit raw */ 190*4882a593Smuzhiyun RK_FMT_RGB_BAYER_14BPP, /* 14-bit raw */ 191*4882a593Smuzhiyun RK_FMT_RGB_BAYER_SBGGR_16BPP, /* 16-bit raw */ 192*4882a593Smuzhiyun RK_FMT_RGB_BAYER_BUTT, 193*4882a593Smuzhiyun RK_FMT_BUTT = RK_FMT_RGB_BAYER_BUTT, 194*4882a593Smuzhiyun } PIXEL_FORMAT_E; 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun typedef enum rkVIDEO_PROC_DEV_TYPE_E { 197*4882a593Smuzhiyun VIDEO_PROC_DEV_GPU = 0x0, /* GPU device */ 198*4882a593Smuzhiyun VIDEO_PROC_DEV_RGA = 0x1, /* RGA device */ 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun VIDEO_PROC_DEV_BUTT 201*4882a593Smuzhiyun } VIDEO_PROC_DEV_TYPE_E; 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun typedef enum rkVIDEO_FIELD_E { 204*4882a593Smuzhiyun VIDEO_FIELD_TOP = 0x1, /* even field */ 205*4882a593Smuzhiyun VIDEO_FIELD_BOTTOM = 0x2, /* odd field */ 206*4882a593Smuzhiyun VIDEO_FIELD_INTERLACED = 0x3, /* two interlaced fields */ 207*4882a593Smuzhiyun VIDEO_FIELD_FRAME = 0x4, /* frame */ 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun VIDEO_FIELD_BUTT 210*4882a593Smuzhiyun } VIDEO_FIELD_E; 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun typedef enum rkVIDEO_FORMAT_E { 213*4882a593Smuzhiyun VIDEO_FORMAT_LINEAR = 0, /* nature video line */ 214*4882a593Smuzhiyun VIDEO_FORMAT_TILE_64x16, /* tile cell: 64pixel x 16line */ 215*4882a593Smuzhiyun VIDEO_FORMAT_TILE_16x8, /* tile cell: 16pixel x 8line */ 216*4882a593Smuzhiyun VIDEO_FORMAT_LINEAR_DISCRETE, /* The data bits are aligned in bytes */ 217*4882a593Smuzhiyun VIDEO_FORMAT_BUTT 218*4882a593Smuzhiyun } VIDEO_FORMAT_E; 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun typedef enum rkCOMPRESS_MODE_E { 221*4882a593Smuzhiyun COMPRESS_MODE_NONE = 0, /* no compress */ 222*4882a593Smuzhiyun COMPRESS_AFBC_16x16, 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun COMPRESS_MODE_BUTT 225*4882a593Smuzhiyun } COMPRESS_MODE_E; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun typedef enum rkVIDEO_DISPLAY_MODE_E { 228*4882a593Smuzhiyun VIDEO_DISPLAY_MODE_PREVIEW = 0x0, 229*4882a593Smuzhiyun VIDEO_DISPLAY_MODE_PLAYBACK = 0x1, 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun VIDEO_DISPLAY_MODE_BUTT 232*4882a593Smuzhiyun } VIDEO_DISPLAY_MODE_E; 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun typedef struct rkLUMA_INFO_S { 235*4882a593Smuzhiyun RK_U64 u64LumaPixSum; /* Luma sum of current frame */ 236*4882a593Smuzhiyun RK_U32 u32LumaPixAverage; /* Luma average of current frame */ 237*4882a593Smuzhiyun RK_U64 u64PTS; /* PTS of current frame */ 238*4882a593Smuzhiyun } LUMA_INFO_S; 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun #define LDCI_STAT_WND_X 24 241*4882a593Smuzhiyun #define LDCI_STAT_WND_Y 16 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun #define DCF_DRSCRIPTION_LENGTH 32 244*4882a593Smuzhiyun #define DCF_CAPTURE_TIME_LENGTH 20 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun typedef struct rkISP_DCF_CONST_INFO_S { 247*4882a593Smuzhiyun /* Describes image*/ 248*4882a593Smuzhiyun RK_U8 au8ImageDescription[DCF_DRSCRIPTION_LENGTH]; 249*4882a593Smuzhiyun /* Shows manufacturer of digital cameras*/ 250*4882a593Smuzhiyun RK_U8 au8Make[DCF_DRSCRIPTION_LENGTH]; 251*4882a593Smuzhiyun /* Shows model number of digital cameras*/ 252*4882a593Smuzhiyun RK_U8 au8Model[DCF_DRSCRIPTION_LENGTH]; 253*4882a593Smuzhiyun /* Shows firmware (internal software of digital cameras) version number*/ 254*4882a593Smuzhiyun RK_U8 au8Software[DCF_DRSCRIPTION_LENGTH]; 255*4882a593Smuzhiyun /* 256*4882a593Smuzhiyun * Light source, actually this means white balance setting. 257*4882a593Smuzhiyun * '0' means unknown, '1' daylight, '2' fluorescent, '3' tungsten, 258*4882a593Smuzhiyun * '10' flash, '17' standard light A, '18' standard light B, 259*4882a593Smuzhiyun * '19' standard light C, '20' D55, '21' D65, '22' D75, '255' other 260*4882a593Smuzhiyun */ 261*4882a593Smuzhiyun RK_U8 u8LightSource; 262*4882a593Smuzhiyun /* Focal length of lens used to take image. Unit is millimeter*/ 263*4882a593Smuzhiyun RK_U32 u32FocalLength; 264*4882a593Smuzhiyun /* Indicates the type of scene. Value '0x01' means that the image was directly photographed.*/ 265*4882a593Smuzhiyun RK_U8 u8SceneType; 266*4882a593Smuzhiyun /* 267*4882a593Smuzhiyun * Indicates the use of special processing on image data, 268*4882a593Smuzhiyun * such as rendering geared to output.0 = Normal process 269*4882a593Smuzhiyun * 1 = Custom process 270*4882a593Smuzhiyun */ 271*4882a593Smuzhiyun RK_U8 u8CustomRendered; 272*4882a593Smuzhiyun /* Indicates the equivalent focal length assuming a 35mm film camera, in mm*/ 273*4882a593Smuzhiyun RK_U8 u8FocalLengthIn35mmFilm; 274*4882a593Smuzhiyun /* 275*4882a593Smuzhiyun * Indicates the type of scene that was shot. 0 = Standard, 276*4882a593Smuzhiyun * 1 = Landscape,2 = Portrait,3 = Night scene. 277*4882a593Smuzhiyun */ 278*4882a593Smuzhiyun RK_U8 u8SceneCaptureType; 279*4882a593Smuzhiyun /* 280*4882a593Smuzhiyun * Indicates the degree of overall image gain adjustment. 281*4882a593Smuzhiyun * 0 = None,1 = Low gain up,2 = High gain up, 282*4882a593Smuzhiyun * 3 = Low gain down,4 = High gain down. 283*4882a593Smuzhiyun */ 284*4882a593Smuzhiyun RK_U8 u8GainControl; 285*4882a593Smuzhiyun /* 286*4882a593Smuzhiyun * Indicates the direction of contrast processing applied 287*4882a593Smuzhiyun * by the camera when the image was shot.0 = Normal,1 = Soft,2 = Hard 288*4882a593Smuzhiyun */ 289*4882a593Smuzhiyun RK_U8 u8Contrast; 290*4882a593Smuzhiyun /* 291*4882a593Smuzhiyun * Indicates the direction of saturation processing applied 292*4882a593Smuzhiyun * by the camera when the image was shot. 293*4882a593Smuzhiyun * 0 = Normal,1 = Low saturation,2 = High saturation 294*4882a593Smuzhiyun */ 295*4882a593Smuzhiyun RK_U8 u8Saturation; 296*4882a593Smuzhiyun /* 297*4882a593Smuzhiyun * Indicates the direction of sharpness processing applied by 298*4882a593Smuzhiyun * the camera when the image was shot.0 = Normal,1 = Soft,2 = Hard 299*4882a593Smuzhiyun */ 300*4882a593Smuzhiyun RK_U8 u8Sharpness; 301*4882a593Smuzhiyun /* 302*4882a593Smuzhiyun * Exposure metering method. '0' means unknown, '1' average, 303*4882a593Smuzhiyun * '2' center weighted average, '3'spot, '4' multi-spot, 304*4882a593Smuzhiyun * '5' multi-segment, '6' partial, '255' other 305*4882a593Smuzhiyun */ 306*4882a593Smuzhiyun RK_U8 u8MeteringMode; 307*4882a593Smuzhiyun } ISP_DCF_CONST_INFO_S; 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun typedef struct rkISP_DCF_UPDATE_INFO_S { 310*4882a593Smuzhiyun /* CCD sensitivity equivalent to Ag-Hr film speedrate*/ 311*4882a593Smuzhiyun RK_U32 u32ISOSpeedRatings; 312*4882a593Smuzhiyun /* Exposure time (reciprocal of shutter speed).*/ 313*4882a593Smuzhiyun RK_U32 u32ExposureTime; 314*4882a593Smuzhiyun /* Exposure bias (compensation) value of taking picture*/ 315*4882a593Smuzhiyun RK_U32 u32ExposureBiasValue; 316*4882a593Smuzhiyun /* 317*4882a593Smuzhiyun * Exposure program that the camera used when image was taken. 318*4882a593Smuzhiyun * '1' means manual control, '2' program normal, '3' aperture priority, 319*4882a593Smuzhiyun * '4' shutter priority, '5' program creative (slow program), 320*4882a593Smuzhiyun * '6' program action(high-speed program), '7' portrait mode, 321*4882a593Smuzhiyun * '8' landscape mode 322*4882a593Smuzhiyun */ 323*4882a593Smuzhiyun RK_U8 u8ExposureProgram; 324*4882a593Smuzhiyun /* The actual F-number (F-stop) of lens when the image was taken*/ 325*4882a593Smuzhiyun RK_U32 u32FNumber; 326*4882a593Smuzhiyun /* Maximum aperture value of lens.*/ 327*4882a593Smuzhiyun RK_U32 u32MaxApertureValue; 328*4882a593Smuzhiyun /* 329*4882a593Smuzhiyun * Indicates the exposure mode set when the image was shot. 330*4882a593Smuzhiyun * 0 = Auto exposure,1 = Manual exposure, 2 = Auto bracket 331*4882a593Smuzhiyun */ 332*4882a593Smuzhiyun RK_U8 u8ExposureMode; 333*4882a593Smuzhiyun /* 334*4882a593Smuzhiyun * Indicates the white balance mode set when the image was shot. 335*4882a593Smuzhiyun * 0 = Auto white balance ,1 = Manual white balance 336*4882a593Smuzhiyun */ 337*4882a593Smuzhiyun RK_U8 u8WhiteBalance; 338*4882a593Smuzhiyun } ISP_DCF_UPDATE_INFO_S; 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun typedef struct rkISP_DCF_INFO_S { 341*4882a593Smuzhiyun ISP_DCF_CONST_INFO_S stIspDCFConstInfo; 342*4882a593Smuzhiyun ISP_DCF_UPDATE_INFO_S stIspDCFUpdateInfo; 343*4882a593Smuzhiyun } ISP_DCF_INFO_S; 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun typedef struct rkJPEG_DCF_S { 346*4882a593Smuzhiyun /* The date and time when the picture data was generated*/ 347*4882a593Smuzhiyun RK_U8 au8CaptureTime[DCF_CAPTURE_TIME_LENGTH]; 348*4882a593Smuzhiyun /* whether the picture is captured when a flash lamp is on*/ 349*4882a593Smuzhiyun RK_BOOL bFlash; 350*4882a593Smuzhiyun /* 351*4882a593Smuzhiyun * Indicates the digital zoom ratio when the image was shot. 352*4882a593Smuzhiyun * If the numerator of the recorded value is 0, this indicates 353*4882a593Smuzhiyun * that digital zoom was not used. 354*4882a593Smuzhiyun */ 355*4882a593Smuzhiyun RK_U32 u32DigitalZoomRatio; 356*4882a593Smuzhiyun ISP_DCF_INFO_S stIspDCFInfo; 357*4882a593Smuzhiyun } JPEG_DCF_S; 358*4882a593Smuzhiyun 359*4882a593Smuzhiyun typedef struct rkISP_FRAME_INFO_S { 360*4882a593Smuzhiyun RK_U32 u32ISO; /* ISP internal ISO : Again*Dgain*ISPgain */ 361*4882a593Smuzhiyun RK_U32 u32ExposureTime; /* Exposure time (reciprocal of shutter speed),unit is us */ 362*4882a593Smuzhiyun RK_U32 u32IspDgain; 363*4882a593Smuzhiyun RK_U32 u32Again; 364*4882a593Smuzhiyun RK_U32 u32Dgain; 365*4882a593Smuzhiyun RK_U32 au32Ratio[3]; 366*4882a593Smuzhiyun RK_U32 u32IspNrStrength; 367*4882a593Smuzhiyun RK_U32 u32FNumber; /* The actual F-number (F-stop) of lens when the image was taken */ 368*4882a593Smuzhiyun RK_U32 u32SensorID; /* which sensor is used */ 369*4882a593Smuzhiyun RK_U32 u32SensorMode; 370*4882a593Smuzhiyun RK_U32 u32HmaxTimes; /* Sensor HmaxTimes,unit is ns */ 371*4882a593Smuzhiyun RK_U32 u32Vmax; /* Sensor Vmax,unit is line */ 372*4882a593Smuzhiyun RK_U32 u32VcNum; /* when dump wdr frame, which is long or short exposure frame. */ 373*4882a593Smuzhiyun } ISP_FRAME_INFO_S; 374*4882a593Smuzhiyun 375*4882a593Smuzhiyun #define CFACOLORPLANE (3) 376*4882a593Smuzhiyun #define DNG_NP_SIZE (6) 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun typedef struct rkDNG_RATIONAL_S { 379*4882a593Smuzhiyun RK_U32 u32Numerator;/*represents the numerator of a fraction,*/ 380*4882a593Smuzhiyun RK_U32 u32Denominator;/* the denominator. */ 381*4882a593Smuzhiyun } DNG_RATIONAL_S; 382*4882a593Smuzhiyun 383*4882a593Smuzhiyun /* 384*4882a593Smuzhiyun Defines the structure of DNG image dynamic infomation 385*4882a593Smuzhiyun */ 386*4882a593Smuzhiyun typedef struct rkDNG_IMAGE_DYNAMIC_INFO_S { 387*4882a593Smuzhiyun /* RO;Range: [0x0, 0xFFFF]; black level*/ 388*4882a593Smuzhiyun RK_U32 au32BlackLevel[ISP_BAYER_CHN]; 389*4882a593Smuzhiyun /* 390*4882a593Smuzhiyun * specifies the selected white balance at time of capture, 391*4882a593Smuzhiyun * encoded as the coordinates of a perfectly neutral 392*4882a593Smuzhiyun * color in linear reference space values. 393*4882a593Smuzhiyun */ 394*4882a593Smuzhiyun DNG_RATIONAL_S astAsShotNeutral[CFACOLORPLANE]; 395*4882a593Smuzhiyun /* RO;describes the amount of noise in a raw image */ 396*4882a593Smuzhiyun RK_DOUBLE adNoiseProfile[DNG_NP_SIZE]; 397*4882a593Smuzhiyun } DNG_IMAGE_DYNAMIC_INFO_S; 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun typedef struct rkISP_HDR_INFO_S { 401*4882a593Smuzhiyun RK_U32 u32ColorTemp; 402*4882a593Smuzhiyun RK_U16 au16CCM[9]; 403*4882a593Smuzhiyun RK_U8 u8Saturation; 404*4882a593Smuzhiyun } ISP_HDR_INFO_S; 405*4882a593Smuzhiyun 406*4882a593Smuzhiyun typedef struct rkISP_ATTACH_INFO_S { 407*4882a593Smuzhiyun ISP_HDR_INFO_S stIspHdr; 408*4882a593Smuzhiyun RK_U32 u32ISO; 409*4882a593Smuzhiyun RK_U8 u8SnsWDRMode; 410*4882a593Smuzhiyun } ISP_ATTACH_INFO_S; 411*4882a593Smuzhiyun 412*4882a593Smuzhiyun typedef enum rkFRAME_FLAG_E { 413*4882a593Smuzhiyun FRAME_FLAG_SNAP_FLASH = 0x1 << 0, 414*4882a593Smuzhiyun FRAME_FLAG_SNAP_CUR = 0x1 << 1, 415*4882a593Smuzhiyun FRAME_FLAG_SNAP_REF = 0x1 << 2, 416*4882a593Smuzhiyun FRAME_FLAG_SNAP_END = 0x1 << 31, 417*4882a593Smuzhiyun FRAME_FLAG_BUTT 418*4882a593Smuzhiyun } FRAME_FLAG_E; 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun /* RGGB=4 */ 421*4882a593Smuzhiyun #define ISP_WB_GAIN_NUM 4 422*4882a593Smuzhiyun /* 3*3=9 matrix */ 423*4882a593Smuzhiyun #define ISP_CAP_CCM_NUM 9 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun typedef struct rkISP_CONFIG_INFO_S { 426*4882a593Smuzhiyun RK_U32 u32ISO; 427*4882a593Smuzhiyun RK_U32 u32IspDgain; 428*4882a593Smuzhiyun RK_U32 u32ExposureTime; 429*4882a593Smuzhiyun RK_U32 au32WhiteBalanceGain[ISP_WB_GAIN_NUM]; 430*4882a593Smuzhiyun RK_U32 u32ColorTemperature; 431*4882a593Smuzhiyun RK_U16 au16CapCCM[ISP_CAP_CCM_NUM]; 432*4882a593Smuzhiyun } ISP_CONFIG_INFO_S; 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun typedef struct rkVIDEO_SUPPLEMENT_S { 435*4882a593Smuzhiyun RK_U64 u64JpegDCFPhyAddr; 436*4882a593Smuzhiyun RK_U64 u64IspInfoPhyAddr; 437*4882a593Smuzhiyun RK_U64 u64LowDelayPhyAddr; 438*4882a593Smuzhiyun RK_U64 u64MotionDataPhyAddr; 439*4882a593Smuzhiyun RK_U64 u64FrameDNGPhyAddr; 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun RK_VOID* ATTRIBUTE pJpegDCFVirAddr; /* JPEG_DCF_S, used in JPEG DCF */ 442*4882a593Smuzhiyun RK_VOID* ATTRIBUTE pIspInfoVirAddr; /* ISP_FRAME_INFO_S, used in ISP debug, when get raw and send raw */ 443*4882a593Smuzhiyun RK_VOID* ATTRIBUTE pLowDelayVirAddr; /* used in low delay */ 444*4882a593Smuzhiyun RK_VOID* ATTRIBUTE pMotionDataVirAddr; /* vpss 3dnr use: gme motion data, Filter motion data, gyro data.*/ 445*4882a593Smuzhiyun RK_VOID* ATTRIBUTE pFrameDNGVirAddr; 446*4882a593Smuzhiyun } VIDEO_SUPPLEMENT_S; 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun typedef enum rkCOLOR_GAMUT_E { 449*4882a593Smuzhiyun COLOR_GAMUT_BT601 = 0, 450*4882a593Smuzhiyun COLOR_GAMUT_BT709, 451*4882a593Smuzhiyun COLOR_GAMUT_BT2020, 452*4882a593Smuzhiyun COLOR_GAMUT_USER, 453*4882a593Smuzhiyun COLOR_GAMUT_BUTT 454*4882a593Smuzhiyun } COLOR_GAMUT_E; 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun typedef struct rkISP_COLORGAMMUT_INFO_S { 457*4882a593Smuzhiyun COLOR_GAMUT_E enColorGamut; 458*4882a593Smuzhiyun } ISP_COLORGAMMUT_INFO_S; 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun typedef enum rkDYNAMIC_RANGE_E { 461*4882a593Smuzhiyun DYNAMIC_RANGE_SDR8 = 0, 462*4882a593Smuzhiyun DYNAMIC_RANGE_SDR10, 463*4882a593Smuzhiyun DYNAMIC_RANGE_HDR10, 464*4882a593Smuzhiyun DYNAMIC_RANGE_HLG, 465*4882a593Smuzhiyun DYNAMIC_RANGE_SLF, 466*4882a593Smuzhiyun DYNAMIC_RANGE_XDR, 467*4882a593Smuzhiyun DYNAMIC_RANGE_BUTT 468*4882a593Smuzhiyun } DYNAMIC_RANGE_E; 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun typedef enum rkDATA_BITWIDTH_E { 471*4882a593Smuzhiyun DATA_BITWIDTH_8 = 0, 472*4882a593Smuzhiyun DATA_BITWIDTH_10, 473*4882a593Smuzhiyun DATA_BITWIDTH_12, 474*4882a593Smuzhiyun DATA_BITWIDTH_14, 475*4882a593Smuzhiyun DATA_BITWIDTH_16, 476*4882a593Smuzhiyun DATA_BITWIDTH_BUTT 477*4882a593Smuzhiyun } DATA_BITWIDTH_E; 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun typedef struct rkVIDEO_FRAME_S { 480*4882a593Smuzhiyun MB_BLK pMbBlk; 481*4882a593Smuzhiyun RK_U32 u32Width; 482*4882a593Smuzhiyun RK_U32 u32Height; 483*4882a593Smuzhiyun RK_U32 u32VirWidth; 484*4882a593Smuzhiyun RK_U32 u32VirHeight; 485*4882a593Smuzhiyun VIDEO_FIELD_E enField; 486*4882a593Smuzhiyun PIXEL_FORMAT_E enPixelFormat; 487*4882a593Smuzhiyun VIDEO_FORMAT_E enVideoFormat; 488*4882a593Smuzhiyun COMPRESS_MODE_E enCompressMode; 489*4882a593Smuzhiyun DYNAMIC_RANGE_E enDynamicRange; 490*4882a593Smuzhiyun COLOR_GAMUT_E enColorGamut; 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun RK_VOID *pVirAddr[RK_MAX_COLOR_COMPONENT]; 493*4882a593Smuzhiyun 494*4882a593Smuzhiyun RK_U32 u32TimeRef; 495*4882a593Smuzhiyun RK_U64 u64PTS; 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun RK_U64 u64PrivateData; 498*4882a593Smuzhiyun RK_U32 u32FrameFlag; /* FRAME_FLAG_E, can be OR operation. */ 499*4882a593Smuzhiyun } VIDEO_FRAME_S; 500*4882a593Smuzhiyun 501*4882a593Smuzhiyun typedef struct rkVIDEO_FRAME_INFO_S { 502*4882a593Smuzhiyun VIDEO_FRAME_S stVFrame; 503*4882a593Smuzhiyun } VIDEO_FRAME_INFO_S; 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun typedef struct rkMB_PIC_CAL_S { 506*4882a593Smuzhiyun RK_U32 u32MBSize; 507*4882a593Smuzhiyun RK_U32 u32VirWidth; 508*4882a593Smuzhiyun RK_U32 u32VirHeight; 509*4882a593Smuzhiyun } MB_PIC_CAL_S; 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun typedef struct rkPIC_BUF_ATTR_S { 512*4882a593Smuzhiyun RK_U32 u32Width; 513*4882a593Smuzhiyun RK_U32 u32Height; 514*4882a593Smuzhiyun PIXEL_FORMAT_E enPixelFormat; 515*4882a593Smuzhiyun COMPRESS_MODE_E enCompMode; 516*4882a593Smuzhiyun } PIC_BUF_ATTR_S; 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun typedef struct rkVDEC_PIC_BUF_ATTR_S { 519*4882a593Smuzhiyun RK_CODEC_ID_E enCodecType; 520*4882a593Smuzhiyun PIC_BUF_ATTR_S stPicBufAttr; 521*4882a593Smuzhiyun } VDEC_PIC_BUF_ATTR_S; 522*4882a593Smuzhiyun 523*4882a593Smuzhiyun typedef struct rkBITMAP_S { 524*4882a593Smuzhiyun PIXEL_FORMAT_E enPixelFormat; /* Bitmap's pixel format */ 525*4882a593Smuzhiyun RK_U32 u32Width; /* Bitmap's width */ 526*4882a593Smuzhiyun RK_U32 u32Height; /* Bitmap's height */ 527*4882a593Smuzhiyun RK_VOID* ATTRIBUTE pData; /* Address of Bitmap's data */ 528*4882a593Smuzhiyun } BITMAP_S; 529*4882a593Smuzhiyun 530*4882a593Smuzhiyun typedef struct rkLDC_ATTR_S { 531*4882a593Smuzhiyun /* RW;Range: [0, 1];Whether aspect ration is keep */ 532*4882a593Smuzhiyun RK_BOOL bAspect; 533*4882a593Smuzhiyun /* RW; Range: [0, 100]; field angle ration of horizontal,valid when bAspect=0.*/ 534*4882a593Smuzhiyun RK_S32 s32XRatio; 535*4882a593Smuzhiyun /* RW; Range: [0, 100]; field angle ration of vertical,valid when bAspect=0.*/ 536*4882a593Smuzhiyun RK_S32 s32YRatio; 537*4882a593Smuzhiyun /* RW; Range: [0, 100]; field angle ration of all,valid when bAspect=1.*/ 538*4882a593Smuzhiyun RK_S32 s32XYRatio; 539*4882a593Smuzhiyun /* RW; Range: [-511, 511]; horizontal offset of the image distortion center relative to image center.*/ 540*4882a593Smuzhiyun RK_S32 s32CenterXOffset; 541*4882a593Smuzhiyun /* RW; Range: [-511, 511]; vertical offset of the image distortion center relative to image center.*/ 542*4882a593Smuzhiyun RK_S32 s32CenterYOffset; 543*4882a593Smuzhiyun /* RW; Range: [-300, 500]; LDC Distortion ratio.When spread on,s32DistortionRatio range should be [0, 500]*/ 544*4882a593Smuzhiyun RK_S32 s32DistortionRatio; 545*4882a593Smuzhiyun } LDC_ATTR_S; 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun typedef struct rkLDCV2_ATTR_S { 548*4882a593Smuzhiyun /* RW; focal length in horizontal direction, with 2 decimal numbers */ 549*4882a593Smuzhiyun RK_S32 s32FocalLenX; 550*4882a593Smuzhiyun /* RW; focal length in vertical direction, with 2 decimal numbers */ 551*4882a593Smuzhiyun RK_S32 s32FocalLenY; 552*4882a593Smuzhiyun /* RW; coordinate of image center, with 2 decimal numbers */ 553*4882a593Smuzhiyun RK_S32 s32CoorShiftX; 554*4882a593Smuzhiyun /* RW; Y coordinate of image center, with 2 decimal numbers */ 555*4882a593Smuzhiyun RK_S32 s32CoorShiftY; 556*4882a593Smuzhiyun /* RW; lens distortion coefficients of the source image, with 5 decimal numbers */ 557*4882a593Smuzhiyun RK_S32 as32SrcCaliRatio[SRC_LENS_COEF_SEG][SRC_LENS_COEF_NUM]; 558*4882a593Smuzhiyun /* RW; Junction Point of the two segments */ 559*4882a593Smuzhiyun RK_S32 s32SrcJunPt; 560*4882a593Smuzhiyun /* RW; lens distortion coefficients, with 5 decimal numbers */ 561*4882a593Smuzhiyun RK_S32 as32DstCaliRatio[DST_LENS_COEF_SEG][DST_LENS_COEF_NUM]; 562*4882a593Smuzhiyun /* RW; Junction Point of the three segments */ 563*4882a593Smuzhiyun RK_S32 as32DstJunPt[DST_LENS_COEF_SEG_POINT]; 564*4882a593Smuzhiyun /* RW; max undistorted distance before 3rd polynomial drop, with 16bits decimal */ 565*4882a593Smuzhiyun RK_S32 s32MaxDu; 566*4882a593Smuzhiyun } LDCV2_ATTR_S; 567*4882a593Smuzhiyun 568*4882a593Smuzhiyun typedef enum rkLDC_VIEW_TYPE_E { 569*4882a593Smuzhiyun /* 570*4882a593Smuzhiyun * View scale all but x and y independtly, this will keep 571*4882a593Smuzhiyun * both x and y axis ,but corner maybe lost 572*4882a593Smuzhiyun */ 573*4882a593Smuzhiyun LDC_VIEW_TYPE_ALL = 0, 574*4882a593Smuzhiyun /* Not use view scale, this will lost some side and corner */ 575*4882a593Smuzhiyun LDC_VIEW_TYPE_CROP = 1, 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun LDC_VIEW_TYPE_BUTT, 578*4882a593Smuzhiyun } LDC_VIEW_TYPE_E; 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun typedef struct rkLDCV3_ATTR_S { 581*4882a593Smuzhiyun /* RW; Range: [0, 1], 0: all mode, 1: crop mode.*/ 582*4882a593Smuzhiyun LDC_VIEW_TYPE_E enViewType; 583*4882a593Smuzhiyun /* 584*4882a593Smuzhiyun * RW; Range: ABS(s32CenterXOffset)->[0, min(128, width*0.08)], 585*4882a593Smuzhiyun * horizontal offset of the image distortion center relative to image center. 586*4882a593Smuzhiyun */ 587*4882a593Smuzhiyun RK_S32 s32CenterXOffset; 588*4882a593Smuzhiyun /* 589*4882a593Smuzhiyun * RW; Range: ABS(s32CenterXOffset)->[0, min(128, height*0.08)], 590*4882a593Smuzhiyun * vertical offset of the image distortion center relative to image center. 591*4882a593Smuzhiyun */ 592*4882a593Smuzhiyun RK_S32 s32CenterYOffset; 593*4882a593Smuzhiyun /* RW; Range: [-300, 300], LDC Distortion ratio.*/ 594*4882a593Smuzhiyun RK_S32 s32DistortionRatio; 595*4882a593Smuzhiyun /* 596*4882a593Smuzhiyun * RW; Range: [-300, 300], to remove the black region around when 597*4882a593Smuzhiyun * performing pinchusion distortion correction with crop mode. 598*4882a593Smuzhiyun */ 599*4882a593Smuzhiyun RK_S32 s32MinRatio; 600*4882a593Smuzhiyun } LDCV3_ATTR_S; 601*4882a593Smuzhiyun 602*4882a593Smuzhiyun typedef enum rkROTATION_VIEW_TYPE_E { 603*4882a593Smuzhiyun ROTATION_VIEW_TYPE_ALL = 0, /* View all source Image,no lose*/ 604*4882a593Smuzhiyun ROTATION_VIEW_TYPE_TYPICAL = 1, /* View from rotation Image with source size,same lose*/ 605*4882a593Smuzhiyun ROTATION_VIEW_TYPE_INSIDE = 2, /* View with no black section,all in dest Image*/ 606*4882a593Smuzhiyun ROTATION_VIEW_TYPE_BUTT, 607*4882a593Smuzhiyun } ROTATION_VIEW_TYPE_E; 608*4882a593Smuzhiyun 609*4882a593Smuzhiyun typedef struct rkROTATION_EX_S { 610*4882a593Smuzhiyun /* RW;Range: [0, 2];Rotation mode*/ 611*4882a593Smuzhiyun ROTATION_VIEW_TYPE_E enViewType; 612*4882a593Smuzhiyun /* RW;Range: [0,360];Rotation Angle:[0,360]*/ 613*4882a593Smuzhiyun RK_U32 u32Angle; 614*4882a593Smuzhiyun /* 615*4882a593Smuzhiyun * RW;Range: [-511, 511];Horizontal offset of the image 616*4882a593Smuzhiyun * distortion center relative to image center. 617*4882a593Smuzhiyun */ 618*4882a593Smuzhiyun RK_S32 s32CenterXOffset; 619*4882a593Smuzhiyun /* 620*4882a593Smuzhiyun * RW;Range: [-511, 511];Vertical offset of the image 621*4882a593Smuzhiyun * distortion center relative to image center. 622*4882a593Smuzhiyun */ 623*4882a593Smuzhiyun RK_S32 s32CenterYOffset; 624*4882a593Smuzhiyun /* RW;Dest size of any angle rotation*/ 625*4882a593Smuzhiyun SIZE_S stDestSize; 626*4882a593Smuzhiyun } ROTATION_EX_S; 627*4882a593Smuzhiyun 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun typedef enum rkWDR_MODE_E { 630*4882a593Smuzhiyun WDR_MODE_NONE = 0, 631*4882a593Smuzhiyun WDR_MODE_BUILT_IN, 632*4882a593Smuzhiyun WDR_MODE_QUDRA, 633*4882a593Smuzhiyun 634*4882a593Smuzhiyun WDR_MODE_2To1_LINE, 635*4882a593Smuzhiyun WDR_MODE_2To1_FRAME, 636*4882a593Smuzhiyun WDR_MODE_2To1_FRAME_FULL_RATE, 637*4882a593Smuzhiyun 638*4882a593Smuzhiyun WDR_MODE_3To1_LINE, 639*4882a593Smuzhiyun WDR_MODE_3To1_FRAME, 640*4882a593Smuzhiyun WDR_MODE_3To1_FRAME_FULL_RATE, 641*4882a593Smuzhiyun 642*4882a593Smuzhiyun WDR_MODE_4To1_LINE, 643*4882a593Smuzhiyun WDR_MODE_4To1_FRAME, 644*4882a593Smuzhiyun WDR_MODE_4To1_FRAME_FULL_RATE, 645*4882a593Smuzhiyun 646*4882a593Smuzhiyun WDR_MODE_BUTT, 647*4882a593Smuzhiyun } WDR_MODE_E; 648*4882a593Smuzhiyun 649*4882a593Smuzhiyun typedef enum rkFRAME_INTERRUPT_TYPE_E { 650*4882a593Smuzhiyun FRAME_INTERRUPT_START, 651*4882a593Smuzhiyun FRAME_INTERRUPT_EARLY, 652*4882a593Smuzhiyun FRAME_INTERRUPT_EARLY_END, 653*4882a593Smuzhiyun FRAME_INTERRUPT_BUTT, 654*4882a593Smuzhiyun } FRAME_INTERRUPT_TYPE_E; 655*4882a593Smuzhiyun 656*4882a593Smuzhiyun typedef struct rkFRAME_INTERRUPT_ATTR_S { 657*4882a593Smuzhiyun FRAME_INTERRUPT_TYPE_E enIntType; 658*4882a593Smuzhiyun RK_U32 u32EarlyLine; 659*4882a593Smuzhiyun } FRAME_INTERRUPT_ATTR_S; 660*4882a593Smuzhiyun 661*4882a593Smuzhiyun #ifdef __cplusplus 662*4882a593Smuzhiyun #if __cplusplus 663*4882a593Smuzhiyun } 664*4882a593Smuzhiyun #endif 665*4882a593Smuzhiyun #endif /* __cplusplus */ 666*4882a593Smuzhiyun 667*4882a593Smuzhiyun #endif /* INCLUDE_RT_MPI_RK_COMMON_VIDEO_H_ */ 668*4882a593Smuzhiyun 669