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 MPI_VI_H 17 #define MPI_VI_H 18 19 #include "hi_comm_vi.h" 20 #include "hi_comm_dis.h" 21 #include "hi_comm_gdc.h" 22 #include "hi_comm_vb.h" 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" { 27 #endif 28 #endif /* __cplusplus */ 29 30 /* 1 for vi device */ 31 HI_S32 HI_MPI_VI_SetDevAttr(VI_DEV ViDev, const VI_DEV_ATTR_S *pstDevAttr); 32 HI_S32 HI_MPI_VI_GetDevAttr(VI_DEV ViDev, VI_DEV_ATTR_S *pstDevAttr); 33 34 HI_S32 HI_MPI_VI_SetDevAttrEx(VI_DEV ViDev, const VI_DEV_ATTR_EX_S *pstDevAttrEx); 35 HI_S32 HI_MPI_VI_GetDevAttrEx(VI_DEV ViDev, VI_DEV_ATTR_EX_S *pstDevAttrEx); 36 37 HI_S32 HI_MPI_VI_SetVSSignalAttr(VI_DEV ViDev, const VI_VS_SIGNAL_ATTR_S *pstVSSignalAttr); 38 HI_S32 HI_MPI_VI_GetVSSignalAttr(VI_DEV ViDev, VI_VS_SIGNAL_ATTR_S *pstVSSignalAttr); 39 HI_S32 HI_MPI_VI_TriggerVSSignal(VI_DEV ViDev, HI_BOOL bEnable); 40 41 HI_S32 HI_MPI_VI_EnableDev(VI_DEV ViDev); 42 HI_S32 HI_MPI_VI_DisableDev(VI_DEV ViDev); 43 44 HI_S32 HI_MPI_VI_SetMipiBindDev(VI_DEV ViDev, MIPI_DEV MipiDev); 45 HI_S32 HI_MPI_VI_GetMipiBindDev(VI_DEV ViDev, MIPI_DEV *pMipiDev); 46 47 HI_S32 HI_MPI_VI_SetDevBindPipe(VI_DEV ViDev, const VI_DEV_BIND_PIPE_S *pstDevBindPipe); 48 HI_S32 HI_MPI_VI_GetDevBindPipe(VI_DEV ViDev, VI_DEV_BIND_PIPE_S *pstDevBindPipe); 49 50 HI_S32 HI_MPI_VI_SetDevTimingAttr(VI_DEV ViDev, const VI_DEV_TIMING_ATTR_S *pstTimingAttr); 51 HI_S32 HI_MPI_VI_GetDevTimingAttr(VI_DEV ViDev, VI_DEV_TIMING_ATTR_S *pstTimingAttr); 52 53 /* 2 for vi pipe */ 54 HI_S32 HI_MPI_VI_GetPipeCmpParam(VI_PIPE ViPipe, VI_CMP_PARAM_S *pCmpParam); 55 56 HI_S32 HI_MPI_VI_SetUserPic(VI_PIPE ViPipe, const VI_USERPIC_ATTR_S *pstUsrPic); 57 HI_S32 HI_MPI_VI_EnableUserPic(VI_PIPE ViPipe); 58 HI_S32 HI_MPI_VI_DisableUserPic(VI_PIPE ViPipe); 59 60 HI_S32 HI_MPI_VI_CreatePipe(VI_PIPE ViPipe, const VI_PIPE_ATTR_S *pstPipeAttr); 61 HI_S32 HI_MPI_VI_DestroyPipe(VI_PIPE ViPipe); 62 63 HI_S32 HI_MPI_VI_SetPipeAttr(VI_PIPE ViPipe, const VI_PIPE_ATTR_S *pstPipeAttr); 64 HI_S32 HI_MPI_VI_GetPipeAttr(VI_PIPE ViPipe, VI_PIPE_ATTR_S *pstPipeAttr); 65 66 HI_S32 HI_MPI_VI_StartPipe(VI_PIPE ViPipe); 67 HI_S32 HI_MPI_VI_StopPipe(VI_PIPE ViPipe); 68 69 HI_S32 HI_MPI_VI_SetPipePreCrop(VI_PIPE ViPipe, const CROP_INFO_S *pstCropInfo); 70 HI_S32 HI_MPI_VI_GetPipePreCrop(VI_PIPE ViPipe, CROP_INFO_S *pstCropInfo); 71 72 HI_S32 HI_MPI_VI_SetPipePostCrop(VI_PIPE ViPipe, const CROP_INFO_S *pstCropInfo); 73 HI_S32 HI_MPI_VI_GetPipePostCrop(VI_PIPE ViPipe, CROP_INFO_S *pstCropInfo); 74 75 HI_S32 HI_MPI_VI_SetPipeFisheyeConfig(VI_PIPE ViPipe, const FISHEYE_CONFIG_S *pstFishEyeConfig); 76 HI_S32 HI_MPI_VI_GetPipeFisheyeConfig(VI_PIPE ViPipe, FISHEYE_CONFIG_S *pstFishEyeConfig); 77 78 HI_S32 HI_MPI_VI_FisheyePosQueryDst2Src(VI_PIPE ViPipe, VI_CHN ViChn, HI_U32 u32RegionIndex, 79 const POINT_S *pstDstPointIn, POINT_S *pstSrcPointOut); 80 81 HI_S32 HI_MPI_VI_SetPipeDumpAttr(VI_PIPE ViPipe, const VI_DUMP_ATTR_S *pstDumpAttr); 82 HI_S32 HI_MPI_VI_GetPipeDumpAttr(VI_PIPE ViPipe, VI_DUMP_ATTR_S *pstDumpAttr); 83 84 HI_S32 HI_MPI_VI_SetPipeFrameSource(VI_PIPE ViPipe, const VI_PIPE_FRAME_SOURCE_E enSource); 85 HI_S32 HI_MPI_VI_GetPipeFrameSource(VI_PIPE ViPipe, VI_PIPE_FRAME_SOURCE_E *penSource); 86 87 HI_S32 HI_MPI_VI_GetPipeFrame(VI_PIPE ViPipe, VIDEO_FRAME_INFO_S *pstVideoFrame, HI_S32 s32MilliSec); 88 HI_S32 HI_MPI_VI_ReleasePipeFrame(VI_PIPE ViPipe, const VIDEO_FRAME_INFO_S *pstVideoFrame); 89 90 HI_S32 HI_MPI_VI_SendPipeYUV(VI_PIPE ViPipe, const VIDEO_FRAME_INFO_S *pstVideoFrame, HI_S32 s32MilliSec); 91 HI_S32 HI_MPI_VI_SendPipeRaw(HI_U32 u32PipeNum, VI_PIPE PipeId[], const VIDEO_FRAME_INFO_S *pstVideoFrame[], 92 HI_S32 s32MilliSec); 93 94 HI_S32 HI_MPI_VI_SetPipeNRXParam(VI_PIPE ViPipe, const VI_PIPE_NRX_PARAM_S *pstNrXParam); 95 HI_S32 HI_MPI_VI_GetPipeNRXParam(VI_PIPE ViPipe, VI_PIPE_NRX_PARAM_S *pstNrXParam); 96 97 HI_S32 HI_MPI_VI_SetPipeRepeatMode(VI_PIPE ViPipe, const VI_PIPE_REPEAT_MODE_E enRepeatMode); 98 HI_S32 HI_MPI_VI_GetPipeRepeatMode(VI_PIPE ViPipe, VI_PIPE_REPEAT_MODE_E *penRepeatMode); 99 100 HI_S32 HI_MPI_VI_QueryPipeStatus(VI_PIPE ViPipe, VI_PIPE_STATUS_S *pstStatus); 101 102 HI_S32 HI_MPI_VI_EnablePipeInterrupt(VI_PIPE ViPipe); 103 HI_S32 HI_MPI_VI_DisablePipeInterrupt(VI_PIPE ViPipe); 104 105 HI_S32 HI_MPI_VI_SetPipeVCNumber(VI_PIPE ViPipe, HI_U32 u32VCNumber); 106 HI_S32 HI_MPI_VI_GetPipeVCNumber(VI_PIPE ViPipe, HI_U32 *pu32VCNumber); 107 108 HI_S32 HI_MPI_VI_SetPipeFrameInterruptAttr(VI_PIPE ViPipe, const FRAME_INTERRUPT_ATTR_S *pstFrameIntAttr); 109 HI_S32 HI_MPI_VI_GetPipeFrameInterruptAttr(VI_PIPE ViPipe, FRAME_INTERRUPT_ATTR_S *pstFrameIntAttr); 110 111 HI_S32 HI_MPI_VI_SetPipeBNRRawDumpAttr(VI_PIPE ViPipe, const BNR_DUMP_ATTR_S *pstBnrDumpAttr); 112 HI_S32 HI_MPI_VI_GetPipeBNRRawDumpAttr(VI_PIPE ViPipe, BNR_DUMP_ATTR_S *pstBnrDumpAttr); 113 114 HI_S32 HI_MPI_VI_GetPipeBNRRaw(VI_PIPE ViPipe, VIDEO_FRAME_INFO_S *pstVideoFrame, HI_S32 s32MilliSec); 115 HI_S32 HI_MPI_VI_ReleasePipeBNRRaw(VI_PIPE ViPipe, const VIDEO_FRAME_INFO_S *pstVideoFrame); 116 117 HI_S32 HI_MPI_VI_PipeAttachVbPool(VI_PIPE ViPipe, VB_POOL VbPool); 118 HI_S32 HI_MPI_VI_PipeDetachVbPool(VI_PIPE ViPipe); 119 120 HI_S32 HI_MPI_VI_GetPipeFd(VI_PIPE ViPipe); 121 122 /* 3 for vi chn */ 123 HI_S32 HI_MPI_VI_SetChnAttr(VI_PIPE ViPipe, VI_CHN ViChn, const VI_CHN_ATTR_S *pstChnAttr); 124 HI_S32 HI_MPI_VI_GetChnAttr(VI_PIPE ViPipe, VI_CHN ViChn, VI_CHN_ATTR_S *pstChnAttr); 125 126 HI_S32 HI_MPI_VI_EnableChn(VI_PIPE ViPipe, VI_CHN ViChn); 127 HI_S32 HI_MPI_VI_DisableChn(VI_PIPE ViPipe, VI_CHN ViChn); 128 129 HI_S32 HI_MPI_VI_SetChnCrop(VI_PIPE ViPipe, VI_CHN ViChn, const VI_CROP_INFO_S *pstCropInfo); 130 HI_S32 HI_MPI_VI_GetChnCrop(VI_PIPE ViPipe, VI_CHN ViChn, VI_CROP_INFO_S *pstCropInfo); 131 132 HI_S32 HI_MPI_VI_SetChnRotation(VI_PIPE ViPipe, VI_CHN ViChn, const ROTATION_E enRotation); 133 HI_S32 HI_MPI_VI_GetChnRotation(VI_PIPE ViPipe, VI_CHN ViChn, ROTATION_E *penRotation); 134 135 HI_S32 HI_MPI_VI_SetChnRotationEx(VI_PIPE ViPipe, VI_CHN ViChn, const VI_ROTATION_EX_ATTR_S *pstViRotationExAttr); 136 HI_S32 HI_MPI_VI_GetChnRotationEx(VI_PIPE ViPipe, VI_CHN ViChn, VI_ROTATION_EX_ATTR_S *pstViRotationExAttr); 137 138 HI_S32 HI_MPI_VI_SetChnLDCAttr(VI_PIPE ViPipe, VI_CHN ViChn, const VI_LDC_ATTR_S *pstLDCAttr); 139 HI_S32 HI_MPI_VI_GetChnLDCAttr(VI_PIPE ViPipe, VI_CHN ViChn, VI_LDC_ATTR_S *pstLDCAttr); 140 HI_S32 HI_MPI_VI_LDCPosQueryDst2Src(VI_PIPE ViPipe, VI_CHN ViChn, 141 const POINT_S *pstDstPointIn, POINT_S *pstSrcPointOut); 142 HI_S32 HI_MPI_VI_LDCPosQuerySrc2Dst(VI_PIPE ViPipe, VI_CHN ViChn, 143 const POINT_S *pstSrcPointIn, POINT_S *pstDstPointOut); 144 145 HI_S32 HI_MPI_VI_SetChnLDCV2Attr(VI_PIPE ViPipe, VI_CHN ViChn, const VI_LDCV2_ATTR_S *pstLDCV2Attr); 146 HI_S32 HI_MPI_VI_GetChnLDCV2Attr(VI_PIPE ViPipe, VI_CHN ViChn, VI_LDCV2_ATTR_S *pstLDCV2Attr); 147 148 HI_S32 HI_MPI_VI_SetChnLDCV3Attr(VI_PIPE ViPipe, VI_CHN ViChn, const VI_LDCV3_ATTR_S *pstLDCV3Attr); 149 HI_S32 HI_MPI_VI_GetChnLDCV3Attr(VI_PIPE ViPipe, VI_CHN ViChn, VI_LDCV3_ATTR_S *pstLDCV3Attr); 150 151 HI_S32 HI_MPI_VI_SetChnSpreadAttr(VI_PIPE ViPipe, VI_CHN ViChn, const SPREAD_ATTR_S *pstSpreadAttr); 152 HI_S32 HI_MPI_VI_GetChnSpreadAttr(VI_PIPE ViPipe, VI_CHN ViChn, SPREAD_ATTR_S *pstSpreadAttr); 153 154 HI_S32 HI_MPI_VI_SetChnLowDelayAttr(VI_PIPE ViPipe, VI_CHN ViChn, const VI_LOW_DELAY_INFO_S *pstLowDelayInfo); 155 HI_S32 HI_MPI_VI_GetChnLowDelayAttr(VI_PIPE ViPipe, VI_CHN ViChn, VI_LOW_DELAY_INFO_S *pstLowDelayInfo); 156 157 HI_S32 HI_MPI_VI_GetChnRegionLuma(VI_PIPE ViPipe, VI_CHN ViChn, const VIDEO_REGION_INFO_S *pstRegionInfo, 158 HI_U64 *pu64LumaData, HI_S32 s32MilliSec); 159 HI_S32 HI_MPI_VI_SetChnDISConfig(VI_PIPE ViPipe, VI_CHN ViChn, const DIS_CONFIG_S *pstDISConfig); 160 HI_S32 HI_MPI_VI_GetChnDISConfig(VI_PIPE ViPipe, VI_CHN ViChn, DIS_CONFIG_S *pstDISConfig); 161 HI_S32 HI_MPI_VI_SetChnDISAttr(VI_PIPE ViPipe, VI_CHN ViChn, const DIS_ATTR_S *pstDISAttr); 162 HI_S32 HI_MPI_VI_GetChnDISAttr(VI_PIPE ViPipe, VI_CHN ViChn, DIS_ATTR_S *pstDISAttr); 163 HI_S32 HI_MPI_VI_SetChnDISParam(VI_PIPE ViPipe, VI_CHN ViChn, const DIS_PARAM_S *pstDISParam); 164 HI_S32 HI_MPI_VI_GetChnDISParam(VI_PIPE ViPipe, VI_CHN ViChn, DIS_PARAM_S *pstDISParam); 165 166 HI_S32 HI_MPI_VI_SetExtChnFisheye(VI_PIPE ViPipe, VI_CHN ViChn, const FISHEYE_ATTR_S *pstFishEyeAttr); 167 HI_S32 HI_MPI_VI_GetExtChnFisheye(VI_PIPE ViPipe, VI_CHN ViChn, FISHEYE_ATTR_S *pstFishEyeAttr); 168 169 HI_S32 HI_MPI_VI_SetExtChnAttr(VI_PIPE ViPipe, VI_CHN ViChn, const VI_EXT_CHN_ATTR_S *pstExtChnAttr); 170 HI_S32 HI_MPI_VI_GetExtChnAttr(VI_PIPE ViPipe, VI_CHN ViChn, VI_EXT_CHN_ATTR_S *pstExtChnAttr); 171 172 HI_S32 HI_MPI_VI_GetChnFrame(VI_PIPE ViPipe, VI_CHN ViChn, VIDEO_FRAME_INFO_S *pstFrameInfo, HI_S32 s32MilliSec); 173 HI_S32 HI_MPI_VI_ReleaseChnFrame(VI_PIPE ViPipe, VI_CHN ViChn, const VIDEO_FRAME_INFO_S *pstFrameInfo); 174 175 HI_S32 HI_MPI_VI_SetChnEarlyInterrupt(VI_PIPE ViPipe, VI_CHN ViChn, const VI_EARLY_INTERRUPT_S *pstEarlyInterrupt); 176 HI_S32 HI_MPI_VI_GetChnEarlyInterrupt(VI_PIPE ViPipe, VI_CHN ViChn, VI_EARLY_INTERRUPT_S *pstEarlyInterrupt); 177 178 HI_S32 HI_MPI_VI_SetChnAlign(VI_PIPE ViPipe, VI_CHN ViChn, HI_U32 u32Align); 179 HI_S32 HI_MPI_VI_GetChnAlign(VI_PIPE ViPipe, VI_CHN ViChn, HI_U32 *pu32Align); 180 181 HI_S32 HI_MPI_VI_ChnAttachVbPool(VI_PIPE ViPipe, VI_CHN ViChn, VB_POOL VbPool); 182 HI_S32 HI_MPI_VI_ChnDetachVbPool(VI_PIPE ViPipe, VI_CHN ViChn); 183 184 HI_S32 HI_MPI_VI_QueryChnStatus(VI_PIPE ViPipe, VI_CHN ViChn, VI_CHN_STATUS_S *pstChnStatus); 185 186 HI_S32 HI_MPI_VI_GetChnFd(VI_PIPE ViPipe, VI_CHN ViChn); 187 188 /* 4 for vi stitch group */ 189 HI_S32 HI_MPI_VI_SetStitchGrpAttr(VI_STITCH_GRP StitchGrp, const VI_STITCH_GRP_ATTR_S *pstStitchGrpAttr); 190 HI_S32 HI_MPI_VI_GetStitchGrpAttr(VI_STITCH_GRP StitchGrp, VI_STITCH_GRP_ATTR_S *pstStitchGrpAttr); 191 192 /* 5 for vi mcf group */ 193 HI_S32 HI_MPI_VI_SetMcfAttr(VI_MCF_GRP McfGrp, const VI_MCF_GRP_ATTR_S *pstMcfGrpAttr); 194 HI_S32 HI_MPI_VI_GetMcfAttr(VI_MCF_GRP McfGrp, VI_MCF_GRP_ATTR_S *pstMcfGrpAttr); 195 196 /* 6 for vi module */ 197 HI_S32 HI_MPI_VI_SetModParam(const VI_MOD_PARAM_S *pstModParam); 198 HI_S32 HI_MPI_VI_GetModParam(VI_MOD_PARAM_S *pstModParam); 199 200 HI_S32 HI_MPI_VI_CloseFd(HI_VOID); 201 202 #ifdef __cplusplus 203 #if __cplusplus 204 } 205 #endif 206 #endif /* __cplusplus */ 207 208 #endif /* MPI_VI_H */ 209