Re: streaming large binary file to hard drive
According to your calculations, you have 30 GB / hr = 500 MB / min
= 8.33 MB / sec. This should be quite achievable for a modern
HDD (3.5" 7200 RPM HDD can reach up to 95 MB / sec and
70MB / sec is typical). Even a slow SSD (30-40 MB / sec) should do
the job (though it'd be ridiculous to use one here due to high cost and
low write performance). Just make sure you use overlapped file I/O.
And make sure you defragment your file system regularly...
--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@mvps.org
MVP VC FAQ: http://vcfaq.mvps.org
=====================================
<runcyclexcski@gmail.com> wrote in message
news:b75c07c2-11c0-4002-9de1-f26e8e6ef21f@d4g2000prg.googlegroups.com...
My app (MFC .NET) performs image processing of an 640 by 480 8-bit
video at 30 frames per second and saves the data (x,y,z) of an object.
Movies may last up to 1 hr.
So far I've been throwing away the raw movie data. Now I am thinking
to save the raw video movies as well, in case I later on decide to re-
analyze them with another algorithm. A 1 hr full-frame movie would
take 640x480x30x3600 =~30 Gb. With my limited understanding of
programming, here is roughly what I am doing:
pFILE * movie;
char * buffer;
for (int i=0;i<frames;i++) {
grabframe();
writeframe(pFile,buffer,size);
}
The above routine works fine when I use a small region of interesest
(say, 200 by 200 pixels), but it can't keep up with the 30 fps frame
rate when I aquire the whole CCD - 480x640 - it misses every other
frame. I tested it only for 30 second movies so far.
If I put writeframe to a worker thread and signal to it to write by
posting messages , does it mean that with time all my RAM will be full
of frames waiting in the queue and the system will crash? How should I
handle this problem? Most likely, I won't be saving the whole 640x480
frame, but I figured I should test the worst case scenario.