Libpng 1.7.0alpha01 - December 15, 2012 This is not intended to be a public release. It will be replaced within a few weeks by a public version or by another test version. Files available for download: Source files with LF line endings (for Unix/Linux) and with a "configure" script 1.7.0alpha01.tar.xz (LZMA-compressed, recommended) 1.7.0alpha01.tar.gz 1.7.0alpha01.tar.bz2 Source files with CRLF line endings (for Windows), without the "configure" script lp170a01.7z (LZMA-compressed, recommended) lp170a01.zip Other information: 1.7.0alpha01-README.txt 1.7.0alpha01-LICENSE.txt Changes since the last public release (1.6.0): Version 1.7.0alpha01 [December 15, 2012] Started 1.7.0 branch from libpng-1.6.0beta33. Made 8-bit compose and rgb_to_grayscale accuracy improvements. These changes cause 16-bit arithmetic to be used for 8-bit data in the gamma corrected compose and grayscale operations. The arithmetic errors have three sources all of which are fixed in this commit: 1) 8-bit linear calculations produce massive errors for lower intensity values. 2) The old 16-bit "16 to 8" gamma table code erroneously wrote the lowest output value into a table entry which corresponded to multiple output values (so where the value written should have been the closest to the transformed input value.) 3) In a number of cases the code to access the 16-bit table did not round; it did a simple shift, which was wrong and made the side effects of (2) even worse. The new gamma code does not have the 16-to-8 problem at the cost of slighly more calculations and the algorithm used to minimize the number of calculations has been extended to all the 16-bit tables; it has advantages for any significant gamma correction. Rearranged png_struct, remove unused members, change png_set_filter handling png_struct members rearranged - partly to reorder to avoid packing, partly to put frequently accessed members at the start and partly to make the grouping more clear. png_set_filter code has been rewritten and the code shared with png_write_start_row moved to a common function. Comments in png.h have been made more clear. Minor fixes to contrib/libtests/timepng.c and some of the png_*_tRNS logic, including more error detection in png_set_tRNS. Cleaned up USER_LIMITS feature, removing members from png_struct when not required. Rearranged ARM-NEON optimizations to isolate the machine specific code to the hardware subdirectory, and add comments to pngrutil.c so that implementors of other optimizations will know what to do. Fixed cases of unquoted DESTDIR in Makefile.am. Rebuilt Makefile.in, configure, etc., with autoconf-2.69 and automake-1.12.5. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit https://lists.sourceforge.net/lists/listinfo/png-mng-implement to subscribe) or to glennrp at users.sourceforge.net Glenn R-P