#ifndef __FaceCache_H__
|
#define __FaceCache_H__
|
|
#include <PipeLine.h>
|
#include <vector>
|
|
#define FACECACHEFORPLBG_RESULT_BUFFSIZE (1920 * 1080 * 2)
|
|
struct NativeImgIdx
|
{
|
int st_track_id;
|
int offset;
|
int size;
|
int type;
|
int width;
|
int height;
|
|
NativeImgIdx() : st_track_id(-1), offset(0), size(0), type(0), width(0), height(0)
|
{}
|
|
operator std::string() const;
|
};
|
|
class FaceCache
|
{
|
public:
|
|
#ifdef USE_ST_SDK
|
FaceCache();
|
~FaceCache();
|
#else
|
FaceCache() : _ctx(nullptr) {}
|
~FaceCache() {}
|
#endif
|
|
// returns count of face
|
int cachePm(const PipeMaterial& pm);
|
size_t getFaceCount(const PipeMaterial& pm) const;
|
|
bool getFaceListPb(uint8_t* buffer, size_t& buffMaxSize);
|
|
bool getFaceListImage(std::vector<NativeImgIdx>& imgIdxes, uint8_t* buffImg, size_t& buffImgMaxSize);
|
|
private:
|
void* _ctx;
|
};
|
|
|
class FaceCacheForPLBG
|
{
|
public:
|
|
FaceCacheForPLBG();
|
~FaceCacheForPLBG();
|
|
// returns count of face
|
int cachePm(const PipeMaterial& pm);
|
size_t getFaceCount(const PipeMaterial& pm) const;
|
|
bool getFaceListPb(uint8_t* buffer, size_t& buffMaxSize);
|
uint8_t* getFaceListPb(size_t& buffSize)
|
{
|
buffSize = FACECACHEFORPLBG_RESULT_BUFFSIZE;
|
if (!getFaceListPb(resultBuffer, buffSize))
|
return nullptr;
|
return resultBuffer;//#todo to cpp
|
}
|
|
bool getFaceListImage(std::vector<NativeImgIdx>& imgIdxes, uint8_t* buffImg, size_t& buffImgMaxSize);
|
uint8_t* getFaceListImage(size_t& buffSize);
|
|
|
private:
|
void* _ctx;
|
uint8_t* resultBuffer;
|
};
|
|
#endif
|