ax_skel_api.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. /**********************************************************************************
  2. *
  3. * Copyright (c) 2019-2022 Beijing AXera Technology Co., Ltd. All Rights Reserved.
  4. *
  5. * This source file is the property of Beijing AXera Technology Co., Ltd. and
  6. * may not be copied or distributed in any isomorphic form without the prior
  7. * written consent of Beijing AXera Technology Co., Ltd.
  8. *
  9. **********************************************************************************/
  10. #ifndef _AX_SKEL_API_H_
  11. #define _AX_SKEL_API_H_
  12. #include "ax_global_type.h"
  13. #include "ax_skel_struct.h"
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /* error code */
  18. #define AX_SKEL_SUCC (0)
  19. #define AX_ERR_SKEL_NULL_PTR AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_NULL_PTR)
  20. #define AX_ERR_SKEL_ILLEGAL_PARAM AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_ILLEGAL_PARAM)
  21. #define AX_ERR_SKEL_NOT_INIT AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_NOT_INIT)
  22. #define AX_ERR_SKEL_QUEUE_EMPTY AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_QUEUE_EMPTY)
  23. #define AX_ERR_SKEL_QUEUE_FULL AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_QUEUE_FULL)
  24. #define AX_ERR_SKEL_UNEXIST AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_UNEXIST)
  25. #define AX_ERR_SKEL_TIMEOUT AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_TIMED_OUT)
  26. #define AX_ERR_SKEL_SYS_NOTREADY AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_SYS_NOTREADY)
  27. #define AX_ERR_SKEL_INVALID_HANDLE AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_INVALID_CHNID)
  28. #define AX_ERR_SKEL_NOMEM AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_NOMEM)
  29. #define AX_ERR_SKEL_UNKNOWN AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_UNKNOWN)
  30. #define AX_ERR_SKEL_NOT_SUPPORT AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_NOT_SUPPORT)
  31. #define AX_ERR_SKEL_INITED AX_DEF_ERR(AX_ID_SKEL, 1, AX_ERR_EXIST)
  32. //////////////////////////////////////////////////////////////////////////////////////
  33. /// @brief Initialize skel sdk
  34. ///
  35. /// @param pstParam [I]: initialize parameter
  36. ///
  37. /// @return 0 if success, otherwise failure
  38. //////////////////////////////////////////////////////////////////////////////////////
  39. AX_S32 AX_SKEL_Init(const AX_SKEL_INIT_PARAM_S *pstParam);
  40. //////////////////////////////////////////////////////////////////////////////////////
  41. /// @brief uninitialize skel sdk
  42. ///
  43. /// @param NA
  44. ///
  45. /// @return 0 if success, otherwise failure
  46. //////////////////////////////////////////////////////////////////////////////////////
  47. AX_S32 AX_SKEL_DeInit(AX_VOID);
  48. //////////////////////////////////////////////////////////////////////////////////////
  49. /// @brief create handle
  50. ///
  51. /// @param pstParam [I]: handle parameter
  52. /// @param handle [O]: handle
  53. ///
  54. /// @return 0 if success, otherwise failure
  55. //////////////////////////////////////////////////////////////////////////////////////
  56. AX_S32 AX_SKEL_Create(const AX_SKEL_HANDLE_PARAM_S *pstParam, AX_SKEL_HANDLE *pHandle);
  57. //////////////////////////////////////////////////////////////////////////////////////
  58. /// @brief destroy handle
  59. ///
  60. /// @param pHandle [I]: handle
  61. ///
  62. /// @return 0 if success, otherwise failure
  63. //////////////////////////////////////////////////////////////////////////////////////
  64. AX_S32 AX_SKEL_Destroy(AX_SKEL_HANDLE handle);
  65. //////////////////////////////////////////////////////////////////////////////////////
  66. /// @brief register get algorithm result callback
  67. ///
  68. /// @param pHandle [I]: handle
  69. /// @param callback [I]: callback function
  70. /// @param pUserData [I]: private user data
  71. ///
  72. /// @return 0 if success, otherwise failure
  73. //////////////////////////////////////////////////////////////////////////////////////
  74. AX_S32 AX_SKEL_RegisterResultCallback(AX_SKEL_HANDLE handle, AX_SKEL_RESULT_CALLBACK_FUNC callback, AX_VOID *pUserData);
  75. //////////////////////////////////////////////////////////////////////////////////////
  76. /// @brief send frame
  77. ///
  78. /// @param pHandle [I]: handle
  79. /// @param pstImage [I]: image
  80. /// @param ppstResult [O]: algorithm result
  81. ///
  82. /// @return 0 if success, otherwise failure
  83. //////////////////////////////////////////////////////////////////////////////////////
  84. AX_S32 AX_SKEL_SendFrame(AX_SKEL_HANDLE handle, const AX_SKEL_FRAME_S *pstFrame, AX_S32 nTimeout);
  85. //////////////////////////////////////////////////////////////////////////////////////
  86. /// @brief process image
  87. ///
  88. /// @param pHandle [I]: handle
  89. /// @param ppstResult [O]: algorithm result
  90. /// @param nTimeout [I]: timeout
  91. ///
  92. /// @return 0 if success, otherwise failure
  93. //////////////////////////////////////////////////////////////////////////////////////
  94. AX_S32 AX_SKEL_GetResult(AX_SKEL_HANDLE handle, AX_SKEL_RESULT_S **ppstResult, AX_S32 nTimeout);
  95. //////////////////////////////////////////////////////////////////////////////////////
  96. /// @brief free memory
  97. ///
  98. /// @param p [I]: memory address
  99. ///
  100. /// @return 0 if success, otherwise failure
  101. //////////////////////////////////////////////////////////////////////////////////////
  102. AX_S32 AX_SKEL_Release(AX_VOID *p);
  103. //////////////////////////////////////////////////////////////////////////////////////
  104. /// @brief get capability
  105. ///
  106. /// @param ppstCapability [O]: Capability
  107. ///
  108. /// @return version info
  109. //////////////////////////////////////////////////////////////////////////////////////
  110. AX_S32 AX_SKEL_GetCapability(const AX_SKEL_CAPABILITY_S **ppstCapability);
  111. //////////////////////////////////////////////////////////////////////////////////////
  112. /// @brief get version
  113. ///
  114. /// @param NA
  115. ///
  116. /// @return version info
  117. //////////////////////////////////////////////////////////////////////////////////////
  118. AX_S32 AX_SKEL_GetVersion(const AX_SKEL_VERSION_INFO_S **ppstVersion);
  119. //////////////////////////////////////////////////////////////////////////////////////
  120. /// @brief get config
  121. ///
  122. /// @param pstConfig [I/O]: config
  123. ///
  124. /// @return version info
  125. //////////////////////////////////////////////////////////////////////////////////////
  126. AX_S32 AX_SKEL_GetConfig(AX_SKEL_HANDLE handle, const AX_SKEL_CONFIG_S **ppstConfig);
  127. //////////////////////////////////////////////////////////////////////////////////////
  128. /// @brief set config
  129. ///
  130. /// @param pstConfig [I]: config
  131. ///
  132. /// @return version info
  133. //////////////////////////////////////////////////////////////////////////////////////
  134. AX_S32 AX_SKEL_SetConfig(AX_SKEL_HANDLE handle, const AX_SKEL_CONFIG_S *pstConfig);
  135. //API for SKEL search
  136. //////////////////////////////////////////////////////////////////////////////////////
  137. /// @brief initialize search
  138. ///
  139. /// @param NA
  140. ///
  141. /// @return 0 if success, otherwise failure
  142. //////////////////////////////////////////////////////////////////////////////////////
  143. AX_S32 AX_SKEL_Search_Init(AX_VOID);
  144. //////////////////////////////////////////////////////////////////////////////////////
  145. /// @brief uninitialize search
  146. ///
  147. /// @param NA
  148. ///
  149. /// @return 0 if success, otherwise failure
  150. //////////////////////////////////////////////////////////////////////////////////////
  151. AX_S32 AX_SKEL_Search_DeInit(AX_VOID);
  152. //////////////////////////////////////////////////////////////////////////////////////
  153. /// @brief create group for search
  154. ///
  155. /// @param nGroupId [I]: group id
  156. ///
  157. /// @return 0 if success, otherwise failure
  158. //////////////////////////////////////////////////////////////////////////////////////
  159. AX_S32 AX_SKEL_Search_Create(AX_U64 nGroupId);
  160. //////////////////////////////////////////////////////////////////////////////////////
  161. /// @brief destroy group for search
  162. ///
  163. /// @param nGroupId [I]: group id
  164. ///
  165. /// @return 0 if success, otherwise failure
  166. //////////////////////////////////////////////////////////////////////////////////////
  167. AX_S32 AX_SKEL_Search_Destroy(AX_U64 nGroupId);
  168. //////////////////////////////////////////////////////////////////////////////////////
  169. /// @brief Insert feature for search
  170. ///
  171. /// @param nGroupId [I]: group id
  172. /// @param pParam [I]: feature param
  173. ///
  174. /// @return 0 if success, otherwise failure
  175. //////////////////////////////////////////////////////////////////////////////////////
  176. AX_S32 AX_SKEL_Search_InsertFeature(AX_U64 nGroupId, AX_SKEL_SEARCH_FEATURE_PARAM_S *pstParam);
  177. //////////////////////////////////////////////////////////////////////////////////////
  178. /// @brief Delete feature for search
  179. ///
  180. /// @param nGroupId [I]: group id
  181. /// @param nObjectId [I]: object id
  182. /// @param ppInfo [O]: info
  183. ///
  184. /// @return 0 if success, otherwise failure
  185. //////////////////////////////////////////////////////////////////////////////////////
  186. AX_S32 AX_SKEL_Search_DeleteFeature(AX_U64 nGroupId, AX_U64 nObjectId, AX_VOID **ppInfo);
  187. //////////////////////////////////////////////////////////////////////////////////////
  188. /// @brief search
  189. ///
  190. /// @param nGroupId [I]: group id
  191. /// @param pstParam [I]: param
  192. /// @param ppstResult [O]: result
  193. ///
  194. /// @return 0 if success, otherwise failure
  195. //////////////////////////////////////////////////////////////////////////////////////
  196. AX_S32 AX_SKEL_Search(AX_U64 nGroupId, AX_SKEL_SEARCH_PARAM_S *pstParam, AX_SKEL_SEARCH_RESULT_S **ppstResult);
  197. #ifdef __cplusplus
  198. }
  199. #endif
  200. #endif /* _AX_SKEL_API_H_ */