1 /* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef HI_COMM_VI_H 17 #define HI_COMM_VI_H 18 19 #include "hi_common.h" 20 #include "hi_errno.h" 21 #include "hi_comm_video.h" 22 #include "hi_comm_gdc.h" 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" { 27 #endif 28 #endif /* __cplusplus */ 29 30 #define VI_MAX_ADCHN_NUM 4UL 31 32 #define VI_PMFCOEF_NUM 9UL 33 #define VI_COMPMASK_NUM 2UL 34 #define VI_PRO_MAX_FRAME_NUM 8UL 35 36 #define VI_INVALID_FRMRATE (-1) 37 #define VI_CHN0 0 38 #define VI_CHN1 1 39 #define VI_CHN2 2 40 #define VI_CHN3 3 41 #define VI_INVALID_CHN (-1) 42 43 #define VI_MAX_VC_NUM 4U 44 45 typedef struct hiVI_LOW_DELAY_INFO_S { 46 HI_BOOL bEnable; /* RW; Low delay enable. */ 47 HI_U32 u32LineCnt; /* RW; Range: [32, 16384]; Low delay shoreline. */ 48 } VI_LOW_DELAY_INFO_S; 49 50 /* Information of raw data cmpresss param */ 51 typedef struct hiVI_CMP_PARAM_S { 52 HI_U8 au8CmpParam[VI_CMP_PARAM_SIZE]; 53 } VI_CMP_PARAM_S; 54 55 typedef enum hi_VI_USERPIC_MODE_E { 56 VI_USERPIC_MODE_PIC = 0, /* YUV picture */ 57 VI_USERPIC_MODE_BGC, /* Background picture only with a color */ 58 VI_USERPIC_MODE_BUTT, 59 } VI_USERPIC_MODE_E; 60 61 typedef struct hiVI_USERPIC_BGC_S { 62 HI_U32 u32BgColor; 63 } VI_USERPIC_BGC_S; 64 65 typedef struct hiVI_USERPIC_ATTR_S { 66 VI_USERPIC_MODE_E enUsrPicMode; /* User picture mode */ 67 union { 68 VIDEO_FRAME_INFO_S stUsrPicFrm; /* Information about a YUV picture */ 69 VI_USERPIC_BGC_S stUsrPicBg; /* Information about a background picture only with a color */ 70 } unUsrPic; 71 } VI_USERPIC_ATTR_S; 72 73 typedef enum hiEN_VI_ERR_CODE_E { 74 ERR_VI_FAILED_NOTENABLE = 64, /* device or channel not enable */ 75 ERR_VI_FAILED_NOTDISABLE, /* device not disable */ 76 ERR_VI_FAILED_CHNOTDISABLE, /* channel not disable */ 77 ERR_VI_CFG_TIMEOUT, /* config timeout */ 78 ERR_VI_NORM_UNMATCH, /* video norm of ADC and VIU is unmatch */ 79 ERR_VI_INVALID_WAYID, /* invlalid way ID */ 80 ERR_VI_INVALID_PHYCHNID, /* invalid phychn id */ 81 ERR_VI_FAILED_NOTBIND, /* device or channel not bind */ 82 ERR_VI_FAILED_BINDED, /* device or channel not unbind */ 83 ERR_VI_DIS_PROCESS_FAIL, /* dis process failed */ 84 ERR_VI_INVALID_MCFGRPID /* invlalid mcf group ID */ 85 } EN_VI_ERR_CODE_E; 86 87 #define HI_ERR_VI_INVALID_PARA HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM) 88 #define HI_ERR_VI_INVALID_DEVID HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID) 89 #define HI_ERR_VI_INVALID_PIPEID HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_PIPEID) 90 #define HI_ERR_VI_INVALID_STITCHGRPID HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_STITCHGRPID) 91 #define HI_ERR_VI_INVALID_CHNID HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID) 92 #define HI_ERR_VI_INVALID_NULL_PTR HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR) 93 #define HI_ERR_VI_FAILED_NOTCONFIG HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_CONFIG) 94 #define HI_ERR_VI_SYS_NOTREADY HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY) 95 #define HI_ERR_VI_BUF_EMPTY HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY) 96 #define HI_ERR_VI_BUF_FULL HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL) 97 #define HI_ERR_VI_NOMEM HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM) 98 #define HI_ERR_VI_NOT_SUPPORT HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT) 99 #define HI_ERR_VI_BUSY HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY) 100 #define HI_ERR_VI_NOT_PERM HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM) 101 102 #define HI_ERR_VI_FAILED_NOTENABLE HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_FAILED_NOTENABLE) 103 #define HI_ERR_VI_FAILED_NOTDISABLE HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_FAILED_NOTDISABLE) 104 #define HI_ERR_VI_FAILED_CHNOTDISABLE HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_FAILED_CHNOTDISABLE) 105 #define HI_ERR_VI_CFG_TIMEOUT HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_CFG_TIMEOUT) 106 #define HI_ERR_VI_NORM_UNMATCH HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_NORM_UNMATCH) 107 #define HI_ERR_VI_INVALID_WAYID HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_INVALID_WAYID) 108 #define HI_ERR_VI_INVALID_PHYCHNID HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_INVALID_PHYCHNID) 109 #define HI_ERR_VI_FAILED_NOTBIND HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_FAILED_NOTBIND) 110 #define HI_ERR_VI_FAILED_BINDED HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, ERR_VI_FAILED_BINDED) 111 112 #define HI_ERR_VI_PIPE_EXIST HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_EXIST) 113 #define HI_ERR_VI_PIPE_UNEXIST HI_DEF_ERR(HI_ID_VI, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST) 114 115 /* interface mode of video input */ 116 typedef enum hiVI_INTF_MODE_E { 117 VI_MODE_BT656 = 0, /* ITU-R BT.656 YUV4:2:2 */ 118 VI_MODE_BT656_PACKED_YUV, /* ITU-R BT.656 packed YUV4:2:2 */ 119 VI_MODE_BT601, /* ITU-R BT.601 YUV4:2:2 */ 120 VI_MODE_DIGITAL_CAMERA, /* digatal camera mode */ 121 VI_MODE_BT1120_STANDARD, /* BT.1120 progressive mode */ 122 VI_MODE_BT1120_INTERLEAVED, /* BT.1120 interstage mode */ 123 VI_MODE_MIPI, /* MIPI RAW mode */ 124 VI_MODE_MIPI_YUV420_NORMAL, /* MIPI YUV420 normal mode */ 125 VI_MODE_MIPI_YUV420_LEGACY, /* MIPI YUV420 legacy mode */ 126 VI_MODE_MIPI_YUV422, /* MIPI YUV422 mode */ 127 VI_MODE_LVDS, /* LVDS mode */ 128 VI_MODE_HISPI, /* HiSPi mode */ 129 VI_MODE_SLVS, /* SLVS mode */ 130 131 VI_MODE_BUTT 132 } VI_INTF_MODE_E; 133 134 /* Input mode */ 135 typedef enum hiVI_INPUT_MODE_E { 136 VI_INPUT_MODE_BT656 = 0, /* ITU-R BT.656 YUV4:2:2 */ 137 VI_INPUT_MODE_BT601, /* ITU-R BT.601 YUV4:2:2 */ 138 VI_INPUT_MODE_DIGITAL_CAMERA, /* digatal camera mode */ 139 VI_INPUT_MODE_INTERLEAVED, /* interstage mode */ 140 VI_INPUT_MODE_MIPI, /* MIPI mode */ 141 VI_INPUT_MODE_LVDS, /* LVDS mode */ 142 VI_INPUT_MODE_HISPI, /* HiSPi mode */ 143 VI_INPUT_MODE_SLVS, /* SLVS mode */ 144 145 VI_INPUT_MODE_BUTT 146 } VI_INPUT_MODE_E; 147 148 /* Work mode */ 149 typedef enum hiVI_WORK_MODE_E { 150 VI_WORK_MODE_1Multiplex = 0, /* 1 Multiplex mode */ 151 VI_WORK_MODE_2Multiplex, /* 2 Multiplex mode */ 152 VI_WORK_MODE_3Multiplex, /* 3 Multiplex mode */ 153 VI_WORK_MODE_4Multiplex, /* 4 Multiplex mode */ 154 155 VI_WORK_MODE_BUTT 156 } VI_WORK_MODE_E; 157 158 /* whether an input picture is interlaced or progressive */ 159 typedef enum hiVI_SCAN_MODE_E { 160 VI_SCAN_INTERLACED = 0, /* interlaced mode */ 161 VI_SCAN_PROGRESSIVE, /* progressive mode */ 162 163 VI_SCAN_BUTT 164 } VI_SCAN_MODE_E; 165 166 /* Sequence of YUV data */ 167 typedef enum hiVI_YUV_DATA_SEQ_E { 168 VI_DATA_SEQ_VUVU = 0, /* The input sequence of the second component(only contains u and v) in BT. 169 1120 mode is VUVU */ 170 VI_DATA_SEQ_UVUV, /* The input sequence of the second component(only contains u and v) in BT. 171 1120 mode is UVUV */ 172 173 VI_DATA_SEQ_UYVY, /* The input sequence of YUV is UYVY */ 174 VI_DATA_SEQ_VYUY, /* The input sequence of YUV is VYUY */ 175 VI_DATA_SEQ_YUYV, /* The input sequence of YUV is YUYV */ 176 VI_DATA_SEQ_YVYU, /* The input sequence of YUV is YVYU */ 177 178 VI_DATA_SEQ_BUTT 179 } VI_YUV_DATA_SEQ_E; 180 181 /* Clock edge mode */ 182 typedef enum hiVI_CLK_EDGE_E { 183 VI_CLK_EDGE_SINGLE_UP = 0, /* single-edge mode and in rising edge */ 184 VI_CLK_EDGE_SINGLE_DOWN, /* single-edge mode and in falling edge */ 185 186 VI_CLK_EDGE_BUTT 187 } VI_CLK_EDGE_E; 188 189 /* Component mode */ 190 typedef enum hiVI_COMPONENT_MODE_E { 191 VI_COMPONENT_MODE_SINGLE = 0, /* single component mode */ 192 VI_COMPONENT_MODE_DOUBLE, /* double component mode */ 193 194 VI_COMPONENT_MODE_BUTT 195 } VI_COMPONENT_MODE_E; 196 197 /* Y/C composite or separation mode */ 198 typedef enum hiVI_COMBINE_MODE_E { 199 VI_COMBINE_COMPOSITE = 0, /* Composite mode */ 200 VI_COMBINE_SEPARATE, /* Separate mode */ 201 202 VI_COMBINE_BUTT 203 } VI_COMBINE_MODE_E; 204 205 /* Attribute of the vertical synchronization signal */ 206 typedef enum hiVI_VSYNC_E { 207 VI_VSYNC_FIELD = 0, /* Field/toggle mode:a signal reversal means a new frame or a field */ 208 VI_VSYNC_PULSE, /* Pusle/effective mode:a pusle or an effective signal means a new frame or a field */ 209 210 VI_VSYNC_BUTT 211 } VI_VSYNC_E; 212 213 /* Polarity of the vertical synchronization signal */ 214 typedef enum hiVI_VSYNC_NEG_E { 215 VI_VSYNC_NEG_HIGH = 0, /* if VIU_VSYNC_E = VIU_VSYNC_FIELD, then the vertical synchronization signal of 216 even field is high-level, 217 if VIU_VSYNC_E = VIU_VSYNC_PULSE,then the vertical synchronization 218 pulse is positive pulse. */ 219 VI_VSYNC_NEG_LOW, /* if VIU_VSYNC_E = VIU_VSYNC_FIELD, then the vertical synchronization signal 220 of even field is low-level, 221 if VIU_VSYNC_E = VIU_VSYNC_PULSE,then the vertical synchronization 222 pulse is negative pulse. */ 223 VI_VSYNC_NEG_BUTT 224 } VI_VSYNC_NEG_E; 225 226 /* Attribute of the horizontal synchronization signal */ 227 typedef enum hiVI_HSYNC_E { 228 VI_HSYNC_VALID_SINGNAL = 0, /* the horizontal synchronization is valid signal mode */ 229 VI_HSYNC_PULSE, /* the horizontal synchronization is pulse mode, a new pulse means 230 the beginning of a new line */ 231 232 VI_HSYNC_BUTT 233 } VI_HSYNC_E; 234 235 /* Polarity of the horizontal synchronization signal */ 236 typedef enum hiVI_HSYNC_NEG_E { 237 VI_HSYNC_NEG_HIGH = 0, /* if VI_HSYNC_E = VI_HSYNC_VALID_SINGNAL, then the valid horizontal 238 synchronization signal is high-level; 239 if VI_HSYNC_E = VI_HSYNC_PULSE,then the horizontal synchronization 240 pulse is positive pulse */ 241 VI_HSYNC_NEG_LOW, /* if VI_HSYNC_E = VI_HSYNC_VALID_SINGNAL, then the valid horizontal 242 synchronization signal is low-level; 243 if VI_HSYNC_E = VI_HSYNC_PULSE, then the horizontal synchronization 244 pulse is negative pulse */ 245 VI_HSYNC_NEG_BUTT 246 } VI_HSYNC_NEG_E; 247 248 /* Attribute of the valid vertical synchronization signal */ 249 typedef enum hiVI_VSYNC_VALID_E { 250 VI_VSYNC_NORM_PULSE = 0, /* the vertical synchronization is pusle mode, a pusle means a new frame or field */ 251 VI_VSYNC_VALID_SINGAL, /* the vertical synchronization is effective mode, a effective signal 252 means a new frame or field */ 253 254 VI_VSYNC_VALID_BUTT 255 } VI_VSYNC_VALID_E; 256 257 /* Polarity of the valid vertical synchronization signal */ 258 typedef enum hiVI_VSYNC_VALID_NEG_E { 259 VI_VSYNC_VALID_NEG_HIGH = 0, /* if VI_VSYNC_VALID_E = VI_VSYNC_NORM_PULSE, a positive pulse means vertical 260 synchronization pulse; 261 if VI_VSYNC_VALID_E = VI_VSYNC_VALID_SINGAL, the valid vertical synchronization 262 signal is high-level */ 263 VI_VSYNC_VALID_NEG_LOW, /* if VI_VSYNC_VALID_E = VI_VSYNC_NORM_PULSE, a negative pulse 264 means vertical synchronization pulse; 265 if VI_VSYNC_VALID_E = VI_VSYNC_VALID_SINGAL, the valid vertical 266 synchronization signal is low-level */ 267 VI_VSYNC_VALID_NEG_BUTT 268 } VI_VSYNC_VALID_NEG_E; 269 270 /* Blank information of the input timing */ 271 typedef struct hiVI_TIMING_BLANK_S { 272 HI_U32 u32HsyncHfb; /* RW;Horizontal front blanking width */ 273 HI_U32 u32HsyncAct; /* RW;Horizontal effetive width */ 274 HI_U32 u32HsyncHbb; /* RW;Horizontal back blanking width */ 275 HI_U32 u32VsyncVfb; /* RW;Vertical front blanking height of one frame or odd-field frame picture */ 276 HI_U32 u32VsyncVact; /* RW;Vertical effetive width of one frame or odd-field frame picture */ 277 HI_U32 u32VsyncVbb; /* RW;Vertical back blanking height of one frame or odd-field frame picture */ 278 HI_U32 u32VsyncVbfb; /* RW;Even-field vertical front blanking height when input mode is interlace 279 (invalid when progressive input mode) */ 280 HI_U32 u32VsyncVbact; /* RW;Even-field vertical effetive width when input mode is interlace 281 (invalid when progressive input mode) */ 282 HI_U32 u32VsyncVbbb; /* RW;Even-field vertical back blanking height when input mode is interlace 283 (invalid when progressive input mode) */ 284 } VI_TIMING_BLANK_S; 285 286 /* synchronization information about the BT.601 or DC timing */ 287 typedef struct hiVI_SYNC_CFG_S { 288 VI_VSYNC_E enVsync; 289 VI_VSYNC_NEG_E enVsyncNeg; 290 VI_HSYNC_E enHsync; 291 VI_HSYNC_NEG_E enHsyncNeg; 292 VI_VSYNC_VALID_E enVsyncValid; 293 VI_VSYNC_VALID_NEG_E enVsyncValidNeg; 294 VI_TIMING_BLANK_S stTimingBlank; 295 } VI_SYNC_CFG_S; 296 297 /* the highest bit of the BT.656 timing reference code */ 298 typedef enum hiVI_BT656_FIXCODE_E { 299 VI_BT656_FIXCODE_1 = 0, /* The highest bit of the EAV/SAV data over the BT.656 protocol is always 1. */ 300 VI_BT656_FIXCODE_0, /* The highest bit of the EAV/SAV data over the BT.656 protocol is always 0. */ 301 302 VI_BT656_FIXCODE_BUTT 303 } VI_BT656_FIXCODE_E; 304 305 /* Polarity of the field indicator bit (F) of the BT.656 timing reference code */ 306 typedef enum hiVI_BT656_FIELD_POLAR_E { 307 VI_BT656_FIELD_POLAR_STD = 0, /* the standard BT.656 mode,the first filed F=0,the second filed F=1 */ 308 VI_BT656_FIELD_POLAR_NSTD, /* the non-standard BT.656 mode,the first filed F=1,the second filed F=0 */ 309 310 VI_BT656_FIELD_POLAR_BUTT 311 } VI_BT656_FIELD_POLAR_E; 312 313 /* synchronization information about the BT.656 */ 314 typedef struct hiVI_BT656_SYNC_CFG_S { 315 VI_BT656_FIXCODE_E enFixCode; 316 VI_BT656_FIELD_POLAR_E enFieldPolar; 317 } VI_BT656_SYNC_CFG_S; 318 319 /* Input data type */ 320 typedef enum hiVI_DATA_TYPE_E { 321 VI_DATA_TYPE_YUV = 0, 322 VI_DATA_TYPE_RGB, 323 324 VI_DATA_TYPE_BUTT 325 } VI_DATA_TYPE_E; 326 327 typedef enum hiVI_REPHASE_MODE_E { 328 VI_REPHASE_MODE_NONE = 0, 329 VI_REPHASE_MODE_SKIP_1_2, /* skip 1/2 */ 330 VI_REPHASE_MODE_SKIP_1_3, /* skip 1/3 */ 331 VI_REPHASE_MODE_BINNING_1_2, /* binning 1/2 */ 332 VI_REPHASE_MODE_BINNING_1_3, /* binning 1/3 */ 333 334 VI_REPHASE_MODE_BUTT 335 } VI_REPHASE_MODE_E; 336 337 typedef struct hiVI_BAS_REPHASE_ATTR_S { 338 VI_REPHASE_MODE_E enHRephaseMode; 339 VI_REPHASE_MODE_E enVRephaseMode; 340 } VI_BAS_REPHASE_ATTR_S; 341 342 /* Attribute of bas scale */ 343 typedef struct hiVI_BAS_SCALE_ATTR_S { 344 SIZE_S stBasSize; /* RW;bayer scale size. */ 345 } VI_BAS_SCALE_ATTR_S; 346 347 /* Attribute of bayer scale */ 348 typedef struct hiVI_BAS_ATTR_S { 349 VI_BAS_SCALE_ATTR_S stSacleAttr; 350 VI_BAS_REPHASE_ATTR_S stRephaseAttr; 351 } VI_BAS_ATTR_S; 352 353 /* Attribute of wdr */ 354 typedef struct hiVI_WDR_ATTR_S { 355 WDR_MODE_E enWDRMode; /* RW; WDR mode. */ 356 HI_U32 u32CacheLine; /* RW; WDR cache line. */ 357 } VI_WDR_ATTR_S; 358 359 /* the extended attributes of VI device */ 360 typedef struct hiVI_DEV_ATTR_EX_S { 361 VI_INPUT_MODE_E enInputMode; /* RW;Input mode */ 362 VI_WORK_MODE_E enWorkMode; /* RW; Work mode */ 363 364 VI_COMBINE_MODE_E enCombineMode; /* RW;Y/C composite or separation mode */ 365 VI_COMPONENT_MODE_E enComponentMode; /* RW;Component mode (single-component or dual-component) */ 366 VI_CLK_EDGE_E enClkEdge; /* RW;Clock edge mode (sampling on the rising or 367 falling edge) */ 368 369 HI_U32 au32ComponentMask[VI_COMPMASK_NUM]; /* RW;Component mask */ 370 371 VI_SCAN_MODE_E enScanMode; /* RW;Input scanning mode (progressive or interlaced) */ 372 HI_S32 as32AdChnId[VI_MAX_ADCHN_NUM]; /* RW;AD channel ID. Typically, the default 373 value -1 is recommended */ 374 375 VI_YUV_DATA_SEQ_E enDataSeq; /* RW;Input data sequence (only the YUV format is supported) */ 376 VI_SYNC_CFG_S stSynCfg; /* RW;Sync timing. This member must be configured in BT. 377 601 mode or DC mode */ 378 379 VI_BT656_SYNC_CFG_S stBT656SynCfg; /* RW;Sync timing. This member must be configured in BT. 380 656 mode */ 381 382 VI_DATA_TYPE_E enInputDataType; /* RW;RGB: CSC-709 or CSC-601, PT YUV444 disable; 383 YUV: default yuv CSC coef PT YUV444 enable. */ 384 385 HI_BOOL bDataReverse; /* RW;Data reverse */ 386 387 SIZE_S stSize; /* RW;Input size */ 388 389 VI_BAS_ATTR_S stBasAttr; /* RW;Attribute of BAS */ 390 391 VI_WDR_ATTR_S stWDRAttr; /* RW;Attribute of WDR */ 392 393 DATA_RATE_E enDataRate; /* RW;Data rate of Device */ 394 } VI_DEV_ATTR_EX_S; 395 396 /* The attributes of a VI device */ 397 typedef struct hiVI_DEV_ATTR_S { 398 VI_INTF_MODE_E enIntfMode; /* RW;Interface mode */ 399 VI_WORK_MODE_E enWorkMode; /* RW;Work mode */ 400 401 HI_U32 au32ComponentMask[VI_COMPMASK_NUM]; /* RW;Component mask */ 402 VI_SCAN_MODE_E enScanMode; /* RW;Input scanning mode (progressive or interlaced) */ 403 HI_S32 as32AdChnId[VI_MAX_ADCHN_NUM]; /* RW;AD channel ID. Typically, the default value -1 404 is recommended */ 405 406 /* The below members must be configured in BT.601 mode or DC mode and are invalid in other modes */ 407 VI_YUV_DATA_SEQ_E enDataSeq; /* RW;Input data sequence (only the YUV format is supported) */ 408 VI_SYNC_CFG_S stSynCfg; /* RW;Sync timing. This member must be configured in BT. 409 601 mode or DC mode */ 410 411 VI_DATA_TYPE_E enInputDataType; /* RW;RGB: CSC-709 or CSC-601, PT YUV444 disable; YUV: default 412 yuv CSC coef PT YUV444 enable. */ 413 414 HI_BOOL bDataReverse; /* RW;Data reverse */ 415 416 SIZE_S stSize; /* RW;Input size */ 417 418 VI_BAS_ATTR_S stBasAttr; /* RW;Attribute of BAS */ 419 420 VI_WDR_ATTR_S stWDRAttr; /* RW;Attribute of WDR */ 421 422 DATA_RATE_E enDataRate; /* RW;Data rate of Device */ 423 } VI_DEV_ATTR_S; 424 425 /* Information of pipe binded to device */ 426 typedef struct hiVI_DEV_BIND_PIPE_S { 427 HI_U32 u32Num; /* RW;Range [1,VI_MAX_PHY_PIPE_NUM] */ 428 VI_PIPE PipeId[VI_MAX_PHY_PIPE_NUM]; /* RW;Array of pipe ID */ 429 } VI_DEV_BIND_PIPE_S; 430 431 /* Source of 3DNR reference frame */ 432 typedef enum hiVI_NR_REF_SOURCE_E { 433 VI_NR_REF_FROM_RFR = 0, /* Reference frame from reconstruction frame */ 434 VI_NR_REF_FROM_CHN0, /* Reference frame from CHN0's frame */ 435 436 VI_NR_REF_FROM_BUTT 437 } VI_NR_REF_SOURCE_E; 438 439 typedef enum hiVI_PIPE_BYPASS_MODE_E { 440 VI_PIPE_BYPASS_NONE, 441 VI_PIPE_BYPASS_FE, 442 VI_PIPE_BYPASS_BE, 443 444 VI_PIPE_BYPASS_BUTT 445 } VI_PIPE_BYPASS_MODE_E; 446 447 /* The attributes of 3DNR */ 448 typedef struct hiVI_NR_ATTR_S { 449 PIXEL_FORMAT_E enPixFmt; /* RW;Pixel format of reference frame */ 450 DATA_BITWIDTH_E enBitWidth; /* RW;Bit Width of reference frame */ 451 VI_NR_REF_SOURCE_E enNrRefSource; /* RW;Source of 3DNR reference frame */ 452 COMPRESS_MODE_E enCompressMode; /* RW;Reference frame compress mode */ 453 } VI_NR_ATTR_S; 454 455 /* The attributes of pipe */ 456 typedef struct hiVI_PIPE_ATTR_S { 457 VI_PIPE_BYPASS_MODE_E enPipeBypassMode; 458 HI_BOOL bYuvSkip; /* RW;YUV skip enable */ 459 HI_BOOL bIspBypass; /* RW;Range:[0, 1];ISP bypass enable */ 460 HI_U32 u32MaxW; /* RW;Range[VI_PIPE_MIN_WIDTH, VI_PIPE_MAX_WIDTH];Maximum width */ 461 HI_U32 u32MaxH; /* RW;Range[VI_PIPE_MIN_HEIGHT, VI_PIPE_MAX_HEIGHT];Maximum height */ 462 PIXEL_FORMAT_E enPixFmt; /* RW;Pixel format */ 463 COMPRESS_MODE_E enCompressMode; /* RW;Range:[0, 4];Compress mode. */ 464 DATA_BITWIDTH_E enBitWidth; /* RW;Range:[0, 4];Bit width */ 465 HI_BOOL bNrEn; /* RW;Range:[0, 1];3DNR enable */ 466 VI_NR_ATTR_S stNrAttr; /* RW;Attribute of 3DNR */ 467 HI_BOOL bSharpenEn; /* RW;Range:[0, 1];Sharpen enable */ 468 FRAME_RATE_CTRL_S stFrameRate; /* RW;Frame rate */ 469 HI_BOOL bDiscardProPic; /* RW;Range:[0, 1];when professional mode snap, whether to discard 470 long exposure picture in the video pipe. */ 471 } VI_PIPE_ATTR_S; 472 473 typedef enum hiVI_STITCH_ISP_CFG_MODE_E { 474 VI_STITCH_ISP_CFG_NORMAL = 0, 475 VI_STITCH_ISP_CFG_SYNC, 476 VI_STITCH_ISP_CFG_BUTT 477 } VI_STITCH_ISP_CFG_MODE_E; 478 479 /* Information of stitch group */ 480 typedef struct hiVI_STITCH_GRP_ATTR_S { 481 HI_BOOL bStitch; 482 VI_STITCH_ISP_CFG_MODE_E enMode; 483 HI_U32 u32MaxPTSGap; /* RW;MAX PTS Gap between frame of pipe,unit:us */ 484 HI_U32 u32PipeNum; /* RW;Range [2, VI_MAX_PIPE_NUM] */ 485 VI_PIPE PipeId[VI_MAX_PIPE_NUM]; /* RW;Array of pipe ID */ 486 } VI_STITCH_GRP_ATTR_S; 487 488 typedef enum hiVI_MONO_COLOR_RATIO_E { 489 VI_MONO_COLOR_RATIO_1_1 = 0, /* The ratio of mono pic to color pic is 1:1 */ 490 VI_MONO_COLOR_RATIO_2_1, /* The ratio of mono pic to color pic is 2:1 */ 491 VI_MONO_COLOR_RATIO_3_1, /* The ratio of mono pic to color pic is 3:1 */ 492 VI_MONO_COLOR_RATIO_1_2, /* The ratio of mono pic to color pic is 1:2 */ 493 VI_MONO_COLOR_RATIO_1_3, /* The ratio of mono pic to color pic is 1:3 */ 494 VI_MONO_COLOR_RATIO_BUTT 495 } VI_MONO_COLOR_RATIO_E; 496 497 /* Information of mcf group */ 498 typedef struct hiVI_MCF_GRP_ATTR_S { 499 HI_BOOL bEnable; 500 VI_MONO_COLOR_RATIO_E enRatio; 501 VI_PIPE MonoPipe; 502 VI_PIPE ColorPipe; 503 } VI_MCF_GRP_ATTR_S; 504 505 typedef enum hiVI_PIPE_REPEAT_MODE_E { 506 VI_PIPE_REPEAT_NONE = 0, 507 VI_PIPE_REPEAT_ONCE = 1, 508 VI_PIPE_REPEAT_BUTT 509 } VI_PIPE_REPEAT_MODE_E; 510 511 typedef struct { 512 HI_U8 IES; /* RW; Range:[0, 255];Format 8.0;the absolute strength of image enhancement for edge */ 513 HI_U8 IESS; /* RW; Range:[0, 255];Format 8.0;the absolute strength of image enhancement for 514 texture and shadow */ 515 HI_U16 IEDZ; /* RW; Range:[0, 8192];Format 14.0;the threshold of image enhancement 516 for controlling noise */ 517 } tV59aIEy; 518 519 typedef struct { 520 HI_U8 SBF : 2; /* RW; Range:[0, 3];Format 2.0;the band type of spatial filter, notice: SBF0, SBF1 521 range is [2, 3];SBF2,SBF3,SBF4 range is [0,3], where SBF4 is related to SBFk */ 522 HI_U8 STR : 4; /* RW; Range:[0, 13];Format 4.0;the relative strength of spatial filter refer to 523 the previous frame */ 524 HI_U8 STHp : 2; /* RW; Range:[0, 2];Format 2.0;Not recommended for debugging */ 525 HI_U8 SFT : 5; /* RW; Range:[0, 31];Format 5.0;Not recommended for debugging */ 526 HI_U8 kPro : 3; /* RW; Range:[0, 7];Format 3.0;notice: the kPro of SFy2 range is [0, 7], the kPro of 527 SFy3 range is [0, 4] */ 528 HI_U16 STH[3]; /* RW; Range:[0, 999];Format 10.0;the edge-preserve threshold for spatial filter */ 529 HI_U16 SBS[3]; /* RW; Range:[0, 9999];Format 14.0;the noise reduction strength of spatial filter 530 for the relative bright pixel */ 531 HI_U16 SDS[3]; /* RW; Range:[0, 9999];Format 14.0;the noise reduction strength of spatial filter 532 for the relative dark pixel */ 533 } tV59aSFy; 534 535 typedef struct { 536 HI_U16 MATH : 10; /* RW; Range:[0, 1023];Format 10.0;the motion detection threshold for temporal filter */ 537 HI_U16 MATE : 4; /* RW; Range:[0, 11];Format 4.0;the motion detection index of flat area 538 for temporal filter */ 539 HI_U16 MATW : 2; /* RW; Range:[0, 3];Format 2.0;the index of suppressing trailing for temporal filter */ 540 HI_U8 MASW : 4; /* RW; Range:[0, 12];Format 4.0;the index of suppressing raindrop noise 541 for temporal filter */ 542 HI_U8 MABW : 3; /* RW; Range:[0, 4];Format 3.0;the window of motion detection for temporal filter */ 543 HI_U8 MAXN : 1; /* RW; Range:[0, 1];Format 1.0;Not recommended for debugging */ 544 } tV59aMDy; 545 546 typedef struct { 547 HI_U8 TFR[4]; /* RW; Range:[0, 255];Format 8.0;the relative strength of temporal 548 filter for the static area */ 549 HI_U16 TDZ : 14; /* RW; Range:[0, 999];Format 10.0;the threshold of dead-area of temporal filter */ 550 HI_U16 TDX : 2; /* RW; Range:[0, 2];Format 2.0;Not recommended for debugging */ 551 HI_U16 TFS : 6; /* RW; Range:[0, 63];Format 6.0;the absolute strength of temporal filter */ 552 HI_U16 _rb1_ : 10; 553 } tV59aTFy; 554 555 typedef struct { 556 HI_U16 SFC : 10; /* RW; Range:[0, 999];Format 10.0;the strength of spatial filter for NRC0 */ 557 HI_U16 TFC : 6; /* RW; Range:[0, 63];Format 6.0;the strength of temporal filter for NRC0 */ 558 HI_U16 CSFS : 14; /* RW; Range:[0, 999];Format 10.0;the strength of spatial filter for NRC1 */ 559 HI_U16 CSFk : 2; /* RW; Range:[0, 3];Format 2.0;Not recommended for debugging */ 560 HI_U16 CTFS : 4; /* RW; Range:[0, 15];Format 4.0;the strength of temporal filter for NRC1 */ 561 HI_U16 CIIR : 1; /* RW; Range:[0, 1];Format 1.0;the mode of spatial filter for NRC1 */ 562 HI_U16 CTFR : 11; /* RW; Range:[0, 999];Format 10.0;the relative strength of temporal filter for NRC1 */ 563 HI_U8 MODE : 1; /* RW; Range: [0, 1]; The switch for new chroma denoise mode. */ 564 HI_U8 PRESFC : 6; /* RW; Range: [0, 32]; The strength for chroma pre spatial filter. */ 565 HI_U8 _rb1_ : 1; 566 } tV59aNRc; 567 568 /* 3DNR Spatial Filter: SFy0,SFy1,SFy2,SFy3; Temporal Filter:TFy0,TFy1;Chroma Noise Reduction: NRC0,NRC1 */ 569 typedef struct { 570 tV59aIEy IEy; 571 tV59aSFy SFy[5]; 572 tV59aMDy MDy[2]; 573 tV59aTFy TFy[2]; 574 575 HI_U16 HdgType : 1; /* RW; Range:[0, 1];Format 1.0;the type of complexed mixed spatial filter whether 576 is SFi or SFk */ 577 HI_U16 BriType : 1; /* RW; Range:[0, 1];Format 1.0;the mode decide SFy3 whether is SFk type or SFi type */ 578 HI_U16 HdgMode : 2; /* RW; Range:[0, 3];Format 2.0;the mode decide complexed mixed spatial filter band 579 for flat area */ 580 HI_U16 kTab2 : 1; /* RW; Range:[0, 1];Format 1.0;the parameter decide SFy2 whether or not based on the image 581 absolute luminance */ 582 HI_U16 HdgWnd : 1; /* RW; Range:[0, 1];Format 1.0;the sampling window of complexed mixed spatial filter for 583 noise detection */ 584 HI_U16 kTab3 : 1; /* RW; Range:[0, 1];Format 1.0;the parameter decide SFy3 whether or not based on the image 585 absolute luminance */ 586 HI_U16 HdgSFR : 4; /* RW; Range:[0, 13];Format 4.0;the trend of the noise reduction of complexed mixed spatial 587 filter for flat area */ 588 HI_U16 nOut : 5; /* RW; Range:[0, 27];Format 5.0;the parameter for output intermediate result of SFy3 */ 589 HI_U8 HdgIES; /* RW; Range:[0, 255];Format 8.0;the strength of image enhancement for complexed 590 mixed spatial filter */ 591 HI_U8 nRef : 1; /* RW; Range:[0, 1];Format 1.0;Not recommended for debugging */ 592 593 HI_U8 IEyMode : 1; /* RW; Range:[0, 1];Format 1.0;the image enhancement mode selection. */ 594 595 HI_U8 _rb1_ : 6; 596 HI_U8 IEyEx[4]; /* RW; Range:[0, 255];Format 8.0;the image enhancement strength for different frequency. */ 597 598 HI_U8 SFRi[4]; /* RW; Range:[0, 255];Format 8.0;the relative strength of SFy3 when the filter type is SFi */ 599 HI_U8 SFRk[4]; /* RW; Range:[0, 255];Format 8.0;the relative strength of SFy3 when the filter type is SFk */ 600 HI_U16 SBSk2[32]; /* RW; Range:[0, 9999];Format 14.0;the noise reduction strength of SFy2 for the 601 relative bright pixel based on the image absolute luminance */ 602 HI_U16 SBSk3[32]; /* RW; Range:[0, 9999];Format 14.0;the noise reduction strength of SFy3 for the 603 relative bright pixel based on the image absolute luminance */ 604 HI_U16 SDSk2[32]; /* RW; Range:[0, 9999];Format 14.0;the noise reduction strength of SFy2 for the 605 relative dark pixel based on the image absolute luminance */ 606 HI_U16 SDSk3[32]; /* RW; Range:[0, 9999];Format 14.0;the noise reduction strength of SFy3 for the 607 relative dark pixel based on the image absolute luminance */ 608 HI_U16 BriThr[16]; /* RW; Range:[0, 1024];Format 11.0;the threshold decide SFy3 choose the SFi type filter 609 or SFk type filter in dark and bright area */ 610 611 tV59aNRc NRc; 612 } VI_PIPE_NRX_PARAM_V1_S; 613 614 typedef enum hiVI_NR_VERSION_E { 615 VI_NR_V1 = 1, 616 VI_NR_V2 = 2, 617 VI_NR_V3 = 3, 618 VI_NR_V4 = 4, 619 VI_NR_BUTT 620 } VI_NR_VERSION_E; 621 622 typedef struct hiNRX_PARAM_MANUAL_V1_S { 623 VI_PIPE_NRX_PARAM_V1_S stNRXParamV1; 624 } NRX_PARAM_MANUAL_V1_S; 625 626 typedef struct hiNRX_PARAM_AUTO_V1_S { 627 HI_U32 u32ParamNum; 628 HI_U32 ATTRIBUTE *pau32ISO; 629 VI_PIPE_NRX_PARAM_V1_S ATTRIBUTE *pastNRXParamV1; 630 } NRX_PARAM_AUTO_V1_S; 631 632 typedef struct hiNRX_PARAM_V1_S { 633 OPERATION_MODE_E enOptMode; /* RW;Adaptive NR */ 634 NRX_PARAM_MANUAL_V1_S stNRXManualV1; /* RW;NRX V1 param for manual */ 635 NRX_PARAM_AUTO_V1_S stNRXAutoV1; /* RW;NRX V1 param for auto */ 636 } NRX_PARAM_V1_S; 637 638 typedef struct { 639 HI_U8 IES0, IES1, IES2, IES3; /* IES0~4 ; Range: [0, 255]; The gains of edge and texture enhancement. 640 0~3 for different frequency response. */ 641 HI_U16 IEDZ : 10, _rb_ : 6; /* IEDZ ; Range: [0, 999]; The threshold to control the generated artifacts. */ 642 } tV500_VI_IEy; 643 644 typedef struct { 645 HI_U8 SPN6 : 3, SFR : 5; /* SPN6; Range: [0, 5]; The selection of filters to be mixed for NO.6 filter. */ 646 /* SFR ; Range: [0, 31]; The relative NR strength in the SFi and SFk filter. */ 647 HI_U8 SBN6 : 3, PBR6 : 5; /* SBN6; Range: [0, 5]; The selection of filters to be mixed for NO.6 filter. */ 648 /* PBR6; Range: [0, 16]; The mix ratio between SPN6 and SBN6. */ 649 HI_U16 SRT0 : 5, SRT1 : 5, JMODE : 3, DeIdx : 3; /* JMODE; Range: [0, 4]; The selection modes 650 for the blending of spatial filters */ 651 /* STR0, STR1; Range: [0, 16]; The blending ratio 652 of different filters. (Used in serial filtering mode (SFM).) */ 653 /* DeIdx; Range: [3, 6]; The selection number of 654 filters that textures and details will be added to. */ 655 HI_U8 DeRate, SFR6[3]; /* DeRate; Range: [0, 255]; The enhancement strength 656 for the SFM (When DeRate > 0, the SFM will be activated) */ 657 /* SFR6; Range: [0, 31]; The relative NR strength 658 for NO.6 filter. (Effective when JMODE = 4) */ 659 HI_U8 SFS1, SFT1, SBR1; /* SFS1, SFT1, SBR1; Range: [0, 255]; The NR strength 660 parameters for NO.1 filter. */ 661 HI_U8 SFS2, SFT2, SBR2; /* SFS2, SFT2, SBR2; Range: [0, 255]; The NR strength 662 parameters for NO.2 filter. */ 663 HI_U8 SFS4, SFT4, SBR4; /* SFS4, SFT4, SBR4; Range: [0, 255]; The NR strength 664 parameters for NO.3 and NO.4 filters. */ 665 666 HI_U16 STH1 : 9, SFN1 : 3, NRyEn : 1, SFN0 : 3; /* STH1~3; Range: [0, 511]; The thresholds for protection 667 of edges from blurring */ 668 /* NRyEn ; Range: [0, 1]; The NR switches */ 669 HI_U16 STH2 : 9, SFN2 : 3, BWSF4 : 1, kMode : 3; /* SFN0~3; Range: [0, 6]; Filter selection for different 670 image areas based on STH1~3. */ 671 /* BWSF4 ; Range: [0, 1]; The NR window size for the 672 NO.3 and NO.4 filters. */ 673 HI_U16 STH3 : 9, SFN3 : 3, TriTh : 1, _rb0_ : 3; /* KMode ; Range: [0, 3]; The denoise mode based 674 on image brightness. */ 675 /* Trith ; Range: [0, 1]; The switch to choose 3 STH 676 threshold or 2 STH threshold */ 677 } tV500_VI_SFy; 678 679 typedef struct { 680 tV500_VI_IEy IEy; 681 tV500_VI_SFy SFy; 682 } VI_PIPE_NRX_PARAM_V2_S; 683 684 typedef struct hiNRX_PARAM_MANUAL_V2_S { 685 VI_PIPE_NRX_PARAM_V2_S stNRXParamV2; 686 } NRX_PARAM_MANUAL_V2_S; 687 688 typedef struct hiNRX_PARAM_AUTO_V2_S { 689 HI_U32 u32ParamNum; 690 HI_U32 ATTRIBUTE *pau32ISO; 691 VI_PIPE_NRX_PARAM_V2_S ATTRIBUTE *pastNRXParamV2; 692 } NRX_PARAM_AUTO_V2_S; 693 694 typedef struct hiNRX_PARAM_V2_S { 695 OPERATION_MODE_E enOptMode; /* RW;Adaptive NR */ 696 NRX_PARAM_MANUAL_V2_S stNRXManualV2; /* RW;NRX V2 param for manual */ 697 NRX_PARAM_AUTO_V2_S stNRXAutoV2; /* RW;NRX V2 param for auto */ 698 } NRX_PARAM_V2_S; 699 700 typedef struct hiVI_PIPE_NRX_PARAM_S { 701 VI_NR_VERSION_E enNRVersion; /* RW;3DNR Version */ 702 union { 703 NRX_PARAM_V1_S stNRXParamV1; /* RW;3DNR X param version 1 */ 704 NRX_PARAM_V2_S stNRXParamV2; /* RW;3DNR X param version 2 */ 705 }; 706 } VI_PIPE_NRX_PARAM_S; 707 708 /* The attributes of channel */ 709 typedef struct hiVI_CHN_ATTR_S { 710 SIZE_S stSize; /* RW;Channel out put size */ 711 PIXEL_FORMAT_E enPixelFormat; /* RW;Pixel format */ 712 DYNAMIC_RANGE_E enDynamicRange; /* RW;Dynamic Range */ 713 VIDEO_FORMAT_E enVideoFormat; /* RW;Video format */ 714 COMPRESS_MODE_E enCompressMode; /* RW;256B Segment compress or no compress. */ 715 HI_BOOL bMirror; /* RW;Mirror enable */ 716 HI_BOOL bFlip; /* RW;Flip enable */ 717 HI_U32 u32Depth; /* RW;Range [0,8];Depth */ 718 FRAME_RATE_CTRL_S stFrameRate; /* RW;Frame rate */ 719 } VI_CHN_ATTR_S; 720 721 /* The status of pipe */ 722 typedef struct hiVI_PIPE_STATUS_S { 723 HI_BOOL bEnable; /* RO;Whether this pipe is enabled */ 724 HI_U32 u32IntCnt; /* RO;The video frame interrupt count */ 725 HI_U32 u32FrameRate; /* RO;Current frame rate */ 726 HI_U32 u32LostFrame; /* RO;Lost frame count */ 727 HI_U32 u32VbFail; /* RO;Video buffer malloc failure */ 728 SIZE_S stSize; /* RO;Current pipe output size */ 729 } VI_PIPE_STATUS_S; 730 731 /* VS signal output mode */ 732 typedef enum hiVI_VS_SIGNAL_MODE_E { 733 VI_VS_SIGNAL_ONCE = 0, /* output one time */ 734 VI_VS_SIGNAL_FREQ, /* output frequently */ 735 736 VI_VS_SIGNAL_MODE_BUTT 737 } VI_VS_SIGNAL_MODE_E; 738 739 /* The attributes of VS signal */ 740 typedef struct hiVI_VS_SIGNAL_ATTR_S { 741 VI_VS_SIGNAL_MODE_E enMode; /* RW;output one time, output frequently */ 742 HI_U32 u32StartTime; /* RW;output start time,unit: sensor pix clk. */ 743 HI_U32 u32Duration; /* RW;output high duration, unit: sensor pix clk. */ 744 HI_U32 u32CapFrmIndex; /* RW;VS signal will be output after trigger by which vframe, 745 default is 0. */ 746 HI_U32 u32Interval; /* RW;output frequently interval, unit: frame */ 747 } VI_VS_SIGNAL_ATTR_S; 748 749 typedef struct hiBNR_DUMP_ATTR_S { 750 HI_BOOL bEnable; 751 HI_U32 u32Depth; 752 } BNR_DUMP_ATTR_S; 753 754 typedef enum hiVI_EXT_CHN_SOURCE_E { 755 VI_EXT_CHN_SOURCE_TAIL, 756 VI_EXT_CHN_SOURCE_HEAD, 757 758 VI_EXT_CHN_SOURCE_BUTT 759 } VI_EXT_CHN_SOURCE_E; 760 761 typedef struct hiVI_EXT_CHN_ATTR_S { 762 VI_EXT_CHN_SOURCE_E enSource; 763 VI_CHN s32BindChn; /* RW;Range [VI_CHN0, VI_MAX_PHY_CHN_NUM);The channel num which extend 764 channel will bind to */ 765 SIZE_S stSize; /* RW;Channel out put size */ 766 PIXEL_FORMAT_E enPixFormat; /* RW;Pixel format */ 767 DYNAMIC_RANGE_E enDynamicRange; /* RW;Dynamic Range */ 768 COMPRESS_MODE_E enCompressMode; /* RW;256B Segment compress or no compress. */ 769 HI_U32 u32Depth; /* RW;Range [0,8];Depth */ 770 FRAME_RATE_CTRL_S stFrameRate; /* RW;Frame rate */ 771 } VI_EXT_CHN_ATTR_S; 772 773 typedef enum hiVI_CROP_COORDINATE_E { 774 VI_CROP_RATIO_COOR = 0, /* Ratio coordinate */ 775 VI_CROP_ABS_COOR, /* Absolute coordinate */ 776 VI_CROP_BUTT 777 } VI_CROP_COORDINATE_E; 778 779 /* Information of chn crop */ 780 typedef struct hiVI_CROP_INFO_S { 781 HI_BOOL bEnable; /* RW;CROP enable */ 782 VI_CROP_COORDINATE_E enCropCoordinate; /* RW;Coordinate mode of the crop start point */ 783 RECT_S stCropRect; /* RW;CROP rectangular */ 784 } VI_CROP_INFO_S; 785 786 /* The attributes of LDC */ 787 typedef struct hiVI_LDC_ATTR_S { 788 HI_BOOL bEnable; /* RW;Range [0,1];Whether LDC is enbale */ 789 LDC_ATTR_S stAttr; 790 } VI_LDC_ATTR_S; 791 792 /* The attributes of LDCV2 */ 793 typedef struct hiVI_LDCV2_ATTR_S { 794 HI_BOOL bEnable; /* RW;Whether LDC is enbale */ 795 LDCV2_ATTR_S stAttr; 796 } VI_LDCV2_ATTR_S; 797 798 /* The attributes of LDCV3 */ 799 typedef struct hiVI_LDCV3_ATTR_S { 800 HI_BOOL bEnable; /* RW;Whether LDC is enbale */ 801 LDCV3_ATTR_S stAttr; 802 } VI_LDCV3_ATTR_S; 803 804 typedef struct hiVI_ROTATION_EX_ATTR_S { 805 HI_BOOL bEnable; /* RW;Range [0,1];Whether ROTATE_EX_S is enbale */ 806 ROTATION_EX_S stRotationEx; 807 } VI_ROTATION_EX_ATTR_S; 808 809 /* The status of chn */ 810 typedef struct hiVI_CHN_STATUS_S { 811 HI_BOOL bEnable; /* RO;Whether this channel is enabled */ 812 HI_U32 u32FrameRate; /* RO;current frame rate */ 813 HI_U32 u32LostFrame; /* RO;Lost frame count */ 814 HI_U32 u32VbFail; /* RO;Video buffer malloc failure */ 815 SIZE_S stSize; /* RO;chn output size */ 816 } VI_CHN_STATUS_S; 817 818 typedef struct hiVI_PMF_ATTR_S { 819 HI_BOOL bEnable; /* RW;Whether PMF is enable */ 820 SIZE_S stDestSize; /* RW;Target size */ 821 HI_S64 as64PMFCoef[VI_PMFCOEF_NUM]; /* RW; Array of PMF coefficients */ 822 } VI_PMF_ATTR_S; 823 824 typedef enum hiVI_DUMP_TYPE_E { 825 VI_DUMP_TYPE_RAW = 0, 826 VI_DUMP_TYPE_YUV = 1, 827 VI_DUMP_TYPE_IR = 2, 828 VI_DUMP_TYPE_BUTT 829 } VI_DUMP_TYPE_E; 830 831 typedef struct hiVI_DUMP_ATTR_S { 832 HI_BOOL bEnable; /* RW;Whether dump is enable */ 833 HI_U32 u32Depth; /* RW;Range [0,8];Depth */ 834 VI_DUMP_TYPE_E enDumpType; 835 } VI_DUMP_ATTR_S; 836 837 typedef enum hiVI_PIPE_FRAME_SOURCE_E { 838 VI_PIPE_FRAME_SOURCE_DEV = 0, /* RW;Source from dev */ 839 VI_PIPE_FRAME_SOURCE_USER_FE, /* RW;User send to FE */ 840 VI_PIPE_FRAME_SOURCE_USER_BE, /* RW;User send to BE */ 841 842 VI_PIPE_FRAME_SOURCE_BUTT 843 } VI_PIPE_FRAME_SOURCE_E; 844 845 typedef struct hi_VI_RAW_INFO_S { 846 VIDEO_FRAME_INFO_S stVideoFrame; 847 ISP_CONFIG_INFO_S stIspInfo; 848 } VI_RAW_INFO_S; 849 850 /* module params */ 851 typedef struct hiVI_MOD_PARAM_S { 852 HI_S32 s32DetectErrFrame; 853 HI_U32 u32DropErrFrame; 854 VB_SOURCE_E enViVbSource; 855 } VI_MOD_PARAM_S; 856 857 typedef struct hiVI_DEV_TIMING_ATTR_S { 858 HI_BOOL bEnable; /* RW;Range:[0,1];Whether enable VI generate timing */ 859 HI_S32 s32FrmRate; /* RW;Range:(0,0xffffff];;Generate timing Frame rate */ 860 } VI_DEV_TIMING_ATTR_S; 861 862 typedef struct hiVI_EARLY_INTERRUPT_S { 863 HI_BOOL bEnable; 864 HI_U32 u32LineCnt; 865 } VI_EARLY_INTERRUPT_S; 866 867 #ifdef __cplusplus 868 #if __cplusplus 869 } 870 #endif 871 #endif /* __cplusplus */ 872 873 #endif /* HI_COMM_VI_H */ 874