Modify:去掉内存池;
This commit is contained in:
@ -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();
|
||||
|
||||
|
Reference in New Issue
Block a user