Files
2026-02-01 22:23:06 +08:00

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;
}
}