diff --git a/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp b/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp index 7afa99c..a71f66e 100644 --- a/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp +++ b/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp @@ -9,8 +9,6 @@ #include "authority.h" -#include "NvJpegEncoder.hpp" - #ifdef AUTHORIZATION #include #ifdef _MSC_VER @@ -270,7 +268,7 @@ int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam) { return ret; } -bool CMultiSourceProcess::AddTask(task_param _cur_task_param){ +int CMultiSourceProcess::AddTask(task_param _cur_task_param){ FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); @@ -286,7 +284,7 @@ bool CMultiSourceProcess::AddTask(task_param _cur_task_param){ FFNvDecoder* dec = pDecManager->createDecoder(config); if (!dec) { - return false; + return -1; } decode_cbk_userdata* userPtr = new decode_cbk_userdata; @@ -335,6 +333,8 @@ bool CMultiSourceProcess::AddTask(task_param _cur_task_param){ // 所有参数都准备好之后再启动解码 pDecManager->startDecodeByName(config.name); cout << "started task: " << config.name << endl; + + return 0; } // 启动算法处理线程 @@ -356,7 +356,8 @@ void CMultiSourceProcess::post_decode_thread(decode_cbk_userdata* userPtr, AVFra FFNvDecoder* dec = (FFNvDecoder*)ptr->opaque1; if (gpuFrame->format == AV_PIX_FMT_CUDA && dec != nullptr){ - // cout << "decode task: " << dec->getName() << " gpuid: " << gpu_id_ << endl; + // std::this_thread::sleep_for(std::chrono::milliseconds(25)); + // cout << "decode task: " << dec->getName() << " gpuid: " << gpu_id_ << " " << gpuFrame->width << " " <height<< endl; GpuRgbMemory* gpuMem = new GpuRgbMemory(3, gpuFrame->width, gpuFrame->height, dec->getName(), gpu_id_ , true); if (gpuMem->getMem() == nullptr){ @@ -458,7 +459,11 @@ bool CMultiSourceProcess::task_has_vpt_algor(const std::string &task_id){ bool CMultiSourceProcess::task_has_face_algor(const std::string &task_id){ auto algor_map = m_task_param_manager->get_task_other_param(task_id); - return algor_map->find(algorithm_type_t::FACE_SNAPSHOT) != algor_map->end(); + if (nullptr != algor_map){ + return algor_map->find(algorithm_type_t::FACE_SNAPSHOT) != algor_map->end(); + } + + return false; } void CMultiSourceProcess::cuda_free_wrap(sy_img &img) { @@ -1249,7 +1254,7 @@ bool CMultiSourceProcess::finish_task(const string taskID, const bool delete_sna #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) != + if (task_param_ptr != nullptr && 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); } diff --git a/tsl_aiplatform/ai_platform/MultiSourceProcess.h b/tsl_aiplatform/ai_platform/MultiSourceProcess.h index 365fbc6..05927d1 100644 --- a/tsl_aiplatform/ai_platform/MultiSourceProcess.h +++ b/tsl_aiplatform/ai_platform/MultiSourceProcess.h @@ -133,7 +133,7 @@ public: #endif /* task api */ - bool AddTask(task_param _cur_task_param); + int AddTask(task_param _cur_task_param); bool PauseTask(const string taskID); bool RestartTask(const string taskID); bool FinishTask(const string taskID); diff --git a/tsl_aiplatform/ai_platform/header.h b/tsl_aiplatform/ai_platform/header.h index e069551..5530af7 100644 --- a/tsl_aiplatform/ai_platform/header.h +++ b/tsl_aiplatform/ai_platform/header.h @@ -13,11 +13,11 @@ #define DETECTTYPE 9 // #define MTASK_DEBUG_ -#define WITH_FACE_DET_SS enum class algorithm_type_t { PLACEHOLDER = -2, UNKNOWN = -1, + VIDEO_SNAPSHOT = 100, // 220802byzsh 视频快照 FACE_SNAPSHOT = 101, HUMAN_SNAPSHOT = 201, @@ -30,6 +30,7 @@ enum class algorithm_type_t { NO_SAFETY_HELMET = 209, PEDESTRIAN_RETROGRADE = 210, PEDESTRIAN_TRESPASS = 211, + ROAD_WORK_DET = 212, // 221026byzsh施工占道 VEHICLE_SNAPSHOT = 301, VEHICLE_RETROGRADE = 310, @@ -256,6 +257,19 @@ typedef struct algor_config_param_human_gather { +// 施工占道参数结构体 221026byzsh +#ifndef ___ROAD_WORK_ALGOR_CONFIG_PARAM__ +#define ___ROAD_WORK_ALGOR_CONFIG_PARAM__ +typedef struct algor_config_param_road_work { + int frame_stride; //推送间隔(实际间隔 = frame_stride * 内部跳帧数) + int rblock_count_threshold; //报警阈值 + algor_config_param_road_work() + : frame_stride(1), rblock_count_threshold(3) {} +} algor_config_param_road_work; +#endif // #ifndef ___ROAD_WORK_ALGOR_CONFIG_PARAM__ + + + // 人员跌倒参数结构体 #ifndef ___PEDESTRIAN_FALL_ALGOR_CONFIG_PARAM__ #define ___PEDESTRIAN_FALL_ALGOR_CONFIG_PARAM__ @@ -460,7 +474,7 @@ enum class mq_type_t { GET_TASK_MQ = 1, HEART_BEAT_MQ = 2, ALARM_MQ = 3, - + SCREENSHORT_TASK_MQ = 4, // 220809 视频截图队列 // DEL_TASK = 0, // GET_TASK = 1, // HEART_BEAT = 2,