xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_comm_video.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_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