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 110  
111 111 m_devId = vptParam.gpuid;
112 112  
  113 + aclrtSetDevice(m_devId);
  114 +
113 115 string models_dir = vptParam.models_dir;
114 116  
115 117 VPTProcess_PARAM vparam;
... ... @@ -305,6 +307,9 @@ int CMultiSourceProcess::GetTaskStatus(const string taskID) {
305 307  
306 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 313 std::vector<std::string> taskids;
309 314 std::vector<int> statues;
310 315 int sta = 0;
... ... @@ -312,11 +317,11 @@ int CMultiSourceProcess::GetTaskStatus(const string taskID) {
312 317 taskids.emplace_back(taskID);
313 318 statues.emplace_back(2);
314 319 sta = 2;
315   - } else if(pDecManager->isRunning(taskID)){
  320 + } else if(it != m_FinishedTaskMap.end()){
316 321 taskids.emplace_back(taskID);
317 322 statues.emplace_back(1);
318 323 sta = 1;
319   - } else if(pDecManager->isFinished(taskID)){
  324 + } else if(it == m_FinishedTaskMap.end()){
320 325 taskids.emplace_back(taskID);
321 326 statues.emplace_back(0);
322 327 sta = 0;
... ... @@ -1207,18 +1212,20 @@ void CMultiSourceProcess::timing_snapshot_thread(){
1207 1212 // LOG_DEBUG("snapshot save path: {}", fpath_ori.c_str());
1208 1213  
1209 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 1230 #ifdef POST_USE_RABBITMQ
1224 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 27  
28 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 32 CMultiSourceProcess* tools = (CMultiSourceProcess*)handle;
33 33 return tools->GetTaskStatus(task_id);
... ...
src/ai_platform/stl_aiplatform.h
... ... @@ -46,7 +46,7 @@ extern &quot;C&quot;
46 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 52 * FUNCTION: add_task
... ...
src/decoder/interface/DecoderManager.cpp
... ... @@ -372,7 +372,7 @@ bool DecoderManager::isFinished(const string name){
372 372 }
373 373  
374 374 LOG_ERROR("没有找到name为{}的解码器",name);
375   - return false;
  375 + return true;
376 376 }
377 377  
378 378 bool DecoderManager::isPausing(const string name){
... ...