face_det_ai_engine.h 1.41 KB
#ifndef _FACE_DET_AI_ENGINE_
#define _FACE_DET_AI_ENGINE_

#include "face_detect.h"
#include "./sort/Sort.h"
#include "../ai_platform/task_param_manager.h"
#include "../ai_platform/det_obj_header.h"

#include "acl/acl.h"
#include "acl/ops/acl_dvpp.h"

using namespace std;


typedef struct facedet_ai_engine_param
{
	//int min_recg_frame_counts;
	fd_param sdk_param;
} facedet_ai_engine_param;

#ifndef _TASK_TRACKER_
#define _TASK_TRACKER_
struct task_tracker
{
	std::string task_id;
	int fusion_interval;//跳帧数
	//tracker *trk;;
	Sort tracker;
};
#endif

class face_det_ai_engine/*: public base_ai_engine*/
{	
public:
	face_det_ai_engine();
	~face_det_ai_engine();
	
	int init_ai_engine(const facedet_ai_engine_param &ai_param/*, person_det_algorthim_cache * cache*/);
	int ai_engine_process_batch(std::vector<std::string> &task_ids, sy_img *image_data_array, std::vector<onelevel_det_result> &result
								, std::vector<std::vector<int>> &deleteObjectID);
	void finish_task(std::string task_id);
	void add_tracker(std::string task_id, int fusion_interval);
	void clear();

private:
	//int cur_batchsize;
	//person_det_algorthim_cache * _cache;
	void* handle;
	int m_max_batchsize;

	int m_devId;
	aclrtContext m_algorthim_ctx;

	std::map<std::string, task_tracker> task_trackers;
	//std::vector<sy_img > _cut_data_array;
	std::map<std::string, std::vector<fd_result>> _fd_result;

	task_param_manager *task_param_manager_;
};

#endif