Commit 29366d9865aa646b497812488c8e7cefef5005af

Authored by Hu Chunming
1 parent 2dad3188

修正 isseg 判断导致卡死的问题

src/ai_platform/MultiSourceProcess.cpp
@@ -1571,11 +1571,11 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector<string>& @@ -1571,11 +1571,11 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector<string>&
1571 vector<vector<vector<int>>> interest_traffic_region, interest_fence_region; 1571 vector<vector<vector<int>>> interest_traffic_region, interest_fence_region;
1572 vector<vector<int>> interest_labels, interest_fence_labels; 1572 vector<vector<int>> interest_labels, interest_fence_labels;
1573 1573
1574 - int _idx = 0;  
1575 - for (auto _task_id_iter = vpt_interest_task_id.begin(); _task_id_iter != vpt_interest_task_id.end();  
1576 - ++_task_id_iter, ++_idx) // loop task_id; 1574 + for(int i = 0; i < vpt_interest_imgs.size(); i++)
1577 { 1575 {
1578 - auto task_id = *_task_id_iter; 1576 + DeviceMemory* mem = vpt_interest_imgs[i];
  1577 +
  1578 + auto task_id = mem->getId();
1579 auto algor_map = m_task_param_manager->get_task_other_param(task_id); 1579 auto algor_map = m_task_param_manager->get_task_other_param(task_id);
1580 1580
1581 if (algor_map->find(algorithm_type_t::PERSON_IN_VEHICLELANE) != algor_map->end() || 1581 if (algor_map->find(algorithm_type_t::PERSON_IN_VEHICLELANE) != algor_map->end() ||
@@ -1590,8 +1590,10 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector&lt;string&gt;&amp; @@ -1590,8 +1590,10 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector&lt;string&gt;&amp;
1590 ) { 1590 ) {
1591 1591
1592 m_RoadSegTaskMtx.lock(); 1592 m_RoadSegTaskMtx.lock();
1593 - if (!m_RoadSegTaskMap[task_id].isseg) continue;  
1594 - else { 1593 + if (!m_RoadSegTaskMap[task_id].isseg) {
  1594 + m_RoadSegTaskMtx.unlock();
  1595 + continue;
  1596 + } else {
1595 interest_traffic_region.push_back(m_RoadSegTaskMap[task_id].traffic_region); 1597 interest_traffic_region.push_back(m_RoadSegTaskMap[task_id].traffic_region);
1596 interest_labels.push_back(m_RoadSegTaskMap[task_id].labels); 1598 interest_labels.push_back(m_RoadSegTaskMap[task_id].labels);
1597 interest_fence_region.push_back(m_RoadSegTaskMap[task_id].fence_region); 1599 interest_fence_region.push_back(m_RoadSegTaskMap[task_id].fence_region);
@@ -1599,15 +1601,17 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector&lt;string&gt;&amp; @@ -1599,15 +1601,17 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector&lt;string&gt;&amp;
1599 } 1601 }
1600 m_RoadSegTaskMtx.unlock(); 1602 m_RoadSegTaskMtx.unlock();
1601 1603
1602 - DeviceMemory* mem = vpt_interest_imgs[_idx]; 1604 +
1603 sy_img img; 1605 sy_img img;
1604 - img.w_ = mem->getWidth(); img.h_ = mem->getHeight();  
1605 - img.c_ = mem->getChannel(); img.data_ = mem->getMem(); 1606 + img.w_ = mem->getWidth();
  1607 + img.h_ = mem->getHeight();
  1608 + img.c_ = mem->getChannel();
  1609 + img.data_ = mem->getMem();
1606 sy_interest_imgs.push_back(img); 1610 sy_interest_imgs.push_back(img);
1607 1611
1608 interest_task_id.emplace_back(task_id); 1612 interest_task_id.emplace_back(task_id);
1609 - interest_imgs.emplace_back(vpt_interest_imgs[_idx]);  
1610 - interest_vpt_result.emplace_back(vptResult[_idx]); 1613 + interest_imgs.emplace_back(vpt_interest_imgs[i]);
  1614 + interest_vpt_result.emplace_back(vptResult[i]);
1611 } 1615 }
1612 } 1616 }
1613 1617
@@ -1796,14 +1800,20 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1796,14 +1800,20 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1796 algorithm_types.push_back((int)roadseg_algor.at(idx)); 1800 algorithm_types.push_back((int)roadseg_algor.at(idx));
1797 video_folder = basic_param->video_folder; result_folder = basic_param->result_folder; result_folder_little = basic_param->result_folder_little; 1801 video_folder = basic_param->video_folder; result_folder = basic_param->result_folder; result_folder_little = basic_param->result_folder_little;
1798 // 原图及抠图 1802 // 原图及抠图
1799 - vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id;  
1800 - vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1803 + vpc_img_info src_img;
  1804 + src_img.pic_desc = result->origin_img_desc;
  1805 + src_img.task_id = obj_key.video_id;
  1806 + vpc_img_info roi_img;
  1807 + roi_img.pic_desc = result->roi_img_desc;
  1808 + roi_img.task_id = obj_key.video_id;
  1809 + roi_img.object_id = obj_key.obj_id;
1801 1810
1802 if (save_single_algor_pic) { 1811 if (save_single_algor_pic) {
1803 auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, roadseg_algor.at(idx)); 1812 auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, roadseg_algor.at(idx));
1804 save_snapshot_process(obj_key, roadseg_algor.at(idx), src_img, roi_img, 0, json_str); 1813 save_snapshot_process(obj_key, roadseg_algor.at(idx), src_img, roi_img, 0, json_str);
1805 } else { 1814 } else {
1806 - VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1815 + VPCUtil::vpc_img_release(src_img);
  1816 + VPCUtil::vpc_img_release(roi_img);
1807 } 1817 }
1808 1818
1809 } 1819 }