Blame view

src/ai_platform/MultiSourceProcess.h 3.54 KB
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
1
2
3
4
5
6
7
  #include "header.h"
  #include "acl/acl.h"
  #include "acl/ops/acl_dvpp.h"
  #include "task_param_manager.h"
  #include "../ai_engine_module/VPTProcess.h"
  #include "../reprocessing_module/snapshot_reprocessing.h"
  #include "../reprocessing_module/save_snapshot_reprocessing.h"
29b64a88   Hu Chunming   添加行人逆行算法
8
9
  #include "../ai_engine_module/pedestrian_vehicle_retrograde.h"
  #include "../ai_engine_module/pedestrian_vehicle_trespass.h"
9b4d4adf   Hu Chunming   添加定时抓拍;
10
  #include "../util/JpegUtil.h"
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
11
12
13
14
15
16
17
  
  #include <map>
  #include <mutex>
  #include <thread>
  #include <list>
  #include <vector>
  #include <deque>
571e8ac8   Hu Chunming   完成轨迹定时抓拍
18
  #include <set>
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
19
20
21
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
  
  
  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);
9b4d4adf   Hu Chunming   添加定时抓拍;
47
    void timing_snapshot_thread();
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
48
49
50
51
  
  private:
    // 算法相关
    int algorthim_vpt(vector<DeviceMemory*> vec_gpuMem);
29b64a88   Hu Chunming   添加行人逆行算法
52
53
54
    // 逆行&非法闯入算法模块
    void algorthim_retrograde_trespass(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, 
                                                    vector<onelevel_det_result>& vptResult ,vector<vector<int>>& deleteObjectID);
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
55
56
57
58
59
60
61
62
  
  private:
    // 工具处理函数
    bool task_has_vpt_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);
d7bafd67   Hu Chunming   添加最优快照截取模式
63
64
65
66
    void vehicle_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
    void vehicle_locus_finished(const OBJ_KEY obj_key);
  
    int endframe_obj_process(const OBJ_KEY &obj_key, algorithm_type_t algor_type);
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
67
  
29b64a88   Hu Chunming   添加行人逆行算法
68
69
70
    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);
  
b00d3d35   Hu Chunming   添加行人、机动车非法闯入
71
72
    int endframe_retrograde_trespass(const OBJ_KEY &obj_key);
    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) ;  
29b64a88   Hu Chunming   添加行人逆行算法
73
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
74
75
76
77
78
79
80
  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};
  
9b4d4adf   Hu Chunming   添加定时抓拍;
81
82
    std::thread* m_timing_snapshot_thread;
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
83
84
85
86
87
88
89
90
91
92
93
94
95
96
    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};
  
571e8ac8   Hu Chunming   完成轨迹定时抓拍
97
98
99
    set<OBJ_KEY> m_total_snapshot_info_multi_object;
    mutex m_total_mutex;
  
9b4d4adf   Hu Chunming   添加定时抓拍;
100
    JpegUtil jpegUtil;
e109b001   Hu Chunming   修正多显卡问题
101
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
102
103
104
105
  #ifdef POST_USE_RABBITMQ
    mq::Manager *mq_manager_{nullptr};
  #endif
  
29b64a88   Hu Chunming   添加行人逆行算法
106
107
108
109
  
    ai_engine_module::pedestrian_vehicle_retrograde::PedestrianVehicleRetrograde pedestrian_vehicle_retrograde_;
    ai_engine_module::pedestrian_vehicle_trespass::PedestrianVehicleTrespass pedestrian_vehicle_trespass_;
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
110
  };