Blame view

src/ai_platform/MultiSourceProcess.h 3.72 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);
fce4580d   Hu Chunming   更新最新代码:修改解码器实现方式并...
52
53
54
55
56
    // 逆行
    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);  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
57
58
59
60
61
62
63
64
  
  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   添加最优快照截取模式
65
66
67
    void vehicle_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
    void vehicle_locus_finished(const OBJ_KEY obj_key);
  
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);
  
fce4580d   Hu Chunming   更新最新代码:修改解码器实现方式并...
71
72
    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);
b00d3d35   Hu Chunming   添加行人、机动车非法闯入
73
    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   添加行人逆行算法
74
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
75
76
77
78
79
80
81
  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   添加定时抓拍;
82
83
    std::thread* m_timing_snapshot_thread;
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
84
85
86
87
88
89
90
91
92
93
94
95
96
97
    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   完成轨迹定时抓拍
98
99
100
    set<OBJ_KEY> m_total_snapshot_info_multi_object;
    mutex m_total_mutex;
  
9b4d4adf   Hu Chunming   添加定时抓拍;
101
    JpegUtil jpegUtil;
e109b001   Hu Chunming   修正多显卡问题
102
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
103
104
105
106
  #ifdef POST_USE_RABBITMQ
    mq::Manager *mq_manager_{nullptr};
  #endif
  
29b64a88   Hu Chunming   添加行人逆行算法
107
108
109
110
  
    ai_engine_module::pedestrian_vehicle_retrograde::PedestrianVehicleRetrograde pedestrian_vehicle_retrograde_;
    ai_engine_module::pedestrian_vehicle_trespass::PedestrianVehicleTrespass pedestrian_vehicle_trespass_;
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
111
  };