77 lines
2.3 KiB
C++
77 lines
2.3 KiB
C++
/*
|
|
* @Date: 2024-09-02 09:59:09
|
|
* @LastEditors: Jacky
|
|
* @LastEditTime: 2024-09-18 14:39:06
|
|
* @FilePath: /GeneralTracker/BufferPool/MemoryManage.cpp
|
|
*/
|
|
#include <string>
|
|
#include "MemoryManage.h"
|
|
#include "InterfaceSystem.h"
|
|
|
|
MemoryManage::MemoryManage(){
|
|
//原始采集数据
|
|
addImageInfo("original", 1920, 1080, GD_PIXEL_FORMAT_GRAY_Y16Y8);
|
|
//处理后的数据
|
|
addImageInfo("YUV", 1920, 1080, GD_PIXEL_FORMAT_NV12);
|
|
// RGB
|
|
addImageInfo("RGB", 1920, 1080, GD_PIXEL_FORMAT_RGB_PACKED);
|
|
}
|
|
|
|
void MemoryManage::addImageInfo(const std::string strOjectName, int iWidth, int iHeight, GD_PIXEL_FORMAT_E enumFormat)
|
|
{
|
|
printf("%s\n", strOjectName.c_str());
|
|
image_info_t image;
|
|
image.format = enumFormat;
|
|
image.width = iWidth;
|
|
image.height = iHeight;
|
|
image.name = strOjectName;
|
|
m_buffImageMap[strOjectName] = image;
|
|
}
|
|
|
|
MemoryManage* MemoryManage::getInstance()
|
|
{
|
|
static MemoryManage manager;
|
|
return &manager;
|
|
}
|
|
|
|
void MemoryManage::MemoryInit(int iSize)
|
|
{
|
|
m_iSize = iSize;
|
|
pool::IMemoryPool* pIMemoryPool = pool::IMemoryPool::getInstance();
|
|
for (int i = 0; i < m_iSize; i++)
|
|
{
|
|
std::cout << "[" << i << "] ";
|
|
AdditionalImp* imp = new AdditionalImp;
|
|
for(auto iter = m_buffImageMap.begin(); iter != m_buffImageMap.end(); iter ++){
|
|
GD_VIDEO_FRAME_S *format = new GD_VIDEO_FRAME_S;
|
|
image_info_t *info = &iter->second;
|
|
format->enPixelFormat = info->format;
|
|
format->u32Width = info->width;
|
|
format->u32Height = info->height;
|
|
pIMemoryPool->CalcInfo(format);
|
|
pIMemoryPool->blockMalloc(format);
|
|
imp->additionParam(iter->first, format);
|
|
std::cout << format << "[" << iter->first << ": " ;
|
|
printf("%p", format->u64VirAddr[0]);
|
|
std::cout << "] ";
|
|
}
|
|
|
|
//Detect
|
|
DetectObject* stDetect = new DetectObject;
|
|
imp->additionParam(DETECT_OBJECT_NAME, stDetect);
|
|
|
|
//Track
|
|
TrackObject* stTrack = new TrackObject;
|
|
imp->additionParam(TRACK_OBJECT_NAME, stTrack);
|
|
|
|
//Ai
|
|
AiObject* stAi = new AiObject;
|
|
imp->additionParam(AI_OBJECT_NAME, stAi);
|
|
|
|
//ADD
|
|
pIMemoryPool->addBuffer(*imp);
|
|
std::cout << std::endl;
|
|
}
|
|
}
|
|
|