Add new comment

LibRaw_file_datastream is

LibRaw_file_datastream is based on С++ iostreams, while bigfile_datastream uses old plain FILE*.

Iostreams implementation is slightly faster (under Win32, at least), but there is no way to limit file buffer size. Also, iostreams implementation is limited to 2GB (or 4Gb??) files on some systems because of 32-bit nature.

Most raw files are much smaller than 2/4GB (and usually fit into 50-100M with very few exceptions), so (faster) iostream implementation is used. Bigfile_datastream is used for larger files to avoid too large buffers and 2/4Gb limit. The only files that go over limit are cinema files (Red's R3D files and other multi-frame files).

-- Alex Tutubalin @LibRaw LLC