// SPDX-License-Identifier: (GPL-2.0-only OR MIT) /* * Copyright (C) 2025 Amlogic, Inc. All rights reserved */ #ifndef __LIB_CVE_H__ #define __LIB_CVE_H__ #include "aml_cve.h" #include #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif int CVE_DMA(CVE_HANDLE *pCveHandle, CVE_DATA_T *pstSrc, CVE_DST_DATA_T *pstDst, CVE_DMA_CTRL_T *pstDmaCtrl, bool bInstant); int CVE_LumaStatArray(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_MEM_INFO_T *pstDst, const CVE_RECT_U16_T astCveLumaRect[], CVE_LUMA_STAT_ARRAY_CTRL_T *pstLumaStatArrayCtrl, bool bInstant); int CVE_Filter(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_DST_MEM_INFO_T *pstDstMem, CVE_FILTER_CTRL_T *pstFltCtrl, bool bInstant); int CVE_CSC(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_CSC_CTRL_T *pstCscCtrl, bool bInstant); int CVE_FilterAndCSC(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_FILTER_AND_CSC_CTRL_T *pstFltCscCtrl, bool bInstant); int CVE_Dilate(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_DILATE_CTRL_T *pstDilateCtrl, bool bInstant); int CVE_Erode(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_ERODE_CTRL_T *pstErodeCtrl, bool bInstant); int CVE_Bernsen(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_BERNSEN_CTRL_T *pstBernsenCtrl, bool bInstant); int CVE_Thresh(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_THRESH_CTRL_T *pstThrCtrl, bool bInstant); int CVE_Sobel(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDstH, CVE_DST_IMAGE_T *pstDstV, CVE_SOBEL_CTRL_T *pstSobelCtrl, bool bInstant); int CVE_MagAndAng(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDstMag, CVE_DST_IMAGE_T *pstDstAng, CVE_MAG_AND_ANG_CTRL_T *pstMagAndAngCtrl, bool bInstant); int CVE_Integ(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_INTEG_CTRL_T *pstIntegCtrl, bool bInstant); int CVE_Hist(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_MEM_INFO_T *pstDst, CVE_HIST_CTRL_T *pstHistCtrl, bool bInstant); int CVE_Query(CVE_HANDLE cveHandle, bool *pbFinish, bool bBlock); int CVE_NCC(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc1, CVE_SRC_IMAGE_T *pstSrc2, CVE_DST_MEM_INFO_T *pstDst, CVE_NCC_CTRL_T *pstNccCtrl, bool bInstant); int CVE_NormGrad(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDstH, CVE_DST_IMAGE_T *pstDstV, CVE_DST_IMAGE_T *pstDstHV, CVE_NORM_GRAD_CTRL_T *pstNormGradCtrl, bool bInstant); int CVE_Thresh_S16(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_THRESH_S16_CTRL_T *pstThrS16Ctrl, bool bInstant); int CVE_Thresh_U16(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_THRESH_U16_CTRL_T *pstThrU16Ctrl, bool bInstant); int CVE_OrdStatFilter(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_ORD_STAT_FILTER_CTRL_T *pstOrdStatFltCtrl, bool bInstant); int CVE_16BitTo8Bit(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_16BIT_TO_8BIT_CTRL_T *pst16BitTo8BitCtrl, bool bInstant); int CVE_MatchBgModel(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstCurImg, CVE_SRC_IMAGE_T *pstPreImg, CVE_MEM_INFO_T *pstBgModel, CVE_DST_IMAGE_T *pstFg, CVE_DST_IMAGE_T *pstBg, CVE_DST_IMAGE_T *pstCurDiffBg, CVE_DST_IMAGE_T *pstFrmDiff, CVE_MATCH_BG_MODEL_CTRL_T *pstMatchBgModelCtrl, bool bInstant); int CVE_UpdateBgModel(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstCurImg, CVE_MEM_INFO_T *pstBgModel1, CVE_MEM_INFO_T *pstBgModel2, CVE_DST_MEM_INFO_T *pstStatData, CVE_UPDATE_BG_MODEL_CTRL_T *pstUpdateBgModelCtrl, bool bInstant); int CVE_LBP(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_LBP_CTRL_T *pstLbpCtrl, bool bInstant); int CVE_EqualizeHist(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_EQUALIZE_HIST_CTRL_T *pstEqualizeHistCtrl, bool bInstant); int CVE_CCL(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstDst, CVE_DST_MEM_INFO_T *pstBlob, CVE_CCL_CTRL_T *pstCclCtrl, bool bInstant); int CVE_GMM(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_SRC_IMAGE_T *pstFactor, CVE_DST_IMAGE_T *pstFg, CVE_DST_IMAGE_T *pstBg, CVE_MEM_INFO_T *pstModel, CVE_GMM_CTRL_T *pstGmmCtrl, bool bInstant); int CVE_CannyHysEdge(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstEdge, CVE_DST_MEM_INFO_T *pstStack, CVE_CANNY_HYS_EDGE_CTRL_T *pstCannyHysEdgeCtrl, bool bInstant); int CVE_CannyEdge(CVE_IMAGE_T *pstEdge, CVE_MEM_INFO_T *pstStack, CVE_CANNY_EDGE_CTRL_T *pstCannyEdgeCtrl); int CVE_STCandiCorner(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_DST_IMAGE_T *pstLabel, CVE_DST_IMAGE_T *pstCandiCorner, CVE_DST_MEM_INFO_T *pstCandiCornerPoint, CVE_ST_CANDI_CORNER_CTRL_T *pstStCandiCornerCtrl, bool bInstant); int CVE_STCorner(CVE_SRC_MEM_INFO_T *pstCandiCornerPoint, CVE_DST_MEM_INFO_T *pstCornerPoint, CVE_ST_CORNER_CTRL_T *pstStCornerCtrl); int CVE_SAD(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc1, CVE_SRC_IMAGE_T *pstSrc2, CVE_DST_IMAGE_T *pstSad, CVE_DST_IMAGE_T *pstThr, CVE_SAD_CTRL_T *pstSadCtrl, bool bInstant); int CVE_GradFg(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstFg, CVE_SRC_IMAGE_T *pstCurGrad, CVE_SRC_IMAGE_T *pstBgGrad, CVE_DST_IMAGE_T *pstGradFg, CVE_GRAD_FG_CTRL_T *pstGradFgCtrl, bool bInstant); int CVE_BuildLKOpticalFlowPyr(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcPrevPyr, CVE_DST_IMAGE_T astDstPyr[], CVE_BUILD_LK_OPTICAL_FLOW_PYR_CTRL_T *pstBuildLkOptiFlowPyrCtrl, bool bInstant); int CVE_LKOpticalFlowPyr(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T astSrcPrevPyr[], CVE_SRC_IMAGE_T astSrcNextPyr[], CVE_SRC_MEM_INFO_T *pstPrevPts, CVE_MEM_INFO_T *pstNextPts, CVE_DST_MEM_INFO_T *pstStatus, CVE_LK_OPTICAL_FLOW_PYR_CTRL_T *pstLkOptiFlowPyrCtrl, bool bInstant); int CVE_Map(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc, CVE_SRC_MEM_INFO_T *pstMap, CVE_DST_IMAGE_T *pstDst, CVE_MAP_CTRL_T *pstMapCtrl, bool bInstant); int CVE_And(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc0, CVE_SRC_IMAGE_T *pstSrc1, CVE_DST_IMAGE_T *pstDst, CVE_AND_CTRL_T *pstAndCtrl, bool bInstant); int CVE_Sub(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc0, CVE_SRC_IMAGE_T *pstSrc1, CVE_DST_IMAGE_T *pstDst, CVE_DST_MEM_INFO_T *pstMemDst, CVE_SUB_CTRL_T *pstSubCtrl, bool bInstant); int CVE_Or(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc0, CVE_SRC_IMAGE_T *pstSrc1, CVE_DST_IMAGE_T *pstDst, CVE_OR_CTRL_T *pstOrCtrl, bool bInstant); int CVE_Xor(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc0, CVE_SRC_IMAGE_T *pstSrc1, CVE_DST_IMAGE_T *pstDst, CVE_XOR_CTRL_T *pstXorCtrl, bool bInstant); int CVE_Dot(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc0, CVE_SRC_IMAGE_T *pstSrc1, CVE_DST_IMAGE_T *pstDst, CVE_DOT_CTRL_T *pstDotCtrl, bool bInstant); int CVE_Add(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc0, CVE_SRC_IMAGE_T *pstSrc1, CVE_DST_IMAGE_T *pstDst, CVE_DST_MEM_INFO_T *pstMemDst, CVE_ADD_CTRL_T *pstAddCtrl, bool bInstant); int CVE_AddMap255To1(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrc0, CVE_SRC_IMAGE_T *pstSrc1, CVE_DST_IMAGE_T *pstDst, CVE_DST_MEM_INFO_T *pstDstMem, CVE_ADD_MAP_255_TO_1_CTRL_T *pstAddMap255To1Ctrl, bool bInstant); int CVE_KCF_GET_YF(CVE_HANDLE *pCveHandle, CVE_SRC_MEM_INFO_T *pstSrcMem, CVE_DST_MEM_INFO_T *pstDstMem, CVE_KCF_GET_YF_CTRL_T *pstKcfGetYfCtrl, bool bInstant); int CVE_KCF_GET_FEATURE(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_DST_MEM_INFO_T *pstDstMem0, CVE_DST_MEM_INFO_T *pstDstMem1, CVE_KCF_GET_FEATURE_CTRL_T *pstKcfGetFeatureCtrl, bool bInstant); int CVE_KCF_GET_TRAIN_AND_TRACK(CVE_HANDLE *pCveHandle, CVE_SRC_MEM_INFO_T *pstSrcMem1, CVE_SRC_MEM_INFO_T *pstSrcMem2, CVE_SRC_MEM_INFO_T *pstSrcMem3, CVE_DST_MEM_INFO_T *pstDstMem0, CVE_DST_MEM_INFO_T *pstDstMem1, CVE_DST_MEM_INFO_T *pstDstMem2, CVE_KCF_TRAIN_AND_TRACK_CTRL_T *pstKcfTrainAndTrackCtrl, bool bInstant); int CVE_LINE_FILTER(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_DST_IMAGE_T *pstDstImage, CVE_LINE_FILTER_CTRL_T *pstLineFilterCtrl, bool bInstant); int CVE_NOISE_REMOVE(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_DST_IMAGE_T *pstDstImage, CVE_NOISE_REMOVE_CTRL_T *pstNoiseRemoveCtrl, bool bInstant); int CVE_ADP_THRESH(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage0, CVE_SRC_IMAGE_T *pstSrcImage1, CVE_DST_IMAGE_T *pstDstImage, CVE_ADP_THRESH_CTRL_T *pstAdpThreshCtrl, bool bInstant); int CVE_REDUCE(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_DST_MEM_INFO_T *pstDstMem0, CVE_DST_MEM_INFO_T *pstDstMem1, CVE_DST_MEM_INFO_T *pstDstMem2, CVE_REDUCE_CTRL_T *pstReduceCtrl, bool bInstant); int CVE_PERSP_TRANS(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_DST_IMAGE_T *pstDstImage, CVE_PERSP_TRANS_CTRL_T *pstPerspTransCtrl, bool bInstant); int CVE_FAST_GUIDE_FILTER(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage0, CVE_SRC_IMAGE_T *pstSrcImage1, CVE_DST_IMAGE_T *pstDstImage0, CVE_DST_IMAGE_T *pstDstImage1, CVE_DST_IMAGE_T *pstDstImage2, CVE_FAST_GUIDE_FILTER_CTRL_T *pstFastGuideFilterCtrl, bool bInstant); int CVE_HOG(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_SRC_MEM_INFO_T *pstSrcMem, CVE_DST_IMAGE_T *pstDstImage, CVE_HOG_CTRL_T *pstHogCtrl, bool bInstant); int CVE_RESIZE(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_SRC_IMAGE_T *pstSrcImage1, CVE_DST_IMAGE_T *pstDstImage, CVE_DST_IMAGE_T *pstDstImage1, CVE_RESIZE_CTRL_T *pstResizeCtrl, bool bInstant); int CVE_SVM_KERNEL(CVE_HANDLE *pCveHandle, CVE_SRC_MEM_INFO_T *pstSrcMem0, CVE_SRC_MEM_INFO_T *pstSrcMem1, CVE_DST_MEM_INFO_T *pstDstMem, CVE_SVM_KERNEL_CTRL_T *pstSvmKernelCtrl, bool bInstant); int CVE_SVM_PREDICT(CVE_HANDLE *pCveHandle, CVE_SRC_MEM_INFO_T *pstSrcMem0, CVE_SRC_MEM_INFO_T *pstSrcMem1, CVE_DST_MEM_INFO_T *pstDstMem0, CVE_DST_MEM_INFO_T *pstDstMem1, CVE_SVM_PREDICT_CTRL_T *pstSvmPredictCtrl, bool bInstant); int CVE_RESHAPE(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_DST_IMAGE_T *pstDstImage, CVE_RESHAPE_CTRL_T *pstReShapeCtrl, bool bInstant); int CVE_IM2COL(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage, CVE_DST_IMAGE_T *pstDstImage, CVE_IM2COL_CTRL_T *pstImToColCtrl, bool bInstant); int CVE_GEMM(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage0, CVE_SRC_IMAGE_T *pstSrcImage1, CVE_SRC_IMAGE_T *pstSrcImage2, CVE_DST_IMAGE_T *pstDstImage, CVE_GEMM_CTRL_T *pstGemmCtrl, bool bInstant); int CVE_POOLING(CVE_HANDLE *pCveHandle, CVE_IMAGE_T *pstSrcImage, CVE_DST_IMAGE_T *pstDstImage, CVE_POOLING_CTRL_T *pstPoolingCtrl, bool bInstant); int CVE_AIISP_TNR_PRE_PROCESS(CVE_HANDLE *pCveHandle, CVE_RAW_AIISP_T *pstSrcRaw0, CVE_RAW_AIISP_T *pstSrcRaw1, CVE_IMAGE_T *pstDstImage, CVE_AIISP_TNR_PRE_PROCESS_CTRL_T *pstAiIspTnrPreProcessCtrl, bool bInstant); int CVE_AIISP_TNR_POST_PROCESS(CVE_HANDLE *pCveHandle, CVE_RAW_AIISP_T *pstSrcRaw0, CVE_RAW_AIISP_T *pstSrcRaw1, CVE_SRC_IMAGE_T *pstSrcImage2, CVE_IMAGE_T *pstSrcImage3, CVE_IMAGE_T *pstDstImage0, CVE_RAW_AIISP_T *pstDstRaw1, CVE_DST_IMAGE_T *pstDstImage2, CVE_DST_IMAGE_T *pstDstImage3, CVE_AIISP_TNR_POST_PROCESS_CTRL_T *pstAiIspTnrPostProcessCtrl, bool bInstant); int CVE_AIISP_SNR_POST_PROCESS(CVE_HANDLE *pCveHandle, CVE_SRC_IMAGE_T *pstSrcImage0, CVE_SRC_IMAGE_T *pstSrcImage1, CVE_SRC_IMAGE_T *pstSrcImage2, CVE_RAW_AIISP_T *pstDstRaw, CVE_AIISP_SNR_POST_PROCESS_CTRL_T *pstAiIspSnrPostProcessCtrl, bool bInstant); int CVE_AIISP_TNR_MFNR_PROCESS(CVE_HANDLE *pCveHandle, CVE_RAW_AIISP_T *pstSrcRaw, CVE_IMAGE_T *pstDstImage, CVE_AIISP_TNR_MFNR_PROCESS_CTRL_T *pstAiIspTnrMfnrProcessCtrl, bool bInstant); int CVE_AIISP_SNR_MFNR_PROCESS(CVE_HANDLE *pCveHandle, CVE_RAW_AIISP_T *pstSrcRaw, CVE_RAW_AIISP_T *pstDstRaw, CVE_AIISP_SNR_MFNR_PROCESS_CTRL_T *pstAiIspSnrMfnrProcessCtrl, bool bInstant); #ifdef __cplusplus #if __cplusplus } #endif #endif #endif /* __LIB_CVE_H__ */