Files
2026-08-24 10:03:24 +08:00

203 lines
14 KiB
C

// 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 <stdbool.h>
#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__ */