#include "PL_SensetimeFaceDetect.h" #include #include struct PL_SensetimeFaceDetect_Internal { uint8_t buffer[1920*1080*4]; size_t buffSize; size_t buffSizeMax; MB_Frame lastFrame; bool payError; PL_SensetimeFaceDetect_Internal() : buffSize(0), buffSizeMax(sizeof(buffer)), lastFrame(), payError(true) { } ~PL_SensetimeFaceDetect_Internal() { } void reset() { buffSize = 0; payError = true; MB_Frame _lastFrame; lastFrame = _lastFrame; } }; PipeLineElem* create_PL_SensetimeFaceDetect() { return new PL_SensetimeFaceDetect; } PL_SensetimeFaceDetect::PL_SensetimeFaceDetect() : internal(new PL_SensetimeFaceDetect_Internal) { } PL_SensetimeFaceDetect::~PL_SensetimeFaceDetect() { delete (PL_SensetimeFaceDetect_Internal*)internal; internal= nullptr; } bool PL_SensetimeFaceDetect::init(void* args) { PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; in->reset(); return true; } void PL_SensetimeFaceDetect::finit() { PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; } bool PL_SensetimeFaceDetect::pay(const PipeMaterial& pm) { PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; if (pm.type != PipeMaterial::PMT_FRAME) { printf("PL_H264Encoder::pay only support PMT_FRAME\n"); return false; } if (pm.buffer == nullptr) return false; MB_Frame* frame = (MB_Frame*)pm.buffer; if (frame->type != MB_Frame::MBFT_YUV420) { printf("PL_H264Encoder::pay only support MBFT_YUV420\n"); return false; } //in->buffer readly //static size_t f=0; //char fname[50]; //sprintf(fname, "%u.bgra", ++f); //FILE * pFile = fopen (fname,"wb"); //fwrite (in->buffer , sizeof(char), in->buffSize, pFile); //fclose(pFile); return true; } bool PL_SensetimeFaceDetect::gain(PipeMaterial& pm) { PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; pm.type = PipeMaterial::PMT_FRAME; pm.buffer = (uint8_t*)(&(in->lastFrame)); pm.buffSize = sizeof(in->lastFrame); pm.former = this; return true; }