11bd4fe43Sopenharmony_ci/*
21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License.
51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at
61bd4fe43Sopenharmony_ci *
71bd4fe43Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81bd4fe43Sopenharmony_ci *
91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and
131bd4fe43Sopenharmony_ci * limitations under the License.
141bd4fe43Sopenharmony_ci */
151bd4fe43Sopenharmony_ci
161bd4fe43Sopenharmony_ci#ifndef __HI_COMM_VIDEO_H__
171bd4fe43Sopenharmony_ci#define __HI_COMM_VIDEO_H__
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include "hi_type.h"
201bd4fe43Sopenharmony_ci#include "hi_common.h"
211bd4fe43Sopenharmony_ci
221bd4fe43Sopenharmony_ci#ifdef __cplusplus
231bd4fe43Sopenharmony_ci#if __cplusplus
241bd4fe43Sopenharmony_ciextern "C" {
251bd4fe43Sopenharmony_ci#endif
261bd4fe43Sopenharmony_ci#endif /* __cplusplus */
271bd4fe43Sopenharmony_ci
281bd4fe43Sopenharmony_ci#define SRC_LENS_COEF_SEG       2
291bd4fe43Sopenharmony_ci#define DST_LENS_COEF_SEG       3
301bd4fe43Sopenharmony_ci#define SRC_LENS_COEF_NUM       4
311bd4fe43Sopenharmony_ci#define DST_LENS_COEF_NUM       4
321bd4fe43Sopenharmony_ci#define DST_LENS_COEF_SEG_POINT (DST_LENS_COEF_SEG - 1)
331bd4fe43Sopenharmony_ci
341bd4fe43Sopenharmony_ci#define ISP_BAYER_CHN           (4)
351bd4fe43Sopenharmony_ci
361bd4fe43Sopenharmony_citypedef enum hiOPERATION_MODE_E {
371bd4fe43Sopenharmony_ci    OPERATION_MODE_AUTO   = 0,
381bd4fe43Sopenharmony_ci    OPERATION_MODE_MANUAL = 1,
391bd4fe43Sopenharmony_ci    OPERATION_MODE_BUTT
401bd4fe43Sopenharmony_ci} OPERATION_MODE_E;
411bd4fe43Sopenharmony_ci
421bd4fe43Sopenharmony_ci/* Angle of rotation */
431bd4fe43Sopenharmony_citypedef enum hiROTATION_E {
441bd4fe43Sopenharmony_ci    ROTATION_0   = 0,
451bd4fe43Sopenharmony_ci    ROTATION_90  = 1,
461bd4fe43Sopenharmony_ci    ROTATION_180 = 2,
471bd4fe43Sopenharmony_ci    ROTATION_270 = 3,
481bd4fe43Sopenharmony_ci    ROTATION_BUTT
491bd4fe43Sopenharmony_ci} ROTATION_E;
501bd4fe43Sopenharmony_ci
511bd4fe43Sopenharmony_citypedef enum hiVB_SOURCE_E {
521bd4fe43Sopenharmony_ci    VB_SOURCE_COMMON  = 0,
531bd4fe43Sopenharmony_ci    VB_SOURCE_MODULE  = 1,
541bd4fe43Sopenharmony_ci    VB_SOURCE_PRIVATE = 2,
551bd4fe43Sopenharmony_ci    VB_SOURCE_USER    = 3,
561bd4fe43Sopenharmony_ci    VB_SOURCE_BUTT
571bd4fe43Sopenharmony_ci} VB_SOURCE_E;
581bd4fe43Sopenharmony_ci
591bd4fe43Sopenharmony_citypedef enum hiDATA_RATE_E {
601bd4fe43Sopenharmony_ci    DATA_RATE_X1 = 0,         /* RW; output 1 pixel per clock */
611bd4fe43Sopenharmony_ci    DATA_RATE_X2 = 1,         /* RW; output 2 pixel per clock */
621bd4fe43Sopenharmony_ci
631bd4fe43Sopenharmony_ci    DATA_RATE_BUTT
641bd4fe43Sopenharmony_ci} DATA_RATE_E;
651bd4fe43Sopenharmony_ci
661bd4fe43Sopenharmony_citypedef struct hiBORDER_S {
671bd4fe43Sopenharmony_ci    HI_U32 u32TopWidth;
681bd4fe43Sopenharmony_ci    HI_U32 u32BottomWidth;
691bd4fe43Sopenharmony_ci    HI_U32 u32LeftWidth;
701bd4fe43Sopenharmony_ci    HI_U32 u32RightWidth;
711bd4fe43Sopenharmony_ci    HI_U32 u32Color;
721bd4fe43Sopenharmony_ci} BORDER_S;
731bd4fe43Sopenharmony_ci
741bd4fe43Sopenharmony_citypedef struct hiPOINT_S {
751bd4fe43Sopenharmony_ci    HI_S32 s32X;
761bd4fe43Sopenharmony_ci    HI_S32 s32Y;
771bd4fe43Sopenharmony_ci} POINT_S;
781bd4fe43Sopenharmony_ci
791bd4fe43Sopenharmony_citypedef struct hiSIZE_S {
801bd4fe43Sopenharmony_ci    HI_U32 u32Width;
811bd4fe43Sopenharmony_ci    HI_U32 u32Height;
821bd4fe43Sopenharmony_ci} SIZE_S;
831bd4fe43Sopenharmony_ci
841bd4fe43Sopenharmony_citypedef struct hiRECT_S {
851bd4fe43Sopenharmony_ci    HI_S32 s32X;
861bd4fe43Sopenharmony_ci    HI_S32 s32Y;
871bd4fe43Sopenharmony_ci    HI_U32 u32Width;
881bd4fe43Sopenharmony_ci    HI_U32 u32Height;
891bd4fe43Sopenharmony_ci} RECT_S;
901bd4fe43Sopenharmony_ci
911bd4fe43Sopenharmony_citypedef struct hiVIDEO_REGION_INFO_S {
921bd4fe43Sopenharmony_ci    HI_U32           u32RegionNum;       /* W; count of the region */
931bd4fe43Sopenharmony_ci    RECT_S ATTRIBUTE *pstRegion;         /* W; region attribute */
941bd4fe43Sopenharmony_ci} VIDEO_REGION_INFO_S;
951bd4fe43Sopenharmony_ci
961bd4fe43Sopenharmony_citypedef struct hiCROP_INFO_S {
971bd4fe43Sopenharmony_ci    HI_BOOL bEnable;
981bd4fe43Sopenharmony_ci    RECT_S  stRect;
991bd4fe43Sopenharmony_ci} CROP_INFO_S;
1001bd4fe43Sopenharmony_ci
1011bd4fe43Sopenharmony_citypedef struct hiFRAME_RATE_CTRL_S {
1021bd4fe43Sopenharmony_ci    HI_S32  s32SrcFrameRate;        /* RW; source frame rate */
1031bd4fe43Sopenharmony_ci    HI_S32  s32DstFrameRate;        /* RW; dest frame rate */
1041bd4fe43Sopenharmony_ci} FRAME_RATE_CTRL_S;
1051bd4fe43Sopenharmony_ci
1061bd4fe43Sopenharmony_citypedef enum hiASPECT_RATIO_E {
1071bd4fe43Sopenharmony_ci    ASPECT_RATIO_NONE   = 0,        /* full screen */
1081bd4fe43Sopenharmony_ci    ASPECT_RATIO_AUTO   = 1,        /* ratio no change, 1:1 */
1091bd4fe43Sopenharmony_ci    ASPECT_RATIO_MANUAL = 2,        /* ratio manual set */
1101bd4fe43Sopenharmony_ci    ASPECT_RATIO_BUTT
1111bd4fe43Sopenharmony_ci} ASPECT_RATIO_E;
1121bd4fe43Sopenharmony_ci
1131bd4fe43Sopenharmony_citypedef struct hiASPECT_RATIO_S {
1141bd4fe43Sopenharmony_ci    ASPECT_RATIO_E enMode;          /* aspect ratio mode: none/auto/manual */
1151bd4fe43Sopenharmony_ci    HI_U32         u32BgColor;      /* background color, RGB 888 */
1161bd4fe43Sopenharmony_ci    RECT_S         stVideoRect;     /* valid in ASPECT_RATIO_MANUAL mode */
1171bd4fe43Sopenharmony_ci} ASPECT_RATIO_S;
1181bd4fe43Sopenharmony_ci
1191bd4fe43Sopenharmony_ci/* we ONLY define picture format used, all unused will be deleted! */
1201bd4fe43Sopenharmony_citypedef enum hiPIXEL_FORMAT_E {
1211bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_444 = 0,
1221bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_555,
1231bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_565,
1241bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_888,
1251bd4fe43Sopenharmony_ci
1261bd4fe43Sopenharmony_ci    PIXEL_FORMAT_BGR_444,
1271bd4fe43Sopenharmony_ci    PIXEL_FORMAT_BGR_555,
1281bd4fe43Sopenharmony_ci    PIXEL_FORMAT_BGR_565,
1291bd4fe43Sopenharmony_ci    PIXEL_FORMAT_BGR_888,
1301bd4fe43Sopenharmony_ci
1311bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ARGB_1555,
1321bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ARGB_4444,
1331bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ARGB_8565,
1341bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ARGB_8888,
1351bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ARGB_2BPP,
1361bd4fe43Sopenharmony_ci
1371bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ABGR_1555,
1381bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ABGR_4444,
1391bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ABGR_8565,
1401bd4fe43Sopenharmony_ci    PIXEL_FORMAT_ABGR_8888,
1411bd4fe43Sopenharmony_ci
1421bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_BAYER_8BPP,
1431bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_BAYER_10BPP,
1441bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_BAYER_12BPP,
1451bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_BAYER_14BPP,
1461bd4fe43Sopenharmony_ci    PIXEL_FORMAT_RGB_BAYER_16BPP,
1471bd4fe43Sopenharmony_ci
1481bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YVU_PLANAR_422,
1491bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YVU_PLANAR_420,
1501bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YVU_PLANAR_444,
1511bd4fe43Sopenharmony_ci
1521bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YVU_SEMIPLANAR_422,
1531bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YVU_SEMIPLANAR_420,
1541bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YVU_SEMIPLANAR_444,
1551bd4fe43Sopenharmony_ci
1561bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YUV_SEMIPLANAR_422,
1571bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YUV_SEMIPLANAR_420,
1581bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YUV_SEMIPLANAR_444,
1591bd4fe43Sopenharmony_ci
1601bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YUYV_PACKAGE_422,
1611bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YVYU_PACKAGE_422,
1621bd4fe43Sopenharmony_ci    PIXEL_FORMAT_UYVY_PACKAGE_422,
1631bd4fe43Sopenharmony_ci    PIXEL_FORMAT_VYUY_PACKAGE_422,
1641bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YYUV_PACKAGE_422,
1651bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YYVU_PACKAGE_422,
1661bd4fe43Sopenharmony_ci    PIXEL_FORMAT_UVYY_PACKAGE_422,
1671bd4fe43Sopenharmony_ci    PIXEL_FORMAT_VUYY_PACKAGE_422,
1681bd4fe43Sopenharmony_ci    PIXEL_FORMAT_VY1UY0_PACKAGE_422,
1691bd4fe43Sopenharmony_ci
1701bd4fe43Sopenharmony_ci    PIXEL_FORMAT_YUV_400,
1711bd4fe43Sopenharmony_ci    PIXEL_FORMAT_UV_420,
1721bd4fe43Sopenharmony_ci
1731bd4fe43Sopenharmony_ci    /* SVP data format */
1741bd4fe43Sopenharmony_ci    PIXEL_FORMAT_BGR_888_PLANAR,
1751bd4fe43Sopenharmony_ci    PIXEL_FORMAT_HSV_888_PACKAGE,
1761bd4fe43Sopenharmony_ci    PIXEL_FORMAT_HSV_888_PLANAR,
1771bd4fe43Sopenharmony_ci    PIXEL_FORMAT_LAB_888_PACKAGE,
1781bd4fe43Sopenharmony_ci    PIXEL_FORMAT_LAB_888_PLANAR,
1791bd4fe43Sopenharmony_ci    PIXEL_FORMAT_S8C1,
1801bd4fe43Sopenharmony_ci    PIXEL_FORMAT_S8C2_PACKAGE,
1811bd4fe43Sopenharmony_ci    PIXEL_FORMAT_S8C2_PLANAR,
1821bd4fe43Sopenharmony_ci    PIXEL_FORMAT_S8C3_PLANAR,
1831bd4fe43Sopenharmony_ci    PIXEL_FORMAT_S16C1,
1841bd4fe43Sopenharmony_ci    PIXEL_FORMAT_U8C1,
1851bd4fe43Sopenharmony_ci    PIXEL_FORMAT_U16C1,
1861bd4fe43Sopenharmony_ci    PIXEL_FORMAT_S32C1,
1871bd4fe43Sopenharmony_ci    PIXEL_FORMAT_U32C1,
1881bd4fe43Sopenharmony_ci    PIXEL_FORMAT_U64C1,
1891bd4fe43Sopenharmony_ci    PIXEL_FORMAT_S64C1,
1901bd4fe43Sopenharmony_ci
1911bd4fe43Sopenharmony_ci    PIXEL_FORMAT_BUTT
1921bd4fe43Sopenharmony_ci} PIXEL_FORMAT_E;
1931bd4fe43Sopenharmony_ci
1941bd4fe43Sopenharmony_citypedef enum hiVIDEO_FIELD_E {
1951bd4fe43Sopenharmony_ci    VIDEO_FIELD_TOP         = 0x1,    /* even field */
1961bd4fe43Sopenharmony_ci    VIDEO_FIELD_BOTTOM      = 0x2,    /* odd field */
1971bd4fe43Sopenharmony_ci    VIDEO_FIELD_INTERLACED  = 0x3,    /* two interlaced fields */
1981bd4fe43Sopenharmony_ci    VIDEO_FIELD_FRAME       = 0x4,    /* frame */
1991bd4fe43Sopenharmony_ci
2001bd4fe43Sopenharmony_ci    VIDEO_FIELD_BUTT
2011bd4fe43Sopenharmony_ci} VIDEO_FIELD_E;
2021bd4fe43Sopenharmony_ci
2031bd4fe43Sopenharmony_citypedef enum hiVIDEO_FORMAT_E {
2041bd4fe43Sopenharmony_ci    VIDEO_FORMAT_LINEAR = 0,       /* nature video line */
2051bd4fe43Sopenharmony_ci    VIDEO_FORMAT_TILE_64x16,       /* tile cell: 64pixel x 16line */
2061bd4fe43Sopenharmony_ci    VIDEO_FORMAT_TILE_16x8,        /* tile cell: 16pixel x 8line */
2071bd4fe43Sopenharmony_ci    VIDEO_FORMAT_LINEAR_DISCRETE,  /* The data bits are aligned in bytes */
2081bd4fe43Sopenharmony_ci    VIDEO_FORMAT_BUTT
2091bd4fe43Sopenharmony_ci} VIDEO_FORMAT_E;
2101bd4fe43Sopenharmony_ci
2111bd4fe43Sopenharmony_citypedef enum hiCOMPRESS_MODE_E {
2121bd4fe43Sopenharmony_ci    COMPRESS_MODE_NONE = 0,   /* no compress */
2131bd4fe43Sopenharmony_ci    COMPRESS_MODE_SEG,        /* compress unit is 256x1 bytes as a segment. */
2141bd4fe43Sopenharmony_ci    COMPRESS_MODE_TILE,       /* compress unit is a tile. */
2151bd4fe43Sopenharmony_ci    COMPRESS_MODE_LINE,       /* compress unit is the whole line.  raw for VI */
2161bd4fe43Sopenharmony_ci    COMPRESS_MODE_FRAME,      /* compress unit is the whole frame. YUV for VI(3DNR), RGB for TDE(write)/VO(read) */
2171bd4fe43Sopenharmony_ci
2181bd4fe43Sopenharmony_ci    COMPRESS_MODE_BUTT
2191bd4fe43Sopenharmony_ci} COMPRESS_MODE_E;
2201bd4fe43Sopenharmony_ci
2211bd4fe43Sopenharmony_citypedef enum hiVIDEO_DISPLAY_MODE_E {
2221bd4fe43Sopenharmony_ci    VIDEO_DISPLAY_MODE_PREVIEW  = 0x0,
2231bd4fe43Sopenharmony_ci    VIDEO_DISPLAY_MODE_PLAYBACK = 0x1,
2241bd4fe43Sopenharmony_ci
2251bd4fe43Sopenharmony_ci    VIDEO_DISPLAY_MODE_BUTT
2261bd4fe43Sopenharmony_ci} VIDEO_DISPLAY_MODE_E;
2271bd4fe43Sopenharmony_ci
2281bd4fe43Sopenharmony_citypedef struct hiLUMA_INFO_S {
2291bd4fe43Sopenharmony_ci    HI_U64 u64LumaPixSum;      /* Luma sum of current frame */
2301bd4fe43Sopenharmony_ci    HI_U32 u32LumaPixAverage;  /* Luma average of current frame */
2311bd4fe43Sopenharmony_ci    HI_U64 u64PTS;             /* PTS of current frame  */
2321bd4fe43Sopenharmony_ci} LUMA_INFO_S;
2331bd4fe43Sopenharmony_ci
2341bd4fe43Sopenharmony_ci#define LDCI_STAT_WND_X         24
2351bd4fe43Sopenharmony_ci#define LDCI_STAT_WND_Y         16
2361bd4fe43Sopenharmony_ci
2371bd4fe43Sopenharmony_ci#define DCF_DRSCRIPTION_LENGTH  32
2381bd4fe43Sopenharmony_ci#define DCF_CAPTURE_TIME_LENGTH 20
2391bd4fe43Sopenharmony_ci
2401bd4fe43Sopenharmony_citypedef struct hiISP_DCF_CONST_INFO_S {
2411bd4fe43Sopenharmony_ci    HI_U8       au8ImageDescription[DCF_DRSCRIPTION_LENGTH];        /*Describes image*/
2421bd4fe43Sopenharmony_ci    HI_U8       au8Make[DCF_DRSCRIPTION_LENGTH];                    /*Shows manufacturer of digital cameras*/
2431bd4fe43Sopenharmony_ci    HI_U8       au8Model[DCF_DRSCRIPTION_LENGTH];                   /*Shows model number of digital cameras*/
2441bd4fe43Sopenharmony_ci    HI_U8       au8Software[DCF_DRSCRIPTION_LENGTH];                /*Shows firmware (internal software of digital cameras) version number*/
2451bd4fe43Sopenharmony_ci
2461bd4fe43Sopenharmony_ci    HI_U8       u8LightSource;     /* Light source, actually this means white balance setting. '0' means unknown,
2471bd4fe43Sopenharmony_ci                                    '1' daylight, '2' fluorescent, '3' tungsten, '10' flash, '17' standard light A,
2481bd4fe43Sopenharmony_ci                                    '18' standard light B, '19' standard light C, '20' D55, '21' D65, '22' D75,
2491bd4fe43Sopenharmony_ci                                    '255' other */
2501bd4fe43Sopenharmony_ci    HI_U32      u32FocalLength;        /* Focal length of lens used to take image. Unit is millimeter */
2511bd4fe43Sopenharmony_ci    HI_U8       u8SceneType;          /* Indicates the type of scene. Value '0x01'
2521bd4fe43Sopenharmony_ci                                        means that the image was directly photographed. */
2531bd4fe43Sopenharmony_ci    HI_U8       u8CustomRendered;        /* Indicates the use of special processing on image data, such as rendering
2541bd4fe43Sopenharmony_ci                                            geared to output. 0 = Normal process  1 = Custom process */
2551bd4fe43Sopenharmony_ci    HI_U8       u8FocalLengthIn35mmFilm;  /* Indicates the equivalent focal length assuming a 35mm film camera, in mm */
2561bd4fe43Sopenharmony_ci    HI_U8       u8SceneCaptureType;  /* Indicates the type of scene that was shot. 0 = Standard, 1 = Landscape,
2571bd4fe43Sopenharmony_ci                                        2 = Portrait,3 = Night scene. */
2581bd4fe43Sopenharmony_ci    HI_U8       u8GainControl;     /* Indicates the degree of overall image gain adjustment. 0 = None, 1 = Low gain up,
2591bd4fe43Sopenharmony_ci                                    2 = High gain up,3 = Low gain down,4 = High gain down. */
2601bd4fe43Sopenharmony_ci    HI_U8       u8Contrast;    /* Indicates the direction of contrast processing applied by the camera when the image
2611bd4fe43Sopenharmony_ci                                was shot. 0 = Normal,1 = Soft,2 = Hard */
2621bd4fe43Sopenharmony_ci    HI_U8       u8Saturation;   /* Indicates the direction of saturation processing applied by the camera when the image
2631bd4fe43Sopenharmony_ci                                was shot. 0 = Normal,1 = Low saturation,2 = High saturation */
2641bd4fe43Sopenharmony_ci    HI_U8       u8Sharpness;    /* Indicates the direction of sharpness processing applied by the camera when the image
2651bd4fe43Sopenharmony_ci                                    was shot. 0 = Normal,1 = Soft,2 = Hard . */
2661bd4fe43Sopenharmony_ci    HI_U8       u8MeteringMode;     /* Exposure metering method. '0' means unknown, '1' average, '2' center weighted
2671bd4fe43Sopenharmony_ci                                    average, '3' spot, '4' multi-spot, '5' multi-segment, '6' partial, '255' other */
2681bd4fe43Sopenharmony_ci} ISP_DCF_CONST_INFO_S;
2691bd4fe43Sopenharmony_ci
2701bd4fe43Sopenharmony_citypedef struct hiISP_DCF_UPDATE_INFO_S {
2711bd4fe43Sopenharmony_ci    HI_U32      u32ISOSpeedRatings;      /* CCD sensitivity equivalent to Ag-Hr film speedrate */
2721bd4fe43Sopenharmony_ci    HI_U32      u32ExposureTime;         /* Exposure time (reciprocal of shutter speed). */
2731bd4fe43Sopenharmony_ci    HI_U32      u32ExposureBiasValue;    /* Exposure bias (compensation) value of taking picture */
2741bd4fe43Sopenharmony_ci    HI_U8       u8ExposureProgram;       /* Exposure program that the camera used when image was taken.
2751bd4fe43Sopenharmony_ci                                         '1' means manual control, '2' program normal, '3' aperture priority,
2761bd4fe43Sopenharmony_ci                                         '4' shutter priority, '5' program creative (slow program),
2771bd4fe43Sopenharmony_ci                                         '6' program action(high-speed program), '7' portrait mode,
2781bd4fe43Sopenharmony_ci                                         '8' landscape mode */
2791bd4fe43Sopenharmony_ci    HI_U32      u32FNumber;              /* The actual F-number (F-stop) of lens when the image was taken */
2801bd4fe43Sopenharmony_ci    HI_U32      u32MaxApertureValue;     /* Maximum aperture value of lens. */
2811bd4fe43Sopenharmony_ci    HI_U8       u8ExposureMode;          /* Indicates the exposure mode set when the image was shot.
2821bd4fe43Sopenharmony_ci                                                   0 = Auto exposure,1 = Manual exposure, 2 = Auto bracket */
2831bd4fe43Sopenharmony_ci    HI_U8       u8WhiteBalance;          /* Indicates the white balance mode set when the image was shot.
2841bd4fe43Sopenharmony_ci                                                     0 = Auto white balance ,1 = Manual white balance */
2851bd4fe43Sopenharmony_ci} ISP_DCF_UPDATE_INFO_S;
2861bd4fe43Sopenharmony_ci
2871bd4fe43Sopenharmony_citypedef struct hiISP_DCF_INFO_S {
2881bd4fe43Sopenharmony_ci    ISP_DCF_CONST_INFO_S  stIspDCFConstInfo;
2891bd4fe43Sopenharmony_ci    ISP_DCF_UPDATE_INFO_S stIspDCFUpdateInfo;
2901bd4fe43Sopenharmony_ci} ISP_DCF_INFO_S;
2911bd4fe43Sopenharmony_ci
2921bd4fe43Sopenharmony_citypedef struct hiJPEG_DCF_S {
2931bd4fe43Sopenharmony_ci    HI_U8     au8CaptureTime[DCF_CAPTURE_TIME_LENGTH];     /* The date and time when the picture data was generated */
2941bd4fe43Sopenharmony_ci    HI_BOOL   bFlash;                                      /* whether the picture is captured when a flash lamp is on */
2951bd4fe43Sopenharmony_ci    HI_U32    u32DigitalZoomRatio;                         /* Indicates the digital zoom ratio when the image was shot.
2961bd4fe43Sopenharmony_ci                                                            If the numerator of the recorded value is 0, this indicates
2971bd4fe43Sopenharmony_ci                                                            that digital zoom was not used. */
2981bd4fe43Sopenharmony_ci    ISP_DCF_INFO_S  stIspDCFInfo;
2991bd4fe43Sopenharmony_ci} JPEG_DCF_S;
3001bd4fe43Sopenharmony_ci
3011bd4fe43Sopenharmony_citypedef struct hiISP_FRAME_INFO_S {
3021bd4fe43Sopenharmony_ci    HI_U32      u32ISO;                    /* ISP internal ISO : Again*Dgain*ISPgain */
3031bd4fe43Sopenharmony_ci    HI_U32      u32ExposureTime;           /* Exposure time (reciprocal of shutter speed),unit is us */
3041bd4fe43Sopenharmony_ci    HI_U32      u32IspDgain;
3051bd4fe43Sopenharmony_ci    HI_U32      u32Again;
3061bd4fe43Sopenharmony_ci    HI_U32      u32Dgain;
3071bd4fe43Sopenharmony_ci    HI_U32      au32Ratio[3];
3081bd4fe43Sopenharmony_ci    HI_U32      u32IspNrStrength;
3091bd4fe43Sopenharmony_ci    HI_U32      u32FNumber;                /* The actual F-number (F-stop) of lens when the image was taken */
3101bd4fe43Sopenharmony_ci    HI_U32      u32SensorID;               /* which sensor is used */
3111bd4fe43Sopenharmony_ci    HI_U32      u32SensorMode;
3121bd4fe43Sopenharmony_ci    HI_U32      u32HmaxTimes;              /* Sensor HmaxTimes,unit is ns */
3131bd4fe43Sopenharmony_ci    HI_U32      u32Vmax;                   /* Sensor Vmax,unit is line */
3141bd4fe43Sopenharmony_ci    HI_U32      u32VcNum;                  /* when dump wdr frame, which is long or short  exposure frame. */
3151bd4fe43Sopenharmony_ci} ISP_FRAME_INFO_S;
3161bd4fe43Sopenharmony_ci
3171bd4fe43Sopenharmony_ci#define CFACOLORPLANE     (3)
3181bd4fe43Sopenharmony_ci#define DNG_NP_SIZE       (6)
3191bd4fe43Sopenharmony_ci
3201bd4fe43Sopenharmony_citypedef struct hiDNG_RATIONAL_S {
3211bd4fe43Sopenharmony_ci    HI_U32 u32Numerator;    /* represents the numerator of a fraction, */
3221bd4fe43Sopenharmony_ci    HI_U32 u32Denominator;  /* the denominator. */
3231bd4fe43Sopenharmony_ci} DNG_RATIONAL_S;
3241bd4fe43Sopenharmony_ci
3251bd4fe43Sopenharmony_ci/*
3261bd4fe43Sopenharmony_ciDefines the structure of DNG image dynamic information
3271bd4fe43Sopenharmony_ci*/
3281bd4fe43Sopenharmony_citypedef struct hiDNG_IMAGE_DYNAMIC_INFO_S {
3291bd4fe43Sopenharmony_ci    HI_U32 au32BlackLevel[ISP_BAYER_CHN];           /* RO;Range: [0x0, 0xFFFF]; black level */
3301bd4fe43Sopenharmony_ci    DNG_RATIONAL_S astAsShotNeutral[CFACOLORPLANE]; /* specifies the selected white balance at time of capture,
3311bd4fe43Sopenharmony_ci                                                        encoded as the coordinates of a perfectly neutral color
3321bd4fe43Sopenharmony_ci                                                        in linear reference space values. */
3331bd4fe43Sopenharmony_ci    HI_DOUBLE adNoiseProfile[DNG_NP_SIZE];          /* RO;describes the amount of noise in a raw image */
3341bd4fe43Sopenharmony_ci} DNG_IMAGE_DYNAMIC_INFO_S;
3351bd4fe43Sopenharmony_ci
3361bd4fe43Sopenharmony_citypedef struct hiISP_HDR_INFO_S {
3371bd4fe43Sopenharmony_ci    HI_U32 u32ColorTemp;
3381bd4fe43Sopenharmony_ci    HI_U16 au16CCM[9];
3391bd4fe43Sopenharmony_ci    HI_U8  u8Saturation;
3401bd4fe43Sopenharmony_ci} ISP_HDR_INFO_S;
3411bd4fe43Sopenharmony_ci
3421bd4fe43Sopenharmony_citypedef struct hiISP_ATTACH_INFO_S {
3431bd4fe43Sopenharmony_ci    ISP_HDR_INFO_S     stIspHdr;
3441bd4fe43Sopenharmony_ci    HI_U32 u32ISO;
3451bd4fe43Sopenharmony_ci    HI_U32 u32InitISO;
3461bd4fe43Sopenharmony_ci    HI_U8 u8SnsWDRMode;
3471bd4fe43Sopenharmony_ci} ISP_ATTACH_INFO_S;
3481bd4fe43Sopenharmony_ci
3491bd4fe43Sopenharmony_citypedef enum hiFRAME_FLAG_E {
3501bd4fe43Sopenharmony_ci    FRAME_FLAG_SNAP_FLASH  = 0x1 << 0,
3511bd4fe43Sopenharmony_ci    FRAME_FLAG_SNAP_CUR      = 0x1 << 1,
3521bd4fe43Sopenharmony_ci    FRAME_FLAG_SNAP_REF       = 0x1 << 2,
3531bd4fe43Sopenharmony_ci    FRAME_FLAG_SNAP_END      = 0x1 << 31,
3541bd4fe43Sopenharmony_ci    FRAME_FLAG_BUTT
3551bd4fe43Sopenharmony_ci} FRAME_FLAG_E;
3561bd4fe43Sopenharmony_ci
3571bd4fe43Sopenharmony_ci/* RGGB=4 */
3581bd4fe43Sopenharmony_ci#define ISP_WB_GAIN_NUM         4
3591bd4fe43Sopenharmony_ci/* 3*3=9 matrix */
3601bd4fe43Sopenharmony_ci#define ISP_CAP_CCM_NUM         9
3611bd4fe43Sopenharmony_citypedef struct hiISP_CONFIG_INFO_S {
3621bd4fe43Sopenharmony_ci    HI_U32 u32ISO;
3631bd4fe43Sopenharmony_ci    HI_U32 u32IspDgain;
3641bd4fe43Sopenharmony_ci    HI_U32 u32ExposureTime;
3651bd4fe43Sopenharmony_ci    HI_U32 au32WhiteBalanceGain[ISP_WB_GAIN_NUM];
3661bd4fe43Sopenharmony_ci    HI_U32 u32ColorTemperature;
3671bd4fe43Sopenharmony_ci    HI_U16 au16CapCCM[ISP_CAP_CCM_NUM];
3681bd4fe43Sopenharmony_ci} ISP_CONFIG_INFO_S;
3691bd4fe43Sopenharmony_ci
3701bd4fe43Sopenharmony_citypedef struct hiVIDEO_SUPPLEMENT_S {
3711bd4fe43Sopenharmony_ci    HI_U64   u64JpegDCFPhyAddr;
3721bd4fe43Sopenharmony_ci    HI_U64   u64IspInfoPhyAddr;
3731bd4fe43Sopenharmony_ci    HI_U64   u64LowDelayPhyAddr;
3741bd4fe43Sopenharmony_ci    HI_U64   u64MotionDataPhyAddr;
3751bd4fe43Sopenharmony_ci    HI_U64   u64FrameDNGPhyAddr;
3761bd4fe43Sopenharmony_ci
3771bd4fe43Sopenharmony_ci    HI_VOID *ATTRIBUTE pJpegDCFVirAddr;        /* JPEG_DCF_S, used in JPEG DCF */
3781bd4fe43Sopenharmony_ci    HI_VOID *ATTRIBUTE pIspInfoVirAddr;        /* ISP_FRAME_INFO_S, used in ISP debug, when get raw and send raw */
3791bd4fe43Sopenharmony_ci    HI_VOID *ATTRIBUTE pLowDelayVirAddr;       /* used in low delay */
3801bd4fe43Sopenharmony_ci    HI_VOID *ATTRIBUTE pMotionDataVirAddr;     /* vpss 3dnr use: gme motion data, Filter motion data, gyro data. */
3811bd4fe43Sopenharmony_ci    HI_VOID *ATTRIBUTE pFrameDNGVirAddr;
3821bd4fe43Sopenharmony_ci} VIDEO_SUPPLEMENT_S;
3831bd4fe43Sopenharmony_ci
3841bd4fe43Sopenharmony_citypedef enum hiCOLOR_GAMUT_E {
3851bd4fe43Sopenharmony_ci    COLOR_GAMUT_BT601 = 0,
3861bd4fe43Sopenharmony_ci    COLOR_GAMUT_BT709,
3871bd4fe43Sopenharmony_ci    COLOR_GAMUT_BT2020, /* Only used for Hi3559AV100 */
3881bd4fe43Sopenharmony_ci    COLOR_GAMUT_USER,
3891bd4fe43Sopenharmony_ci    COLOR_GAMUT_BUTT
3901bd4fe43Sopenharmony_ci} COLOR_GAMUT_E;
3911bd4fe43Sopenharmony_ci
3921bd4fe43Sopenharmony_citypedef struct hiISP_COLORGAMMUT_INFO_S {
3931bd4fe43Sopenharmony_ci    COLOR_GAMUT_E enColorGamut;
3941bd4fe43Sopenharmony_ci} ISP_COLORGAMMUT_INFO_S;
3951bd4fe43Sopenharmony_ci
3961bd4fe43Sopenharmony_citypedef enum hiDYNAMIC_RANGE_E {
3971bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_SDR8 = 0,
3981bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_SDR10,
3991bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_HDR10,
4001bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_HLG,
4011bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_SLF,
4021bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_XDR,
4031bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_BUTT
4041bd4fe43Sopenharmony_ci} DYNAMIC_RANGE_E;
4051bd4fe43Sopenharmony_ci
4061bd4fe43Sopenharmony_citypedef enum hiDATA_BITWIDTH_E {
4071bd4fe43Sopenharmony_ci    DATA_BITWIDTH_8 = 0,
4081bd4fe43Sopenharmony_ci    DATA_BITWIDTH_10,
4091bd4fe43Sopenharmony_ci    DATA_BITWIDTH_12,
4101bd4fe43Sopenharmony_ci    DATA_BITWIDTH_14,
4111bd4fe43Sopenharmony_ci    DATA_BITWIDTH_16,
4121bd4fe43Sopenharmony_ci    DATA_BITWIDTH_BUTT
4131bd4fe43Sopenharmony_ci} DATA_BITWIDTH_E;
4141bd4fe43Sopenharmony_ci
4151bd4fe43Sopenharmony_citypedef struct hiVIDEO_FRAME_S {
4161bd4fe43Sopenharmony_ci    HI_U32              u32Width;
4171bd4fe43Sopenharmony_ci    HI_U32              u32Height;
4181bd4fe43Sopenharmony_ci    VIDEO_FIELD_E       enField;
4191bd4fe43Sopenharmony_ci    PIXEL_FORMAT_E      enPixelFormat;
4201bd4fe43Sopenharmony_ci    VIDEO_FORMAT_E      enVideoFormat;
4211bd4fe43Sopenharmony_ci    COMPRESS_MODE_E     enCompressMode;
4221bd4fe43Sopenharmony_ci    DYNAMIC_RANGE_E     enDynamicRange;
4231bd4fe43Sopenharmony_ci    COLOR_GAMUT_E       enColorGamut;
4241bd4fe43Sopenharmony_ci    HI_U32              u32HeaderStride[3];
4251bd4fe43Sopenharmony_ci    HI_U32              u32Stride[3];
4261bd4fe43Sopenharmony_ci    HI_U32              u32ExtStride[3];
4271bd4fe43Sopenharmony_ci
4281bd4fe43Sopenharmony_ci    HI_U64              u64HeaderPhyAddr[3];
4291bd4fe43Sopenharmony_ci    HI_U64              u64HeaderVirAddr[3];
4301bd4fe43Sopenharmony_ci    HI_U64              u64PhyAddr[3];
4311bd4fe43Sopenharmony_ci    HI_U64              u64VirAddr[3];
4321bd4fe43Sopenharmony_ci    HI_U64              u64ExtPhyAddr[3];
4331bd4fe43Sopenharmony_ci    HI_U64              u64ExtVirAddr[3];
4341bd4fe43Sopenharmony_ci
4351bd4fe43Sopenharmony_ci    HI_S16              s16OffsetTop;        /* top offset of show area */
4361bd4fe43Sopenharmony_ci    HI_S16              s16OffsetBottom;    /* bottom offset of show area */
4371bd4fe43Sopenharmony_ci    HI_S16              s16OffsetLeft;        /* left offset of show area */
4381bd4fe43Sopenharmony_ci    HI_S16              s16OffsetRight;        /* right offset of show area */
4391bd4fe43Sopenharmony_ci
4401bd4fe43Sopenharmony_ci    HI_U32              u32MaxLuminance;
4411bd4fe43Sopenharmony_ci    HI_U32              u32MinLuminance;
4421bd4fe43Sopenharmony_ci
4431bd4fe43Sopenharmony_ci    HI_U32              u32TimeRef;
4441bd4fe43Sopenharmony_ci    HI_U64              u64PTS;
4451bd4fe43Sopenharmony_ci
4461bd4fe43Sopenharmony_ci    HI_U64              u64PrivateData;
4471bd4fe43Sopenharmony_ci    HI_U32              u32FrameFlag;     /* FRAME_FLAG_E, can be OR operation. */
4481bd4fe43Sopenharmony_ci    VIDEO_SUPPLEMENT_S  stSupplement;
4491bd4fe43Sopenharmony_ci} VIDEO_FRAME_S;
4501bd4fe43Sopenharmony_ci
4511bd4fe43Sopenharmony_citypedef struct hiVIDEO_FRAME_INFO_S {
4521bd4fe43Sopenharmony_ci    VIDEO_FRAME_S stVFrame;
4531bd4fe43Sopenharmony_ci    HI_U32        u32PoolId;
4541bd4fe43Sopenharmony_ci    MOD_ID_E      enModId;
4551bd4fe43Sopenharmony_ci} VIDEO_FRAME_INFO_S;
4561bd4fe43Sopenharmony_ci
4571bd4fe43Sopenharmony_citypedef struct hiVB_CAL_CONFIG_S {
4581bd4fe43Sopenharmony_ci    HI_U32 u32VBSize;
4591bd4fe43Sopenharmony_ci
4601bd4fe43Sopenharmony_ci    HI_U32 u32HeadStride;
4611bd4fe43Sopenharmony_ci    HI_U32 u32HeadSize;
4621bd4fe43Sopenharmony_ci    HI_U32 u32HeadYSize;
4631bd4fe43Sopenharmony_ci
4641bd4fe43Sopenharmony_ci    HI_U32 u32MainStride;
4651bd4fe43Sopenharmony_ci    HI_U32 u32MainSize;
4661bd4fe43Sopenharmony_ci    HI_U32 u32MainYSize;
4671bd4fe43Sopenharmony_ci
4681bd4fe43Sopenharmony_ci    HI_U32 u32ExtStride;
4691bd4fe43Sopenharmony_ci    HI_U32 u32ExtYSize;
4701bd4fe43Sopenharmony_ci} VB_CAL_CONFIG_S;
4711bd4fe43Sopenharmony_ci
4721bd4fe43Sopenharmony_citypedef struct hiBITMAP_S {
4731bd4fe43Sopenharmony_ci    PIXEL_FORMAT_E enPixelFormat;  /* Bitmap's pixel format */
4741bd4fe43Sopenharmony_ci    HI_U32 u32Width;               /* Bitmap's width */
4751bd4fe43Sopenharmony_ci    HI_U32 u32Height;              /* Bitmap's height */
4761bd4fe43Sopenharmony_ci    HI_VOID *ATTRIBUTE pData;      /* Address of Bitmap's data */
4771bd4fe43Sopenharmony_ci} BITMAP_S;
4781bd4fe43Sopenharmony_ci
4791bd4fe43Sopenharmony_citypedef struct hiLDC_ATTR_S {
4801bd4fe43Sopenharmony_ci    HI_BOOL    bAspect;             /* RW;Range: [0, 1];Whether aspect ration  is keep */
4811bd4fe43Sopenharmony_ci    HI_S32     s32XRatio;           /* RW; Range: [0, 100]; field angle ration of  horizontal,valid when bAspect=0. */
4821bd4fe43Sopenharmony_ci    HI_S32     s32YRatio;           /* RW; Range: [0, 100]; field angle ration of  vertical,valid when bAspect=0. */
4831bd4fe43Sopenharmony_ci    HI_S32     s32XYRatio;          /* RW; Range: [0, 100]; field angle ration of  all,valid when bAspect=1. */
4841bd4fe43Sopenharmony_ci    HI_S32 s32CenterXOffset;        /* RW; Range: [-511, 511]; horizontal offset of the image distortion center
4851bd4fe43Sopenharmony_ci                                     * relative to image center. */
4861bd4fe43Sopenharmony_ci    HI_S32 s32CenterYOffset;        /* RW; Range: [-511, 511]; vertical offset of the image distortion center
4871bd4fe43Sopenharmony_ci                                       relative to image center. */
4881bd4fe43Sopenharmony_ci    HI_S32 s32DistortionRatio;      /* RW; Range: [-300, 500]; LDC Distortion ratio.When spread on, s32DistortionRatio
4891bd4fe43Sopenharmony_ci                                       range should be [0, 500] */
4901bd4fe43Sopenharmony_ci} LDC_ATTR_S;
4911bd4fe43Sopenharmony_ci
4921bd4fe43Sopenharmony_citypedef struct hiLDCV2_ATTR_S {
4931bd4fe43Sopenharmony_ci    HI_S32 s32FocalLenX;              /* RW; focal length in horizontal direction, with 2 decimal numbers */
4941bd4fe43Sopenharmony_ci    HI_S32 s32FocalLenY;              /* RW; focal length in vertical direction, with 2 decimal numbers */
4951bd4fe43Sopenharmony_ci    HI_S32 s32CoorShiftX;             /* RW; coordinate of image center, with 2 decimal numbers */
4961bd4fe43Sopenharmony_ci    HI_S32 s32CoorShiftY;             /* RW; Y coordinate of image center, with 2 decimal numbers */
4971bd4fe43Sopenharmony_ci    HI_S32 as32SrcCaliRatio[SRC_LENS_COEF_SEG][SRC_LENS_COEF_NUM];  /* RW; lens distortion coefficients of the source
4981bd4fe43Sopenharmony_ci                                                                        image, with 5 decimal numbers */
4991bd4fe43Sopenharmony_ci    HI_S32 s32SrcJunPt;                                             /* RW; Junction Point of the two segments */
5001bd4fe43Sopenharmony_ci    HI_S32 as32DstCaliRatio[DST_LENS_COEF_SEG][DST_LENS_COEF_NUM];  /* RW; lens distortion coefficients, with 5 decimal
5011bd4fe43Sopenharmony_ci                                                                        numbers */
5021bd4fe43Sopenharmony_ci    HI_S32 as32DstJunPt[DST_LENS_COEF_SEG_POINT];                   /* RW; Junction Point of the three segments */
5031bd4fe43Sopenharmony_ci    HI_S32 s32MaxDu;                                                /* RW; max undistorted distance before 3rd
5041bd4fe43Sopenharmony_ci                                                                        polynomial drop, with 16bits decimal */
5051bd4fe43Sopenharmony_ci} LDCV2_ATTR_S;
5061bd4fe43Sopenharmony_ci
5071bd4fe43Sopenharmony_citypedef enum hiLDC_VIEW_TYPE_E {
5081bd4fe43Sopenharmony_ci    LDC_VIEW_TYPE_ALL = 0,  /* View scale all but x and y independently, this will keep both x and y axis,
5091bd4fe43Sopenharmony_ci                                but corner maybe lost */
5101bd4fe43Sopenharmony_ci    LDC_VIEW_TYPE_CROP = 1,  /* Not use view scale, this will lost some side and corner */
5111bd4fe43Sopenharmony_ci
5121bd4fe43Sopenharmony_ci    LDC_VIEW_TYPE_BUTT,
5131bd4fe43Sopenharmony_ci} LDC_VIEW_TYPE_E;
5141bd4fe43Sopenharmony_ci
5151bd4fe43Sopenharmony_citypedef struct hiLDCV3_ATTR_S {
5161bd4fe43Sopenharmony_ci    LDC_VIEW_TYPE_E enViewType; /* RW; Range: [0, 1], 0: all mode, 1: crop mode. */
5171bd4fe43Sopenharmony_ci    HI_S32 s32CenterXOffset;    /* RW; Range: ABS(s32CenterXOffset)->[0, min(128, width*0.08)], horizontal offset of
5181bd4fe43Sopenharmony_ci                                    the image distortion center relative to image center. */
5191bd4fe43Sopenharmony_ci    HI_S32 s32CenterYOffset;    /* RW; Range: ABS(s32CenterXOffset)->[0, min(128, height*0.08)], vertical offset of
5201bd4fe43Sopenharmony_ci                                    the image distortion center relative to image center. */
5211bd4fe43Sopenharmony_ci    HI_S32 s32DistortionRatio;  /* RW; Range: [-300, 300], LDC Distortion ratio. */
5221bd4fe43Sopenharmony_ci    HI_S32 s32MinRatio;         /* RW; Range: [-300, 300], to remove the black region around when performing
5231bd4fe43Sopenharmony_ci                                    pinchusion distortion correction with crop mode. */
5241bd4fe43Sopenharmony_ci} LDCV3_ATTR_S;
5251bd4fe43Sopenharmony_ci
5261bd4fe43Sopenharmony_citypedef enum hiROTATION_VIEW_TYPE_E {
5271bd4fe43Sopenharmony_ci    ROTATION_VIEW_TYPE_ALL      = 0, /* View all source Image,no lose */
5281bd4fe43Sopenharmony_ci    ROTATION_VIEW_TYPE_TYPICAL  = 1, /* View from rotation Image with source size,same lose */
5291bd4fe43Sopenharmony_ci    ROTATION_VIEW_TYPE_INSIDE   = 2, /* View with no black section,all  in dest Image */
5301bd4fe43Sopenharmony_ci    ROTATION_VIEW_TYPE_BUTT,
5311bd4fe43Sopenharmony_ci} ROTATION_VIEW_TYPE_E;
5321bd4fe43Sopenharmony_ci
5331bd4fe43Sopenharmony_citypedef struct hiROTATION_EX_S {
5341bd4fe43Sopenharmony_ci    ROTATION_VIEW_TYPE_E enViewType;       /* RW;Range: [0, 2];Rotation mode */
5351bd4fe43Sopenharmony_ci    HI_U32               u32Angle;         /* RW;Range: [0,360];Rotation Angle:[0,360] */
5361bd4fe43Sopenharmony_ci    HI_S32               s32CenterXOffset; /* RW;Range: [-511, 511];Horizontal offset of the image distortion center
5371bd4fe43Sopenharmony_ci                                            relative to image center. */
5381bd4fe43Sopenharmony_ci    HI_S32               s32CenterYOffset; /* RW;Range: [-511, 511];Vertical offset of the image distortion center
5391bd4fe43Sopenharmony_ci                                            relative to image center. */
5401bd4fe43Sopenharmony_ci    SIZE_S               stDestSize;       /* RW;Dest size of any angle rotation */
5411bd4fe43Sopenharmony_ci} ROTATION_EX_S;
5421bd4fe43Sopenharmony_ci
5431bd4fe43Sopenharmony_citypedef enum hiWDR_MODE_E {
5441bd4fe43Sopenharmony_ci    WDR_MODE_NONE = 0,
5451bd4fe43Sopenharmony_ci    WDR_MODE_BUILT_IN,
5461bd4fe43Sopenharmony_ci    WDR_MODE_QUDRA,
5471bd4fe43Sopenharmony_ci
5481bd4fe43Sopenharmony_ci    WDR_MODE_2To1_LINE,
5491bd4fe43Sopenharmony_ci    WDR_MODE_2To1_FRAME,
5501bd4fe43Sopenharmony_ci    WDR_MODE_2To1_FRAME_FULL_RATE,
5511bd4fe43Sopenharmony_ci
5521bd4fe43Sopenharmony_ci    WDR_MODE_3To1_LINE,
5531bd4fe43Sopenharmony_ci    WDR_MODE_3To1_FRAME,
5541bd4fe43Sopenharmony_ci    WDR_MODE_3To1_FRAME_FULL_RATE,
5551bd4fe43Sopenharmony_ci
5561bd4fe43Sopenharmony_ci    WDR_MODE_4To1_LINE,
5571bd4fe43Sopenharmony_ci    WDR_MODE_4To1_FRAME,
5581bd4fe43Sopenharmony_ci    WDR_MODE_4To1_FRAME_FULL_RATE,
5591bd4fe43Sopenharmony_ci
5601bd4fe43Sopenharmony_ci    WDR_MODE_BUTT,
5611bd4fe43Sopenharmony_ci} WDR_MODE_E;
5621bd4fe43Sopenharmony_ci
5631bd4fe43Sopenharmony_citypedef enum hiFRAME_INTERRUPT_TYPE_E {
5641bd4fe43Sopenharmony_ci    FRAME_INTERRUPT_START,
5651bd4fe43Sopenharmony_ci    FRAME_INTERRUPT_EARLY,
5661bd4fe43Sopenharmony_ci    FRAME_INTERRUPT_EARLY_END,
5671bd4fe43Sopenharmony_ci    FRAME_INTERRUPT_EARLY_ONE_BUF,
5681bd4fe43Sopenharmony_ci    FRAME_INTERRUPT_EARLY_END_ONE_BUF,
5691bd4fe43Sopenharmony_ci    FRAME_INTERRUPT_BUTT,
5701bd4fe43Sopenharmony_ci} FRAME_INTERRUPT_TYPE_E;
5711bd4fe43Sopenharmony_ci
5721bd4fe43Sopenharmony_citypedef struct hiFRAME_INTERRUPT_ATTR_S {
5731bd4fe43Sopenharmony_ci    FRAME_INTERRUPT_TYPE_E enIntType;
5741bd4fe43Sopenharmony_ci    HI_U32 u32EarlyLine;
5751bd4fe43Sopenharmony_ci} FRAME_INTERRUPT_ATTR_S;
5761bd4fe43Sopenharmony_ci
5771bd4fe43Sopenharmony_ci#ifdef __cplusplus
5781bd4fe43Sopenharmony_ci#if __cplusplus
5791bd4fe43Sopenharmony_ci}
5801bd4fe43Sopenharmony_ci#endif
5811bd4fe43Sopenharmony_ci#endif /* __cplusplus */
5821bd4fe43Sopenharmony_ci
5831bd4fe43Sopenharmony_ci#endif /* _HI_COMM_VIDEO_H_ */
5841bd4fe43Sopenharmony_ci
585