Commit c5950ce3d9958c3916013e934651cbbd820f11fb
1 parent
458962a0
修改任务结束的判断方式:任务全流程结束才算结束,避免重复利用task_id时,新创建任务会导致原未完成任务在算法处理中崩溃的问题
Showing
4 changed files
with
24 additions
and
17 deletions
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 "C" | @@ -46,7 +46,7 @@ extern "C" | ||
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){ |