Modify:去掉内存池;
This commit is contained in:
@ -577,7 +577,7 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
|
|||||||
|
|
||||||
int number_WriteDisk = 100;
|
int number_WriteDisk = 100;
|
||||||
writeData2Disk->setParm(q, m_qFrameCounter,m_baseFileName,m_iFrameSizeInByte, number_WriteDisk, m_pool, m_rgbImage);
|
writeData2Disk->setParm(q, m_qFrameCounter,m_baseFileName,m_iFrameSizeInByte, number_WriteDisk, m_pool, m_rgbImage);
|
||||||
emit startWriteDiskSignal();
|
// emit startWriteDiskSignal();
|
||||||
|
|
||||||
int indexofbuff;
|
int indexofbuff;
|
||||||
DataBuffer * buffer;
|
DataBuffer * buffer;
|
||||||
@ -588,6 +588,10 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
|
|||||||
double timeDifferenceBetweenSbgAndXimea;
|
double timeDifferenceBetweenSbgAndXimea;
|
||||||
double * sbgTimeBuffer = new double[number_WriteDisk];
|
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();
|
m_imager.start();
|
||||||
struct timeval timeStart, timeEnd;
|
struct timeval timeStart, timeEnd;
|
||||||
double runTime=0;
|
double runTime=0;
|
||||||
@ -601,34 +605,21 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
|
|||||||
{
|
{
|
||||||
timeDifferenceBetweenSbgAndXimea = calculateTimeDifferenceBetweenSbgAndximea(&m_imager.m_image, TimeDifferenceBetweensOSAndSbg);
|
timeDifferenceBetweenSbgAndXimea = calculateTimeDifferenceBetweenSbgAndximea(&m_imager.m_image, TimeDifferenceBetweensOSAndSbg);
|
||||||
}
|
}
|
||||||
|
fwrite(m_imager.m_image.bp,1,m_iFrameSizeInByte, hFile);
|
||||||
|
|
||||||
indexofbuff = m_iFrameCounter % number_WriteDisk;
|
indexofbuff = m_iFrameCounter % number_WriteDisk;
|
||||||
|
|
||||||
if (indexofbuff == 1)
|
|
||||||
{
|
|
||||||
r_qtx.lock();
|
|
||||||
buffer = m_pool->newElement();
|
|
||||||
r_qtx.unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (indexofbuff == 0)
|
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);
|
sbgTimeBuffer[number_WriteDisk - 1] = getSbgTime(&m_imager.m_image, timeDifferenceBetweenSbgAndXimea);
|
||||||
}
|
}
|
||||||
else
|
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);
|
sbgTimeBuffer[indexofbuff - 1] = getSbgTime(&m_imager.m_image, timeDifferenceBetweenSbgAndXimea);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (indexofbuff == 0)
|
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)
|
for (int i = 0; i < number_WriteDisk; ++i)
|
||||||
{
|
{
|
||||||
fprintf(hHimesFile,"%f\n",sbgTimeBuffer[i]);
|
fprintf(hHimesFile,"%f\n",sbgTimeBuffer[i]);
|
||||||
@ -637,11 +628,6 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
|
|||||||
}
|
}
|
||||||
if (indexofbuff != 0)
|
if (indexofbuff != 0)
|
||||||
{
|
{
|
||||||
r_qtx.lock();
|
|
||||||
q->push(buffer);
|
|
||||||
m_qFrameCounter->push(indexofbuff);
|
|
||||||
r_qtx.unlock();
|
|
||||||
|
|
||||||
for (int i = 0; i < indexofbuff; ++i)
|
for (int i = 0; i < indexofbuff; ++i)
|
||||||
{
|
{
|
||||||
fprintf(hHimesFile,"%f\n",sbgTimeBuffer[i]);
|
fprintf(hHimesFile,"%f\n",sbgTimeBuffer[i]);
|
||||||
@ -672,6 +658,7 @@ void XimeaImager::startRecord(double TimeDifferenceBetweensOSAndSbg,QString base
|
|||||||
std::cout<<"丢帧率为: "<<frameLossRate * 100<< "%" <<std::endl;
|
std::cout<<"丢帧率为: "<<frameLossRate * 100<< "%" <<std::endl;
|
||||||
|
|
||||||
fclose(hHimesFile);
|
fclose(hHimesFile);
|
||||||
|
fclose(hFile);
|
||||||
// timesFileHandle.close();
|
// timesFileHandle.close();
|
||||||
// timesFile.close();
|
// timesFile.close();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user