From 8f506d3257b3d4dda78ede7d1023d6455953d115 Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Mon, 4 Apr 2016 16:03:43 -0400 Subject: [PATCH 1/5] SSE filter speed improvements for bpp=3. - memcpy-free implementations of load3() / store3(). These should have less variance compiler to compiler. - call load3() only when needed at the end of a scanline. In the middle, we can use the faster load4(), ignoring that byte. --- contrib/intel/filter_sse2_intrinsics.c | 107 ++++++++++++++++++++----- 1 file changed, 89 insertions(+), 18 deletions(-) diff --git a/contrib/intel/filter_sse2_intrinsics.c b/contrib/intel/filter_sse2_intrinsics.c index e7b317159..9de1e92d8 100644 --- a/contrib/intel/filter_sse2_intrinsics.c +++ b/contrib/intel/filter_sse2_intrinsics.c @@ -29,29 +29,41 @@ * whichever of a, b, or c is closest to p=a+b-c. */ -#ifndef PNG_NO_INTEL_SSE_3BPP -static __m128i load3(const void* p) { - png_uint_32 packed; - memcpy(&packed, p, 3); - return _mm_cvtsi32_si128(packed); -} -#endif - static __m128i load4(const void* p) { return _mm_cvtsi32_si128(*(const int*)p); } -#ifndef PNG_NO_INTEL_SSE_3BPP -static void store3(void* p, __m128i v) { - png_uint_32 packed = _mm_cvtsi128_si32(v); - memcpy(p, &packed, 3); -} -#endif - static void store4(void* p, __m128i v) { *(int*)p = _mm_cvtsi128_si32(v); } +#ifndef PNG_NO_INTEL_SSE_3BPP +static __m128i load3(const void* p) { + /* We'll load 2 bytes, then 1 byte, + * then mask them together, and finally load into SSE. + */ + const png_uint_16* p01 = p; + const png_byte* p2 = (const png_byte*)(p01+1); + + png_uint_32 v012 = (png_uint_32)(*p01) + | (png_uint_32)(*p2) << 16; + return load4(&v012); +} + +static void store3(void* p, __m128i v) { + /* We'll pull from SSE as a 32-bit int, then write + * its bottom two bytes, then its third byte. + */ + png_uint_32 v012; + store4(&v012, v); + + png_uint_16* p01 = p; + png_byte* p2 = (png_byte*)(p01+1); + *p01 = v012; + *p2 = v012 >> 16; +} +#endif + #ifndef PNG_NO_INTEL_SSE_3BPP void png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, png_const_bytep prev) @@ -64,7 +76,15 @@ void png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, __m128i a, d = _mm_setzero_si128(); int rb = row_info->rowbytes; - while (rb > 0) { + while (rb >= 4) { + a = d; d = load4(row); + d = _mm_add_epi8(d, a); + store3(row, d); + + row += 3; + rb -= 3; + } + if (rb > 0) { a = d; d = load3(row); d = _mm_add_epi8(d, a); store3(row, d); @@ -111,7 +131,23 @@ void png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, __m128i a, d = zero; int rb = row_info->rowbytes; - while (rb > 0) { + while (rb >= 4) { + b = load4(prev); + a = d; d = load4(row ); + + /* PNG requires a truncating average, so we can't just use _mm_avg_epu8 */ + __m128i avg = _mm_avg_epu8(a,b); + /* ...but we can fix it up by subtracting off 1 if it rounded up. */ + avg = _mm_sub_epi8(avg, _mm_and_si128(_mm_xor_si128(a,b), + _mm_set1_epi8(1))); + d = _mm_add_epi8(d, avg); + store3(row, d); + + prev += 3; + row += 3; + rb -= 3; + } + if (rb > 0) { b = load3(prev); a = d; d = load3(row ); @@ -215,7 +251,42 @@ void png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row, a, d = zero; int rb = row_info->rowbytes; - while (rb > 0) { + while (rb >= 4) { + /* It's easiest to do this math (particularly, deal with pc) with 16-bit + * intermediates. + */ + c = b; b = _mm_unpacklo_epi8(load4(prev), zero); + a = d; d = _mm_unpacklo_epi8(load4(row ), zero); + + /* (p-a) == (a+b-c - a) == (b-c) */ + __m128i pa = _mm_sub_epi16(b,c); + + /* (p-b) == (a+b-c - b) == (a-c) */ + __m128i pb = _mm_sub_epi16(a,c); + + /* (p-c) == (a+b-c - c) == (a+b-c-c) == (b-c)+(a-c) */ + __m128i pc = _mm_add_epi16(pa,pb); + + pa = abs_i16(pa); /* |p-a| */ + pb = abs_i16(pb); /* |p-b| */ + pc = abs_i16(pc); /* |p-c| */ + + __m128i smallest = _mm_min_epi16(pc, _mm_min_epi16(pa, pb)); + + /* Paeth breaks ties favoring a over b over c. */ + __m128i nearest = if_then_else(_mm_cmpeq_epi16(smallest, pa), a, + if_then_else(_mm_cmpeq_epi16(smallest, pb), b, + c)); + + /* Note `_epi8`: we need addition to wrap modulo 255. */ + d = _mm_add_epi8(d, nearest); + store3(row, _mm_packus_epi16(d,d)); + + prev += 3; + row += 3; + rb -= 3; + } + if (rb > 0) { /* It's easiest to do this math (particularly, deal with pc) with 16-bit * intermediates. */ From f47e1d499520080898782f422c14d2a92d125bb1 Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Tue, 5 Apr 2016 12:16:27 -0500 Subject: [PATCH 2/5] [libpng16] Eliminated PNG_NO_INTEL_SSE_3BPP which was just for testing. --- ANNOUNCE | 7 +++++-- CHANGES | 5 ++++- contrib/intel/intel_init.c | 2 -- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index d51e19b36..ec6a3d280 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,4 +1,4 @@ -Libpng 1.6.22beta04 - March 15, 2016 +Libpng 1.6.22beta04 - April 5, 2016 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. @@ -77,8 +77,11 @@ Version 1.6.22beta03 [March 9, 2016] meaningful fashion (John Bowler). Fixed some misleading indentation (Krishnaraj Bhat). -Version 1.6.22beta04 [March 15, 2016] +Version 1.6.22beta04 [April 5, 2016] Force GCC compilation to C89 if needed (Dagobert Michelsen). + SSE filter speed improvements for bpp=3: + memcpy-free implementations of load3() / store3(). + call load3() only when needed at the end of a scanline. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index 3a40300c6..bfff01e8d 100644 --- a/CHANGES +++ b/CHANGES @@ -5537,8 +5537,11 @@ Version 1.6.22beta03 [March 9, 2016] meaningful fashion (John Bowler). Fixed some misleading indentation (Krishnaraj Bhat). -Version 1.6.22beta04 [March 15, 2016] +Version 1.6.22beta04 [April 5, 2016] Force GCC compilation to C89 if needed (Dagobert Michelsen). + SSE filter speed improvements for bpp=3: + memcpy-free implementations of load3() / store3(). + call load3() only when needed at the end of a scanline. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/contrib/intel/intel_init.c b/contrib/intel/intel_init.c index d0918d1bb..357e147b9 100644 --- a/contrib/intel/intel_init.c +++ b/contrib/intel/intel_init.c @@ -32,12 +32,10 @@ png_init_filter_functions_sse2(png_structp pp, unsigned int bpp) png_debug(1, "in png_init_filter_functions_sse2"); if (bpp == 3) { -#ifndef PNG_NO_INTEL_SSE_3BPP pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_sse2; pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_sse2; pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth3_sse2; -#endif } else if (bpp == 4) { From 5765a2224946b953ec6702bd01205af475f8c80a Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Tue, 5 Apr 2016 12:33:17 -0500 Subject: [PATCH 3/5] [libpng16] Eliminate PNG_NO_INTEL_SSE_3BPP from intel INSTALL --- contrib/intel/INSTALL | 14 +++++++------- contrib/intel/filter_sse2_intrinsics.c | 8 -------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/contrib/intel/INSTALL b/contrib/intel/INSTALL index e4d56777f..f57467fe2 100644 --- a/contrib/intel/INSTALL +++ b/contrib/intel/INSTALL @@ -1,7 +1,9 @@ Enabling SSE support Copyright (c) 2016 Google, Inc. -Written by Mike Klein and Matt Sarett +Written by Mike Klein, Matt Sarett + +This INSTALL file written by Glenn Randers-Pehrson, 2016. If you have moved intel_init.c and filter_sse2_intrinsics.c to a different directory, be sure to update the '#include "../../pngpriv.h"' line in both @@ -24,26 +26,24 @@ distribution, remove any existing pre-built configure scripts: make maintainer-clean ./autogen.sh --maintainer --clean -Finally, configure libpng with -DPNG_INTEL_SSE in CPPFLAGS. If you only -want to optimize reading 4bpp images, also use -DPNG_NO_INTEL_SSE_3BPP: +Finally, configure libpng with -DPNG_INTEL_SSE in CPPFLAGS: ./autogen.sh --maintainer - CPPFLAGS="-DPNG_INTEL_SSE -DPNG_NO_INTEL_SSE_3BPP" ./configure [options] + CPPFLAGS="-DPNG_INTEL_SSE" ./configure [options] make II. Using a custom makefile: If you are using a custom makefile makefile, you will have to update it manually to include contrib/intel/*.o in the dependencies, and to define -PNG_INTEL_SSE and possibly PNG_NO_INTEL_SSE_3BPP. +PNG_INTEL_SSE. III. Using manually updated "configure" scripts: If you prefer, manually edit configure.ac and Makefile.am, following the instructions below, then follow the instructions in section II of INSTALL in the main libpng directory, then configure libpng with -DPNG_INTEL_SSE -in CPPFLAGS. If you only want to optimize reading 4bpp images, also use --DPNG_NO_INTEL_SSE_3BPP. +in CPPFLAGS. 1. Insert the following lines above the copyright line near the top of configure.ac: diff --git a/contrib/intel/filter_sse2_intrinsics.c b/contrib/intel/filter_sse2_intrinsics.c index 9de1e92d8..92dcd7e4a 100644 --- a/contrib/intel/filter_sse2_intrinsics.c +++ b/contrib/intel/filter_sse2_intrinsics.c @@ -37,7 +37,6 @@ static void store4(void* p, __m128i v) { *(int*)p = _mm_cvtsi128_si32(v); } -#ifndef PNG_NO_INTEL_SSE_3BPP static __m128i load3(const void* p) { /* We'll load 2 bytes, then 1 byte, * then mask them together, and finally load into SSE. @@ -62,9 +61,7 @@ static void store3(void* p, __m128i v) { *p01 = v012; *p2 = v012 >> 16; } -#endif -#ifndef PNG_NO_INTEL_SSE_3BPP void png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, png_const_bytep prev) { @@ -93,7 +90,6 @@ void png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, rb -= 3; } } -#endif void png_read_filter_row_sub4_sse2(png_row_infop row_info, png_bytep row, png_const_bytep prev) @@ -116,7 +112,6 @@ void png_read_filter_row_sub4_sse2(png_row_infop row_info, png_bytep row, } } -#ifndef PNG_NO_INTEL_SSE_3BPP void png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, png_const_bytep prev) { @@ -165,7 +160,6 @@ void png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, rb -= 3; } } -#endif void png_read_filter_row_avg4_sse2(png_row_infop row_info, png_bytep row, png_const_bytep prev) @@ -228,7 +222,6 @@ static __m128i if_then_else(__m128i c, __m128i t, __m128i e) { #endif } -#ifndef PNG_NO_INTEL_SSE_3BPP void png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row, png_const_bytep prev) { @@ -322,7 +315,6 @@ void png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row, rb -= 3; } } -#endif void png_read_filter_row_paeth4_sse2(png_row_infop row_info, png_bytep row, png_const_bytep prev) From e0acad59cb4b145d94779bbcb56f05ff9e587fae Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Tue, 5 Apr 2016 12:29:04 -0500 Subject: [PATCH 4/5] [libpng16] Imported from libpng-1.6.22beta04.tar --- LICENSE | 4 ++-- Makefile.am | 5 ++++- README | 2 +- libpng-manual.txt | 4 ++-- libpng.3 | 16 ++++++++-------- libpngpf.3 | 2 +- png.5 | 2 +- png.c | 4 ++-- png.h | 14 +++++++------- pngconf.h | 2 +- projects/vstudio/README.txt | 2 +- projects/vstudio/zlib.props | 2 +- scripts/README.txt | 2 +- scripts/pnglibconf.h.prebuilt | 2 +- 14 files changed, 33 insertions(+), 30 deletions(-) diff --git a/LICENSE b/LICENSE index 5f8384414..446f0539c 100644 --- a/LICENSE +++ b/LICENSE @@ -10,7 +10,7 @@ this sentence. This code is released under the libpng license. -libpng versions 1.0.7, July 1, 2000 through 1.6.22beta04, March 9, 2016 are +libpng versions 1.0.7, July 1, 2000 through 1.6.22beta04, April 5, 2016 are Copyright (c) 2000-2002, 2004, 2006-2016 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 @@ -127,4 +127,4 @@ any encryption software. See the EAR, paragraphs 734.3(b)(3) and Glenn Randers-Pehrson glennrp at users.sourceforge.net -March 9, 2016 +April 5, 2016 diff --git a/Makefile.am b/Makefile.am index 5c517b993..51685ce8d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,7 +12,7 @@ PNGLIB_BASENAME= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ ACLOCAL_AMFLAGS = -I scripts # test programs - run on make check, make distcheck -check_PROGRAMS= pngtest pngunknown pngstest pngvalid pngimage +check_PROGRAMS= pngtest pngunknown pngstest pngvalid pngimage timepng # Utilities - installed bin_PROGRAMS= pngfix png-fix-itxt @@ -42,6 +42,9 @@ pngunknown_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la pngimage_SOURCES = contrib/libtests/pngimage.c pngimage_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la +timepng_SOURCES = contrib/libtests/timepng.c +timepng_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la + pngfix_SOURCES = contrib/tools/pngfix.c pngfix_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la diff --git a/README b/README index 77b8f4c5e..eb875d9b4 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -README for libpng version 1.6.22beta04 - March 9, 2016 (shared library 16.0) +README for libpng version 1.6.22beta04 - April 5, 2016 (shared library 16.0) See the note about version numbers near the top of png.h See INSTALL for instructions on how to install libpng. diff --git a/libpng-manual.txt b/libpng-manual.txt index 1bb94850e..a29972ddc 100644 --- a/libpng-manual.txt +++ b/libpng-manual.txt @@ -1,6 +1,6 @@ libpng-manual.txt - A description on how to use and modify libpng - libpng version 1.6.22beta04 - March 9, 2016 + libpng version 1.6.22beta04 - April 5, 2016 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2016 Glenn Randers-Pehrson @@ -11,7 +11,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng versions 0.97, January 1998, through 1.6.22beta04 - March 9, 2016 + libpng versions 0.97, January 1998, through 1.6.22beta04 - April 5, 2016 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2016 Glenn Randers-Pehrson diff --git a/libpng.3 b/libpng.3 index 1a01b4724..39d7bc1a3 100644 --- a/libpng.3 +++ b/libpng.3 @@ -1,4 +1,4 @@ -.TH LIBPNG 3 "March 9, 2016" +.TH LIBPNG 3 "April 5, 2016" .SH NAME libpng \- Portable Network Graphics (PNG) Reference Library 1.6.22beta04 .SH SYNOPSIS @@ -510,7 +510,7 @@ Following is a copy of the libpng-manual.txt file that accompanies libpng. .SH LIBPNG.TXT libpng-manual.txt - A description on how to use and modify libpng - libpng version 1.6.22beta04 - March 9, 2016 + libpng version 1.6.22beta04 - April 5, 2016 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2016 Glenn Randers-Pehrson @@ -521,7 +521,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng versions 0.97, January 1998, through 1.6.22beta04 - March 9, 2016 + libpng versions 0.97, January 1998, through 1.6.22beta04 - April 5, 2016 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2016 Glenn Randers-Pehrson @@ -5945,9 +5945,9 @@ the first widely used release: ... 1.0.19 10 10019 10.so.0.19[.0] ... - 1.2.53 13 10253 12.so.0.53[.0] + 1.2.56 13 10256 12.so.0.56[.0] ... - 1.5.23 15 10523 15.so.15.23[.0] + 1.5.25 15 10525 15.so.15.25[.0] ... 1.6.22 16 10622 16.so.16.22[.0] @@ -6005,7 +6005,7 @@ possible without all of you. Thanks to Frank J. T. Wojcik for helping with the documentation. -Libpng version 1.6.22beta04 - March 9, 2016: +Libpng version 1.6.22beta04 - April 5, 2016: Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net). @@ -6030,7 +6030,7 @@ this sentence. This code is released under the libpng license. -libpng versions 1.0.7, July 1, 2000 through 1.6.22beta04, March 9, 2016 are +libpng versions 1.0.7, July 1, 2000 through 1.6.22beta04, April 5, 2016 are Copyright (c) 2000-2002, 2004, 2006-2016 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 @@ -6155,7 +6155,7 @@ files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). Glenn Randers-Pehrson glennrp at users.sourceforge.net -March 9, 2016 +April 5, 2016 .\" end of man page diff --git a/libpngpf.3 b/libpngpf.3 index 6f18b8aa1..63ef8f37b 100644 --- a/libpngpf.3 +++ b/libpngpf.3 @@ -1,4 +1,4 @@ -.TH LIBPNGPF 3 "March 9, 2016" +.TH LIBPNGPF 3 "April 5, 2016" .SH NAME libpng \- Portable Network Graphics (PNG) Reference Library 1.6.22beta04 (private functions) diff --git a/png.5 b/png.5 index e9d82c2a2..36d0181fd 100644 --- a/png.5 +++ b/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "March 9, 2016" +.TH PNG 5 "April 5, 2016" .SH NAME png \- Portable Network Graphics (PNG) format .SH DESCRIPTION diff --git a/png.c b/png.c index c625df6d5..a7f4c154e 100644 --- a/png.c +++ b/png.c @@ -775,14 +775,14 @@ png_get_copyright(png_const_structrp png_ptr) #else # ifdef __STDC__ return PNG_STRING_NEWLINE \ - "libpng version 1.6.22beta04 - March 9, 2016" PNG_STRING_NEWLINE \ + "libpng version 1.6.22beta04 - April 5, 2016" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2002,2004,2006-2016 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.6.22beta04 - March 9, 2016\ + return "libpng version 1.6.22beta04 - April 5, 2016\ Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson\ Copyright (c) 1996-1997 Andreas Dilger\ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc."; diff --git a/png.h b/png.h index 0e3dd3070..fcb94d36c 100644 --- a/png.h +++ b/png.h @@ -1,7 +1,7 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.22beta04, March 9, 2016 + * libpng version 1.6.22beta04, April 5, 2016 * * Copyright (c) 1998-2002,2004,2006-2016 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.6.22beta04, March 9, 2016: + * libpng versions 0.97, January 1998, through 1.6.22beta04, April 5, 2016: * Glenn Randers-Pehrson. * See also "Contributing Authors", below. */ @@ -29,7 +29,7 @@ * files that are distributed with libpng have other copyright owners and * are released under other open source licenses. * - * libpng versions 1.0.7, July 1, 2000 through 1.6.22beta04, March 9, 2016 are + * libpng versions 1.0.7, July 1, 2000 through 1.6.22beta04, April 5, 2016 are * Copyright (c) 2000-2002, 2004, 2006-2016 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 @@ -213,9 +213,9 @@ * ... * 1.0.19 10 10019 10.so.0.19[.0] * ... - * 1.2.53 13 10253 12.so.0.53[.0] + * 1.2.56 13 10256 12.so.0.56[.0] * ... - * 1.5.23 15 10523 15.so.15.23[.0] + * 1.5.25 15 10525 15.so.15.25[.0] * ... * 1.6.22 16 10622 16.so.16.22[.0] * @@ -245,7 +245,7 @@ * Y2K compliance in libpng: * ========================= * - * March 9, 2016 + * April 5, 2016 * * Since the PNG Development group is an ad-hoc body, we can't make * an official declaration. @@ -315,7 +315,7 @@ /* Version information for png.h - this should match the version in png.c */ #define PNG_LIBPNG_VER_STRING "1.6.22beta04" #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.6.22beta04 - March 9, 2016\n" + " libpng version 1.6.22beta04 - April 5, 2016\n" #define PNG_LIBPNG_VER_SONUM 16 #define PNG_LIBPNG_VER_DLLNUM 16 diff --git a/pngconf.h b/pngconf.h index 03ec615ae..d465a5327 100644 --- a/pngconf.h +++ b/pngconf.h @@ -1,7 +1,7 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.6.22beta04, March 9, 2016 + * libpng version 1.6.22beta04, April 5, 2016 * * Copyright (c) 1998-2002,2004,2006-2015 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/projects/vstudio/README.txt b/projects/vstudio/README.txt index 8547af489..ce465ebf6 100644 --- a/projects/vstudio/README.txt +++ b/projects/vstudio/README.txt @@ -1,7 +1,7 @@ VisualStudio instructions -libpng version 1.6.22beta04 - March 9, 2016 +libpng version 1.6.22beta04 - April 5, 2016 Copyright (c) 2010,2013,2015 Glenn Randers-Pehrson diff --git a/projects/vstudio/zlib.props b/projects/vstudio/zlib.props index b7d0ab1bd..a1073a5e4 100644 --- a/projects/vstudio/zlib.props +++ b/projects/vstudio/zlib.props @@ -2,7 +2,7 @@