1。process_init: 设置logs,加载配置文件,初始化ftp kafka,特征提取等配置,注册上层业务逻辑回调函数,检测流中断的实时任务. 其中核心函数是RegHandler。
2。提交任务执行回调接口 OnVideoTaskStart,将任务submit_sess存储到g_subSessQue中,http返回成功,完成任务提交。
3.后台线程popto_submit_sess负责从2步骤中的队列中取出sess,执行submit_task函数,并解析返回结果,启动线程将任务加入任务状态map,同时更新mysql数据表中的任务,将任务记录删除。
4.submit_task函数,判断是否超过最大路数限制,检查任务参数,如果任务号重复,就将之前的任务号状态改为进行中,并存入mysql表。如果是gpu解码,就找负载最轻的GPU卡。执行sess_t->start().
5.start函数,开启算法包处理视频帧线程。alg_frame_loop线程用于处理算法包推送的检测跟踪将其推入m_dtInfoQue. 如果有最优帧信息,取出后存入m_bestInfoQue.如果是博云人脸,则将其入人脸图搜库。建立vas收视频帧线程frame_recv_loop,获取视频帧然后发送给算法包。开启人脸dt_face_loop.人脸行人关联do_best_objs入库。