Blame view

src/ai_platform/MultiSourceProcess.h 5.4 KB
09c2d08c   Hu Chunming   arm交付版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  #include <map>
  #include <mutex>
  #include <thread>
  #include <list>
  #include <vector>
  #include <deque>
  #include <set>
  
  #include "header.h"
  #include "acl/acl.h"
  #include "acl/ops/acl_dvpp.h"
  #include "task_param_manager.h"
  #include "../reprocessing_module/snapshot_reprocessing.h"
  #include "../reprocessing_module/save_snapshot_reprocessing.h"
  #include "../ai_engine_module/VPTProcess.h"
  #include "../ai_engine_module/face_det_ai_engine.h"
  #include "../ai_engine_module/pedestrian_vehicle_retrograde.h"
  #include "../ai_engine_module/pedestrian_vehicle_trespass.h"
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
19
20
21
  #include "../ai_engine_module/tricycle_manned_process.h"
  #include "../ai_engine_module/truck_manned_process.h"
  #include "../ai_engine_module/motocycle_hs_process.h"
09c2d08c   Hu Chunming   arm交付版
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  #include "../util/JpegUtil.h"
  
  
  #ifdef POST_USE_RABBITMQ
  #include "../reprocessing_module/mq_manager.hpp"
  #endif
  
  
  using namespace std;
  
  class DeviceMemory;
  
  class CMultiSourceProcess {
  public:
    CMultiSourceProcess();
    ~CMultiSourceProcess();
  
    int InitAlgorthim(tsl_aiplatform_param vptParam);
    bool AddTask(task_param _cur_task_param);
    bool PauseTask(const string taskID);
    bool RestartTask(const string taskID);
    bool FinishTask(const string taskID);
    void CloseAllTask();
    int SnapShot(task_param param);
  
  #ifdef POST_USE_RABBITMQ
    int AddMqConn(mq_type_t mq_type, rabbitmq_conn_params_t mq_conn_param);
    int GetTaskStatus(const string taskID);
  #endif
  
  public:
    int algorthim_process_thread();  // 算法处理线程
    void task_finished(const string task_id);
    void decoded_cbk(DeviceMemory* devFrame);
    void timing_snapshot_thread();
beec83ee   Hu Chunming   添加发送录制消息的线程
57
58
    // 发送录制消息给任务
    int recode_thread();
09c2d08c   Hu Chunming   arm交付版
59
60
61
62
63
64
65
66
67
68
69
  
  private:
    // 算法相关
    int algorthim_vpt(vector<DeviceMemory*> vec_gpuMem);
    // 人脸检测抓拍算法
    void algorthim_face_detect(vector<DeviceMemory*> vec_gpuMem);
    // 逆行
    void algorthim_retrograde(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
    // 闯入
    void algorthim_trespass(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, 
                                                    vector<onelevel_det_result>& vptResult ,vector<vector<int>>& deleteObjectID);  
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
70
71
72
73
74
75
76
77
    
    // 三轮车载人
    void algorithm_tricycle_manned(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
    // 货车载人
    void algorithm_truck_manned(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
    // 二轮车超员及未戴盔
    void algorithm_motor_hs_process(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
    
09c2d08c   Hu Chunming   arm交付版
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  
  private:
    // 工具处理函数
    bool task_has_vpt_algor(const std::string &task_id);
    bool task_has_face_algor(const std::string &task_id);
    void clear_finished_task();
    bool finish_task(const string taskID, const bool delete_snapshot);
    int algorithm_vehicle_relult(vector<DeviceMemory*> vec_devMem, vector<onelevel_det_result>& vptResult, vector<vector<int>>& delete_object_id);
    void send_locus_finished_msg(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
    void vehicle_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
    void vehicle_locus_finished(const OBJ_KEY obj_key);
  
    bool save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, vpc_img_info img_info,  vpc_img_info roi_img,
                                         const long long id,const std::string &json_str);
  
    void retrograde_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
    void trespass_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
95
96
97
98
    void void retrograde_trespass_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) ;(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) void retrograde_trespass_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) ; 
    //  village
    void manned_snapshot(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vec_vptMem, vector<vector<int>> deleteObjectID);
   
09c2d08c   Hu Chunming   arm交付版
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
  
    void face_locus_finished(const OBJ_KEY obj_key);
  
    int snapshot_task(std::string& uri_or_name, const std::string& file_name, bool bInTask);
  private:
    int m_devId; 
  
    snapshot_reprocessing *m_snapshot_reprocessing{nullptr};
    task_param_manager *m_task_param_manager{nullptr};
    save_snapshot_reprocessing *m_save_snapshot_reprocessing{nullptr};
  
    std::thread* m_timing_snapshot_thread;
  
    VPTProcess vpt_process;
    int skip_frame_ = 5; // 控制跳帧参数
  
    deque<DeviceMemory*> m_RgbDataList;
    mutex m_DataListMtx; 
  
    mutex m_FinishedTaskMtx;
    map<string,bool> m_FinishedTaskMap;
  
    thread* m_pAlgorthimThread;
    bool m_bfinish{false};
  
    int m_batch_size{1};
  
    set<OBJ_KEY> m_total_snapshot_info_multi_object;
    mutex m_total_mutex;
  
  #ifdef POST_USE_RABBITMQ
    mq::Manager *mq_manager_{nullptr};
  #endif
  
  
    ai_engine_module::pedestrian_vehicle_retrograde::PedestrianVehicleRetrograde pedestrian_vehicle_retrograde_;
    ai_engine_module::pedestrian_vehicle_trespass::PedestrianVehicleTrespass pedestrian_vehicle_trespass_;
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
136
137
138
    ai_engine_module::tricycle_manned_process::TricycleMannedProcess tricycle_manned_;
    ai_engine_module::truck_manned_process::TruckMannedProcess truck_manned_;
    ai_engine_module::motocycle_hs_process::MotorHsProcess motor_hsprocess_;
09c2d08c   Hu Chunming   arm交付版
139
140
141
  
    face_det_ai_engine m_face_det_ai_engine; // 人脸检测
  
beec83ee   Hu Chunming   添加发送录制消息的线程
142
143
144
145
    deque<RecoderInfo> m_recoderinfo_queue;
    mutex m_recoderinfo_queue_mtx;
    thread* m_recode_thread {nullptr};
  
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
146
  
09c2d08c   Hu Chunming   arm交付版
147
  };