diff --git a/Source_Files/ximeaimager.cpp b/Source_Files/ximeaimager.cpp index f45f59d..7d2f3ed 100644 --- a/Source_Files/ximeaimager.cpp +++ b/Source_Files/ximeaimager.cpp @@ -938,29 +938,9 @@ WriteData2Disk::WriteData2Disk() void WriteData2Disk::write2Disk() { QString imageFileName=m_QbaseFileName+".bil"; -// FILE *hFile=fopen(imageFileName.toStdString().c_str(),"w+b"); + FILE *hFile=fopen(imageFileName.toStdString().c_str(),"w+b"); - int fd = open(imageFileName.toStdString().c_str(), O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); - - size_t fileSize = m_iFrameSizeInByte*(size_t)100*(size_t)60*(size_t)5; - size_t fileSizeIncrement = m_iFrameSizeInByte*(size_t)100*(size_t)60*(size_t)5; - if (lseek(fd, fileSize - 1, SEEK_SET) == -1) { - std::cerr << "Error calling lseek()\n"; - return; - } - if (write(fd, "", 1) == -1) { - std::cerr << "Error writing last byte of the file\n"; - return; - } - void* addr = mmap(nullptr, fileSize, PROT_WRITE, MAP_SHARED, fd, 0); - if (addr == MAP_FAILED) { - std::cerr << "Error mmapping the file\n"; - return; - } - - size_t sizeWrited2disk = 0; - int frameCounter = 0; int frameNumber; unsigned short * dataBuffer = new unsigned short[m_iFrameSizeInByte/2*m_iNumber_WriteDisk]; @@ -1002,71 +982,16 @@ void WriteData2Disk::write2Disk() // std::cout<<"WriteData2Disk::write2Disk-----------------------正在写磁盘!" << m_pool->max_size() <m_VideoWriter.release(); -// fclose(hFile); + fclose(hFile); delete[] dataBuffer; - - -// if (munmap(addr, fileSize) == -1) { -// std::cerr << "Error un-mmapping the file\n"; -// } - - // Resize the file to 4096 bytes - if (ftruncate(fd, sizeWrited2disk) == -1) { - std::cerr << "Error calling ftruncate()\n"; - return; - } - - // Remap the file with the new size - addr = mremap(addr, fileSize, sizeWrited2disk, MREMAP_MAYMOVE); - if (addr == MAP_FAILED) { - std::cerr << "Error calling mremap()\n"; - return; - } - - if (munmap(addr, sizeWrited2disk) == -1) { - std::cerr << "Error un-mmapping the file\n"; - } - - close(fd); - - std::cout<<"WriteData2Disk::write2Disk-----------------------写磁盘线程将退出,内存池可达到的最多元素数:" << m_pool->max_size() <