/* * Copyright 2020 Rockchip Electronics Co. LTD * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #ifndef INCLUDE_RT_MPI_RK_COMMON_VIDEO_H_ #define INCLUDE_RT_MPI_RK_COMMON_VIDEO_H_ #include "rk_type.h" #include "rk_common.h" #include "rk_comm_mb.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ #define SRC_LENS_COEF_SEG 2 #define DST_LENS_COEF_SEG 3 #define SRC_LENS_COEF_NUM 4 #define DST_LENS_COEF_NUM 4 #define DST_LENS_COEF_SEG_POINT (DST_LENS_COEF_SEG - 1) #define RK_COLOR_YUV_Y_PLANE 0 #define RK_COLOR_YUV_UV_PLANE 1 #define RK_COLOR_RGB_PLANE 0 #define RK_MAX_COLOR_COMPONENT 2 #define ISP_BAYER_CHN (4) typedef enum rkOPERATION_MODE_E { OPERATION_MODE_AUTO = 0, OPERATION_MODE_MANUAL = 1, OPERATION_MODE_BUTT } OPERATION_MODE_E; /*Angle of rotation*/ typedef enum rkROTATION_E { ROTATION_0 = 0, ROTATION_90 = 1, ROTATION_180 = 2, ROTATION_270 = 3, ROTATION_BUTT } ROTATION_E; typedef enum rkMIRROR_E { MIRROR_NONE, MIRROR_HORIZONTAL, MIRROR_VERTICAL, MIRROR_BOTH, MIRROR_BUTT } MIRROR_E; typedef enum rkMB_SOURCE_E { MB_SOURCE_COMMON = 0, MB_SOURCE_MODULE = 1, MB_SOURCE_PRIVATE = 2, MB_SOURCE_USER = 3, MB_SOURCE_BUTT } MB_SOURCE_E; typedef enum rkDATA_RATE_E { DATA_RATE_X1 = 0, /* RW; output 1 pixel per clock */ DATA_RATE_X2 = 1, /* RW; output 2 pixel per clock */ DATA_RATE_BUTT } DATA_RATE_E; typedef struct rkBORDER_S { RK_U32 u32TopWidth; RK_U32 u32BottomWidth; RK_U32 u32LeftWidth; RK_U32 u32RightWidth; RK_U32 u32Color; } BORDER_S; typedef struct rkPOINT_S { RK_S32 s32X; RK_S32 s32Y; } POINT_S; typedef struct rkSIZE_S { RK_U32 u32Width; RK_U32 u32Height; } SIZE_S; typedef struct rkRECT_S { RK_S32 s32X; RK_S32 s32Y; RK_U32 u32Width; RK_U32 u32Height; } RECT_S; typedef struct rkVIDEO_REGION_INFO_S { RK_U32 u32RegionNum; /* W; count of the region */ RECT_S ATTRIBUTE* pstRegion; /* W; region attribute */ } VIDEO_REGION_INFO_S; typedef struct rkCROP_INFO_S { RK_BOOL bEnable; RECT_S stRect; } CROP_INFO_S; typedef struct rkFRAME_RATE_CTRL_S { RK_S32 s32SrcFrameRate; /* RW; source frame rate */ RK_S32 s32DstFrameRate; /* RW; dest frame rate */ } FRAME_RATE_CTRL_S; typedef enum rkASPECT_RATIO_E { ASPECT_RATIO_NONE = 0, /* full screen */ ASPECT_RATIO_AUTO = 1, /* ratio no change, 1:1*/ ASPECT_RATIO_MANUAL = 2, /* ratio manual set */ ASPECT_RATIO_BUTT } ASPECT_RATIO_E; typedef struct rkASPECT_RATIO_S { ASPECT_RATIO_E enMode; /* aspect ratio mode: none/auto/manual */ RK_U32 u32BgColor; /* background color, RGB 888 */ RECT_S stVideoRect; /* valid in ASPECT_RATIO_MANUAL mode */ } ASPECT_RATIO_S; #define RK_VIDEO_FMT_MASK 0x000f0000 #define RK_VIDEO_FMT_YUV 0x00000000 #define RK_VIDEO_FMT_RGB 0x00010000 typedef enum rkPIXEL_FORMAT_E { RK_FMT_YUV420SP = RK_VIDEO_FMT_YUV, /* YYYY... UV... */ RK_FMT_YUV420SP_10BIT, RK_FMT_YUV422SP, /* YYYY... UVUV... */ RK_FMT_YUV422SP_10BIT, ///< Not part of ABI RK_FMT_YUV420P, /* YYYY... UUUU... VVVV */ RK_FMT_YUV420P_VU, /* YYYY... VVVV... UUUU */ RK_FMT_YUV420SP_VU, /* YYYY... VUVUVU... */ RK_FMT_YUV422P, /* YYYY... UUUU... VVVV */ RK_FMT_YUV422SP_VU, /* YYYY... VUVUVU... */ RK_FMT_YUV422_YUYV, /* YUYVYUYV... */ RK_FMT_YUV422_UYVY, /* UYVYUYVY... */ RK_FMT_YUV400SP, /* YYYY... */ RK_FMT_YUV440SP, /* YYYY... UVUV... */ RK_FMT_YUV411SP, /* YYYY... UV... */ RK_FMT_YUV444SP, /* YYYY... UVUVUVUV... */ RK_FMT_YUV422_YVYU, /* YVYUYVYU... */ RK_FMT_YUV422_VYUY, /* VYUYVYUY... */ RK_FMT_YUV_BUTT, RK_FMT_RGB565 = RK_VIDEO_FMT_RGB, /* 16-bit RGB */ RK_FMT_BGR565, /* 16-bit RGB */ RK_FMT_RGB555, /* 15-bit RGB */ RK_FMT_BGR555, /* 15-bit RGB */ RK_FMT_RGB444, /* 12-bit RGB */ RK_FMT_BGR444, /* 12-bit RGB */ RK_FMT_RGB888, /* 24-bit RGB */ RK_FMT_BGR888, /* 24-bit RGB */ RK_FMT_RGB101010, /* 30-bit RGB */ RK_FMT_BGR101010, /* 30-bit RGB */ RK_FMT_ARGB1555, /* 16-bit RGB */ RK_FMT_ABGR1555, /* 16-bit RGB */ RK_FMT_ARGB4444, /* 16-bit RGB */ RK_FMT_ABGR4444, /* 16-bit RGB */ RK_FMT_ARGB8565, /* 24-bit RGB */ RK_FMT_ABGR8565, /* 24-bit RGB */ RK_FMT_ARGB8888, /* 32-bit RGB */ RK_FMT_ABGR8888, /* 32-bit RGB */ RK_FMT_BGRA8888, /* 32-bit RGB */ RK_FMT_RGBA8888, /* 32-bit RGB */ RK_FMT_RGBA5551, /* 16-bit RGB */ RK_FMT_BGRA5551, /* 16-bit RGB */ RK_FMT_BGRA4444, /* 16-bit RGB */ RK_FMT_RGB_BUTT, RK_FMT_BUTT = RK_FMT_RGB_BUTT, } PIXEL_FORMAT_E; typedef enum rkVIDEO_FIELD_E { VIDEO_FIELD_TOP = 0x1, /* even field */ VIDEO_FIELD_BOTTOM = 0x2, /* odd field */ VIDEO_FIELD_INTERLACED = 0x3, /* two interlaced fields */ VIDEO_FIELD_FRAME = 0x4, /* frame */ VIDEO_FIELD_BUTT } VIDEO_FIELD_E; typedef enum rkVIDEO_FORMAT_E { VIDEO_FORMAT_LINEAR = 0, /* nature video line */ VIDEO_FORMAT_TILE_64x16, /* tile cell: 64pixel x 16line */ VIDEO_FORMAT_TILE_16x8, /* tile cell: 16pixel x 8line */ VIDEO_FORMAT_LINEAR_DISCRETE, /* The data bits are aligned in bytes */ VIDEO_FORMAT_BUTT } VIDEO_FORMAT_E; typedef enum rkCOMPRESS_MODE_E { COMPRESS_MODE_NONE = 0, /* no compress */ COMPRESS_AFBC_16x16, COMPRESS_MODE_BUTT } COMPRESS_MODE_E; typedef enum rkVIDEO_DISPLAY_MODE_E { VIDEO_DISPLAY_MODE_PREVIEW = 0x0, VIDEO_DISPLAY_MODE_PLAYBACK = 0x1, VIDEO_DISPLAY_MODE_BUTT } VIDEO_DISPLAY_MODE_E; typedef struct rkLUMA_INFO_S { RK_U64 u64LumaPixSum; /* Luma sum of current frame */ RK_U32 u32LumaPixAverage; /* Luma average of current frame */ RK_U64 u64PTS; /* PTS of current frame */ } LUMA_INFO_S; #define LDCI_STAT_WND_X 24 #define LDCI_STAT_WND_Y 16 #define DCF_DRSCRIPTION_LENGTH 32 #define DCF_CAPTURE_TIME_LENGTH 20 typedef struct rkISP_DCF_CONST_INFO_S { /* Describes image*/ RK_U8 au8ImageDescription[DCF_DRSCRIPTION_LENGTH]; /* Shows manufacturer of digital cameras*/ RK_U8 au8Make[DCF_DRSCRIPTION_LENGTH]; /* Shows model number of digital cameras*/ RK_U8 au8Model[DCF_DRSCRIPTION_LENGTH]; /* Shows firmware (internal software of digital cameras) version number*/ RK_U8 au8Software[DCF_DRSCRIPTION_LENGTH]; /* * Light source, actually this means white balance setting. * '0' means unknown, '1' daylight, '2' fluorescent, '3' tungsten, * '10' flash, '17' standard light A, '18' standard light B, * '19' standard light C, '20' D55, '21' D65, '22' D75, '255' other */ RK_U8 u8LightSource; /* Focal length of lens used to take image. Unit is millimeter*/ RK_U32 u32FocalLength; /* Indicates the type of scene. Value '0x01' means that the image was directly photographed.*/ RK_U8 u8SceneType; /* * Indicates the use of special processing on image data, * such as rendering geared to output.0 = Normal process * 1 = Custom process */ RK_U8 u8CustomRendered; /* Indicates the equivalent focal length assuming a 35mm film camera, in mm*/ RK_U8 u8FocalLengthIn35mmFilm; /* * Indicates the type of scene that was shot. 0 = Standard, * 1 = Landscape,2 = Portrait,3 = Night scene. */ RK_U8 u8SceneCaptureType; /* * Indicates the degree of overall image gain adjustment. * 0 = None,1 = Low gain up,2 = High gain up, * 3 = Low gain down,4 = High gain down. */ RK_U8 u8GainControl; /* * Indicates the direction of contrast processing applied * by the camera when the image was shot.0 = Normal,1 = Soft,2 = Hard */ RK_U8 u8Contrast; /* * Indicates the direction of saturation processing applied * by the camera when the image was shot. * 0 = Normal,1 = Low saturation,2 = High saturation */ RK_U8 u8Saturation; /* * Indicates the direction of sharpness processing applied by * the camera when the image was shot.0 = Normal,1 = Soft,2 = Hard */ RK_U8 u8Sharpness; /* * Exposure metering method. '0' means unknown, '1' average, * '2' center weighted average, '3'spot, '4' multi-spot, * '5' multi-segment, '6' partial, '255' other */ RK_U8 u8MeteringMode; } ISP_DCF_CONST_INFO_S; typedef struct rkISP_DCF_UPDATE_INFO_S { /* CCD sensitivity equivalent to Ag-Hr film speedrate*/ RK_U32 u32ISOSpeedRatings; /* Exposure time (reciprocal of shutter speed).*/ RK_U32 u32ExposureTime; /* Exposure bias (compensation) value of taking picture*/ RK_U32 u32ExposureBiasValue; /* * Exposure program that the camera used when image was taken. * '1' means manual control, '2' program normal, '3' aperture priority, * '4' shutter priority, '5' program creative (slow program), * '6' program action(high-speed program), '7' portrait mode, * '8' landscape mode */ RK_U8 u8ExposureProgram; /* The actual F-number (F-stop) of lens when the image was taken*/ RK_U32 u32FNumber; /* Maximum aperture value of lens.*/ RK_U32 u32MaxApertureValue; /* * Indicates the exposure mode set when the image was shot. * 0 = Auto exposure,1 = Manual exposure, 2 = Auto bracket */ RK_U8 u8ExposureMode; /* * Indicates the white balance mode set when the image was shot. * 0 = Auto white balance ,1 = Manual white balance */ RK_U8 u8WhiteBalance; } ISP_DCF_UPDATE_INFO_S; typedef struct rkISP_DCF_INFO_S { ISP_DCF_CONST_INFO_S stIspDCFConstInfo; ISP_DCF_UPDATE_INFO_S stIspDCFUpdateInfo; } ISP_DCF_INFO_S; typedef struct rkJPEG_DCF_S { /* The date and time when the picture data was generated*/ RK_U8 au8CaptureTime[DCF_CAPTURE_TIME_LENGTH]; /* whether the picture is captured when a flash lamp is on*/ RK_BOOL bFlash; /* * Indicates the digital zoom ratio when the image was shot. * If the numerator of the recorded value is 0, this indicates * that digital zoom was not used. */ RK_U32 u32DigitalZoomRatio; ISP_DCF_INFO_S stIspDCFInfo; } JPEG_DCF_S; typedef struct rkISP_FRAME_INFO_S { RK_U32 u32ISO; /* ISP internal ISO : Again*Dgain*ISPgain */ RK_U32 u32ExposureTime; /* Exposure time (reciprocal of shutter speed),unit is us */ RK_U32 u32IspDgain; RK_U32 u32Again; RK_U32 u32Dgain; RK_U32 au32Ratio[3]; RK_U32 u32IspNrStrength; RK_U32 u32FNumber; /* The actual F-number (F-stop) of lens when the image was taken */ RK_U32 u32SensorID; /* which sensor is used */ RK_U32 u32SensorMode; RK_U32 u32HmaxTimes; /* Sensor HmaxTimes,unit is ns */ RK_U32 u32Vmax; /* Sensor Vmax,unit is line */ RK_U32 u32VcNum; /* when dump wdr frame, which is long or short exposure frame. */ } ISP_FRAME_INFO_S; #define CFACOLORPLANE (3) #define DNG_NP_SIZE (6) typedef struct rkDNG_RATIONAL_S { RK_U32 u32Numerator;/*represents the numerator of a fraction,*/ RK_U32 u32Denominator;/* the denominator. */ } DNG_RATIONAL_S; /* Defines the structure of DNG image dynamic infomation */ typedef struct rkDNG_IMAGE_DYNAMIC_INFO_S { /* RO;Range: [0x0, 0xFFFF]; black level*/ RK_U32 au32BlackLevel[ISP_BAYER_CHN]; /* * specifies the selected white balance at time of capture, * encoded as the coordinates of a perfectly neutral * color in linear reference space values. */ DNG_RATIONAL_S astAsShotNeutral[CFACOLORPLANE]; /* RO;describes the amount of noise in a raw image */ RK_DOUBLE adNoiseProfile[DNG_NP_SIZE]; } DNG_IMAGE_DYNAMIC_INFO_S; typedef struct rkISP_HDR_INFO_S { RK_U32 u32ColorTemp; RK_U16 au16CCM[9]; RK_U8 u8Saturation; } ISP_HDR_INFO_S; typedef struct rkISP_ATTACH_INFO_S { ISP_HDR_INFO_S stIspHdr; RK_U32 u32ISO; RK_U8 u8SnsWDRMode; } ISP_ATTACH_INFO_S; typedef enum rkFRAME_FLAG_E { FRAME_FLAG_SNAP_FLASH = 0x1 << 0, FRAME_FLAG_SNAP_CUR = 0x1 << 1, FRAME_FLAG_SNAP_REF = 0x1 << 2, FRAME_FLAG_SNAP_END = 0x1 << 31, FRAME_FLAG_BUTT } FRAME_FLAG_E; /* RGGB=4 */ #define ISP_WB_GAIN_NUM 4 /* 3*3=9 matrix */ #define ISP_CAP_CCM_NUM 9 typedef struct rkISP_CONFIG_INFO_S { RK_U32 u32ISO; RK_U32 u32IspDgain; RK_U32 u32ExposureTime; RK_U32 au32WhiteBalanceGain[ISP_WB_GAIN_NUM]; RK_U32 u32ColorTemperature; RK_U16 au16CapCCM[ISP_CAP_CCM_NUM]; } ISP_CONFIG_INFO_S; typedef struct rkVIDEO_SUPPLEMENT_S { RK_U64 u64JpegDCFPhyAddr; RK_U64 u64IspInfoPhyAddr; RK_U64 u64LowDelayPhyAddr; RK_U64 u64MotionDataPhyAddr; RK_U64 u64FrameDNGPhyAddr; RK_VOID* ATTRIBUTE pJpegDCFVirAddr; /* JPEG_DCF_S, used in JPEG DCF */ RK_VOID* ATTRIBUTE pIspInfoVirAddr; /* ISP_FRAME_INFO_S, used in ISP debug, when get raw and send raw */ RK_VOID* ATTRIBUTE pLowDelayVirAddr; /* used in low delay */ RK_VOID* ATTRIBUTE pMotionDataVirAddr; /* vpss 3dnr use: gme motion data, Filter motion data, gyro data.*/ RK_VOID* ATTRIBUTE pFrameDNGVirAddr; } VIDEO_SUPPLEMENT_S; typedef enum rkCOLOR_GAMUT_E { COLOR_GAMUT_BT601 = 0, COLOR_GAMUT_BT709, COLOR_GAMUT_BT2020, COLOR_GAMUT_USER, COLOR_GAMUT_BUTT } COLOR_GAMUT_E; typedef struct rkISP_COLORGAMMUT_INFO_S { COLOR_GAMUT_E enColorGamut; } ISP_COLORGAMMUT_INFO_S; typedef enum rkDYNAMIC_RANGE_E { DYNAMIC_RANGE_SDR8 = 0, DYNAMIC_RANGE_SDR10, DYNAMIC_RANGE_HDR10, DYNAMIC_RANGE_HLG, DYNAMIC_RANGE_SLF, DYNAMIC_RANGE_XDR, DYNAMIC_RANGE_BUTT } DYNAMIC_RANGE_E; typedef enum rkDATA_BITWIDTH_E { DATA_BITWIDTH_8 = 0, DATA_BITWIDTH_10, DATA_BITWIDTH_12, DATA_BITWIDTH_14, DATA_BITWIDTH_16, DATA_BITWIDTH_BUTT } DATA_BITWIDTH_E; typedef struct rkVIDEO_FRAME_S { MB_BLK pMbBlk; RK_U32 u32Width; RK_U32 u32Height; RK_U32 u32VirWidth; RK_U32 u32VirHeight; VIDEO_FIELD_E enField; PIXEL_FORMAT_E enPixelFormat; VIDEO_FORMAT_E enVideoFormat; COMPRESS_MODE_E enCompressMode; DYNAMIC_RANGE_E enDynamicRange; COLOR_GAMUT_E enColorGamut; RK_VOID *pVirAddr[RK_MAX_COLOR_COMPONENT]; RK_U32 u32TimeRef; RK_U64 u64PTS; RK_U64 u64PrivateData; RK_U32 u32FrameFlag; /* FRAME_FLAG_E, can be OR operation. */ } VIDEO_FRAME_S; typedef struct rkVIDEO_FRAME_INFO_S { VIDEO_FRAME_S stVFrame; } VIDEO_FRAME_INFO_S; typedef struct rkMB_PIC_CAL_S { RK_U32 u32MBSize; RK_U32 u32VirWidth; RK_U32 u32VirHeight; } MB_PIC_CAL_S; typedef struct rkPIC_BUF_ATTR_S { RK_U32 u32Width; RK_U32 u32Height; PIXEL_FORMAT_E enPixelFormat; COMPRESS_MODE_E enCompMode; } PIC_BUF_ATTR_S; typedef struct rkVDEC_PIC_BUF_ATTR_S { RK_CODEC_ID_E enCodecType; PIC_BUF_ATTR_S stPicBufAttr; } VDEC_PIC_BUF_ATTR_S; typedef struct rkBITMAP_S { PIXEL_FORMAT_E enPixelFormat; /* Bitmap's pixel format */ RK_U32 u32Width; /* Bitmap's width */ RK_U32 u32Height; /* Bitmap's height */ RK_VOID* ATTRIBUTE pData; /* Address of Bitmap's data */ } BITMAP_S; typedef struct rkLDC_ATTR_S { /* RW;Range: [0, 1];Whether aspect ration is keep */ RK_BOOL bAspect; /* RW; Range: [0, 100]; field angle ration of horizontal,valid when bAspect=0.*/ RK_S32 s32XRatio; /* RW; Range: [0, 100]; field angle ration of vertical,valid when bAspect=0.*/ RK_S32 s32YRatio; /* RW; Range: [0, 100]; field angle ration of all,valid when bAspect=1.*/ RK_S32 s32XYRatio; /* RW; Range: [-511, 511]; horizontal offset of the image distortion center relative to image center.*/ RK_S32 s32CenterXOffset; /* RW; Range: [-511, 511]; vertical offset of the image distortion center relative to image center.*/ RK_S32 s32CenterYOffset; /* RW; Range: [-300, 500]; LDC Distortion ratio.When spread on,s32DistortionRatio range should be [0, 500]*/ RK_S32 s32DistortionRatio; } LDC_ATTR_S; typedef struct rkLDCV2_ATTR_S { /* RW; focal length in horizontal direction, with 2 decimal numbers */ RK_S32 s32FocalLenX; /* RW; focal length in vertical direction, with 2 decimal numbers */ RK_S32 s32FocalLenY; /* RW; coordinate of image center, with 2 decimal numbers */ RK_S32 s32CoorShiftX; /* RW; Y coordinate of image center, with 2 decimal numbers */ RK_S32 s32CoorShiftY; /* RW; lens distortion coefficients of the source image, with 5 decimal numbers */ RK_S32 as32SrcCaliRatio[SRC_LENS_COEF_SEG][SRC_LENS_COEF_NUM]; /* RW; Junction Point of the two segments */ RK_S32 s32SrcJunPt; /* RW; lens distortion coefficients, with 5 decimal numbers */ RK_S32 as32DstCaliRatio[DST_LENS_COEF_SEG][DST_LENS_COEF_NUM]; /* RW; Junction Point of the three segments */ RK_S32 as32DstJunPt[DST_LENS_COEF_SEG_POINT]; /* RW; max undistorted distance before 3rd polynomial drop, with 16bits decimal */ RK_S32 s32MaxDu; } LDCV2_ATTR_S; typedef enum rkLDC_VIEW_TYPE_E { /* * View scale all but x and y independtly, this will keep * both x and y axis ,but corner maybe lost */ LDC_VIEW_TYPE_ALL = 0, /* Not use view scale, this will lost some side and corner */ LDC_VIEW_TYPE_CROP = 1, LDC_VIEW_TYPE_BUTT, } LDC_VIEW_TYPE_E; typedef struct rkLDCV3_ATTR_S { /* RW; Range: [0, 1], 0: all mode, 1: crop mode.*/ LDC_VIEW_TYPE_E enViewType; /* * RW; Range: ABS(s32CenterXOffset)->[0, min(128, width*0.08)], * horizontal offset of the image distortion center relative to image center. */ RK_S32 s32CenterXOffset; /* * RW; Range: ABS(s32CenterXOffset)->[0, min(128, height*0.08)], * vertical offset of the image distortion center relative to image center. */ RK_S32 s32CenterYOffset; /* RW; Range: [-300, 300], LDC Distortion ratio.*/ RK_S32 s32DistortionRatio; /* * RW; Range: [-300, 300], to remove the black region around when * performing pinchusion distortion correction with crop mode. */ RK_S32 s32MinRatio; } LDCV3_ATTR_S; typedef enum rkROTATION_VIEW_TYPE_E { ROTATION_VIEW_TYPE_ALL = 0, /* View all source Image,no lose*/ ROTATION_VIEW_TYPE_TYPICAL = 1, /* View from rotation Image with source size,same lose*/ ROTATION_VIEW_TYPE_INSIDE = 2, /* View with no black section,all in dest Image*/ ROTATION_VIEW_TYPE_BUTT, } ROTATION_VIEW_TYPE_E; typedef struct rkROTATION_EX_S { /* RW;Range: [0, 2];Rotation mode*/ ROTATION_VIEW_TYPE_E enViewType; /* RW;Range: [0,360];Rotation Angle:[0,360]*/ RK_U32 u32Angle; /* * RW;Range: [-511, 511];Horizontal offset of the image * distortion center relative to image center. */ RK_S32 s32CenterXOffset; /* * RW;Range: [-511, 511];Vertical offset of the image * distortion center relative to image center. */ RK_S32 s32CenterYOffset; /* RW;Dest size of any angle rotation*/ SIZE_S stDestSize; } ROTATION_EX_S; typedef enum rkWDR_MODE_E { WDR_MODE_NONE = 0, WDR_MODE_BUILT_IN, WDR_MODE_QUDRA, WDR_MODE_2To1_LINE, WDR_MODE_2To1_FRAME, WDR_MODE_2To1_FRAME_FULL_RATE, WDR_MODE_3To1_LINE, WDR_MODE_3To1_FRAME, WDR_MODE_3To1_FRAME_FULL_RATE, WDR_MODE_4To1_LINE, WDR_MODE_4To1_FRAME, WDR_MODE_4To1_FRAME_FULL_RATE, WDR_MODE_BUTT, } WDR_MODE_E; typedef enum rkFRAME_INTERRUPT_TYPE_E { FRAME_INTERRUPT_START, FRAME_INTERRUPT_EARLY, FRAME_INTERRUPT_EARLY_END, FRAME_INTERRUPT_BUTT, } FRAME_INTERRUPT_TYPE_E; typedef struct rkFRAME_INTERRUPT_ATTR_S { FRAME_INTERRUPT_TYPE_E enIntType; RK_U32 u32EarlyLine; } FRAME_INTERRUPT_ATTR_S; #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif /* INCLUDE_RT_MPI_RK_COMMON_VIDEO_H_ */