Modify:去掉内存池;

This commit is contained in:
tangchao0503
2023-10-18 11:39:01 +08:00
parent 781b33f577
commit 7fa3b70d10

View File

@ -577,7 +577,7 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
int number_WriteDisk = 100;
writeData2Disk->setParm(q, m_qFrameCounter,m_baseFileName,m_iFrameSizeInByte, number_WriteDisk, m_pool, m_rgbImage);
emit startWriteDiskSignal();
// emit startWriteDiskSignal();
int indexofbuff;
DataBuffer * buffer;
@ -588,6 +588,10 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
double timeDifferenceBetweenSbgAndXimea;
double * sbgTimeBuffer = new double[number_WriteDisk];
QString imageFileName=m_baseFileName+".bil";
FILE *hFile=fopen(imageFileName.toStdString().c_str(),"w+b");
double * imageBuffer = new double[number_WriteDisk];
m_imager.start();
struct timeval timeStart, timeEnd;
double runTime=0;
@ -601,34 +605,21 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
{
timeDifferenceBetweenSbgAndXimea = calculateTimeDifferenceBetweenSbgAndximea(&m_imager.m_image, TimeDifferenceBetweensOSAndSbg);
}
fwrite(m_imager.m_image.bp,1,m_iFrameSizeInByte, hFile);
indexofbuff = m_iFrameCounter % number_WriteDisk;
if (indexofbuff == 1)
{
r_qtx.lock();
buffer = m_pool->newElement();
r_qtx.unlock();
}
if (indexofbuff == 0)
{
memcpy((void *)buffer->data + (number_WriteDisk - 1) * m_iFrameSizeInByte,m_imager.m_image.bp,m_iFrameSizeInByte);
sbgTimeBuffer[number_WriteDisk - 1] = getSbgTime(&m_imager.m_image, timeDifferenceBetweenSbgAndXimea);
}
else
{
memcpy((void *)buffer->data + (indexofbuff - 1) * m_iFrameSizeInByte,m_imager.m_image.bp,m_iFrameSizeInByte);
sbgTimeBuffer[indexofbuff - 1] = getSbgTime(&m_imager.m_image, timeDifferenceBetweenSbgAndXimea);
}
if (indexofbuff == 0)
{
r_qtx.lock();
q->push(buffer);
m_qFrameCounter->push(number_WriteDisk);
r_qtx.unlock();
for (int i = 0; i < number_WriteDisk; ++i)
{
fprintf(hHimesFile,"%f\n",sbgTimeBuffer[i]);
@ -637,11 +628,6 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
}
if (indexofbuff != 0)
{
r_qtx.lock();
q->push(buffer);
m_qFrameCounter->push(indexofbuff);
r_qtx.unlock();
for (int i = 0; i < indexofbuff; ++i)
{
fprintf(hHimesFile,"%f\n",sbgTimeBuffer[i]);
@ -672,6 +658,7 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
std::cout<<"丢帧率为: "<<frameLossRate * 100<< "%" <<std::endl;
fclose(hHimesFile);
fclose(hFile);
// timesFileHandle.close();
// timesFile.close();