Some very minor updates were released for the SCZ compression library routines and regression tests. Conditional compilation statements were added to the library files, to avoid redefinitions, in case they get included multiple times. In the regression test generator, include statements were added for standard libraries that are now needed by gcc.
For the image_scz and image_dscz utilities, issues with reading binary files, on some platforms, were cleaned up.
The photo-image compression routines are additions to the core SCZ. Unlike the core functions which implement perfect lossless compression, the image-scz routines apply a lossy method appropriate for images. They achieve high compression ratios with little image degradation.
Some memory leaks and freeing issues were cleaned up. A potential bug in the streams-compress function was fixed. Compression speed was improved. The header file was reorganized with prototypes for convenient linking into applications. The SCZ compression format remains stable and the latest version passes all regression tests.
A photo-image compression routine has been added to SCZ. Unlike the core SCZ functions that implement perfect lossless compression, the new image-scz routine applies a lossy method appropriate for images. The simple algorithm greatly improves SCZ compression ratios on images.
Added scz_cleanup routine to free buffer memory after all scz routines have been called. Also did some very minor code cleanups to eliminate unused variables. Otherwise all routines and formats remain stable to date.
A set of regression tests and scripts have been added
to the SCZ-compression packages. It contains a generic test-data generator for testing, benchmarking, or comparing compression methods. It can generate random binary data files with arbitrary sizes and with arbitrary amounts of compressibility. By testing SCZ routines with thousands of different files of various sizes, we gain confidence in SCZ's correctness and efficiency. The regression tests can be quickly re-run whenever any improvements to SCZ are proposed, to verify that it continues to work properly.
Added new stream access routines. They enable a .scz file to be opened for writing or reading, followed by many line-or-tag writes-or-reads, and finally closed. Much like fopen, feof, fgets, fputs, and fclose.
Thanks to helpful comments received, SCZ has received a complete overhaul:
- Streamlined architecture.
- Common header file.
- Routines for file2buffer, buffer2buffer, buffer2file, file2file.
- Major speed and scalability improvements.
- End-to-end checksums.
- Block based to compress large files in sections.
- Support for streaming modes.
- SCZ-Utilities can process whole directories.
Additionally, the web documentation has been updated and enhanced with a new "how-it-works" page containing design and format information.