123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387 |
- /**********************************************************************************
- *
- * Copyright (c) 2019-2022 Beijing AXera Technology Co., Ltd. All Rights Reserved.
- *
- * This source file is the property of Beijing AXera Technology Co., Ltd. and
- * may not be copied or distributed in any isomorphic form without the prior
- * written consent of Beijing AXera Technology Co., Ltd.
- *
- **********************************************************************************/
- #ifndef _AX_SKEL_STRUCT_H_
- #define _AX_SKEL_STRUCT_H_
- #include "ax_global_type.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /// @brief pipeline type
- typedef enum axSKEL_PPL_E {
- AX_SKEL_PPL_BODY = 1, /* body detection pipeline */
- AX_SKEL_PPL_POSE, /* pose detection pipeline */
- AX_SKEL_PPL_FH, /* facehuman detection pipeline */
- AX_SKEL_PPL_HVCFP, /* hvcfp detection pipeline */
- AX_SKEL_PPL_FACE_FEATURE, /* face feature detection pipeline */
- AX_SKEL_PPL_HVCP, /* hvcp detection pipeline */
- AX_SKEL_PPL_MAX,
- } AX_SKEL_PPL_E;
- /// @brief init parameter struct
- typedef struct axSKEL_INIT_PARAM_S {
- const AX_CHAR *pStrModelDeploymentPath;
- } AX_SKEL_INIT_PARAM_S;
- /// @brief rect struct
- typedef struct axSKEL_RECT_S {
- AX_F32 fX;
- AX_F32 fY;
- AX_F32 fW;
- AX_F32 fH;
- } AX_SKEL_RECT_S;
- /// @brief point struct
- typedef struct axSKEL_POINT_S {
- AX_F32 fX;
- AX_F32 fY;
- } AX_SKEL_POINT_S;
- /// @brief point set struct
- typedef struct axSKEL_POINT_SET_S {
- const AX_CHAR *pstrObjectCategory;
- AX_SKEL_POINT_S stPoint;
- AX_F32 fConfidence;
- } AX_SKEL_POINT_SET_S;
- /// @brief meta info struct
- typedef struct axSKEL_META_INFO_S {
- AX_CHAR *pstrType;
- AX_CHAR *pstrValue;
- } AX_SKEL_META_INFO_S;
- /// @brief config item struct
- typedef struct axSKEL_CONFIG_ITEM_S {
- AX_CHAR *pstrType;
- AX_VOID *pstrValue;
- AX_U32 nValueSize;
- } AX_SKEL_CONFIG_ITEM_S;
- /// @brief config struct
- typedef struct axSKEL_CONFIG_S {
- AX_U32 nSize;
- AX_SKEL_CONFIG_ITEM_S *pstItems;
- } AX_SKEL_CONFIG_S;
- /// @brief handle parameter struct
- typedef struct axSKEL_HANDLE_PARAM_S {
- AX_SKEL_PPL_E ePPL;
- AX_U32 nWidth;
- AX_U32 nHeight;
- AX_U32 nFrameDepth;
- AX_U32 nFrameCacheDepth;
- AX_SKEL_CONFIG_S stConfig;
- } AX_SKEL_HANDLE_PARAM_S;
- /// @brief feature item struct
- typedef struct axSKEL_FEATURE_ITEM_S {
- AX_CHAR *pstrType;
- AX_VOID *pstrValue;
- AX_U32 nValueSize;
- } AX_SKEL_FEATURE_ITEM_S;
- /// @brief tract status
- typedef enum axSKEL_TRACK_STATUS_E {
- AX_SKEL_TRACK_STATUS_NEW,
- AX_SKEL_TRACK_STATUS_UPDATE,
- AX_SKEL_TRACK_STATUS_DIE,
- AX_SKEL_TRACK_STATUS_SELECT,
- AX_SKEL_TRACK_STATUS_MAX,
- } AX_SKEL_TRACK_STATUS_E;
- /// @brief crop frame struct
- typedef struct axSKEL_CROP_FRAME_S {
- AX_U64 nFrameId;
- AX_U8 *pFrameData;
- AX_U32 nFrameDataSize;
- AX_U32 nFrameWidth;
- AX_U32 nFrameHeight;
- } AX_SKEL_CROP_FRAME_S;
- /// @brief pose blur config
- typedef struct axSKEL_POSE_BLUR_S {
- AX_F32 fPitch;
- AX_F32 fYaw;
- AX_F32 fRoll;
- AX_F32 fBlur; // 0 - 1
- } AX_SKEL_POSE_BLUR_S;
- /// @brief object binding
- typedef struct axSKEL_OBJECT_BINDING_S {
- const AX_CHAR *pstrObjectCategoryBind;
- AX_U64 nTrackId;
- } AX_SKEL_OBJECT_BINDING_S;
- /// @brief object item struct
- typedef struct axSKEL_OBJECT_ITEM_S {
- const AX_CHAR *pstrObjectCategory;
- AX_SKEL_RECT_S stRect;
- AX_U64 nFrameId;
- AX_U64 nTrackId;
- AX_SKEL_TRACK_STATUS_E eTrackState;
- AX_F32 fConfidence;
- AX_SKEL_POSE_BLUR_S stFacePoseBlur;
- AX_BOOL bCropFrame;
- AX_SKEL_CROP_FRAME_S stCropFrame;
- AX_BOOL bPanoraFrame;
- AX_SKEL_CROP_FRAME_S stPanoraFrame;
- AX_U8 nPointSetSize;
- AX_SKEL_POINT_SET_S *pstPointSet;
- AX_U8 nFeatureSize;
- AX_SKEL_FEATURE_ITEM_S *pstFeatureItem;
- AX_U32 nObjectBindSize;
- AX_SKEL_OBJECT_BINDING_S *pstObjectBind;
- AX_U32 nMetaInfoSize;
- AX_SKEL_META_INFO_S *pstMetaInfo;
- } AX_SKEL_OBJECT_ITEM_S;
- typedef struct axSKEL_FRAME_CACHE_LIST_S {
- AX_U64 nFrameId;
- } AX_SKEL_FRAME_CACHE_LIST_S;
- /// @brief result struct
- typedef struct axSKEL_RESULT_S {
- AX_U64 nFrameId;
- AX_U32 nOriginalWidth;
- AX_U32 nOriginalHeight;
- AX_U32 nObjectSize;
- AX_SKEL_OBJECT_ITEM_S *pstObjectItems;
- AX_U32 nCacheListSize;
- AX_SKEL_FRAME_CACHE_LIST_S *pstCacheList;
- AX_VOID *pUserData;
- AX_VOID *pPrivate;
- } AX_SKEL_RESULT_S;
- /// @brief frame struct
- typedef struct axSKEL_FRAME_S {
- AX_U64 nFrameId;
- AX_VIDEO_FRAME_S stFrame;
- AX_VOID *pUserData;
- } AX_SKEL_FRAME_S;
- /// @brief ppl config struct
- typedef struct axSKEL_PPL_CONFIG_S {
- AX_SKEL_PPL_E ePPL;
- AX_CHAR *pstrPPLConfigKey;
- } AX_SKEL_PPL_CONFIG_S;
- /// @brief capability struct
- typedef struct axSKEL_CAPABILITY_S {
- AX_U32 nPPLConfigSize;
- AX_SKEL_PPL_CONFIG_S *pstPPLConfig;
- AX_U32 nMetaInfoSize;
- AX_SKEL_META_INFO_S *pstMetaInfo;
- AX_VOID *pPrivate;
- } AX_SKEL_CAPABILITY_S;
- /// @brief version info struct
- typedef struct axSKEL_VERSION_INFO_S {
- AX_CHAR *pstrVersion;
- AX_U32 nMetaInfoSize;
- AX_SKEL_META_INFO_S *pstMetaInfo;
- AX_VOID *pPrivate;
- } AX_SKEL_VERSION_INFO_S;
- /// @brief handle definition
- typedef AX_VOID *AX_SKEL_HANDLE;
- /// @brief callback definition
- typedef AX_VOID (*AX_SKEL_RESULT_CALLBACK_FUNC)(AX_SKEL_HANDLE pHandle, AX_SKEL_RESULT_S *pstResult, AX_VOID *pUserData);
- /* begin of config param */
- /// @brief Common Threshold Config
- typedef struct axSKEL_COMMON_THRESHOLD_CONFIG_S {
- AX_F32 fValue;
- } AX_SKEL_COMMON_THRESHOLD_CONFIG_S;
- // cmd: "body_max_target_count", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "vehicle_max_target_count", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "cycle_max_target_count", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "body_confidence", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "face_confidence", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "vehicle_confidence", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "cycle_confidence", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "plate_confidence", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "crop_encoder_qpLevel", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- // cmd: "venc_attr_config", value_type: AX_SKEL_COMMON_THRESHOLD_CONFIG_S *
- /// @brief Common Enable Config
- typedef struct axSKEL_COMMON_ENABLE_CONFIG_S {
- AX_BOOL bEnable;
- } AX_SKEL_COMMON_ENABLE_CONFIG_S;
- // cmd: "push_bind_enable", value_type: AX_SKEL_COMMON_ENABLE_CONFIG_S *
- // cmd: "track_enable", value_type: AX_SKEL_COMMON_ENABLE_CONFIG_S *
- // cmd: "push_enable", value_type: AX_SKEL_COMMON_ENABLE_CONFIG_S *
- // cmd: "push_attr_always", value_type: AX_SKEL_COMMON_ENABLE_CONFIG_S *
- /// @brief object size filter config
- typedef struct axSKEL_OBJECT_SIZE_FILTER_CONFIG_S {
- AX_U32 nWidth;
- AX_U32 nHeight;
- } AX_SKEL_OBJECT_SIZE_FILTER_CONFIG_S;
- // cmd: "body_min_size", value_type: AX_SKEL_OBJECT_SIZE_FILTER_CONFIG_S *
- // cmd: "face_min_size", value_type: AX_SKEL_OBJECT_SIZE_FILTER_CONFIG_S *
- // cmd: "vehicle_min_size", value_type: AX_SKEL_OBJECT_SIZE_FILTER_CONFIG_S *
- // cmd: "cycle_min_size", value_type: AX_SKEL_OBJECT_SIZE_FILTER_CONFIG_S *
- // cmd: "plate_min_size", value_type: AX_SKEL_OBJECT_SIZE_FILTER_CONFIG_S *
- /// @brief roi config
- typedef struct axSKEL_ROI_CONFIG_S {
- AX_BOOL bEnable;
- AX_SKEL_RECT_S stRect;
- } AX_SKEL_ROI_CONFIG_S;
- // cmd:"detect_roi", value_type: AX_SKEL_ROI_CONFIG_S*
- /// @brief roi point config
- #define AX_SKEL_ROI_POINT_MAX (10)
- typedef struct axSKEL_ROI_POLYGON_CONFIG_S {
- AX_BOOL bEnable;
- AX_U32 nPointNum;
- AX_SKEL_POINT_S *pstPoint; // points should as clockwise or anti-clockwise
- } AX_SKEL_ROI_POLYGON_CONFIG_S;
- // cmd:"detect_roi_polygon", value_type: AX_SKEL_ROI_POLYGON_CONFIG_S*
- /// @brief push mode
- typedef enum axSKEL_PUSH_MODE_E {
- AX_SKEL_PUSH_MODE_FAST = 1,
- AX_SKEL_PUSH_MODE_INTERVAL,
- AX_SKEL_PUSH_MODE_BEST,
- AX_SKEL_PUSH_MODE_MAX
- } AX_SKEL_PUSH_MODE_E;
- /// @brief push config
- typedef struct axSKEL_PUSH_STRATEGY_S {
- AX_SKEL_PUSH_MODE_E ePushMode;
- AX_U32 nIntervalTimes; // only for AX_SKEL_PUSH_MODE_INTERVAL or AX_SKEL_PUSH_MODE_FAST
- AX_U32 nPushCounts; // only for AX_SKEL_PUSH_MODE_INTERVAL or AX_SKEL_PUSH_MODE_FAST
- AX_BOOL bPushSameFrame; // AX_FALSE: push cross frame; AX_TRUE: push same frame
- } AX_SKEL_PUSH_STRATEGY_S;
- // cmd: "push_strategy", value_type: AX_SKEL_ROI_CONFIG_S *
- /// @brief Crop encoder threshold config
- typedef struct axSKEL_CROP_ENCODER_THRESHOLD_CONFIG_S {
- AX_F32 fScaleLeft;
- AX_F32 fScaleRight;
- AX_F32 fScaleTop;
- AX_F32 fScaleBottom;
- } AX_SKEL_CROP_ENCODER_THRESHOLD_CONFIG_S;
- // cmd:"body_crop_encoder", value_type: AX_SKEL_CROP_ENCODER_THRESHOLD_CONFIG_S *
- // cmd:"vehicle_crop_encoder", value_type: AX_SKEL_CROP_ENCODER_THRESHOLD_CONFIG_S *
- // cmd:"cycle_crop_encoder", value_type: AX_SKEL_CROP_ENCODER_THRESHOLD_CONFIG_S *
- // cmd:"face_crop_encoder", value_type: AX_SKEL_CROP_ENCODER_THRESHOLD_CONFIG_S *
- // cmd:"plate_crop_encoder", value_type: AX_SKEL_CROP_ENCODER_THRESHOLD_CONFIG_S *
- /// @brief Reszie panorama config
- typedef struct axSKEL_RESIZE_CONFIG_S {
- AX_F32 fW;
- AX_F32 fH;
- } AX_SKEL_RESIZE_CONFIG_S;
- // cmd:"resize_panorama_encoder_config", value_type: AX_SKEL_RESIZE_CONFIG_S *
- /// @brief push panorama config
- typedef struct axSKEL_PUSH_PANORAMA_CONFIG_S {
- AX_BOOL bEnable;
- AX_U32 nQuality;
- } AX_SKEL_PUSH_PANORAMA_CONFIG_S;
- // cmd:"push_panorama", value_type: AX_SKEL_PUSH_PANORAMA_CONFIG_S *
- /// @brief face attr filter config
- typedef struct axSKEL_FACE_ATTR_FILTER_CONFIG_S {
- AX_U32 nWidth;
- AX_U32 nHeight;
- AX_SKEL_POSE_BLUR_S stPoseblur;
- } AX_SKEL_FACE_ATTR_FILTER_CONFIG_S;
- /// @brief common attr filter config
- typedef struct axSKEL_COMMON_ATTR_FILTER_CONFIG_S {
- AX_F32 fQuality; // 0 - 1
- } AX_SKEL_COMMON_ATTR_FILTER_CONFIG_S;
- /// @brief attr filter config
- typedef struct axSKEL_ATTR_FILTER_CONFIG_S {
- union {
- AX_SKEL_FACE_ATTR_FILTER_CONFIG_S stFaceAttrFilterConfig; // face
- AX_SKEL_COMMON_ATTR_FILTER_CONFIG_S stCommonAttrFilterConfig; // body,vehicle,cycle,plate
- };
- } AX_SKEL_ATTR_FILTER_CONFIG_S;
- // cmd:"push_quality_face", value_type: AX_SKEL_ATTR_FILTER_CONFIG_S *
- // cmd:"push_quality_body", value_type: AX_SKEL_ATTR_FILTER_CONFIG_S *
- // cmd:"push_quality_vehicle", value_type: AX_SKEL_ATTR_FILTER_CONFIG_S *
- // cmd:"push_quality_cycle", value_type: AX_SKEL_ATTR_FILTER_CONFIG_S *
- // cmd:"push_quality_plate", value_type: AX_SKEL_ATTR_FILTER_CONFIG_S *
- /// @brief config target item
- typedef struct axSKEL_TARGET_ITEMG_S {
- const AX_CHAR *pstrObjectCategory;
- } AX_SKEL_TARGET_ITEM_S;
- /// @brief config object target
- typedef struct axSKEL_TARGET_CONFIG_S {
- AX_U32 nSize;
- AX_SKEL_TARGET_ITEM_S *pstItems;
- } AX_SKEL_TARGET_CONFIG_S;
- // cmd:"target_config", value_type: AX_SKEL_TARGET_CONFIG_S *
- // cmd:"push_target_config", value_type: AX_SKEL_TARGET_CONFIG_S *
- typedef enum axSKEL_ANALYZER_ATTR_E {
- AX_SKEL_ANALYZER_ATTR_NONE = 0,
- AX_SKEL_ANALYZER_ATTR_FACE_FEATURE,
- AX_SKEL_ANALYZER_ATTR_FACE_ATTRIBUTE,
- AX_SKEL_ANALYZER_ATTR_PLATE_ATTRIBUTE,
- AX_SKEL_ANALYZER_ATTR_MAX,
- } AX_SKEL_ANALYZER_ATTR_E;
- /// @brief config target attribute analyzer
- typedef struct axSKEL_ANALYZER_CONFIG_S {
- AX_U32 nSize;
- AX_SKEL_ANALYZER_ATTR_E *peItems;
- } AX_SKEL_ANALYZER_CONFIG_S;
- // cmd:"analyzer_attr_config", value_type: AX_SKEL_ATTR_FILTER_CONFIG_S *
- /* end of config param */
- /* begin of search */
- /// @brief search: group feature param
- typedef struct axSKEL_SEARCH_FEATURE_PARAM_S {
- AX_U32 nBatchSize;
- AX_U64* pObjectIds; // 1 dimensional[batch_size] continuous storage
- AX_U8* pFeatures; // 1 dimensional[batch_size*feature_size] continuous storage
- AX_VOID **ppObjectInfos; // 1 dimensional[batch_size] continuous storage // 'object_infos' can be null
- } AX_SKEL_SEARCH_FEATURE_PARAM_S;
- /// @brief search: group insert feature param
- typedef struct axSKEL_SEARCH_PARAM_S {
- AX_U32 nBatchSize;
- AX_U32 nTop_k;
- AX_U8 *pFeatures; // 1 dimensional[batch_size*feature_size] continuous storage
- // If the following types are valid, the filter policy will be activated. If not, the filter
- // policy will not be performed
- } AX_SKEL_SEARCH_PARAM_S;
- /// @brief search: result of search
- typedef struct axSKEL_SEARCH_RESULT_S {
- AX_U32 nBatchSize; // object number of search
- AX_U32 nTop_k; // object with k highest scores in object group
- AX_F32 *pfScores; // scorces of object matching in object group
- AX_U64 *pObjectIds; // object id of object matching in object group
- AX_VOID **ppObjectInfos; // information of object matching in object group(pass-through by user)
- AX_VOID *pPrivate;
- } AX_SKEL_SEARCH_RESULT_S;
- /* end of search */
- #ifdef __cplusplus
- }
- #endif
- #endif /* _AX_SKEL_STRUCT_H_ */
|