|
@@ -1,7 +1,7 @@
|
|
|
-diff -Naru libpng-1.6.17.org/png.h libpng-1.6.17/png.h
|
|
|
|
|
|
-+++ libpng-1.6.17/png.h 2015-03-27 07:56:22.536191843 +0900
|
|
|
-@@ -480,6 +480,10 @@
|
|
|
+diff -Naru libpng-1.6.19.org/png.h libpng-1.6.19/png.h
|
|
|
+--- libpng-1.6.19.org/png.h 2015-11-15 22:34:42.407615478 +0900
|
|
|
|
|
|
+@@ -334,6 +334,10 @@
|
|
|
# include "pnglibconf.h"
|
|
|
#endif
|
|
|
|
|
@@ -12,7 +12,7 @@ diff -Naru libpng-1.6.17.org/png.h libpng-1.6.17/png.h
|
|
|
#ifndef PNG_VERSION_INFO_ONLY
|
|
|
/* Machine specific configuration. */
|
|
|
# include "pngconf.h"
|
|
|
-@@ -570,6 +574,17 @@
|
|
|
+@@ -429,6 +433,17 @@
|
|
|
* See pngconf.h for base types that vary by machine/system
|
|
|
*/
|
|
|
|
|
@@ -30,18 +30,18 @@ diff -Naru libpng-1.6.17.org/png.h libpng-1.6.17/png.h
|
|
|
/* This triggers a compiler error in png.c, if png.c and png.h
|
|
|
* do not agree upon the version number.
|
|
|
*/
|
|
|
-@@ -890,6 +905,10 @@
|
|
|
- #define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */
|
|
|
+@@ -750,6 +765,10 @@
|
|
|
#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */
|
|
|
+ #if INT_MAX >= 0x8000 /* else this might break */
|
|
|
#define PNG_INFO_IDAT 0x8000 /* ESR, 1.0.6 */
|
|
|
+#ifdef PNG_APNG_SUPPORTED
|
|
|
+#define PNG_INFO_acTL 0x10000
|
|
|
+#define PNG_INFO_fcTL 0x20000
|
|
|
+#endif
|
|
|
+ #endif
|
|
|
|
|
|
/* This is used for the transformation routines, as some of them
|
|
|
- * change these values for the row. It also should enable using
|
|
|
-@@ -927,6 +946,10 @@
|
|
|
+@@ -788,6 +807,10 @@
|
|
|
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
|
|
|
typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop));
|
|
|
typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop));
|
|
@@ -52,7 +52,7 @@ diff -Naru libpng-1.6.17.org/png.h libpng-1.6.17/png.h
|
|
|
|
|
|
/* The following callback receives png_uint_32 row_number, int pass for the
|
|
|
* png_bytep data of the row. When transforming an interlaced image the
|
|
|
-@@ -3271,6 +3294,74 @@
|
|
|
+@@ -3108,6 +3131,74 @@
|
|
|
/*******************************************************************************
|
|
|
* END OF HARDWARE AND SOFTWARE OPTIONS
|
|
|
******************************************************************************/
|
|
@@ -127,7 +127,7 @@ diff -Naru libpng-1.6.17.org/png.h libpng-1.6.17/png.h
|
|
|
|
|
|
/* Maintainer: Put new public prototypes here ^, in libpng.3, in project
|
|
|
* defs, and in scripts/symbols.def.
|
|
|
-@@ -3280,7 +3371,11 @@
|
|
|
+@@ -3117,7 +3208,11 @@
|
|
|
* one to use is one more than this.)
|
|
|
*/
|
|
|
#ifdef PNG_EXPORT_LAST_ORDINAL
|
|
@@ -139,9 +139,9 @@ diff -Naru libpng-1.6.17.org/png.h libpng-1.6.17/png.h
|
|
|
#endif
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
-diff -Naru libpng-1.6.17.org/pngget.c libpng-1.6.17/pngget.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngget.c 2015-03-27 07:56:22.537191870 +0900
|
|
|
+diff -Naru libpng-1.6.19.org/pngget.c libpng-1.6.19/pngget.c
|
|
|
+--- libpng-1.6.19.org/pngget.c 2015-11-15 22:34:42.408615513 +0900
|
|
|
|
|
|
@@ -1216,4 +1216,166 @@
|
|
|
# endif
|
|
|
#endif
|
|
@@ -309,9 +309,9 @@ diff -Naru libpng-1.6.17.org/pngget.c libpng-1.6.17/pngget.c
|
|
|
+}
|
|
|
+#endif /* PNG_APNG_SUPPORTED */
|
|
|
#endif /* READ || WRITE */
|
|
|
-diff -Naru libpng-1.6.17.org/pnginfo.h libpng-1.6.17/pnginfo.h
|
|
|
|
|
|
-+++ libpng-1.6.17/pnginfo.h 2015-03-27 07:56:22.537191870 +0900
|
|
|
+diff -Naru libpng-1.6.19.org/pnginfo.h libpng-1.6.19/pnginfo.h
|
|
|
+--- libpng-1.6.19.org/pnginfo.h 2015-11-15 22:34:42.408615513 +0900
|
|
|
|
|
|
@@ -255,5 +255,18 @@
|
|
|
png_bytepp row_pointers; /* the image bits */
|
|
|
#endif
|
|
@@ -331,10 +331,10 @@ diff -Naru libpng-1.6.17.org/pnginfo.h libpng-1.6.17/pnginfo.h
|
|
|
+
|
|
|
};
|
|
|
#endif /* PNGINFO_H */
|
|
|
-diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngpread.c 2015-03-27 07:56:22.537191870 +0900
|
|
|
-@@ -219,6 +219,109 @@
|
|
|
+diff -Naru libpng-1.6.19.org/pngpread.c libpng-1.6.19/pngpread.c
|
|
|
+--- libpng-1.6.19.org/pngpread.c 2015-11-15 22:34:42.409615548 +0900
|
|
|
|
|
|
+@@ -194,6 +194,106 @@
|
|
|
|
|
|
chunk_name = png_ptr->chunk_name;
|
|
|
|
|
@@ -354,7 +354,6 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
-+ png_push_crc_skip(png_ptr, png_ptr->push_length);
|
|
|
+ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
|
|
|
+ return;
|
|
|
+ }
|
|
@@ -380,7 +379,6 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
-+ png_push_crc_skip(png_ptr, png_ptr->push_length);
|
|
|
+ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
|
|
|
+ return;
|
|
|
+ }
|
|
@@ -432,7 +430,6 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
+ }
|
|
|
+ png_warning(png_ptr, "Skipped (ignored) a chunk "
|
|
|
+ "between APNG chunks");
|
|
|
-+ png_push_crc_skip(png_ptr, png_ptr->push_length);
|
|
|
+ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
|
|
|
+ return;
|
|
|
+ }
|
|
@@ -444,7 +441,7 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
if (chunk_name == png_IDAT)
|
|
|
{
|
|
|
if ((png_ptr->mode & PNG_AFTER_IDAT) != 0)
|
|
|
-@@ -283,6 +386,9 @@
|
|
|
+@@ -258,6 +358,9 @@
|
|
|
|
|
|
else if (chunk_name == png_IDAT)
|
|
|
{
|
|
@@ -454,7 +451,7 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
png_ptr->idat_size = png_ptr->push_length;
|
|
|
png_ptr->process_mode = PNG_READ_IDAT_MODE;
|
|
|
png_push_have_info(png_ptr, info_ptr);
|
|
|
-@@ -428,6 +534,30 @@
|
|
|
+@@ -403,6 +506,30 @@
|
|
|
png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length);
|
|
|
}
|
|
|
#endif
|
|
@@ -485,7 +482,7 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
|
|
|
else
|
|
|
{
|
|
|
-@@ -623,7 +753,11 @@
|
|
|
+@@ -533,7 +660,11 @@
|
|
|
png_byte chunk_tag[4];
|
|
|
|
|
|
/* TODO: this code can be commoned up with the same code in push_read */
|
|
@@ -497,7 +494,7 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
png_push_fill_buffer(png_ptr, chunk_length, 4);
|
|
|
png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
|
|
|
png_reset_crc(png_ptr);
|
|
|
-@@ -631,17 +765,64 @@
|
|
|
+@@ -541,17 +672,64 @@
|
|
|
png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag);
|
|
|
png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
|
|
|
|
|
@@ -562,7 +559,7 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
}
|
|
|
|
|
|
if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0)
|
|
|
-@@ -714,6 +895,15 @@
|
|
|
+@@ -625,6 +803,15 @@
|
|
|
if (!(buffer_length > 0) || buffer == NULL)
|
|
|
png_error(png_ptr, "No IDAT data (internal error)");
|
|
|
|
|
@@ -578,7 +575,7 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
/* This routine must process all the data it has been given
|
|
|
* before returning, calling the row callback as required to
|
|
|
* handle the uncompressed results.
|
|
|
-@@ -1163,6 +1353,18 @@
|
|
|
+@@ -1074,6 +1261,18 @@
|
|
|
png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer);
|
|
|
}
|
|
|
|
|
@@ -597,10 +594,10 @@ diff -Naru libpng-1.6.17.org/pngpread.c libpng-1.6.17/pngpread.c
|
|
|
png_voidp PNGAPI
|
|
|
png_get_progressive_ptr(png_const_structrp png_ptr)
|
|
|
{
|
|
|
-diff -Naru libpng-1.6.17.org/pngpriv.h libpng-1.6.17/pngpriv.h
|
|
|
|
|
|
-+++ libpng-1.6.17/pngpriv.h 2015-03-27 07:56:22.538191898 +0900
|
|
|
-@@ -516,6 +516,10 @@
|
|
|
+diff -Naru libpng-1.6.19.org/pngpriv.h libpng-1.6.19/pngpriv.h
|
|
|
+--- libpng-1.6.19.org/pngpriv.h 2015-11-15 22:34:42.409615548 +0900
|
|
|
|
|
|
+@@ -537,6 +537,10 @@
|
|
|
#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */
|
|
|
/* 0x4000 (unused) */
|
|
|
#define PNG_IS_READ_STRUCT 0x8000 /* Else is a write struct */
|
|
@@ -611,7 +608,7 @@ diff -Naru libpng-1.6.17.org/pngpriv.h libpng-1.6.17/pngpriv.h
|
|
|
|
|
|
/* Flags for the transformations the PNG library does on the image data */
|
|
|
#define PNG_BGR 0x0001
|
|
|
-@@ -737,6 +741,16 @@
|
|
|
+@@ -754,6 +758,16 @@
|
|
|
#define png_tRNS PNG_U32(116, 82, 78, 83)
|
|
|
#define png_zTXt PNG_U32(122, 84, 88, 116)
|
|
|
|
|
@@ -628,7 +625,7 @@ diff -Naru libpng-1.6.17.org/pngpriv.h libpng-1.6.17/pngpriv.h
|
|
|
/* The following will work on (signed char*) strings, whereas the get_uint_32
|
|
|
* macro will fail on top-bit-set values because of the sign extension.
|
|
|
*/
|
|
|
-@@ -1440,6 +1454,47 @@
|
|
|
+@@ -1453,6 +1467,47 @@
|
|
|
*/
|
|
|
#endif
|
|
|
|
|
@@ -676,9 +673,9 @@ diff -Naru libpng-1.6.17.org/pngpriv.h libpng-1.6.17/pngpriv.h
|
|
|
/* Added at libpng version 1.4.0 */
|
|
|
#ifdef PNG_COLORSPACE_SUPPORTED
|
|
|
/* These internal functions are for maintaining the colorspace structure within
|
|
|
-diff -Naru libpng-1.6.17.org/pngread.c libpng-1.6.17/pngread.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngread.c 2015-03-27 07:56:22.539191925 +0900
|
|
|
+diff -Naru libpng-1.6.19.org/pngread.c libpng-1.6.19/pngread.c
|
|
|
+--- libpng-1.6.19.org/pngread.c 2015-11-15 22:34:42.410615583 +0900
|
|
|
|
|
|
@@ -158,6 +158,9 @@
|
|
|
|
|
|
else if (chunk_name == png_IDAT)
|
|
@@ -780,10 +777,10 @@ diff -Naru libpng-1.6.17.org/pngread.c libpng-1.6.17/pngread.c
|
|
|
/* Optional call to update the users info_ptr structure */
|
|
|
void PNGAPI
|
|
|
png_read_update_info(png_structrp png_ptr, png_inforp info_ptr)
|
|
|
-diff -Naru libpng-1.6.17.org/pngrutil.c libpng-1.6.17/pngrutil.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngrutil.c 2015-03-27 07:56:22.541191980 +0900
|
|
|
-@@ -819,6 +819,11 @@
|
|
|
+diff -Naru libpng-1.6.19.org/pngrutil.c libpng-1.6.19/pngrutil.c
|
|
|
+--- libpng-1.6.19.org/pngrutil.c 2015-11-15 22:34:42.412615653 +0900
|
|
|
|
|
|
+@@ -824,6 +824,11 @@
|
|
|
filter_type = buf[11];
|
|
|
interlace_type = buf[12];
|
|
|
|
|
@@ -795,7 +792,7 @@ diff -Naru libpng-1.6.17.org/pngrutil.c libpng-1.6.17/pngrutil.c
|
|
|
/* Set internal variables */
|
|
|
png_ptr->width = width;
|
|
|
png_ptr->height = height;
|
|
|
-@@ -2702,6 +2707,179 @@
|
|
|
+@@ -2724,6 +2729,179 @@
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -975,7 +972,7 @@ diff -Naru libpng-1.6.17.org/pngrutil.c libpng-1.6.17/pngrutil.c
|
|
|
#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
|
|
|
/* Utility function for png_handle_unknown; set up png_ptr::unknown_chunk */
|
|
|
static int
|
|
|
-@@ -3960,7 +4138,38 @@
|
|
|
+@@ -3982,7 +4160,38 @@
|
|
|
{
|
|
|
uInt avail_in;
|
|
|
png_bytep buffer;
|
|
@@ -1014,7 +1011,7 @@ diff -Naru libpng-1.6.17.org/pngrutil.c libpng-1.6.17/pngrutil.c
|
|
|
while (png_ptr->idat_size == 0)
|
|
|
{
|
|
|
png_crc_finish(png_ptr, 0);
|
|
|
-@@ -3972,7 +4181,7 @@
|
|
|
+@@ -3994,7 +4203,7 @@
|
|
|
if (png_ptr->chunk_name != png_IDAT)
|
|
|
png_error(png_ptr, "Not enough image data");
|
|
|
}
|
|
@@ -1023,7 +1020,7 @@ diff -Naru libpng-1.6.17.org/pngrutil.c libpng-1.6.17/pngrutil.c
|
|
|
avail_in = png_ptr->IDAT_read_size;
|
|
|
|
|
|
if (avail_in > png_ptr->idat_size)
|
|
|
-@@ -4035,6 +4244,9 @@
|
|
|
+@@ -4057,6 +4266,9 @@
|
|
|
|
|
|
png_ptr->mode |= PNG_AFTER_IDAT;
|
|
|
png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED;
|
|
@@ -1033,7 +1030,7 @@ diff -Naru libpng-1.6.17.org/pngrutil.c libpng-1.6.17/pngrutil.c
|
|
|
|
|
|
if (png_ptr->zstream.avail_in > 0 || png_ptr->idat_size > 0)
|
|
|
png_chunk_benign_error(png_ptr, "Extra compressed data");
|
|
|
-@@ -4473,4 +4685,80 @@
|
|
|
+@@ -4495,4 +4707,80 @@
|
|
|
|
|
|
png_ptr->flags |= PNG_FLAG_ROW_INIT;
|
|
|
}
|
|
@@ -1114,9 +1111,9 @@ diff -Naru libpng-1.6.17.org/pngrutil.c libpng-1.6.17/pngrutil.c
|
|
|
+#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
|
|
|
+#endif /* PNG_READ_APNG_SUPPORTED */
|
|
|
#endif /* READ */
|
|
|
-diff -Naru libpng-1.6.17.org/pngset.c libpng-1.6.17/pngset.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngset.c 2015-03-27 07:56:22.541191980 +0900
|
|
|
+diff -Naru libpng-1.6.19.org/pngset.c libpng-1.6.19/pngset.c
|
|
|
+--- libpng-1.6.19.org/pngset.c 2015-11-15 22:34:42.412615653 +0900
|
|
|
|
|
|
@@ -241,6 +241,11 @@
|
|
|
info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
|
|
|
|
|
@@ -1129,7 +1126,7 @@ diff -Naru libpng-1.6.17.org/pngset.c libpng-1.6.17/pngset.c
|
|
|
}
|
|
|
|
|
|
#ifdef PNG_oFFs_SUPPORTED
|
|
|
-@@ -1090,6 +1095,147 @@
|
|
|
+@@ -1094,6 +1099,147 @@
|
|
|
}
|
|
|
#endif /* sPLT */
|
|
|
|
|
@@ -1277,10 +1274,10 @@ diff -Naru libpng-1.6.17.org/pngset.c libpng-1.6.17/pngset.c
|
|
|
#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
|
|
|
static png_byte
|
|
|
check_location(png_const_structrp png_ptr, int location)
|
|
|
-diff -Naru libpng-1.6.17.org/pngstruct.h libpng-1.6.17/pngstruct.h
|
|
|
|
|
|
-+++ libpng-1.6.17/pngstruct.h 2015-03-27 07:56:22.541191980 +0900
|
|
|
-@@ -408,6 +408,27 @@
|
|
|
+diff -Naru libpng-1.6.19.org/pngstruct.h libpng-1.6.19/pngstruct.h
|
|
|
+--- libpng-1.6.19.org/pngstruct.h 2015-11-15 22:34:42.412615653 +0900
|
|
|
|
|
|
+@@ -400,6 +400,27 @@
|
|
|
png_byte filter_type;
|
|
|
#endif
|
|
|
|
|
@@ -1308,146 +1305,21 @@ diff -Naru libpng-1.6.17.org/pngstruct.h libpng-1.6.17/pngstruct.h
|
|
|
/* New members added in libpng-1.2.0 */
|
|
|
|
|
|
/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
|
|
|
-diff -Naru libpng-1.6.17.org/pngtest.c libpng-1.6.17/pngtest.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngtest.c 2015-03-27 07:56:22.541191980 +0900
|
|
|
-@@ -849,6 +849,10 @@
|
|
|
- png_uint_32 width, height;
|
|
|
- int num_pass = 1, pass;
|
|
|
- int bit_depth, color_type;
|
|
|
-+#ifdef PNG_APNG_SUPPORTED
|
|
|
-+ png_uint_32 num_frames;
|
|
|
-+ png_uint_32 num_plays;
|
|
|
-+#endif
|
|
|
-
|
|
|
- row_buf = NULL;
|
|
|
- error_parameters.file_name = inname;
|
|
|
-@@ -1316,6 +1320,20 @@
|
|
|
- }
|
|
|
- }
|
|
|
- #endif
|
|
|
-+#ifdef PNG_APNG_SUPPORTED
|
|
|
-+ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL))
|
|
|
-+ {
|
|
|
-+ if (png_get_acTL(read_ptr, read_info_ptr, &num_frames, &num_plays))
|
|
|
-+ {
|
|
|
-+ png_byte is_hidden;
|
|
|
-+ pngtest_debug2("Handling acTL chunks (frames %ld, plays %ld)",
|
|
|
-+ num_frames, num_plays);
|
|
|
-+ png_set_acTL(write_ptr, write_info_ptr, num_frames, num_plays);
|
|
|
-+ is_hidden = png_get_first_frame_is_hidden(read_ptr, read_info_ptr);
|
|
|
-+ png_set_first_frame_is_hidden(write_ptr, write_info_ptr, is_hidden);
|
|
|
-+ }
|
|
|
-+ }
|
|
|
-+#endif
|
|
|
- #ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
|
|
|
- {
|
|
|
- png_unknown_chunkp unknowns;
|
|
|
-@@ -1377,6 +1395,89 @@
|
|
|
- t_misc += (t_stop - t_start);
|
|
|
- t_start = t_stop;
|
|
|
- #endif
|
|
|
-+#ifdef PNG_APNG_SUPPORTED
|
|
|
-+ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL))
|
|
|
-+ {
|
|
|
-+ png_uint_32 frame;
|
|
|
-+ for (frame = 0; frame < num_frames; frame++)
|
|
|
-+ {
|
|
|
-+ png_uint_32 frame_width;
|
|
|
-+ png_uint_32 frame_height;
|
|
|
-+ png_uint_32 x_offset;
|
|
|
-+ png_uint_32 y_offset;
|
|
|
-+ png_uint_16 delay_num;
|
|
|
-+ png_uint_16 delay_den;
|
|
|
-+ png_byte dispose_op;
|
|
|
-+ png_byte blend_op;
|
|
|
-+ png_read_frame_head(read_ptr, read_info_ptr);
|
|
|
-+ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_fcTL))
|
|
|
-+ {
|
|
|
-+ png_get_next_frame_fcTL(read_ptr, read_info_ptr,
|
|
|
-+ &frame_width, &frame_height,
|
|
|
-+ &x_offset, &y_offset,
|
|
|
-+ &delay_num, &delay_den,
|
|
|
-+ &dispose_op, &blend_op);
|
|
|
-+ }
|
|
|
-+ else
|
|
|
-+ {
|
|
|
-+ frame_width = width;
|
|
|
-+ frame_height = height;
|
|
|
-+ x_offset = 0;
|
|
|
-+ y_offset = 0;
|
|
|
-+ delay_num = 1;
|
|
|
-+ delay_den = 1;
|
|
|
-+ dispose_op = PNG_DISPOSE_OP_NONE;
|
|
|
-+ blend_op = PNG_BLEND_OP_SOURCE;
|
|
|
-+ }
|
|
|
-+#ifdef PNG_WRITE_APNG_SUPPORTED
|
|
|
-+ png_write_frame_head(write_ptr, write_info_ptr, (png_bytepp)&row_buf,
|
|
|
-+ frame_width, frame_height,
|
|
|
-+ x_offset, y_offset,
|
|
|
-+ delay_num, delay_den,
|
|
|
-+ dispose_op, blend_op);
|
|
|
-+#endif
|
|
|
-+ for (pass = 0; pass < num_pass; pass++)
|
|
|
-+ {
|
|
|
-+ pngtest_debug1("Writing row data for pass %d", pass);
|
|
|
-+ for (y = 0; y < frame_height; y++)
|
|
|
-+ {
|
|
|
-+#ifndef SINGLE_ROWBUF_ALLOC
|
|
|
-+ pngtest_debug2("Allocating row buffer (pass %d, y = %ld)...", pass, y);
|
|
|
-+ row_buf = (png_bytep)png_malloc(read_ptr,
|
|
|
-+ png_get_rowbytes(read_ptr, read_info_ptr));
|
|
|
-+ pngtest_debug2("0x%08lx (%ld bytes)", (unsigned long)row_buf,
|
|
|
-+ png_get_rowbytes(read_ptr, read_info_ptr));
|
|
|
-+#endif /* !SINGLE_ROWBUF_ALLOC */
|
|
|
-+ png_read_rows(read_ptr, (png_bytepp)&row_buf, NULL, 1);
|
|
|
-+
|
|
|
-+#ifdef PNG_WRITE_SUPPORTED
|
|
|
-+#ifdef PNGTEST_TIMING
|
|
|
-+ t_stop = (float)clock();
|
|
|
-+ t_decode += (t_stop - t_start);
|
|
|
-+ t_start = t_stop;
|
|
|
-+#endif
|
|
|
-+ png_write_rows(write_ptr, (png_bytepp)&row_buf, 1);
|
|
|
-+#ifdef PNGTEST_TIMING
|
|
|
-+ t_stop = (float)clock();
|
|
|
-+ t_encode += (t_stop - t_start);
|
|
|
-+ t_start = t_stop;
|
|
|
-+#endif
|
|
|
-+#endif /* PNG_WRITE_SUPPORTED */
|
|
|
-+
|
|
|
-+#ifndef SINGLE_ROWBUF_ALLOC
|
|
|
-+ pngtest_debug2("Freeing row buffer (pass %d, y = %ld)", pass, y);
|
|
|
-+ png_free(read_ptr, row_buf);
|
|
|
-+ row_buf = NULL;
|
|
|
-+#endif /* !SINGLE_ROWBUF_ALLOC */
|
|
|
-+ }
|
|
|
-+ }
|
|
|
-+#ifdef PNG_WRITE_APNG_SUPPORTED
|
|
|
-+ png_write_frame_tail(write_ptr, write_info_ptr);
|
|
|
-+#endif
|
|
|
-+ }
|
|
|
-+ }
|
|
|
-+ else
|
|
|
-+#endif
|
|
|
- for (pass = 0; pass < num_pass; pass++)
|
|
|
- {
|
|
|
- pngtest_debug1("Writing row data for pass %d", pass);
|
|
|
-diff -Naru libpng-1.6.17.org/pngwrite.c libpng-1.6.17/pngwrite.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngwrite.c 2015-03-27 07:56:22.542192007 +0900
|
|
|
-@@ -127,6 +127,10 @@
|
|
|
- * application continues writing the PNG. So check the 'invalid' flag here
|
|
|
- * too.
|
|
|
- */
|
|
|
+diff -Naru libpng-1.6.19.org/pngwrite.c libpng-1.6.19/pngwrite.c
|
|
|
+--- libpng-1.6.19.org/pngwrite.c 2015-11-15 22:34:42.413615688 +0900
|
|
|
|
|
|
+@@ -128,6 +128,10 @@
|
|
|
+ * the application continues writing the PNG. So check the 'invalid'
|
|
|
+ * flag here too.
|
|
|
+ */
|
|
|
+#ifdef PNG_WRITE_APNG_SUPPORTED
|
|
|
-+ if (info_ptr->valid & PNG_INFO_acTL)
|
|
|
-+ png_write_acTL(png_ptr, info_ptr->num_frames, info_ptr->num_plays);
|
|
|
++ if (info_ptr->valid & PNG_INFO_acTL)
|
|
|
++ png_write_acTL(png_ptr, info_ptr->num_frames, info_ptr->num_plays);
|
|
|
+#endif
|
|
|
#ifdef PNG_GAMMA_SUPPORTED
|
|
|
# ifdef PNG_WRITE_gAMA_SUPPORTED
|
|
|
if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 &&
|
|
|
-@@ -359,6 +363,11 @@
|
|
|
+@@ -365,6 +369,11 @@
|
|
|
png_benign_error(png_ptr, "Wrote palette index exceeding num_palette");
|
|
|
#endif
|
|
|
|
|
@@ -1459,7 +1331,7 @@ diff -Naru libpng-1.6.17.org/pngwrite.c libpng-1.6.17/pngwrite.c
|
|
|
/* See if user wants us to write information chunks */
|
|
|
if (info_ptr != NULL)
|
|
|
{
|
|
|
-@@ -1680,6 +1689,43 @@
|
|
|
+@@ -1450,6 +1459,43 @@
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -1502,10 +1374,10 @@ diff -Naru libpng-1.6.17.org/pngwrite.c libpng-1.6.17/pngwrite.c
|
|
|
+#endif /* PNG_WRITE_APNG_SUPPORTED */
|
|
|
|
|
|
#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED
|
|
|
- #ifdef PNG_STDIO_SUPPORTED /* currently required for png_image_write_* */
|
|
|
-diff -Naru libpng-1.6.17.org/pngwutil.c libpng-1.6.17/pngwutil.c
|
|
|
|
|
|
-+++ libpng-1.6.17/pngwutil.c 2015-03-27 07:56:22.543192035 +0900
|
|
|
+ # ifdef PNG_STDIO_SUPPORTED /* currently required for png_image_write_* */
|
|
|
+diff -Naru libpng-1.6.19.org/pngwutil.c libpng-1.6.19/pngwutil.c
|
|
|
+--- libpng-1.6.19.org/pngwutil.c 2015-11-15 22:34:42.414615723 +0900
|
|
|
|
|
|
@@ -901,6 +901,11 @@
|
|
|
/* Write the chunk */
|
|
|
png_write_complete_chunk(png_ptr, png_IHDR, buf, (png_size_t)13);
|
|
@@ -1518,7 +1390,7 @@ diff -Naru libpng-1.6.17.org/pngwutil.c libpng-1.6.17/pngwutil.c
|
|
|
if ((png_ptr->do_filter) == PNG_NO_FILTERS)
|
|
|
{
|
|
|
if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE ||
|
|
|
-@@ -1079,7 +1084,14 @@
|
|
|
+@@ -1082,7 +1087,14 @@
|
|
|
optimize_cmf(data, png_image_size(png_ptr));
|
|
|
#endif
|
|
|
|
|
@@ -1533,7 +1405,7 @@ diff -Naru libpng-1.6.17.org/pngwutil.c libpng-1.6.17/pngwutil.c
|
|
|
png_ptr->mode |= PNG_HAVE_IDAT;
|
|
|
|
|
|
png_ptr->zstream.next_out = data;
|
|
|
-@@ -1125,7 +1137,15 @@
|
|
|
+@@ -1128,7 +1140,15 @@
|
|
|
optimize_cmf(data, png_image_size(png_ptr));
|
|
|
#endif
|
|
|
|
|
@@ -1549,7 +1421,7 @@ diff -Naru libpng-1.6.17.org/pngwutil.c libpng-1.6.17/pngwutil.c
|
|
|
png_ptr->zstream.avail_out = 0;
|
|
|
png_ptr->zstream.next_out = NULL;
|
|
|
png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT;
|
|
|
-@@ -1938,6 +1958,82 @@
|
|
|
+@@ -1941,6 +1961,82 @@
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -1632,7 +1504,7 @@ diff -Naru libpng-1.6.17.org/pngwutil.c libpng-1.6.17/pngwutil.c
|
|
|
/* Initializes the row writing capability of libpng */
|
|
|
void /* PRIVATE */
|
|
|
png_write_start_row(png_structrp png_ptr)
|
|
|
-@@ -3028,4 +3124,39 @@
|
|
|
+@@ -2706,4 +2802,39 @@
|
|
|
}
|
|
|
#endif /* WRITE_FLUSH */
|
|
|
}
|
|
@@ -1672,9 +1544,9 @@ diff -Naru libpng-1.6.17.org/pngwutil.c libpng-1.6.17/pngwutil.c
|
|
|
+}
|
|
|
+#endif /* PNG_WRITE_APNG_SUPPORTED */
|
|
|
#endif /* WRITE */
|
|
|
-diff -Naru libpng-1.6.17.org/scripts/symbols.def libpng-1.6.17/scripts/symbols.def
|
|
|
|
|
|
-+++ libpng-1.6.17/scripts/symbols.def 2015-03-27 07:56:22.548192172 +0900
|
|
|
+diff -Naru libpng-1.6.19.org/scripts/symbols.def libpng-1.6.19/scripts/symbols.def
|
|
|
+--- libpng-1.6.19.org/scripts/symbols.def 2015-11-15 22:34:42.419615897 +0900
|
|
|
|
|
|
@@ -249,3 +249,23 @@
|
|
|
png_set_check_for_invalid_index @242
|
|
|
png_get_palette_max @243
|