Blame view

src/ai_platform/MultiSourceProcess.h 6.82 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"
5f4efeaa   Zhao Shuaihua   玩手机增加车辆朝向及雨棚过滤
22
  #include "../ai_engine_module/motocycle_refit_phone_process.h"
c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
23
24
  #include "../ai_engine_module/motocycle_phone_process.h"
  #include "../ai_engine_module/motocycle_refit_process.h"
09c2d08c   Hu Chunming   arm交付版
25
  #include "../util/JpegUtil.h"
b309bd27   Zhao Shuaihua   通途版本增加授权
26
  #include "atlas_licence.h"//授权文件
09c2d08c   Hu Chunming   arm交付版
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
57
58
59
  
  #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   添加发送录制消息的线程
60
61
    // 发送录制消息给任务
    int recode_thread();
e0e42d5c   Zhao Shuaihua   添加时间限制:用于农村违法分析;修...
62
    bool CheckTime();
09c2d08c   Hu Chunming   arm交付版
63
64
65
66
67
68
69
70
71
72
73
  
  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   增加三轮车/货车载人 二轮车超员/...
74
75
76
77
78
79
80
    
    // 三轮车载人
    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);
5f4efeaa   Zhao Shuaihua   玩手机增加车辆朝向及雨棚过滤
81
82
    // 电动车改装(加雨棚)及二轮车驾乘人员使用手机
    void algorithm_motor_refit_phone_process(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
83
84
85
86
    // 二轮车驾乘人员使用手机
    void algorithm_motor_phone_process(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
    // 电动车改装(加雨棚)
    void algorithm_motor_refit_process(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
87
    
09c2d08c   Hu Chunming   arm交付版
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  
  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   增加三轮车/货车载人 二轮车超员/...
105
106
    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
c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
107
    void village_snapshot(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vec_vptMem, vector<vector<int>> deleteObjectID);
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
108
   
09c2d08c   Hu Chunming   arm交付版
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
  
    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;
  
0683ce86   Zhao Shuaihua   调整jni;主动删除的任务不推送mq
131
132
133
    mutex m_ActiveFinishedTaskMtx ;
    map<string,bool> m_ActiveFinishedTaskMap; // 记录主动结束的任务,不发送mq
  
09c2d08c   Hu Chunming   arm交付版
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
    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   增加三轮车/货车载人 二轮车超员/...
149
150
151
    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_;
5f4efeaa   Zhao Shuaihua   玩手机增加车辆朝向及雨棚过滤
152
153
154
    ai_engine_module::motocycle_refit_phone_process::MotorRefitPhoneProcess motor_refit_phoneprocess_;
    // ai_engine_module::motocycle_phone_process::MotorPhoneProcess motor_phoneprocess_;
    // ai_engine_module::motocycle_refit_process::MotorRefitProcess motor_refitprocess_;
09c2d08c   Hu Chunming   arm交付版
155
156
157
  
    face_det_ai_engine m_face_det_ai_engine; // 人脸检测
  
beec83ee   Hu Chunming   添加发送录制消息的线程
158
159
160
161
    deque<RecoderInfo> m_recoderinfo_queue;
    mutex m_recoderinfo_queue_mtx;
    thread* m_recode_thread {nullptr};
  
b309bd27   Zhao Shuaihua   通途版本增加授权
162
163
164
165
    void *skt_handle = nullptr;//授权
  	atlas_licence_check_param check_param;//授权
  	int check_label = -1;//授权 -1=未授权  0=授权  1=授权check日已经check成功(每月一次check
  
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
166
  
09c2d08c   Hu Chunming   arm交付版
167
  };