From 31a1e592daf2b719a7fcc93d3e7cb6c2495b4994 Mon Sep 17 00:00:00 2001 From: 2657262686@qq.com <2657262686@qq.com> Date: Fri, 28 Oct 2022 18:31:34 +0800 Subject: [PATCH] 完成接口匹配 --- FFNvDecoder/FFNvDecoderManager.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- FFNvDecoder/FFNvDecoderManager.h | 31 +++++++++++++++++++++++++++++-- tsl_aiplatform/ai_platform/MultiSourceProcess.cpp | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------- tsl_aiplatform/ai_platform/MultiSourceProcess.h | 83 +++++++++++++++++++++++------------------------------------------------------------ tsl_aiplatform/ai_platform/header.h | 1 - tsl_aiplatform/ai_platform/stl_aiplatform.cpp | 30 +++++++++++++++--------------- 6 files changed, 259 insertions(+), 105 deletions(-) diff --git a/FFNvDecoder/FFNvDecoderManager.cpp b/FFNvDecoder/FFNvDecoderManager.cpp index d42715d..5008f8c 100644 --- a/FFNvDecoder/FFNvDecoderManager.cpp +++ b/FFNvDecoder/FFNvDecoderManager.cpp @@ -8,9 +8,10 @@ FFNvDecoder* FFNvDecoderManager::createDecoder(MgrDecConfig& config){ closeAllFinishedDecoder(); - int num = decoderMap.count(config.name); - if (num > 0) - { + std::lock_guard l(m_mutex); + + auto it = decoderMap.find(config.name); + if (it != decoderMap.end()){ cout << "已存在name所标记的解码器" << endl; return nullptr; } @@ -46,6 +47,8 @@ bool FFNvDecoderManager::setUserPtr(const string name, const void * userPtr) return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -65,6 +68,8 @@ FFNvDecoder* FFNvDecoderManager::getDecoderByName(const string name) return nullptr; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -89,6 +94,8 @@ bool FFNvDecoderManager::startDecodeByName(const string name){ return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -101,6 +108,9 @@ bool FFNvDecoderManager::startDecodeByName(const string name){ } void FFNvDecoderManager::startAllDecode(){ + + std::lock_guard l(m_mutex); + for(auto iter = decoderMap.begin(); iter != decoderMap.end(); iter++){ if (!iter->second->isRunning()) { @@ -116,7 +126,8 @@ bool FFNvDecoderManager::closeDecoderByName(const string name){ return false; } - m_mutex_erase.lock(); + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -125,30 +136,29 @@ bool FFNvDecoderManager::closeDecoderByName(const string name){ dec->second = nullptr; decoderMap.erase(dec); - m_mutex_erase.unlock(); return true; } - m_mutex_erase.unlock(); cout << "没有找到name为" << name << "的解码器!" << endl; return false; } void FFNvDecoderManager::closeAllDecoder() { - m_mutex_erase.lock(); + std::lock_guard l(m_mutex); + for(auto iter = decoderMap.begin(); iter != decoderMap.end(); iter++){ iter->second->close(); delete iter->second; iter->second = nullptr; } decoderMap.clear(); - m_mutex_erase.unlock(); } void FFNvDecoderManager::closeAllFinishedDecoder() { - m_mutex_erase.lock(); + std::lock_guard l(m_mutex); + for(auto iter = decoderMap.begin(); iter != decoderMap.end(); ){ if (iter->second->isFinished()) { @@ -161,7 +171,6 @@ void FFNvDecoderManager::closeAllFinishedDecoder() iter++ ; } } - m_mutex_erase.unlock(); } int FFNvDecoderManager::count() @@ -179,6 +188,8 @@ bool FFNvDecoderManager::pauseDecoder(const string name) return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -198,6 +209,8 @@ bool FFNvDecoderManager::resumeDecoder(const string name) return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -222,6 +235,8 @@ bool FFNvDecoderManager::isRunning(const string name){ return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -239,6 +254,8 @@ bool FFNvDecoderManager::isFinished(const string name){ return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -256,6 +273,8 @@ bool FFNvDecoderManager::isPausing(const string name){ return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -274,6 +293,8 @@ bool FFNvDecoderManager::setDecKeyframe(const string name, bool bKeyframe) return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -293,6 +314,8 @@ bool FFNvDecoderManager::getResolution(const string name, int &width, int &heigh return false; } + std::lock_guard l(m_mutex); + auto dec = decoderMap.find(name); if (dec != decoderMap.end()) { @@ -302,4 +325,17 @@ bool FFNvDecoderManager::getResolution(const string name, int &width, int &heigh cout << "没有找到name为" << name << "的解码器!" << endl; return false; +} + +vector FFNvDecoderManager::getAllDecodeName(){ + + closeAllFinishedDecoder(); + + std::lock_guard l(m_mutex); + + vector decode_names; + for(auto it = decoderMap.begin(); it != decoderMap.end(); ++it){ + decode_names.push_back(it->first); + } + return decode_names; } \ No newline at end of file diff --git a/FFNvDecoder/FFNvDecoderManager.h b/FFNvDecoder/FFNvDecoderManager.h index 76f46b4..e00b024 100644 --- a/FFNvDecoder/FFNvDecoderManager.h +++ b/FFNvDecoder/FFNvDecoderManager.h @@ -111,6 +111,15 @@ public: **************************************************/ void closeAllDecoder(); + /************************************************** + * 接口:closeAllDecoderByGpuid + * 功能:关闭某张显卡撒花姑娘的全部解码器 + * 参数:const string gpuid gpu的id + * 返回:void + * 备注: + **************************************************/ + void closeAllDecoderByGpuid(const string gpuid); + /************************************************** * 接口:pauseDecoder * 功能:暂停指定名称的解码器 @@ -179,13 +188,31 @@ public: * 功能:设置是否只解码关键帧。默认全解 * 参数:const string name 解码器名称 * bool bKeyframe 是否只解码关键帧。true,只解码关键帧;false,普通的全解码 - * 返回:void + * 返回:bool 成功返回true,失败返回false * 备注: **************************************************/ bool setDecKeyframe(const string name, bool bKeyframe); + /************************************************** + * 接口:getResolution + * 功能:获取视频分辨率 + * 参数:const string name 解码器名称 + * int &width 从 width 返回视频宽度 + * int &height 从 height 返回视频高度 + * 返回:bool 成功获取返回true,失败返回false + * 备注: + **************************************************/ bool getResolution(const string name, int &width, int &height); + /************************************************** + * 接口:getAllDecodeName + * 功能:获取全部解码器名称 + * 参数:void + * 返回:vector 返回全部解码器名称 + * 备注: + **************************************************/ + vector getAllDecodeName(); + private: FFNvDecoderManager(){} @@ -194,5 +221,5 @@ private: private: map decoderMap; - mutex m_mutex_erase; + mutex m_mutex; }; \ No newline at end of file diff --git a/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp b/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp index 137f8d2..3b7fd91 100644 --- a/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp +++ b/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp @@ -46,12 +46,54 @@ void decode_finished_cbk(const void * userPtr){ } } +CMultiSourceProcess::CMultiSourceProcess(){ + m_bfinish = false; +} + +CMultiSourceProcess::~CMultiSourceProcess(){ + +} + +/* 授权校验线程 */ +#ifdef AUTHORIZATION +void CMultiSourceProcess::check_thread() { + int res = -1; +#ifndef _MSC_VER + char wtime[15]; + memset(wtime, 0, 15); + char *time = wtime; +#endif + + while (1) { + if(m_bfinish){ + break; + } +#ifdef _MSC_VER + res = sy_licence(productSN); +#else + res = sy_licence(productSN, &time); +#endif + if (res < 0) { + licence_status = licence_status - 1; + } else { + if (licence_status < 0) { + licence_status = 0; + } + } + std::this_thread::sleep_for(std::chrono::seconds(300)); + } +} +#endif + /* @InitAlgorthim * @Description: 初始化全局参数 + 根据配置初始化算法模型 */ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam) { licence_status_ = -1; - thread_status_ = -1; + + m_bfinish = false; + + gpu_id_ = to_string(vptParam.gpuid); int ret = SUCCESS; @@ -68,14 +110,8 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam) { ret = sy_time_check(2023, 2); // license_check(param.auth_license, productSN);// if (ret == SUCCESS) #endif // ifdef AUTHORIZATION - { /*初始化全局参数*/ - viewTaskID = -1; - TaskInPlay = 0; - TotalTask = 0; - ProcessFlag = false; - SourceFlag = false; mModeSnapshotVideo = "cpu"; mModeSnapshotLittle = "cpu"; @@ -102,7 +138,7 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam) { CUresult rlt = CUDA_SUCCESS; rlt = cuDeviceTotalMem(&memSize, dev); - gpu_total_memory = (float)memSize / (1024 * 1024); + double gpu_total_memory = (float)memSize / (1024 * 1024); if (gpu_total_memory < 9000) // small gpu memory section_batch_size_ = 10; @@ -128,7 +164,6 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam) { param.max_batch = section_batch_size_; param.serialize_file = "./serialize_file/FPN_VPT"; param.auth_license = /*vptParam.auth_license*/ "sy_tsl_aiplatform_sdk_2021"; - gpu_id_ = vptParam.gpuid; } VPT_Handle_ = nullptr; @@ -205,9 +240,15 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam) { { licence_status_ = 0; #ifdef AUTHORIZATION - thread_ = boost::thread(check_thread, this); + pthread_create(&m_authority_check_thread,0, + [](void* arg) + { + CMultiSourceProcess* a=(CMultiSourceProcess*)arg; + a->check_thread(); + return (void*)0; + } + ,this); #endif - thread_status_ = 0; } } else { return AUTHOR_ERROR; @@ -225,7 +266,7 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam) { return ret; } -bool CMultiSourceProcess::add_task_operation(task_param _cur_task_param){ +bool CMultiSourceProcess::AddTask(task_param _cur_task_param){ FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); @@ -235,7 +276,7 @@ bool CMultiSourceProcess::add_task_operation(task_param _cur_task_param){ config.cfg.post_decoded_cbk = decoded_cbk; config.cfg.decode_finished_cbk = decode_finished_cbk; config.cfg.force_tcp = true; // rtsp用tcp - config.cfg.gpuid = _cur_task_param.gpu_id_; + config.cfg.gpuid = gpu_id_; FFNvDecoder* dec = pDecManager->createDecoder(config); if (!dec) { @@ -286,7 +327,7 @@ bool CMultiSourceProcess::add_task_operation(task_param _cur_task_param){ #endif // 启动算法处理线程 - startProcessByGpuid(_cur_task_param.gpu_id_); + startProcessByGpuid(gpu_id_); } // 启动算法处理线程 @@ -318,10 +359,11 @@ void CMultiSourceProcess::startProcessByGpuid(const string gpuid){ } void CMultiSourceProcess::post_decode_thread(task_param _cur_task_param, AVFrame * gpuFrame){ + if (gpuFrame->format == AV_PIX_FMT_CUDA){ - GpuRgbMemory* gpuMem = new GpuRgbMemory(3, gpuFrame->width, gpuFrame->height, _cur_task_param.task_id, _cur_task_param.gpu_id_ , true); + GpuRgbMemory* gpuMem = new GpuRgbMemory(3, gpuFrame->width, gpuFrame->height, _cur_task_param.task_id, gpu_id_ , true); - cudaSetDevice(atoi(_cur_task_param.gpu_id_)); + cudaSetDevice(atoi(gpu_id_.c_str())); cuda_common::setColorSpace( ITU_709, 0 ); cudaError_t cudaStatus = cuda_common::CUDAToBGR((CUdeviceptr)gpuFrame->data[0],(CUdeviceptr)gpuFrame->data[1], gpuFrame->linesize[0], gpuFrame->linesize[1], gpuMem->getMem(), gpuFrame->width, gpuFrame->height); cudaDeviceSynchronize(); @@ -331,6 +373,9 @@ void CMultiSourceProcess::post_decode_thread(task_param _cur_task_param, AVFrame } do{ + if(m_bfinish){ + break; + } // TODO 本循环需要一个可以手动终止的开关 m_QueueMtx.lock(); if(m_RgbDataList.size() >= (20 * gpuProcessthreadMap.size() + 20)){ @@ -349,6 +394,8 @@ void CMultiSourceProcess::decode_finished_thread(task_param t_param){ // 任务结束,关闭跟踪 if (!FinishTaskTracker(VPT_Handle_, t_param.task_id)) LOG_ERROR("Finish VPT Tracker failed, task_id: {}", t_param.task_id); + + finish_task(t_param.task_id,false); } bool CMultiSourceProcess::task_has_vpt_algor(const std::string &task_id){ @@ -399,6 +446,10 @@ void CMultiSourceProcess::algorthim_process_thread(const string gpuid){ break; } + if(m_bfinish){ + break; + } + /* step5. 凑齐的解码数据 拼batch */ m_QueueMtx.lock(); @@ -1066,7 +1117,6 @@ void CMultiSourceProcess::algorthim_face_detect(vector& task_list, sy_im face_det_interest_task_id, face_det_interest_imgs.data(), facedet_result, face_deleteObjectID); // 保存已结束轨迹的目标 - // auto task_iter_face = pThreadParam->TaskInPlayID.begin(); auto task_iter_face = face_det_interest_task_id.begin(); //debug by zsh for (int i = 0; i < face_deleteObjectID.size(); i++) { for (int j = 0; j < face_deleteObjectID[i].size(); ++j) { @@ -1126,4 +1176,83 @@ int CMultiSourceProcess::GetTaskStatus(const string taskID) { } return SUCCESS; +} + +bool CMultiSourceProcess::PauseTask(const string taskID) { + FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); + return pDecManager->pauseDecoder(taskID); +} + +bool CMultiSourceProcess::RestartTask(const string taskID){ + FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); + return pDecManager->resumeDecoder(taskID); +} + +bool CMultiSourceProcess::finish_task(const string taskID, const bool delete_snapshot){ + FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); + bool ret = pDecManager->closeDecoderByName(taskID); + +#ifdef POST_USE_RABBITMQ + auto json_str = helpers::gen_json::gen_office_task_heart_beat_json({taskID}); + mq_manager_->publish(mq_type_t::HEART_BEAT_MQ, json_str.c_str(), true); +#endif + + #ifdef WITH_FACE_DET_SS + // 人脸任务结束 + auto task_param_ptr = m_task_param_manager->get_task_algor_param(taskID); + if (task_param_ptr->human_face_algors.find(algorithm_type_t::FACE_SNAPSHOT) != + task_param_ptr->human_face_algors.end()) { + m_face_det_ai_engine.finish_task(taskID); + } +#endif + + m_task_param_manager->delete_task_param(taskID); + + if (delete_snapshot) { + m_snapshot_reprocessing->delete_finishtask_snapshot(taskID); + ((save_snapshot_reprocessing *)m_save_snapshot_reprocessing)->delete_finishtask(taskID); + } + + return ret; +} + +bool CMultiSourceProcess::FinishTask(const string taskID){ + return finish_task(taskID,true); +} + +void CMultiSourceProcess::CloseAllTask(){ + m_bfinish = true; + + FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); + pDecManager->closeAllDecoder(); + + for (auto it = gpuProcessthreadMap.begin(); it != gpuProcessthreadMap.end(); it++){ + if(it->second != 0){ + pthread_join(*(it->second),0); + delete it->second; + } + } + gpuProcessthreadMap.clear(); + + m_QueueMtx.lock(); + for (auto iter = m_RgbDataList.begin(); iter!=m_RgbDataList.end(); ){ + GpuRgbMemory* gpuMem = *iter; + delete gpuMem; + gpuMem = nullptr; + + iter = m_RgbDataList.erase(iter); + } + m_RgbDataList.clear(); + m_QueueMtx.unlock(); + + VPT_Release(VPT_Handle_); + + ((save_snapshot_reprocessing *)m_save_snapshot_reprocessing)->save_snapshot_reprocessing_release(); + if (m_save_snapshot_reprocessing) { + delete m_save_snapshot_reprocessing; + m_save_snapshot_reprocessing = nullptr; + } + + m_task_param_manager->task_param_manager_release(); + } \ No newline at end of file diff --git a/tsl_aiplatform/ai_platform/MultiSourceProcess.h b/tsl_aiplatform/ai_platform/MultiSourceProcess.h index 78677a6..a590738 100644 --- a/tsl_aiplatform/ai_platform/MultiSourceProcess.h +++ b/tsl_aiplatform/ai_platform/MultiSourceProcess.h @@ -140,9 +140,6 @@ public: ~CMultiSourceProcess(); int InitAlgorthim(tsl_aiplatform_param vptParam); - void *GetVPT_Handle() const { - return VPT_Handle_; - }; #ifdef POST_USE_RABBITMQ int AddMqConn(mq_type_t mq_type, rabbitmq_conn_params_t mq_conn_param); @@ -150,38 +147,21 @@ public: #endif /* task api */ - bool add_task_operation(task_param _cur_task_param); - - int AddOperator(task_param tparam); - void AddOperator(string taskID, int taskOper); - - void OperatorTask(); - bool HasNewTask() const { - return !TaskOperatorQ.empty(); - } - void PauseTask(const string taskID); - void RestartTask(const string taskID); - void FinishTask(const string taskID, const bool delete_snapshot); - bool DeleteTaskQ(const string taskID); - - /* decode api */ - void FinishDecode(const string taskID); - bool FinishDecode(std::pair &iter); - - /* sync api */ - int WaitAndPauseTask(const string taskID, const int max_timeout_ms); - int WaitAndFinishTask(const string taskID, const int max_timeout_ms); - int WaitAndRestartTask(const string taskID, const int max_timeout_ms); - - /* frame process api */ - int FinishProcessThread(); - - int everyframe_process(vector &task_in_play_id, sy_img *images, vector &ol_det_result); + bool AddTask(task_param _cur_task_param); + bool PauseTask(const string taskID); + bool RestartTask(const string taskID); + bool FinishTask(const string taskID); + void CloseAllTask(); public: - void algorthim_process_thread(const string gpuid); - void post_decode_thread(task_param _cur_task_param, AVFrame * gpuFrame); - void decode_finished_thread(task_param _cur_task_param); + // 生成线程的内部接口,外部勿调用 + void algorthim_process_thread(const string gpuid); // 算法处理线程 + void post_decode_thread(task_param _cur_task_param, AVFrame * gpuFrame); // 解码数据处理函数,在解码线程中执行 + void decode_finished_thread(task_param _cur_task_param); // 解码线程结束后处理函数,在解码线程中执行 + +#ifdef AUTHORIZATION + void check_thread(); // 授权校验线程 +#endif private: void startProcessByGpuid(const string gpuid); @@ -189,6 +169,8 @@ private: bool task_has_face_algor(const std::string &task_id); void cuda_free_wrap(sy_img &img); + bool finish_task(const string taskID, const bool delete_snapshot); + // VPT void algorthim_vpt(vector& task_list, sy_img *batch_img); // 行人安全分析算法 @@ -217,34 +199,22 @@ private: bool enable_async = true, const bool ori_img_is_in_gpu = true, const bool roi_img_is_in_gpu = true); -private: - map gpuProcessthreadMap; - - boost::thread ProcessThread; - std::mutex _tx_add_task; - - deque TaskOperatorQ; - int capacity; + int everyframe_process(vector &task_in_play_id, sy_img *images, vector &ol_det_result); - double gpu_total_memory; - boost::thread thread_; - void *authority_handle{nullptr}; +private: + map gpuProcessthreadMap; // 本想做个多GPU的,但是原版的多GPU设置由上层来做,而且似乎可以更好 + list m_RgbDataList; + std::mutex m_QueueMtx; + bool m_bfinish; -public: /*按道理不应该是public的 但是在线程函数中会用到以下的数据 每个都写一个get函数太过复杂*/ - map system_all_tasks_; + pthread_t m_authority_check_thread; void *VPT_Handle_{nullptr}; int section_batch_size_; int licence_status_; - int thread_status_; - int gpu_id_; + string gpu_id_; - int AddTaskSucFlag; // 0:初始化状态 1:添加任务成功 -1:添加任务失败 - int TaskInPlay; - int TotalTask; - set TaskInPlayID; - map task_id_to_processed_frame_; // vector VPTResult; std::atomic ProcessFlag; @@ -290,15 +260,8 @@ public: /*按道理不应该是public的 但是在线程函数中会用到以下 private: base_reprocessing_unit *m_save_snapshot_reprocessing{nullptr}; - - -private: - list m_RgbDataList; - std::mutex m_QueueMtx; }; -static CMultiSourceProcess mainProcess; - #if 0 struct CUVID_USERDATA { diff --git a/tsl_aiplatform/ai_platform/header.h b/tsl_aiplatform/ai_platform/header.h index 16b2362..cb11a9d 100644 --- a/tsl_aiplatform/ai_platform/header.h +++ b/tsl_aiplatform/ai_platform/header.h @@ -429,7 +429,6 @@ typedef struct task_param { const char *task_id; //外部传入任务id algor_config_param *algor_config_params; //该路rtsp流配置的所有算法参数 int algor_counts; //该路rtsp流共配置几种算法 - const char* gpu_id_; } task_param; #endif diff --git a/tsl_aiplatform/ai_platform/stl_aiplatform.cpp b/tsl_aiplatform/ai_platform/stl_aiplatform.cpp index c49fba8..c4e5167 100644 --- a/tsl_aiplatform/ai_platform/stl_aiplatform.cpp +++ b/tsl_aiplatform/ai_platform/stl_aiplatform.cpp @@ -6,13 +6,13 @@ * @Description: */ #include "stl_aiplatform.h" -#include "MultiSourceVideoProcess.h" +#include "MultiSourceProcess.h" int tsl_aiplatform_init(void **handle, tsl_aiplatform_param param) { - *handle = new CMultiSourceVideoProcess(); - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)*handle; + *handle = new CMultiSourceProcess(); + CMultiSourceProcess* tools = (CMultiSourceProcess*)*handle; return tools->InitAlgorthim(param); } @@ -20,7 +20,7 @@ int tsl_aiplatform_init(void **handle, tsl_aiplatform_param param) #ifdef POST_USE_RABBITMQ int add_mq_conn(void *handle, mq_type_t tstatus, rabbitmq_conn_params_t mq_conn_param) { - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)handle; + CMultiSourceProcess* tools = (CMultiSourceProcess*)handle; int res = tools->AddMqConn(tstatus, mq_conn_param); return res; } @@ -29,7 +29,7 @@ int add_mq_conn(void *handle, mq_type_t tstatus, rabbitmq_conn_params_t mq_conn_ int get_task_status(void *handle, char *task_id) { - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)handle; + CMultiSourceProcess* tools = (CMultiSourceProcess*)handle; int res = tools->GetTaskStatus(task_id); return res; } @@ -37,8 +37,8 @@ int get_task_status(void *handle, char *task_id) int add_task(void *handle, task_param param) { - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)handle; - int res = tools->AddOperator(param); + CMultiSourceProcess* tools = (CMultiSourceProcess*)handle; + int res = tools->AddTask(param); return res; } @@ -46,8 +46,8 @@ int add_task(void *handle, task_param param) int pause_task(void *handle, char * task_id, const int max_timeout_ms) { int error_code = FAILED; - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)handle; - error_code = tools->WaitAndPauseTask(task_id, max_timeout_ms); + CMultiSourceProcess* tools = (CMultiSourceProcess*)handle; + error_code = tools->PauseTask(task_id); return error_code; } @@ -55,16 +55,16 @@ int pause_task(void *handle, char * task_id, const int max_timeout_ms) int restart_task(void *handle, char * task_id, const int max_timeout_ms) { int error_code = FAILED; - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)handle; - error_code = tools->WaitAndRestartTask(task_id, max_timeout_ms); + CMultiSourceProcess* tools = (CMultiSourceProcess*)handle; + error_code = tools->RestartTask(task_id); return error_code; } int finish_task(void *handle, char * task_id, const int max_timeout_ms) { int error_code = FAILED; - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)handle; - error_code = tools->WaitAndFinishTask(task_id, max_timeout_ms); + CMultiSourceProcess* tools = (CMultiSourceProcess*)handle; + error_code = tools->FinishTask(task_id); return error_code; } @@ -73,8 +73,8 @@ int tsl_aiplatform_release(void **handle) { if (*handle) { - CMultiSourceVideoProcess* tools = (CMultiSourceVideoProcess*)*handle; - tools->FinishProcessThread(); + CMultiSourceProcess* tools = (CMultiSourceProcess*)*handle; + tools->CloseAllTask(); delete tools; tools = NULL; -- libgit2 0.21.4