Commit c5950ce3d9958c3916013e934651cbbd820f11fb

Authored by Hu Chunming
1 parent 458962a0

修改任务结束的判断方式:任务全流程结束才算结束,避免重复利用task_id时,新创建任务会导致原未完成任务在算法处理中崩溃的问题

src/ai_platform/MultiSourceProcess.cpp
@@ -110,6 +110,8 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam){ @@ -110,6 +110,8 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam){
110 110
111 m_devId = vptParam.gpuid; 111 m_devId = vptParam.gpuid;
112 112
  113 + aclrtSetDevice(m_devId);
  114 +
113 string models_dir = vptParam.models_dir; 115 string models_dir = vptParam.models_dir;
114 116
115 VPTProcess_PARAM vparam; 117 VPTProcess_PARAM vparam;
@@ -305,6 +307,9 @@ int CMultiSourceProcess::GetTaskStatus(const string taskID) { @@ -305,6 +307,9 @@ int CMultiSourceProcess::GetTaskStatus(const string taskID) {
305 307
306 DecoderManager* pDecManager = DecoderManager::getInstance(); 308 DecoderManager* pDecManager = DecoderManager::getInstance();
307 309
  310 + std::lock_guard<std::mutex> l1(m_FinishedTaskMtx);
  311 + auto it = m_FinishedTaskMap.find(taskID);
  312 +
308 std::vector<std::string> taskids; 313 std::vector<std::string> taskids;
309 std::vector<int> statues; 314 std::vector<int> statues;
310 int sta = 0; 315 int sta = 0;
@@ -312,11 +317,11 @@ int CMultiSourceProcess::GetTaskStatus(const string taskID) { @@ -312,11 +317,11 @@ int CMultiSourceProcess::GetTaskStatus(const string taskID) {
312 taskids.emplace_back(taskID); 317 taskids.emplace_back(taskID);
313 statues.emplace_back(2); 318 statues.emplace_back(2);
314 sta = 2; 319 sta = 2;
315 - } else if(pDecManager->isRunning(taskID)){ 320 + } else if(it != m_FinishedTaskMap.end()){
316 taskids.emplace_back(taskID); 321 taskids.emplace_back(taskID);
317 statues.emplace_back(1); 322 statues.emplace_back(1);
318 sta = 1; 323 sta = 1;
319 - } else if(pDecManager->isFinished(taskID)){ 324 + } else if(it == m_FinishedTaskMap.end()){
320 taskids.emplace_back(taskID); 325 taskids.emplace_back(taskID);
321 statues.emplace_back(0); 326 statues.emplace_back(0);
322 sta = 0; 327 sta = 0;
@@ -1207,18 +1212,20 @@ void CMultiSourceProcess::timing_snapshot_thread(){ @@ -1207,18 +1212,20 @@ void CMultiSourceProcess::timing_snapshot_thread(){
1207 // LOG_DEBUG("snapshot save path: {}", fpath_ori.c_str()); 1212 // LOG_DEBUG("snapshot save path: {}", fpath_ori.c_str());
1208 1213
1209 acldvppPicDesc *vpcDesc= acldvppCreatePicDesc(); 1214 acldvppPicDesc *vpcDesc= acldvppCreatePicDesc();
1210 - acldvppSetPicDescData(vpcDesc, devMem->getMem());  
1211 - acldvppSetPicDescFormat(vpcDesc, PIXEL_FORMAT_YUV_SEMIPLANAR_420);  
1212 - acldvppSetPicDescWidth(vpcDesc, devMem->getWidth());  
1213 - acldvppSetPicDescHeight(vpcDesc, devMem->getHeight());  
1214 - acldvppSetPicDescWidthStride(vpcDesc, devMem->getWidthStride());  
1215 - acldvppSetPicDescHeightStride(vpcDesc, devMem->getHeightStride());  
1216 - acldvppSetPicDescSize(vpcDesc, devMem->getSize());  
1217 -  
1218 - jpegUtil.jpeg_encode(vpcDesc, fpath_ori);  
1219 -  
1220 - acldvppDestroyPicDesc(vpcDesc);  
1221 - vpcDesc = nullptr; 1215 + if(vpcDesc){
  1216 + acldvppSetPicDescData(vpcDesc, devMem->getMem());
  1217 + acldvppSetPicDescFormat(vpcDesc, PIXEL_FORMAT_YUV_SEMIPLANAR_420);
  1218 + acldvppSetPicDescWidth(vpcDesc, devMem->getWidth());
  1219 + acldvppSetPicDescHeight(vpcDesc, devMem->getHeight());
  1220 + acldvppSetPicDescWidthStride(vpcDesc, devMem->getWidthStride());
  1221 + acldvppSetPicDescHeightStride(vpcDesc, devMem->getHeightStride());
  1222 + acldvppSetPicDescSize(vpcDesc, devMem->getSize());
  1223 +
  1224 + jpegUtil.jpeg_encode(vpcDesc, fpath_ori);
  1225 +
  1226 + acldvppDestroyPicDesc(vpcDesc);
  1227 + vpcDesc = nullptr;
  1228 + }
1222 1229
1223 #ifdef POST_USE_RABBITMQ 1230 #ifdef POST_USE_RABBITMQ
1224 auto json_str = helpers::gen_json::gen_vtsnapshot_json(task_id, fpath_ori); 1231 auto json_str = helpers::gen_json::gen_vtsnapshot_json(task_id, fpath_ori);
src/ai_platform/stl_aiplatform.cpp
@@ -27,7 +27,7 @@ int add_mq_conn(void *handle, mq_type_t tstatus, rabbitmq_conn_params_t mq_conn_ @@ -27,7 +27,7 @@ int add_mq_conn(void *handle, mq_type_t tstatus, rabbitmq_conn_params_t mq_conn_
27 27
28 #endif 28 #endif
29 29
30 -int get_task_status(void *handle, char *task_id) 30 +int get_task_status(void *handle, const char *task_id)
31 { 31 {
32 CMultiSourceProcess* tools = (CMultiSourceProcess*)handle; 32 CMultiSourceProcess* tools = (CMultiSourceProcess*)handle;
33 return tools->GetTaskStatus(task_id); 33 return tools->GetTaskStatus(task_id);
src/ai_platform/stl_aiplatform.h
@@ -46,7 +46,7 @@ extern &quot;C&quot; @@ -46,7 +46,7 @@ extern &quot;C&quot;
46 #endif 46 #endif
47 47
48 48
49 - TSL_AIPLATFORM_API int get_task_status(void *handle, char *task_id); 49 + TSL_AIPLATFORM_API int get_task_status(void *handle, const char *task_id);
50 50
51 /************************************************************************* 51 /*************************************************************************
52 * FUNCTION: add_task 52 * FUNCTION: add_task
src/decoder/interface/DecoderManager.cpp
@@ -372,7 +372,7 @@ bool DecoderManager::isFinished(const string name){ @@ -372,7 +372,7 @@ bool DecoderManager::isFinished(const string name){
372 } 372 }
373 373
374 LOG_ERROR("没有找到name为{}的解码器",name); 374 LOG_ERROR("没有找到name为{}的解码器",name);
375 - return false; 375 + return true;
376 } 376 }
377 377
378 bool DecoderManager::isPausing(const string name){ 378 bool DecoderManager::isPausing(const string name){