| | |
| | |
|
| | | //PipeMaterial& facePM = ((PipeMaterial*)(lastPm.buffer))[1];
|
| | | //st_ff_vect_t& faceFeatures = *((st_ff_vect_t*)facePM.buffer);
|
| | | //LOG_NOTICE << "faceFeatures " << faceFeatures.size();
|
| | | //LOG_NOTICE << "faceFeatures " << faceFeatures.size() << std::endl;
|
| | | //#todo send result packet
|
| | |
|
| | | if (lastPm.buffer == nullptr || lastPm.type != PipeMaterial::PMT_BYTES || lastPm.buffSize != sizeof(SensetimeFaceDetectResult))
|
| | | {
|
| | | LOG_WARN << "pm not available";
|
| | | LOG_WARN << "pm not available" << std::endl;
|
| | | ev_send_status_packet(client, EVPStatus::EVPS_INTERNAL_ERROR);
|
| | | return false;
|
| | | }
|
| | |
| | | bool ev_proc_SensetimeFaceDetect(EVClientStub& client)
|
| | | {
|
| | | //#test send 01000B0000004142434445
|
| | | //LOG_DEBUG << "cmd=" << evpHeader->cmd << ", size=" << evpHeader->size << ", \t" << (char*)(evpHeader + sizeof(EVPHeader));
|
| | | //LOG_DEBUG << "cmd=" << evpHeader->cmd << ", size=" << evpHeader->size << ", \t" << (char*)(evpHeader + sizeof(EVPHeader)) << std::endl;
|
| | | //return true;
|
| | |
|
| | | FDP_Image* fdpImage = (FDP_Image*)(client.recvBuff + sizeof(EVPHeader));
|
| | |
| | | FaceDB* _faceDB = g_faceAPIPool.get_free(fdpImage->school_id);
|
| | | if (_faceDB == nullptr)
|
| | | {
|
| | | LOG_WARN << "can't get face db";
|
| | | LOG_WARN << "can't get face db" << std::endl;
|
| | | ev_send_status_packet(client, EVPStatus::EVPS_PARAMETER_ERROR);
|
| | | return false;
|
| | | }
|
| | |
| | | PipeLine* pipeLine = g_PipeLinePool.get_free();
|
| | | if (pipeLine == nullptr)
|
| | | {
|
| | | LOG_WARN << "can't get free pipeline";
|
| | | LOG_WARN << "can't get free pipeline" << std::endl;
|
| | | ev_send_status_packet(client, EVPStatus::EVPS_INTERNAL_ERROR);
|
| | | return false;
|
| | | }
|
| | |
| | | PipeLineElem* plElem = pipeLine->pipe(&pm);
|
| | | if (! pipeLine->check_pipe_complete(plElem))
|
| | | {
|
| | | LOG_WARN << "pipeline not complete";
|
| | | LOG_WARN << "pipeline not complete" << std::endl;
|
| | | ev_send_status_packet(client, EVPStatus::EVPS_INTERNAL_ERROR);
|
| | | return false;
|
| | | }
|
| | |
|
| | | if (!plElem->gain(pm))
|
| | | {
|
| | | LOG_WARN << "pipeline gain error";
|
| | | LOG_WARN << "pipeline gain error" << std::endl;
|
| | | ev_send_status_packet(client, EVPStatus::EVPS_INTERNAL_ERROR);
|
| | | return false;
|
| | | }
|
| | |
| | | EVPHeader* evpHeader = (EVPHeader*)client.recvBuff;
|
| | | if (evpHeader->size != client.recvBuffSize)
|
| | | {
|
| | | LOG_WARN << "Truncated buffer " << (evpHeader->size - client.recvBuffSize) << " bytes";
|
| | | LOG_WARN << "Truncated buffer " << (evpHeader->size - client.recvBuffSize) << " bytes" << std::endl;
|
| | | return false;
|
| | | }
|
| | |
|
| | |
| | | return ev_proc_SensetimeFaceDetect(client);
|
| | | break;
|
| | | default:
|
| | | LOG_WARN << "Unknown command";
|
| | | LOG_WARN << "Unknown command" << std::endl;
|
| | | ev_send_status_packet(client, EVPStatus::EVPS_PARAMETER_ERROR);
|
| | | return false;
|
| | | break;
|
| | |
| | | bool ret = ple->init(&config);
|
| | | if (!ret)
|
| | | {
|
| | | LOG_ERROR << "ple init error";
|
| | | LOG_ERROR << "ple init error" << std::endl;
|
| | | exit(EXIT_FAILURE);
|
| | | }
|
| | | }
|
| | |
| | | bool ret = ple->init(&config);
|
| | | if (!ret)
|
| | | {
|
| | | LOG_ERROR << "ple init error";
|
| | | LOG_ERROR << "ple init error" << std::endl;
|
| | | exit(EXIT_FAILURE);
|
| | | }
|
| | | }
|