Blame view

src/ai_platform/MultiSourceProcess.h 2.6 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"
e109b001   Hu Chunming   修正多显卡问题
8
  #include "../util/vpc_util.h"
9b4d4adf   Hu Chunming   添加定时抓拍;
9
  #include "../util/JpegUtil.h"
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
10
11
12
13
14
15
16
  
  #include <map>
  #include <mutex>
  #include <thread>
  #include <list>
  #include <vector>
  #include <deque>
571e8ac8   Hu Chunming   完成轨迹定时抓拍
17
  #include <set>
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
18
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
  
  
  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   添加定时抓拍;
46
    void timing_snapshot_thread();
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
47
48
49
50
51
52
53
54
55
56
57
58
  
  private:
    // 算法相关
    int algorthim_vpt(vector<DeviceMemory*> vec_gpuMem);
  
  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   添加最优快照截取模式
59
60
61
62
    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   完成轨迹定时抓拍
63
64
65
66
67
68
69
70
  
  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   添加定时抓拍;
71
72
    std::thread* m_timing_snapshot_thread;
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    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   完成轨迹定时抓拍
87
88
89
    set<OBJ_KEY> m_total_snapshot_info_multi_object;
    mutex m_total_mutex;
  
e109b001   Hu Chunming   修正多显卡问题
90
    VPCUtil vpc_util;
9b4d4adf   Hu Chunming   添加定时抓拍;
91
    JpegUtil jpegUtil;
e109b001   Hu Chunming   修正多显卡问题
92
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
93
94
95
96
97
  #ifdef POST_USE_RABBITMQ
    mq::Manager *mq_manager_{nullptr};
  #endif
  
  };