Files
SDK_SG200x_V2/middleware/v2/include/cvi_gdc.h
sophgo-forum-service 7ddf29a19c middleware: weekly rls 2024.06.6
-889bd2, add CVI_SYS_IsInit & CVI_VB_IsInit api.
-876c77, comm_pool_cnt = 0 allowed when CVI_VB_SetConfig.
-2a3176, (ldc):Coordinate memory is allocated dynamically.
-e29088, (venc) add sample code for resetGop when request IDR.
-5a3dfa, add gridinfo framework.
-502e95, add sc3336_1l.

Change-Id: Ia4c85f52d57d02409cc893ac492194102c63341e
2024-06-14 21:07:37 +08:00

168 lines
5.2 KiB
C

/*
* Copyright (C) Cvitek Co., Ltd. 2019-2020. All rights reserved.
*
* File Name: include/cvi_gdc.h
* Description:
* gdc interfaces.
*/
#ifndef __CVI_GDC_H__
#define __CVI_GDC_H__
#include <linux/cvi_common.h>
#include <linux/cvi_comm_video.h>
#include <linux/cvi_comm_gdc.h>
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif /* __cplusplus */
/**
* @brief Begin a gdc job,then add task into the job,gdc will finish all the task in the job.
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_BeginJob(GDC_HANDLE *phHandle);
/**
* @brief End a job,all tasks in the job will be submmitted to gdc
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_EndJob(GDC_HANDLE hHandle);
/**
* @brief Cancel a job ,then all tasks in the job will not be submmitted to gdc
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_CancelJob(GDC_HANDLE hHandle);
/**
* @brief Add a fisheye task to a gdc job
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @param pstTask(In), GDC task attribute
* @param pstFisheyeAttr(In), for further settings
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_AddCorrectionTask(GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask
, const FISHEYE_ATTR_S *pstFisheyeAttr);
/**
* @brief Add a rotation task to a gdc job
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @param pstTask(In), GDC task attribute
* @param enRotation(In), for further settings
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_AddRotationTask(GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask, ROTATION_E enRotation);
/**
* @brief Add a affine task to a gdc job
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @param pstTask(In), GDC task attribute
* @param pstAffineAttr(In), for further settings
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_AddAffineTask(GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask, const AFFINE_ATTR_S *pstAffineAttr);
/**
* @brief Add a LDC task to a gdc job
*
* @param pstTask(In), GDC task attribute.
* @param pstLDCAttr(In), GDC LDC attribute
* @param enRotation(In), for further settings
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_AddLDCTask(GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask
, const LDC_ATTR_S *pstLDCAttr, ROTATION_E enRotation);
/**
* @brief this function is abandoned, do not support yet.
*/
CVI_S32 CVI_GDC_AddCnvWarpTask(const float *pfmesh_data, GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask
, const FISHEYE_ATTR_S *pstAffineAttr, bool *bReNew);
/**
* @brief this function is abandoned, do not support yet.
*/
CVI_S32 CVI_GDC_AddCorrectionTaskCNV(GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask
, const FISHEYE_ATTR_S *pstFishEyeAttr, uint8_t *p_tbl, uint8_t *p_idl, uint32_t *tbl_param);
/**
* @brief set meshsize for GDC
*
* @param nMeshHor(In), mesh counts horizontal
* @param nMeshVer(In), mesh counts vertical
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_SetMeshSize(int nMeshHor, int nMeshVer);
/**
* @brief gen GDC LDC(Lens Distortion Correction) mesh table
*
* @param u32Width(In), mesh region width
* @param u32Height(In), mesh region height
* @param pstLDCAttr(In), GDC LDC attribute
* @param pu64PhyAddr(Out), mesh table physical addr in memory
* @param ppVirAddr(Out), mesh table virtual addr in memory
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_GenLDCMesh(CVI_U32 u32Width, CVI_U32 u32Height, const LDC_ATTR_S *pstLDCAttr
, const char *name, CVI_U64 *pu64PhyAddr, CVI_VOID **ppVirAddr);
CVI_S32 CVI_GDC_LoadLDCMesh(CVI_U32 u32Width, CVI_U32 u32Height, const char *fileNname
, const char *tskName, CVI_U64 *pu64PhyAddr, CVI_VOID **ppVirAddr);
/**
* @brief set GDC wrap buf attribute
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @param pstTask(In), GDC task attribute
* @param pstBufWrap(In), GDC wrap buf attribute
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_SetBufWrapAttr(GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask, const DWA_BUF_WRAP_S *pstBufWrap);
/**
* @brief get GDC wrap buf attribute
*
* @param hHandle(In), handle creat by CVI_GDC_BeginJob
* @param pstTask(In), GDC task attribute
* @param pstBufWrap(Out), GDC wrap buf attribute
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_GetBufWrapAttr(GDC_HANDLE hHandle, const GDC_TASK_ATTR_S *pstTask, DWA_BUF_WRAP_S *pstBufWrap);
/**
* @brief dump mesh data for GDC
*
* @param pMeshDumpAttr(In), mesh dump attribute
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_DumpMesh(MESH_DUMP_ATTR_S *pMeshDumpAttr);
/**
* @brief load mesh for GDC, mesh data is load from user
*
* @param pMeshDumpAttr(In), mesh dump attribute
* @param pstLDCAttr(In), LDC_ATTR_S
* @return CVI_S32 Return CVI_SUCCESS if succeed
*/
CVI_S32 CVI_GDC_LoadMesh(MESH_DUMP_ATTR_S *pMeshDumpAttr, const LDC_ATTR_S *pstLDCAttr);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
#endif /* __CVI_GDC_H__ */