Merge branch 'libpng17' into libpng17-buffer-enhancements

This commit is contained in:
John Bowler 2015-11-22 20:43:56 -08:00
commit a42416de9c
7 changed files with 76 additions and 10 deletions

View File

@ -972,6 +972,38 @@ Version 1.7.0beta69 [November 23, 2015]
by flaviommedeiros).
Fixed bug recently introduced in png_set_PLTE() that uses png_ptr
not info_ptr.
Added pngvalid --transform --interlace test. This increases code
coverage by generating test cases with smaller length rows as a
result of the interlacing. Without this packswap handling was
incompletely tested.
Fixed NO_WRITE_INTERLACE in pngvalid.c. The support for writing
interlaced images directly from libpng 1.7 was unintentionally
disabled (INTERLACE_LAST was defined incorrectly, excluding the
interlaced images). This obscured the fact that the transform and
error test case generators lacked the support for writing interlaced
images from libpng.
Transform rewrite: perform transforms in small chunks. The intent
of this change is to reduce the memory footprint during transform
sequences by performing transforms in fixed (small) sized blocks of
pixels. The change is incomplete; the filter code still works
row-by-row, so the whole tranform also works row-by-row. The intent
is to fix this so that everything works in small(ish) chunks.
At present the change has no discernable effect on pngvalid --speed
or pngstest with (e.g.) rgb-8-1.8.png; user time and (minor) page
faults are the same in old and new versions. The same applies to
real-world 15MP PNG images; even on these the presence of the filter
code causes a cyclical progress through memory which will interfere
with any caching otherwise possible (useful word, 'otherwise'.)
Read row buffer changes. The read code now allocates one row buffer
of the size of the input PNG row and, only if required, one buffer of
the size of the output. The output buffer is required for the
progressive reader (always) and for the sequential reader if libpng
is de-interlacing an image (because the output row is used multiple
times if png_read_row is called with a display row parameter.) This
should reduce memory utilization by libpng significantly, but it has no
detectable effect on overall performance figures of the test programs;
these are probably dominated by memory allocations for the whole image
within the test programs.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit

33
CHANGES
View File

@ -5271,6 +5271,39 @@ Version 1.7.0beta69 [November 23, 2015]
by flaviommedeiros).
Fixed bug recently introduced in png_set_PLTE() that uses png_ptr
not info_ptr.
Added pngvalid --transform --interlace test. This increases code
coverage by generating test cases with smaller length rows as a
result of the interlacing. Without this packswap handling was
incompletely tested.
Fixed NO_WRITE_INTERLACE in pngvalid.c. The support for writing
interlaced images directly from libpng 1.7 was unintentionally
disabled (INTERLACE_LAST was defined incorrectly, excluding the
interlaced images). This obscured the fact that the transform and
error test case generators lacked the support for writing interlaced
images from libpng.
Transform rewrite: perform transforms in small chunks. The intent
of this change is to reduce the memory footprint during transform
sequences by performing transforms in fixed (small) sized blocks of
pixels. The change is incomplete; the filter code still works
row-by-row, so the whole tranform also works row-by-row. The intent
is to fix this so that everything works in small(ish) chunks.
At present the change has no discernable effect on pngvalid --speed
or pngstest with (e.g.) rgb-8-1.8.png; user time and (minor) page
faults are the same in old and new versions. The same applies to
real-world 15MP PNG images; even on these the presence of the filter
code causes a cyclical progress through memory which will interfere
with any caching otherwise possible (useful word, 'otherwise'.)
Read row buffer changes. The read code now allocates one row buffer
of the size of the input PNG row and, only if required, one buffer of
the size of the output. The output buffer is required for the
progressive reader (always) and for the sequential reader if libpng
is de-interlacing an image (because the output row is used multiple
times if png_read_row is called with a display row parameter.) This
should reduce memory utilization by libpng significantly, but it has no
detectable effect on overall performance figures of the test programs;
these are probably dominated by memory allocations for the whole image
within the test programs.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit

4
png.c
View File

@ -711,13 +711,13 @@ png_get_copyright(png_const_structrp png_ptr)
#else
# ifdef __STDC__
return PNG_STRING_NEWLINE \
"libpng version 1.7.0beta69 - November 22, 2015" PNG_STRING_NEWLINE \
"libpng version 1.7.0beta69 - November 23, 2015" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2015 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
PNG_STRING_NEWLINE;
# else
return "libpng version 1.7.0beta69 - November 22, 2015\
return "libpng version 1.7.0beta69 - November 23, 2015\
Copyright (c) 1998-2015 Glenn Randers-Pehrson\
Copyright (c) 1996-1997 Andreas Dilger\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.";

10
png.h
View File

@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
* libpng version 1.7.0beta69, November 13, 2015
* libpng version 1.7.0beta69, November 23, 2015
*
* Copyright (c) 1998-2015 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@ -12,7 +12,7 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.7.0beta69, November 13, 2015:
* libpng versions 0.97, January 1998, through 1.7.0beta69, November 23, 2015:
* Glenn Randers-Pehrson.
* See also "Contributing Authors", below.
*/
@ -25,7 +25,7 @@
*
* This code is released under the libpng license.
*
* libpng versions 1.0.7, July 1, 2000, through 1.7.0beta69, November 13, 2015, are
* libpng versions 1.0.7, July 1, 2000, through 1.7.0beta69, November 23, 2015, are
* Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, are
* derived from libpng-1.0.6, and are distributed according to the same
* disclaimer and license as libpng-1.0.6 with the following individuals
@ -218,7 +218,7 @@
* Y2K compliance in libpng:
* =========================
*
* November 13, 2015
* November 23, 2015
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
@ -288,7 +288,7 @@
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.7.0beta69"
#define PNG_HEADER_VERSION_STRING \
" libpng version 1.7.0beta69 - November 13, 2015\n"
" libpng version 1.7.0beta69 - November 23, 2015\n"
#define PNG_LIBPNG_VER_SONUM 17
#define PNG_LIBPNG_VER_DLLNUM 17

View File

@ -1,7 +1,7 @@
/* pngconf.h - machine configurable file for libpng
*
* libpng version 1.7.0beta69, November 13, 2015
* libpng version 1.7.0beta69, November 23, 2015
*
* Copyright (c) 1998-2015 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)

View File

@ -958,7 +958,7 @@ option WRITE_PNG requires WRITE WRITE_TRANSFORMS enables INFO_IMAGE
# Disabled by -DPNG_NO_CHECK_FOR_INVALID_INDEX
#
# 2) {READ,WRITE}_GET_PALETTE_MAX: returns the largest pixel value in a
# color mapped PNG. Disbaled by -DPNG_NO_GET_PALETTE_MAX
# color mapped PNG. Disabled by -DPNG_NO_GET_PALETTE_MAX
#
# All of this stuff can be removed by "option PALETTE_MAX off" but using
# -DPNG_NO_ defines on the command line just sets the relevant option to

View File

@ -2,7 +2,7 @@
/* pnglibconf.h - library build configuration */
/* Libpng version 1.7.0beta69 - November 13, 2015 */
/* Libpng version 1.7.0beta69 - November 23, 2015 */
/* Copyright (c) 1998-2015 Glenn Randers-Pehrson */
@ -136,6 +136,7 @@
#define PNG_WRITE_FILTER_SUPPORTED
#define PNG_WRITE_FLUSH_SUPPORTED
#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED
#define PNG_WRITE_INTERLACE_SUPPORTED
#define PNG_WRITE_INTERLACING_SUPPORTED
#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED
#define PNG_WRITE_INVERT_ALPHA_SUPPORTED