27 * This file is available under and governed by the GNU General Public |
27 * This file is available under and governed by the GNU General Public |
28 * License version 2 only, as published by the Free Software Foundation. |
28 * License version 2 only, as published by the Free Software Foundation. |
29 * However, the following notice accompanied the original version of this |
29 * However, the following notice accompanied the original version of this |
30 * file and, per its terms, should not be removed: |
30 * file and, per its terms, should not be removed: |
31 * |
31 * |
32 * Last changed in libpng 1.6.35 [July 15, 2018] |
32 * Copyright (c) 2018-2019 Cosmin Truta |
33 * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson |
33 * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson |
34 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) |
34 * Copyright (c) 1996-1997 Andreas Dilger |
35 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) |
35 * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. |
36 * |
36 * |
37 * This code is released under the libpng license. |
37 * This code is released under the libpng license. |
38 * For conditions of distribution and use, see the disclaimer |
38 * For conditions of distribution and use, see the disclaimer |
39 * and license in png.h |
39 * and license in png.h |
40 */ |
40 */ |
200 # endif /* no GNUC support */ |
200 # endif /* no GNUC support */ |
201 # endif /* __GNUC__ */ |
201 # endif /* __GNUC__ */ |
202 # else /* !defined __ARM_NEON__ */ |
202 # else /* !defined __ARM_NEON__ */ |
203 /* The 'intrinsics' code simply won't compile without this -mfpu=neon: |
203 /* The 'intrinsics' code simply won't compile without this -mfpu=neon: |
204 */ |
204 */ |
205 # define PNG_ARM_NEON_IMPLEMENTATION 2 |
205 # if !defined(__aarch64__) |
|
206 /* The assembler code currently does not work on ARM64 */ |
|
207 # define PNG_ARM_NEON_IMPLEMENTATION 2 |
|
208 # endif /* __aarch64__ */ |
206 # endif /* __ARM_NEON__ */ |
209 # endif /* __ARM_NEON__ */ |
207 # endif /* !PNG_ARM_NEON_IMPLEMENTATION */ |
210 # endif /* !PNG_ARM_NEON_IMPLEMENTATION */ |
208 |
211 |
209 # ifndef PNG_ARM_NEON_IMPLEMENTATION |
212 # ifndef PNG_ARM_NEON_IMPLEMENTATION |
210 /* Use the intrinsics code by default. */ |
213 /* Use the intrinsics code by default. */ |
292 |
295 |
293 #if PNG_POWERPC_VSX_OPT > 0 |
296 #if PNG_POWERPC_VSX_OPT > 0 |
294 # define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_vsx |
297 # define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_vsx |
295 # define PNG_POWERPC_VSX_IMPLEMENTATION 1 |
298 # define PNG_POWERPC_VSX_IMPLEMENTATION 1 |
296 #endif |
299 #endif |
|
300 |
297 |
301 |
298 /* Is this a build of a DLL where compilation of the object modules requires |
302 /* Is this a build of a DLL where compilation of the object modules requires |
299 * different preprocessor settings to those required for a simple library? If |
303 * different preprocessor settings to those required for a simple library? If |
300 * so PNG_BUILD_DLL must be set. |
304 * so PNG_BUILD_DLL must be set. |
301 * |
305 * |
1559 PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr, |
1563 PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr, |
1560 png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
1564 png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
1561 #endif |
1565 #endif |
1562 |
1566 |
1563 PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_const_structrp png_ptr, |
1567 PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_const_structrp png_ptr, |
1564 const png_uint_32 chunk_name),PNG_EMPTY); |
1568 png_uint_32 chunk_name),PNG_EMPTY); |
1565 |
1569 |
1566 PNG_INTERNAL_FUNCTION(void,png_check_chunk_length,(png_const_structrp png_ptr, |
1570 PNG_INTERNAL_FUNCTION(void,png_check_chunk_length,(png_const_structrp png_ptr, |
1567 const png_uint_32 chunk_length),PNG_EMPTY); |
1571 png_uint_32 chunk_length),PNG_EMPTY); |
1568 |
1572 |
1569 PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr, |
1573 PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr, |
1570 png_inforp info_ptr, png_uint_32 length, int keep),PNG_EMPTY); |
1574 png_inforp info_ptr, png_uint_32 length, int keep),PNG_EMPTY); |
1571 /* This is the function that gets called for unknown chunks. The 'keep' |
1575 /* This is the function that gets called for unknown chunks. The 'keep' |
1572 * argument is either non-zero for a known chunk that has been set to be |
1576 * argument is either non-zero for a known chunk that has been set to be |
2139 #endif |
2143 #endif |
2140 |
2144 |
2141 PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, |
2145 PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, |
2142 png_const_charp key, png_bytep new_key), PNG_EMPTY); |
2146 png_const_charp key, png_bytep new_key), PNG_EMPTY); |
2143 |
2147 |
|
2148 #if PNG_ARM_NEON_IMPLEMENTATION == 1 |
|
2149 PNG_INTERNAL_FUNCTION(void, |
|
2150 png_riffle_palette_neon, |
|
2151 (png_structrp), |
|
2152 PNG_EMPTY); |
|
2153 PNG_INTERNAL_FUNCTION(int, |
|
2154 png_do_expand_palette_rgba8_neon, |
|
2155 (png_structrp, |
|
2156 png_row_infop, |
|
2157 png_const_bytep, |
|
2158 const png_bytepp, |
|
2159 const png_bytepp), |
|
2160 PNG_EMPTY); |
|
2161 PNG_INTERNAL_FUNCTION(int, |
|
2162 png_do_expand_palette_rgb8_neon, |
|
2163 (png_structrp, |
|
2164 png_row_infop, |
|
2165 png_const_bytep, |
|
2166 const png_bytepp, |
|
2167 const png_bytepp), |
|
2168 PNG_EMPTY); |
|
2169 #endif |
|
2170 |
2144 /* Maintainer: Put new private prototypes here ^ */ |
2171 /* Maintainer: Put new private prototypes here ^ */ |
2145 |
2172 |
2146 #include "pngdebug.h" |
2173 #include "pngdebug.h" |
2147 |
2174 |
2148 #ifdef __cplusplus |
2175 #ifdef __cplusplus |