Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
087d9745
O
Opencv
项目概览
Greenplum
/
Opencv
10 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
087d9745
编写于
2月 13, 2019
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #13807 from tailsu:sd/libpng-1.6.36
上级
b12e1acd
094615b2
变更
34
隐藏空白更改
内联
并排
Showing
34 changed file
with
749 addition
and
576 deletion
+749
-576
3rdparty/libpng/CHANGES
3rdparty/libpng/CHANGES
+27
-2
3rdparty/libpng/CMakeLists.txt
3rdparty/libpng/CMakeLists.txt
+6
-3
3rdparty/libpng/LICENSE
3rdparty/libpng/LICENSE
+88
-87
3rdparty/libpng/README
3rdparty/libpng/README
+36
-75
3rdparty/libpng/arm/arm_init.c
3rdparty/libpng/arm/arm_init.c
+2
-1
3rdparty/libpng/arm/filter_neon.S
3rdparty/libpng/arm/filter_neon.S
+1
-1
3rdparty/libpng/arm/filter_neon_intrinsics.c
3rdparty/libpng/arm/filter_neon_intrinsics.c
+21
-6
3rdparty/libpng/arm/palette_neon_intrinsics.c
3rdparty/libpng/arm/palette_neon_intrinsics.c
+149
-0
3rdparty/libpng/intel/filter_sse2_intrinsics.c
3rdparty/libpng/intel/filter_sse2_intrinsics.c
+11
-26
3rdparty/libpng/intel/intel_init.c
3rdparty/libpng/intel/intel_init.c
+1
-2
3rdparty/libpng/png.c
3rdparty/libpng/png.c
+22
-28
3rdparty/libpng/png.h
3rdparty/libpng/png.h
+136
-167
3rdparty/libpng/pngconf.h
3rdparty/libpng/pngconf.h
+8
-8
3rdparty/libpng/pngdebug.h
3rdparty/libpng/pngdebug.h
+3
-3
3rdparty/libpng/pngerror.c
3rdparty/libpng/pngerror.c
+6
-6
3rdparty/libpng/pngget.c
3rdparty/libpng/pngget.c
+3
-3
3rdparty/libpng/pnginfo.h
3rdparty/libpng/pnginfo.h
+3
-3
3rdparty/libpng/pnglibconf.h
3rdparty/libpng/pnglibconf.h
+5
-6
3rdparty/libpng/pngmem.c
3rdparty/libpng/pngmem.c
+3
-3
3rdparty/libpng/pngpread.c
3rdparty/libpng/pngpread.c
+8
-8
3rdparty/libpng/pngpriv.h
3rdparty/libpng/pngpriv.h
+32
-6
3rdparty/libpng/pngread.c
3rdparty/libpng/pngread.c
+16
-16
3rdparty/libpng/pngrio.c
3rdparty/libpng/pngrio.c
+3
-3
3rdparty/libpng/pngrtran.c
3rdparty/libpng/pngrtran.c
+63
-25
3rdparty/libpng/pngrutil.c
3rdparty/libpng/pngrutil.c
+19
-20
3rdparty/libpng/pngset.c
3rdparty/libpng/pngset.c
+6
-6
3rdparty/libpng/pngstruct.h
3rdparty/libpng/pngstruct.h
+7
-3
3rdparty/libpng/pngtrans.c
3rdparty/libpng/pngtrans.c
+6
-6
3rdparty/libpng/pngwio.c
3rdparty/libpng/pngwio.c
+3
-3
3rdparty/libpng/pngwrite.c
3rdparty/libpng/pngwrite.c
+21
-17
3rdparty/libpng/pngwtran.c
3rdparty/libpng/pngwtran.c
+5
-6
3rdparty/libpng/pngwutil.c
3rdparty/libpng/pngwutil.c
+19
-19
3rdparty/libpng/powerpc/filter_vsx_intrinsics.c
3rdparty/libpng/powerpc/filter_vsx_intrinsics.c
+8
-7
3rdparty/libpng/powerpc/powerpc_init.c
3rdparty/libpng/powerpc/powerpc_init.c
+2
-1
未找到文件。
3rdparty/libpng/CHANGES
浏览文件 @
087d9745
...
...
@@ -6063,9 +6063,34 @@ Version 1.6.35 [July 15, 2018]
Added missing parentheses to a macro definition
(suggested by "irwir" in GitHub issue #216)
Version 1.6.36 [December 1, 2018]
Optimized png_do_expand_palette for ARM processors.
Improved performance by around 10-22% on a recent ARM Chromebook.
(Contributed by Richard Townsend, ARM Holdings)
Fixed manipulation of machine-specific optimization options.
(Contributed by Vicki Pfau)
Used memcpy instead of manual pointer arithmetic on Intel SSE2.
(Contributed by Samuel Williams)
Fixed build errors with MSVC on ARM64.
(Contributed by Zhijie Liang)
Fixed detection of libm in CMakeLists.
(Contributed by Cameron Cawley)
Fixed incorrect creation of pkg-config file in CMakeLists.
(Contributed by Kyle Bentley)
Fixed the CMake build on Windows MSYS by avoiding symlinks.
Fixed a build warning on OpenBSD.
(Contributed by Theo Buehler)
Fixed various typos in comments.
(Contributed by "luz.paz")
Raised the minimum required CMake version from 3.0.2 to 3.1.
Removed yet more of the vestigial support for pre-ANSI C compilers.
Removed ancient makefiles for ancient systems that have been broken
across all previous libpng-1.6.x versions.
Removed the Y2K compliance statement and the export control
information.
Applied various code style and documentation fixes.
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).
Glenn R-P
3rdparty/libpng/CMakeLists.txt
浏览文件 @
087d9745
...
...
@@ -29,8 +29,11 @@ file(GLOB lib_hdrs *.h)
if
(
ARM OR AARCH64
)
if
(
ENABLE_NEON AND NOT AARCH64
)
list
(
APPEND lib_srcs arm/arm_init.c arm/filter_neon.S arm/filter_neon_intrinsics.c
)
if
(
ENABLE_NEON
)
if
(
NOT AARCH64
)
list
(
APPEND lib_srcs arm/filter_neon.S
)
endif
()
list
(
APPEND lib_srcs arm/arm_init.c arm/filter_neon_intrinsics.c arm/palette_neon_intrinsics.c
)
add_definitions
(
-DPNG_ARM_NEON_OPT=2
)
else
()
add_definitions
(
-DPNG_ARM_NEON_OPT=0
)
# NEON assembler is not supported
...
...
@@ -63,7 +66,7 @@ endif(MSVC)
add_library
(
${
PNG_LIBRARY
}
STATIC
${
lib_srcs
}
${
lib_hdrs
}
)
target_link_libraries
(
${
PNG_LIBRARY
}
${
ZLIB_LIBRARIES
}
)
ocv_warnings_disable
(
CMAKE_C_FLAGS -Wundef -Wcast-align -Wimplicit-fallthrough
)
ocv_warnings_disable
(
CMAKE_C_FLAGS -Wundef -Wcast-align -Wimplicit-fallthrough
-Wunused-parameter -Wsign-compare
)
set_target_properties
(
${
PNG_LIBRARY
}
PROPERTIES OUTPUT_NAME
${
PNG_LIBRARY
}
...
...
3rdparty/libpng/LICENSE
浏览文件 @
087d9745
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE
=========================================
This copy of the libpng notices is provided for your convenience. In case of
any discrepancy between this copy and the notices in the file png.h that is
included in the libpng distribution, the latter shall prevail.
PNG Reference Library License version 2
---------------------------------------
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
* Copyright (c) 1995-2018 The PNG Reference Library Authors.
* Copyright (c) 2018 Cosmin Truta.
* Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
* Copyright (c) 1996-1997 Andreas Dilger.
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
If you modify libpng you may insert additional notices immediately following
this sentence.
The software is supplied "as is", without warranty of any kind,
express or implied, including, without limitation, the warranties
of merchantability, fitness for a particular purpose, title, and
non-infringement. In no even shall the Copyright owners, or
anyone distributing the software, be liable for any damages or
other liability, whether in contract, tort or otherwise, arising
from, out of, or in connection with the software, or the use or
other dealings in the software, even if advised of the possibility
of such damage.
This code is released under the libpng license.
Permission is hereby granted to use, copy, modify, and distribute
this software, or portions hereof, for any purpose, without fee,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you
must not claim that you wrote the original software. If you
use this software in a product, an acknowledgment in the product
documentation would be appreciated, but is not required.
2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
3. This Copyright notice may not be removed or altered from any
source or altered source distribution.
PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35)
-----------------------------------------------------------------------
libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are
Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
...
...
@@ -16,38 +45,38 @@ 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
added to the list of Contributing Authors:
Simon-Pierre Cadieux
Eric S. Raymond
Mans Rullgard
Cosmin Truta
Gilles Vollant
James Yu
Mandar Sahastrabuddhe
Google Inc.
Vadim Barkov
Simon-Pierre Cadieux
Eric S. Raymond
Mans Rullgard
Cosmin Truta
Gilles Vollant
James Yu
Mandar Sahastrabuddhe
Google Inc.
Vadim Barkov
and with the following additions to the disclaimer:
There is no warranty against interference with your enjoyment of the
library or against infringement. There is no warranty that our
efforts or the library will fulfill any of your particular purposes
or needs. This library is provided with all faults, and the entire
risk of satisfactory quality, performance, accuracy, and effort is with
the user.
There is no warranty against interference with your enjoyment of
the
library or against infringement. There is no warranty that our
efforts or the library will fulfill any of your particular purposes
or needs. This library is provided with all faults, and the entire
risk of satisfactory quality, performance, accuracy, and effort is
with
the user.
Some files in the "contrib" directory and some configure-generated
files that are distributed with libpng have other copyright owners and
files that are distributed with libpng have other copyright owners
,
and
are released under other open source licenses.
libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
libpng-0.96, and are distributed according to the same disclaimer and
license as libpng-0.96, with the following individuals added to the
list
of Contributing Authors:
license as libpng-0.96, with the following individuals added to the
list
of Contributing Authors:
Tom Lane
Glenn Randers-Pehrson
Willem van Schaik
Tom Lane
Glenn Randers-Pehrson
Willem van Schaik
libpng versions 0.89, June 1996, through 0.96, May 1997, are
Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88,
...
...
@@ -55,14 +84,14 @@ and are distributed according to the same disclaimer and license as
libpng-0.88, with the following individuals added to the list of
Contributing Authors:
John Bowler
Kevin Bracey
Sam Bushell
Magnus Holmgren
Greg Roelofs
Tom Tanner
John Bowler
Kevin Bracey
Sam Bushell
Magnus Holmgren
Greg Roelofs
Tom Tanner
Some files in the "scripts" directory have other copyright owners
Some files in the "scripts" directory have other copyright owners
,
but are released under this license.
libpng versions 0.5, May 1995, through 0.88, January 1996, are
...
...
@@ -71,63 +100,35 @@ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:
Andreas Dilger
Dave Martindale
Guy Eric Schalnat
Paul Schmidt
Tim Wegner
The PNG Reference Library is supplied "AS IS". The Contributing Authors
and Group 42, Inc. disclaim all warranties, expressed or implied,
including, without limitation, the warranties of merchantability and of
fitness for any purpose. The Contributing Authors and Group 42, Inc.
assume no liability for direct, indirect, incidental, special, exemplary,
or consequential damages, which may result from the use of the PNG
Reference Library, even if advised of the possibility of such damage.
Andreas Dilger
Dave Martindale
Guy Eric Schalnat
Paul Schmidt
Tim Wegner
The PNG Reference Library is supplied "AS IS". The Contributing
Authors and Group 42, Inc. disclaim all warranties, expressed or
implied, including, without limitation, the warranties of
merchantability and of fitness for any purpose. The Contributing
Authors and Group 42, Inc. assume no liability for direct, indirect,
incidental, special, exemplary, or consequential damages, which may
result from the use of the PNG Reference Library, even if advised of
the possibility of such damage.
Permission is hereby granted to use, copy, modify, and distribute this
source code, or portions hereof, for any purpose, without fee, subject
to the following restrictions:
1. The origin of this source code must not be misrepresented.
2. Altered versions must be plainly marked as such and must not
be misrepresented as being the original source.
3. This Copyright notice may not be removed or altered from any
source or altered source distribution.
The Contributing Authors and Group 42, Inc. specifically permit, without
fee, and encourage the use of this source code as a component to
supporting the PNG file format in commercial products. If you use this
source code in a product, acknowledgment is not required but would be
appreciated.
END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE.
TRADEMARK:
The name "libpng" has not been registered by the Copyright owner
as a trademark in any jurisdiction. However, because libpng has
been distributed and maintained world-wide, continually since 1995,
the Copyright owner claims "common-law trademark protection" in any
jurisdiction where common-law trademark is recognized.
OSI CERTIFICATION:
Libpng is OSI Certified Open Source Software. OSI Certified Open Source is
a certification mark of the Open Source Initiative. OSI has not addressed
the additional disclaimers inserted at version 1.0.7.
1. The origin of this source code must not be misrepresented.
EXPORT CONTROL:
2. Altered versions must be plainly marked as such and must not
be misrepresented as being the original source.
The Copyright owner believes that the Export Control Classification
Number (ECCN) for libpng is EAR99, which means not subject to export
controls or International Traffic in Arms Regulations (ITAR) because
it is open source, publicly available software, that does not contain
any encryption software. See the EAR, paragraphs 734.3(b)(3) and
734.7(b).
3. This Copyright notice may not be removed or altered from any
source or altered source distribution.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
July 15, 2018
The Contributing Authors and Group 42, Inc. specifically permit,
without fee, and encourage the use of this source code as a component
to supporting the PNG file format in commercial products. If you use
this source code in a product, acknowledgment is not required but would
be appreciated.
3rdparty/libpng/README
浏览文件 @
087d9745
README for libpng version 1.6.3
5 - July 15, 2018 (shared library 16.0)
See the note about version numbers near the top of png.h
README for libpng version 1.6.3
6 - December 1, 2018
===================================================
See the note about version numbers near the top of png.h.
See INSTALL for instructions on how to install libpng.
Libpng comes in several distribution formats. Get libpng-*.tar.gz or
libpng-*.tar.xz or if you want UNIX-style line endings in the text
files,
or lpng*.7z or lpng*.zip if you want DOS-style line endings.
libpng-*.tar.xz or if you want UNIX-style line endings in the text
files,
or lpng*.7z or lpng*.zip if you want DOS-style line endings.
Version 0.89 was the first official release of libpng. Don't let the
fact that it's the first release fool you. The libpng library has been
in
extensive use and testing since mid-1995. By late 1997 it had
fact that it's the first release fool you. The libpng library has been
in
extensive use and testing since mid-1995. By late 1997 it had
finally gotten to the stage where there hadn't been significant
changes to the API in some time, and people have a bad feeling about
libraries with versions < 1.0. Version 1.0.0 was released in
...
...
@@ -60,59 +61,37 @@ the library action on the detection of chunk CRC errors. It is possible
to set different actions based on whether the CRC error occurred in a
critical or an ancillary chunk.
The changes made to the library, and bugs fixed are based on discussions
on the PNG-implement mailing list and not on material submitted
privately to Guy, Andreas, or Glenn. They will forward any good
suggestions to the list.
For a detailed description on using libpng, read libpng-manual.txt. For
examples of libpng in a program, see example.c and pngtest.c. For usage
information and restrictions (what little they are) on libpng, see
png.h. For a description on using zlib (the compression library used by
libpng) and zlib's restrictions, see zlib.h
For a detailed description on using libpng, read libpng-manual.txt.
For examples of libpng in a program, see example.c and pngtest.c. For
usage information and restrictions (what little they are) on libpng,
see png.h. For a description on using zlib (the compression library
used by libpng) and zlib's restrictions, see zlib.h
I have included a general makefile, as well as several machine and
compiler specific ones, but you may have to modify one for your own needs.
compiler specific ones, but you may have to modify one for your own
needs.
You should use zlib 1.0.4 or later to run this, but it MAY work with
versions as old as zlib 0.95. Even so, there are bugs in older zlib
versions which can cause the output of invalid compression streams for
some images. You will definitely need zlib 1.0.4 or later if you are
taking advantage of the MS-DOS "far" structure allocation for the small
and medium memory models. You should also note that zlib is a
compression library that is useful for more things than just PNG files.
You can use zlib as a drop-in replacement for fread() and fwrite() if
you are so inclined.
some images.
You should also note that zlib is a compression library that is useful
for more things than just PNG files. You can use zlib as a drop-in
replacement for fread() and fwrite(), if you are so inclined.
zlib should be available at the same place that libpng is, or at zlib.net.
zlib should be available at the same place that libpng is, or at
https://zlib.net.
You may also want a copy of the PNG specification. It is available
as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find
these at http://www.libpng.org/pub/png/pngdocs.html .
This code is currently being archived at libpng.sourceforge.io in the
[DOWNLOAD] area, and at http://libpng.download/src . If you
can't find it in any of those places, e-mail me, and I'll help you find it.
I am not a lawyer, but I believe that the Export Control Classification
Number (ECCN) for libpng is EAR99, which means not subject to export
controls or International Traffic in Arms Regulations (ITAR) because it
is open source, publicly available software, that does not contain any
encryption software. See the EAR, paragraphs 734.3(b)(3) and 734.7(b).
If you have any code changes, requests, problems, etc., please e-mail
them to me. Also, I'd appreciate any make files or project files,
and any modifications you needed to make to get libpng to compile,
along with a #define variable to tell what compiler/system you are on.
If you needed to add transformations to libpng, or wish libpng would
provide the image in a different way, drop me a note (and code, if
possible), so I can consider supporting the transformation.
Finally, if you get any warning messages when compiling libpng
(note: not zlib), and they are easy to fix, I'd appreciate the
fix. Please mention "libpng" somewhere in the subject line. Thanks.
This release was created and will be supported by myself (of course
based in a large way on Guy's and Andreas' earlier work), and the PNG
[DOWNLOAD] area, and at http://libpng.download/src .
This release, based in a large way on Glenn's, Guy's and Andreas'
earlier work, was created and will be supported by myself and the PNG
development group.
Send comments/corrections/commendations to png-mng-implement at
...
...
@@ -120,34 +99,21 @@ lists.sourceforge.net (subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe).
You can't reach Guy, the original libpng author, at the addresses
given in previous versions of this document. He and Andreas will
read mail addressed to the png-implement list, however.
Please do not send general questions about PNG. Send them to
png-mng-misc at lists.sf.net (subscription required; visit
Send general questions about the PNG specification to png-mng-misc
at lists.sourceforge.net (subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-misc to
subscribe). If you have a question about something
in the PNG specification that is related to using libpng, send it
to me. Send me any questions that start with "I was using libpng,
and ...". If in doubt, send questions to me. I'll bounce them
to others, if necessary.
Please do not send suggestions on how to change PNG. We have
been discussing PNG for twenty years now, and it is official and
finished. If you have suggestions for libpng, however, I'll
gladly listen. Even if your suggestion is not used immediately,
it may be used later.
subscribe).
Files in this distribution:
ANNOUNCE => Announcement of this version, with recent changes
AUTHORS => List of contributing authors
CHANGES => Description of changes between libpng versions
KNOWNBUG => List of known bugs and deficiencies
LICENSE => License to use and redistribute libpng
README => This file
TODO => Things not implemented in the current library
Y2KINFO => Statement of Y2K compliance
TRADEMARK => Trademark information
example.c => Example code for using libpng functions
libpng.3 => manual page for libpng (includes libpng-manual.txt)
libpng-manual.txt => Description of libpng and its functions
...
...
@@ -208,15 +174,10 @@ Files in this distribution:
scripts => Directory containing scripts for building libpng:
(see scripts/README.txt for the list of scripts)
Good luck, and happy coding.
-Glenn Randers-Pehrson (current maintainer, since 1998)
Internet: glennrp at users.sourceforge.net
-Andreas Eric Dilger (former maintainer, 1996-1997)
Internet: adilger at enel.ucalgary.ca
Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/
Good luck, and happy coding!
-Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc)
Internet: gschal at infinet.com
* Cosmin Truta (current maintainer, since 2018)
* Glenn Randers-Pehrson (former maintainer, 1998-2018)
* Andreas Eric Dilger (former maintainer, 1996-1997)
* Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc.)
3rdparty/libpng/arm/arm_init.c
浏览文件 @
087d9745
/* arm_init.c - NEON optimised filter functions
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 2014,2016 Glenn Randers-Pehrson
* Written by Mans Rullgard, 2011.
* Last changed in libpng 1.6.22 [May 26, 2016]
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*/
/* Below, after checking __linux__, various non-C90 POSIX 1003.1 functions are
* called.
*/
...
...
3rdparty/libpng/arm/filter_neon.S
浏览文件 @
087d9745
/*
filter_neon
.
S
-
NEON
optimised
filter
functions
*
*
Copyright
(
c
)
2018
Cosmin
Truta
*
Copyright
(
c
)
2014
,
2017
Glenn
Randers
-
Pehrson
*
Written
by
Mans
Rullgard
,
2011
.
*
Last
changed
in
libpng
1
.6.31
[
July
27
,
2017
]
*
*
This
code
is
released
under
the
libpng
license
.
*
For
conditions
of
distribution
and
use
,
see
the
disclaimer
...
...
3rdparty/libpng/arm/filter_neon_intrinsics.c
浏览文件 @
087d9745
/* filter_neon_intrinsics.c - NEON optimised filter functions
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 2014,2016 Glenn Randers-Pehrson
* Written by James Yu <james.yu at linaro.org>, October 2013.
* Based on filter_neon.S, written by Mans Rullgard, 2011.
*
* Last changed in libpng 1.6.22 [May 26, 2016]
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
...
...
@@ -19,7 +18,11 @@
/* This code requires -mfpu=neon on the command line: */
#if PNG_ARM_NEON_IMPLEMENTATION == 1
/* intrinsics code from pngpriv.h */
#include <arm_neon.h>
#if defined(_MSC_VER) && defined(_M_ARM64)
# include <arm64_neon.h>
#else
# include <arm_neon.h>
#endif
/* libpng row pointers are not necessarily aligned to any particular boundary,
* however this code will only work with appropriate alignment. arm/arm_init.c
...
...
@@ -33,6 +36,11 @@
* 'type'. This is written this way just to hide the GCC strict aliasing
* warning; note that the code is safe because there never is an alias between
* the input and output pointers.
*
* When compiling with MSVC ARM64, the png_ldr macro can't be passed directly
* to vst4_lane_u32, because of an internal compiler error inside MSVC.
* To avoid this compiler bug, we use a temporary variable (vdest_val) to store
* the result of png_ldr.
*/
#define png_ldr(type,pointer)\
(temp_pointer = png_ptr(type,pointer), *temp_pointer)
...
...
@@ -125,12 +133,15 @@ png_read_filter_row_sub4_neon(png_row_infop row_info, png_bytep row,
uint8x8x4_t
*
vrpt
=
png_ptr
(
uint8x8x4_t
,
&
vtmp
);
uint8x8x4_t
vrp
=
*
vrpt
;
uint32x2x4_t
*
temp_pointer
;
uint32x2x4_t
vdest_val
;
vdest
.
val
[
0
]
=
vadd_u8
(
vdest
.
val
[
3
],
vrp
.
val
[
0
]);
vdest
.
val
[
1
]
=
vadd_u8
(
vdest
.
val
[
0
],
vrp
.
val
[
1
]);
vdest
.
val
[
2
]
=
vadd_u8
(
vdest
.
val
[
1
],
vrp
.
val
[
2
]);
vdest
.
val
[
3
]
=
vadd_u8
(
vdest
.
val
[
2
],
vrp
.
val
[
3
]);
vst4_lane_u32
(
png_ptr
(
uint32_t
,
rp
),
png_ldr
(
uint32x2x4_t
,
&
vdest
),
0
);
vdest_val
=
png_ldr
(
uint32x2x4_t
,
&
vdest
);
vst4_lane_u32
(
png_ptr
(
uint32_t
,
rp
),
vdest_val
,
0
);
}
PNG_UNUSED
(
prev_row
)
...
...
@@ -223,6 +234,7 @@ png_read_filter_row_avg4_neon(png_row_infop row_info, png_bytep row,
uint8x8x4_t
*
vrpt
,
*
vppt
;
uint8x8x4_t
vrp
,
vpp
;
uint32x2x4_t
*
temp_pointer
;
uint32x2x4_t
vdest_val
;
vtmp
=
vld4_u32
(
png_ptr
(
uint32_t
,
rp
));
vrpt
=
png_ptr
(
uint8x8x4_t
,
&
vtmp
);
...
...
@@ -240,7 +252,8 @@ png_read_filter_row_avg4_neon(png_row_infop row_info, png_bytep row,
vdest
.
val
[
3
]
=
vhadd_u8
(
vdest
.
val
[
2
],
vpp
.
val
[
3
]);
vdest
.
val
[
3
]
=
vadd_u8
(
vdest
.
val
[
3
],
vrp
.
val
[
3
]);
vst4_lane_u32
(
png_ptr
(
uint32_t
,
rp
),
png_ldr
(
uint32x2x4_t
,
&
vdest
),
0
);
vdest_val
=
png_ldr
(
uint32x2x4_t
,
&
vdest
);
vst4_lane_u32
(
png_ptr
(
uint32_t
,
rp
),
vdest_val
,
0
);
}
}
...
...
@@ -359,6 +372,7 @@ png_read_filter_row_paeth4_neon(png_row_infop row_info, png_bytep row,
uint8x8x4_t
*
vrpt
,
*
vppt
;
uint8x8x4_t
vrp
,
vpp
;
uint32x2x4_t
*
temp_pointer
;
uint32x2x4_t
vdest_val
;
vtmp
=
vld4_u32
(
png_ptr
(
uint32_t
,
rp
));
vrpt
=
png_ptr
(
uint8x8x4_t
,
&
vtmp
);
...
...
@@ -378,7 +392,8 @@ png_read_filter_row_paeth4_neon(png_row_infop row_info, png_bytep row,
vlast
=
vpp
.
val
[
3
];
vst4_lane_u32
(
png_ptr
(
uint32_t
,
rp
),
png_ldr
(
uint32x2x4_t
,
&
vdest
),
0
);
vdest_val
=
png_ldr
(
uint32x2x4_t
,
&
vdest
);
vst4_lane_u32
(
png_ptr
(
uint32_t
,
rp
),
vdest_val
,
0
);
}
}
...
...
3rdparty/libpng/arm/palette_neon_intrinsics.c
0 → 100644
浏览文件 @
087d9745
/* palette_neon_intrinsics.c - NEON optimised palette expansion functions
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 2017-2018 Arm Holdings. All rights reserved.
* Written by Richard Townsend <Richard.Townsend@arm.com>, February 2017.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*/
#include "../pngpriv.h"
#if PNG_ARM_NEON_IMPLEMENTATION == 1
#if defined(_MSC_VER) && defined(_M_ARM64)
# include <arm64_neon.h>
#else
# include <arm_neon.h>
#endif
/* Build an RGBA palette from the RGB and separate alpha palettes. */
void
png_riffle_palette_rgba
(
png_structrp
png_ptr
,
png_row_infop
row_info
)
{
png_const_colorp
palette
=
png_ptr
->
palette
;
png_bytep
riffled_palette
=
png_ptr
->
riffled_palette
;
png_const_bytep
trans_alpha
=
png_ptr
->
trans_alpha
;
int
num_trans
=
png_ptr
->
num_trans
;
int
i
;
/* Initially black, opaque. */
uint8x16x4_t
w
=
{{
vdupq_n_u8
(
0x00
),
vdupq_n_u8
(
0x00
),
vdupq_n_u8
(
0x00
),
vdupq_n_u8
(
0xff
),
}};
if
(
row_info
->
bit_depth
!=
8
)
{
png_error
(
png_ptr
,
"bit_depth must be 8 for png_riffle_palette_rgba"
);
return
;
}
/* First, riffle the RGB colours into a RGBA palette, the A value is
* set to opaque for now.
*/
for
(
i
=
0
;
i
<
(
1
<<
row_info
->
bit_depth
);
i
+=
16
)
{
uint8x16x3_t
v
=
vld3q_u8
((
png_const_bytep
)(
palette
+
i
));
w
.
val
[
0
]
=
v
.
val
[
0
];
w
.
val
[
1
]
=
v
.
val
[
1
];
w
.
val
[
2
]
=
v
.
val
[
2
];
vst4q_u8
(
riffled_palette
+
(
i
<<
2
),
w
);
}
/* Fix up the missing transparency values. */
for
(
i
=
0
;
i
<
num_trans
;
i
++
)
riffled_palette
[(
i
<<
2
)
+
3
]
=
trans_alpha
[
i
];
}
/* Expands a palettized row into RGBA. */
int
png_do_expand_palette_neon_rgba
(
png_structrp
png_ptr
,
png_row_infop
row_info
,
png_const_bytep
row
,
png_bytepp
ssp
,
png_bytepp
ddp
)
{
png_uint_32
row_width
=
row_info
->
width
;
const
png_uint_32
*
riffled_palette
=
(
const
png_uint_32
*
)
png_ptr
->
riffled_palette
;
const
png_int_32
pixels_per_chunk
=
4
;
int
i
;
if
(
row_width
<
pixels_per_chunk
)
return
0
;
/* This function originally gets the last byte of the output row.
* The NEON part writes forward from a given position, so we have
* to seek this back by 4 pixels x 4 bytes.
*/
*
ddp
=
*
ddp
-
((
pixels_per_chunk
*
sizeof
(
png_uint_32
))
-
1
);
for
(
i
=
0
;
i
<
row_width
;
i
+=
pixels_per_chunk
)
{
uint32x4_t
cur
;
png_bytep
sp
=
*
ssp
-
i
,
dp
=
*
ddp
-
(
i
<<
2
);
cur
=
vld1q_dup_u32
(
riffled_palette
+
*
(
sp
-
3
));
cur
=
vld1q_lane_u32
(
riffled_palette
+
*
(
sp
-
2
),
cur
,
1
);
cur
=
vld1q_lane_u32
(
riffled_palette
+
*
(
sp
-
1
),
cur
,
2
);
cur
=
vld1q_lane_u32
(
riffled_palette
+
*
(
sp
-
0
),
cur
,
3
);
vst1q_u32
((
void
*
)
dp
,
cur
);
}
if
(
i
!=
row_width
)
{
/* Remove the amount that wasn't processed. */
i
-=
pixels_per_chunk
;
}
/* Decrement output pointers. */
*
ssp
=
*
ssp
-
i
;
*
ddp
=
*
ddp
-
(
i
<<
2
);
return
i
;
}
/* Expands a palettized row into RGB format. */
int
png_do_expand_palette_neon_rgb
(
png_structrp
png_ptr
,
png_row_infop
row_info
,
png_const_bytep
row
,
png_bytepp
ssp
,
png_bytepp
ddp
)
{
png_uint_32
row_width
=
row_info
->
width
;
png_const_bytep
palette
=
(
png_const_bytep
)
png_ptr
->
palette
;
const
png_uint_32
pixels_per_chunk
=
8
;
int
i
;
if
(
row_width
<=
pixels_per_chunk
)
return
0
;
/* Seeking this back by 8 pixels x 3 bytes. */
*
ddp
=
*
ddp
-
((
pixels_per_chunk
*
sizeof
(
png_color
))
-
1
);
for
(
i
=
0
;
i
<
row_width
;
i
+=
pixels_per_chunk
)
{
uint8x8x3_t
cur
;
png_bytep
sp
=
*
ssp
-
i
,
dp
=
*
ddp
-
((
i
<<
1
)
+
i
);
cur
=
vld3_dup_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
7
)));
cur
=
vld3_lane_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
6
)),
cur
,
1
);
cur
=
vld3_lane_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
5
)),
cur
,
2
);
cur
=
vld3_lane_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
4
)),
cur
,
3
);
cur
=
vld3_lane_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
3
)),
cur
,
4
);
cur
=
vld3_lane_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
2
)),
cur
,
5
);
cur
=
vld3_lane_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
1
)),
cur
,
6
);
cur
=
vld3_lane_u8
(
palette
+
sizeof
(
png_color
)
*
(
*
(
sp
-
0
)),
cur
,
7
);
vst3_u8
((
void
*
)
dp
,
cur
);
}
if
(
i
!=
row_width
)
{
/* Remove the amount that wasn't processed. */
i
-=
pixels_per_chunk
;
}
/* Decrement output pointers. */
*
ssp
=
*
ssp
-
i
;
*
ddp
=
*
ddp
-
((
i
<<
1
)
+
i
);
return
i
;
}
#endif
/* PNG_ARM_NEON_IMPLEMENTATION */
3rdparty/libpng/intel/filter_sse2_intrinsics.c
浏览文件 @
087d9745
/* filter_sse2_intrinsics.c - SSE2 optimized filter functions
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 2016-2017 Glenn Randers-Pehrson
* Written by Mike Klein and Matt Sarett
* Derived from arm/filter_neon_intrinsics.c
*
* Last changed in libpng 1.6.31 [July 27, 2017]
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
...
...
@@ -29,39 +28,25 @@
*/
static
__m128i
load4
(
const
void
*
p
)
{
return
_mm_cvtsi32_si128
(
*
(
const
int
*
)
p
);
int
tmp
;
memcpy
(
&
tmp
,
p
,
sizeof
(
tmp
));
return
_mm_cvtsi32_si128
(
tmp
);
}
static
void
store4
(
void
*
p
,
__m128i
v
)
{
*
(
int
*
)
p
=
_mm_cvtsi128_si32
(
v
);
int
tmp
=
_mm_cvtsi128_si32
(
v
);
memcpy
(
p
,
&
tmp
,
sizeof
(
int
));
}
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
=
(
png_const_uint_16p
)
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
);
png_uint_32
tmp
=
0
;
memcpy
(
&
tmp
,
p
,
3
);
return
_mm_cvtsi32_si128
(
tmp
);
}
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
;
png_uint_16
*
p01
;
png_byte
*
p2
;
store4
(
&
v012
,
v
);
p01
=
(
png_uint_16p
)
p
;
p2
=
(
png_byte
*
)(
p01
+
1
);
*
p01
=
(
png_uint_16
)
v012
;
*
p2
=
(
png_byte
)(
v012
>>
16
);
int
tmp
=
_mm_cvtsi128_si32
(
v
);
memcpy
(
p
,
&
tmp
,
3
);
}
void
png_read_filter_row_sub3_sse2
(
png_row_infop
row_info
,
png_bytep
row
,
...
...
3rdparty/libpng/intel/intel_init.c
浏览文件 @
087d9745
/* intel_init.c - SSE2 optimized filter functions
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 2016-2017 Glenn Randers-Pehrson
* Written by Mike Klein and Matt Sarett, Google, Inc.
* Derived from arm/arm_init.c
*
* Last changed in libpng 1.6.29 [March 16, 2017]
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
...
...
3rdparty/libpng/png.c
浏览文件 @
087d9745
/* png.c - location for general purpose libpng functions
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -14,7 +14,7 @@
#include "pngpriv.h"
/* Generate a compiler error if there is an old png.h in the search path. */
typedef
png_libpng_version_1_6_3
5
Your_png_h_is_not_version_1_6_35
;
typedef
png_libpng_version_1_6_3
6
Your_png_h_is_not_version_1_6_36
;
#ifdef __GNUC__
/* The version tests may need to be added to, but the problem warning has
...
...
@@ -736,7 +736,7 @@ png_save_int_32(png_bytep buf, png_int_32 i)
int
PNGAPI
png_convert_to_rfc1123_buffer
(
char
out
[
29
],
png_const_timep
ptime
)
{
static
PNG_CONST
char
short_months
[
12
][
4
]
=
static
const
char
short_months
[
12
][
4
]
=
{
"Jan"
,
"Feb"
,
"Mar"
,
"Apr"
,
"May"
,
"Jun"
,
"Jul"
,
"Aug"
,
"Sep"
,
"Oct"
,
"Nov"
,
"Dec"
};
...
...
@@ -814,20 +814,14 @@ png_get_copyright(png_const_structrp png_ptr)
#ifdef PNG_STRING_COPYRIGHT
return
PNG_STRING_COPYRIGHT
#else
# ifdef __STDC__
return
PNG_STRING_NEWLINE
\
"libpng version 1.6.35 - July 15, 2018"
PNG_STRING_NEWLINE
\
"libpng version 1.6.36"
PNG_STRING_NEWLINE
\
"Copyright (c) 2018 Cosmin Truta"
PNG_STRING_NEWLINE
\
"Copyright (c) 1998-2002,2004,2006-2018 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.35 - July 15, 2018\
Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson\
Copyright (c) 1996-1997 Andreas Dilger\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc."
;
# endif
#endif
}
...
...
@@ -1121,7 +1115,7 @@ png_colorspace_set_gamma(png_const_structrp png_ptr,
png_colorspacerp
colorspace
,
png_fixed_point
gAMA
)
{
/* Changed in libpng-1.5.4 to limit the values to ensure overflow can't
* occur. Since the fixed point representation is asymetrical it is
* occur. Since the fixed point representation is asym
m
etrical it is
* possible for 1/gamma to overflow the limit of 21474 and this means the
* gamma value must be at least 5/100000 and hence at most 20000.0. For
* safety the limits here are a little narrower. The values are 0.00016 to
...
...
@@ -3134,11 +3128,11 @@ png_ascii_from_fp(png_const_structrp png_ptr, png_charp ascii, size_t size,
/* The total output count (max) is now 4+precision */
/* Check for an exponent, if we don't need one we are
* done and just need to terminate the string. At
*
this point exp_b10==(-1) is effectively a flag -
it got
* to '-1' because of the decrement after outputting
* the decimal point above
(t
he exponent required is
* *not* -1
!
)
* done and just need to terminate the string. At
this
*
point, exp_b10==(-1) is effectively a flag:
it got
* to '-1' because of the decrement
,
after outputting
* the decimal point above
. (T
he exponent required is
* *not* -1
.
)
*/
if
(
exp_b10
>=
(
-
1
)
&&
exp_b10
<=
2
)
{
...
...
@@ -3976,18 +3970,18 @@ png_gamma_correct(png_structrp png_ptr, unsigned int value,
*/
static
void
png_build_16bit_table
(
png_structrp
png_ptr
,
png_uint_16pp
*
ptable
,
PNG_CONST
unsigned
int
shift
,
PNG_CONST
png_fixed_point
gamma_val
)
unsigned
int
shift
,
png_fixed_point
gamma_val
)
{
/* Various values derived from 'shift': */
PNG_CONST
unsigned
int
num
=
1U
<<
(
8U
-
shift
);
unsigned
int
num
=
1U
<<
(
8U
-
shift
);
#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
/* CSE the division and work round wacky GCC warnings (see the comments
* in png_gamma_8bit_correct for where these come from.)
*/
PNG_CONST
double
fmax
=
1
.
/
(((
png_int_32
)
1
<<
(
16U
-
shift
))
-
1
);
double
fmax
=
1
.
0
/
(((
png_int_32
)
1
<<
(
16U
-
shift
))
-
1
);
#endif
PNG_CONST
unsigned
int
max
=
(
1U
<<
(
16U
-
shift
))
-
1U
;
PNG_CONST
unsigned
int
max_by_2
=
1U
<<
(
15U
-
shift
);
unsigned
int
max
=
(
1U
<<
(
16U
-
shift
))
-
1U
;
unsigned
int
max_by_2
=
1U
<<
(
15U
-
shift
);
unsigned
int
i
;
png_uint_16pp
table
=
*
ptable
=
...
...
@@ -4053,10 +4047,10 @@ png_build_16bit_table(png_structrp png_ptr, png_uint_16pp *ptable,
*/
static
void
png_build_16to8_table
(
png_structrp
png_ptr
,
png_uint_16pp
*
ptable
,
PNG_CONST
unsigned
int
shift
,
PNG_CONST
png_fixed_point
gamma_val
)
unsigned
int
shift
,
png_fixed_point
gamma_val
)
{
PNG_CONST
unsigned
int
num
=
1U
<<
(
8U
-
shift
);
PNG_CONST
unsigned
int
max
=
(
1U
<<
(
16U
-
shift
))
-
1U
;
unsigned
int
num
=
1U
<<
(
8U
-
shift
);
unsigned
int
max
=
(
1U
<<
(
16U
-
shift
))
-
1U
;
unsigned
int
i
;
png_uint_32
last
;
...
...
@@ -4121,7 +4115,7 @@ png_build_16to8_table(png_structrp png_ptr, png_uint_16pp *ptable,
*/
static
void
png_build_8bit_table
(
png_structrp
png_ptr
,
png_bytepp
ptable
,
PNG_CONST
png_fixed_point
gamma_val
)
png_fixed_point
gamma_val
)
{
unsigned
int
i
;
png_bytep
table
=
*
ptable
=
(
png_bytep
)
png_malloc
(
png_ptr
,
256
);
...
...
3rdparty/libpng/png.h
浏览文件 @
087d9745
/* png.h - header file for PNG reference library
*
* libpng version 1.6.3
5, July 15
, 2018
* libpng version 1.6.3
6 - December 1
, 2018
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license
(See LICENSE, below
)
* This code is released under the libpng license
. (See LICENSE, below.
)
*
* 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.35, July
15,
2018:
* libpng versions 0.97, January 1998, through 1.6.35, July 2018:
* Glenn Randers-Pehrson.
* libpng version 1.6.36, December 1, 2018: Cosmin Truta
* See also "Contributing Authors", below.
*/
/*
* COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
* COPYRIGHT NOTICE, DISCLAIMER, and LICENSE
* =========================================
*
* PNG Reference Library License version 2
* ---------------------------------------
*
* * Copyright (c) 1995-2018 The PNG Reference Library Authors.
* * Copyright (c) 2018 Cosmin Truta.
* * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
* * Copyright (c) 1996-1997 Andreas Dilger.
* * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* The software is supplied "as is", without warranty of any kind,
* express or implied, including, without limitation, the warranties
* of merchantability, fitness for a particular purpose, title, and
* non-infringement. In no even shall the Copyright owners, or
* anyone distributing the software, be liable for any damages or
* other liability, whether in contract, tort or otherwise, arising
* from, out of, or in connection with the software, or the use or
* other dealings in the software, even if advised of the possibility
* of such damage.
*
* Permission is hereby granted to use, copy, modify, and distribute
* this software, or portions hereof, for any purpose, without fee,
* subject to the following restrictions:
*
* If you modify libpng you may insert additional notices immediately following
* this sentence.
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you
* use this software in a product, an acknowledgment in the product
* documentation would be appreciated, but is not required.
*
* This code is released under the libpng license.
* 2. Altered source versions must be plainly marked as such, and must
* not be misrepresented as being the original software.
*
* 3. This Copyright notice may not be removed or altered from any
* source or altered source distribution.
*
*
* PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35)
* -----------------------------------------------------------------------
*
* libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are
* Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
...
...
@@ -31,38 +67,38 @@
* disclaimer and license as libpng-1.0.6 with the following individuals
* added to the list of Contributing Authors:
*
* Simon-Pierre Cadieux
* Eric S. Raymond
* Mans Rullgard
* Cosmin Truta
* Gilles Vollant
* James Yu
* Mandar Sahastrabuddhe
* Google Inc.
* Vadim Barkov
*
Simon-Pierre Cadieux
*
Eric S. Raymond
*
Mans Rullgard
*
Cosmin Truta
*
Gilles Vollant
*
James Yu
*
Mandar Sahastrabuddhe
*
Google Inc.
*
Vadim Barkov
*
* and with the following additions to the disclaimer:
*
*
There is no warranty against interference with your enjoyment of the
* library or against infringement. There is no warranty that our
* efforts or the library will fulfill any of your particular purposes
* or needs. This library is provided with all faults, and the entire
*
risk of satisfactory quality, performance, accuracy, and effort is with
* the user.
*
There is no warranty against interference with your enjoyment of
*
the
library or against infringement. There is no warranty that our
*
efforts or the library will fulfill any of your particular purposes
*
or needs. This library is provided with all faults, and the entire
*
risk of satisfactory quality, performance, accuracy, and effort is
*
with
the user.
*
* Some files in the "contrib" directory and some configure-generated
* files that are distributed with libpng have other copyright owners and
* files that are distributed with libpng have other copyright owners
,
and
* are released under other open source licenses.
*
* libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
* Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
* libpng-0.96, and are distributed according to the same disclaimer and
* license as libpng-0.96, with the following individuals added to the
list
* of Contributing Authors:
* license as libpng-0.96, with the following individuals added to the
*
list
of Contributing Authors:
*
* Tom Lane
* Glenn Randers-Pehrson
* Willem van Schaik
*
Tom Lane
*
Glenn Randers-Pehrson
*
Willem van Schaik
*
* libpng versions 0.89, June 1996, through 0.96, May 1997, are
* Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88,
...
...
@@ -70,14 +106,14 @@
* libpng-0.88, with the following individuals added to the list of
* Contributing Authors:
*
* John Bowler
* Kevin Bracey
* Sam Bushell
* Magnus Holmgren
* Greg Roelofs
* Tom Tanner
*
John Bowler
*
Kevin Bracey
*
Sam Bushell
*
Magnus Holmgren
*
Greg Roelofs
*
Tom Tanner
*
* Some files in the "scripts" directory have other copyright owners
* Some files in the "scripts" directory have other copyright owners
,
* but are released under this license.
*
* libpng versions 0.5, May 1995, through 0.88, January 1996, are
...
...
@@ -86,62 +122,49 @@
* For the purposes of this copyright and license, "Contributing Authors"
* is defined as the following set of individuals:
*
* Andreas Dilger
* Dave Martindale
* Guy Eric Schalnat
* Paul Schmidt
* Tim Wegner
*
* The PNG Reference Library is supplied "AS IS". The Contributing Authors
* and Group 42, Inc. disclaim all warranties, expressed or implied,
* including, without limitation, the warranties of merchantability and of
* fitness for any purpose. The Contributing Authors and Group 42, Inc.
* assume no liability for direct, indirect, incidental, special, exemplary,
* or consequential damages, which may result from the use of the PNG
* Reference Library, even if advised of the possibility of such damage.
* Andreas Dilger
* Dave Martindale
* Guy Eric Schalnat
* Paul Schmidt
* Tim Wegner
*
* The PNG Reference Library is supplied "AS IS". The Contributing
* Authors and Group 42, Inc. disclaim all warranties, expressed or
* implied, including, without limitation, the warranties of
* merchantability and of fitness for any purpose. The Contributing
* Authors and Group 42, Inc. assume no liability for direct, indirect,
* incidental, special, exemplary, or consequential damages, which may
* result from the use of the PNG Reference Library, even if advised of
* the possibility of such damage.
*
* Permission is hereby granted to use, copy, modify, and distribute this
* source code, or portions hereof, for any purpose, without fee, subject
* to the following restrictions:
*
*
1. The origin of this source code must not be misrepresented.
* 1. The origin of this source code must not be misrepresented.
*
*
2. Altered versions must be plainly marked as such and must not
*
be misrepresented as being the original source.
* 2. Altered versions must be plainly marked as such and must not
* be misrepresented as being the original source.
*
*
3. This Copyright notice may not be removed or altered from any
*
source or altered source distribution.
* 3. This Copyright notice may not be removed or altered from any
* source or altered source distribution.
*
* The Contributing Authors and Group 42, Inc. specifically permit,
without
*
fee, and encourage the use of this source code as a component to
*
supporting the PNG file format in commercial products. If you use this
*
source code in a product, acknowledgment is not required but would be
* appreciated.
* The Contributing Authors and Group 42, Inc. specifically permit,
*
without fee, and encourage the use of this source code as a component
*
to supporting the PNG file format in commercial products. If you use
*
this source code in a product, acknowledgment is not required but would
*
be
appreciated.
*
* END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE.
*
* TRADEMARK:
* TRADEMARK
* =========
*
* The name "libpng" has not been registered by the Copyright owner
* The name "libpng" has not been registered by the Copyright owner
s
* as a trademark in any jurisdiction. However, because libpng has
* been distributed and maintained world-wide, continually since 1995,
* the Copyright owner
claims
"common-law trademark protection" in any
* the Copyright owner
s claim
"common-law trademark protection" in any
* jurisdiction where common-law trademark is recognized.
*
* OSI CERTIFICATION:
*
* Libpng is OSI Certified Open Source Software. OSI Certified Open Source is
* a certification mark of the Open Source Initiative. OSI has not addressed
* the additional disclaimers inserted at version 1.0.7.
*
* EXPORT CONTROL:
*
* The Copyright owner believes that the Export Control Classification
* Number (ECCN) for libpng is EAR99, which means not subject to export
* controls or International Traffic in Arms Regulations (ITAR) because
* it is open source, publicly available software, that does not contain
* any encryption software. See the EAR, paragraphs 734.3(b)(3) and
* 734.7(b).
*/
/*
...
...
@@ -207,23 +230,25 @@
* 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible)
* 1.0.7 1 10007 (still compatible)
* ...
* 1.0.
19 10 10019 10.so.0.1
9[.0]
* 1.0.
69 10 10069 10.so.0.6
9[.0]
* ...
* 1.2.59 13 1025
7
12.so.0.59[.0]
* 1.2.59 13 1025
9
12.so.0.59[.0]
* ...
* 1.
5.30 15 10527 15.so.15.3
0[.0]
* 1.
4.20 14 10420 14.so.0.2
0[.0]
* ...
* 1.6.35 16 10635 16.so.16.35[.0]
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
* used for changes in backward compatibility, as it is intended. The
* PNG_LIBPNG_VER macro, which is not used within libpng but is available
* for applications, is an unsigned integer of the form xyyzz corresponding
* to the source version x.y.z (leading zeros in y and z). Beta versions
* were given the previous public release number plus a letter, until
* version 1.0.6j; from then on they were given the upcoming public
* release number plus "betaNN" or "rcNN".
* 1.5.30 15 10530 15.so.15.30[.0]
* ...
* 1.6.36 16 10636 16.so.16.36[.0]
*
* Henceforth the source version will match the shared-library major and
* minor numbers; the shared-library major version number will be used for
* changes in backward compatibility, as it is intended.
* The PNG_LIBPNG_VER macro, which is not used within libpng but is
* available for applications, is an unsigned integer of the form XYYZZ
* corresponding to the source version X.Y.Z (leading zeros in Y and Z).
* Beta versions were given the previous public release number plus a
* letter, until version 1.0.6j; from then on they were given the upcoming
* public release number plus "betaNN" or "rcNN".
*
* Binary incompatibility exists only when applications make direct access
* to the info_ptr or png_ptr members through png.h, and the compiled
...
...
@@ -233,65 +258,8 @@
* in binary compatibility (e.g., when a new feature is added).
*
* See libpng.txt or libpng.3 for more information. The PNG specification
* is available as a W3C Recommendation and as an ISO Specification,
* <https://www.w3.org/TR/2003/REC-PNG-20031110/
*/
/*
* Y2K compliance in libpng:
* =========================
*
* July 15, 2018
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
* upward through 1.6.35 are Y2K compliant. It is my belief that
* earlier versions were also Y2K compliant.
*
* Libpng only has two year fields. One is a 2-byte unsigned integer
* that will hold years up to 65535. The other, which is deprecated,
* holds the date in text format, and will hold years up to 9999.
*
* The integer is
* "png_uint_16 year" in png_time_struct.
*
* The string is
* "char time_buffer[29]" in png_struct. This is no longer used
* in libpng-1.6.x and will be removed from libpng-1.7.0.
*
* There are seven time-related functions:
* png.c: png_convert_to_rfc_1123_buffer() in png.c
* (formerly png_convert_to_rfc_1123() prior to libpng-1.5.x and
* png_convert_to_rfc_1152() in error prior to libpng-0.98)
* png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c
* png_convert_from_time_t() in pngwrite.c
* png_get_tIME() in pngget.c
* png_handle_tIME() in pngrutil.c, called in pngread.c
* png_set_tIME() in pngset.c
* png_write_tIME() in pngwutil.c, called in pngwrite.c
*
* All handle dates properly in a Y2K environment. The
* png_convert_from_time_t() function calls gmtime() to convert from system
* clock time, which returns (year - 1900), which we properly convert to
* the full 4-digit year. There is a possibility that libpng applications
* are not passing 4-digit years into the png_convert_to_rfc_1123_buffer()
* function, or that they are incorrectly passing only a 2-digit year
* instead of "year - 1900" into the png_convert_from_struct_tm() function,
* but this is not under our control. The libpng documentation has always
* stated that it works with 4-digit years, and the APIs have been
* documented as such.
*
* The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned
* integer to hold the year, and can hold years as large as 65535.
*
* zlib, upon which libpng depends, is also Y2K compliant. It contains
* no date-related code.
*
* Glenn Randers-Pehrson
* libpng maintainer
* PNG Development Group
* is available as a W3C Recommendation and as an ISO/IEC Standard; see
* <https://www.w3.org/TR/2003/REC-PNG-20031110/>
*/
#ifndef PNG_H
...
...
@@ -309,8 +277,8 @@
*/
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.6.3
5
"
#define PNG_HEADER_VERSION_STRING " libpng version 1.6.3
5 - July 15
, 2018\n"
#define PNG_LIBPNG_VER_STRING "1.6.3
6
"
#define PNG_HEADER_VERSION_STRING " libpng version 1.6.3
6 - December 1
, 2018\n"
#define PNG_LIBPNG_VER_SONUM 16
#define PNG_LIBPNG_VER_DLLNUM 16
...
...
@@ -318,13 +286,13 @@
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
#define PNG_LIBPNG_VER_MAJOR 1
#define PNG_LIBPNG_VER_MINOR 6
#define PNG_LIBPNG_VER_RELEASE 3
5
#define PNG_LIBPNG_VER_RELEASE 3
6
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
*/
#define PNG_LIBPNG_VER_BUILD 0
2
#define PNG_LIBPNG_VER_BUILD 0
/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
...
...
@@ -341,15 +309,16 @@
#define PNG_LIBPNG_BUILD_SPECIAL 32
/* Cannot be OR'ed with
PNG_LIBPNG_BUILD_PRIVATE */
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_
BETA
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_
STABLE
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
* We must not include leading zeros.
* Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
* version 1.0.0 was mis-numbered 100 instead of 10000). From
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release
/* Careful here. At one time, Guy wanted to use 082, but that
* would be octal. We must not include leading zeros.
* Versions 0.7 through 1.0.0 were in the range 0 to 100 here
* (only version 1.0.0 was mis-numbered 100 instead of 10000).
* From version 1.0.1 it is:
* XXYYZZ, where XX=major, YY=minor, ZZ=release
*/
#define PNG_LIBPNG_VER 1063
5
/* 1.6.35
*/
#define PNG_LIBPNG_VER 1063
6
/* 1.6.36
*/
/* Library configuration: these options cannot be changed after
* the library has been built.
...
...
@@ -459,7 +428,7 @@ extern "C" {
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
typedef
char
*
png_libpng_version_1_6_3
5
;
typedef
char
*
png_libpng_version_1_6_3
6
;
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
*
...
...
@@ -2013,12 +1982,12 @@ PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr,
PNG_EXPORT
(
246
,
png_uint_32
,
png_get_eXIf
,
(
png_const_structrp
png_ptr
,
png_inforp
info_ptr
,
png_bytep
*
exif
));
PNG_EXPORT
(
247
,
void
,
png_set_eXIf
,
(
png_const_structrp
png_ptr
,
png_inforp
info_ptr
,
const
png_bytep
exif
));
png_inforp
info_ptr
,
png_bytep
exif
));
PNG_EXPORT
(
248
,
png_uint_32
,
png_get_eXIf_1
,
(
png_const_structrp
png_ptr
,
png_const_inforp
info_ptr
,
png_uint_32
*
num_exif
,
png_bytep
*
exif
));
PNG_EXPORT
(
249
,
void
,
png_set_eXIf_1
,
(
png_const_structrp
png_ptr
,
png_inforp
info_ptr
,
const
png_uint_32
num_exif
,
const
png_bytep
exif
));
png_inforp
info_ptr
,
png_uint_32
num_exif
,
png_bytep
exif
));
#endif
#ifdef PNG_gAMA_SUPPORTED
...
...
@@ -2764,7 +2733,7 @@ typedef struct
*
* When the simplified API needs to convert between sRGB and linear colorspaces,
* the actual sRGB transfer curve defined in the sRGB specification (see the
* article at
https://en.wikipedia.org/wiki/SRGB
) is used, not the gamma=1/2.2
* article at
<https://en.wikipedia.org/wiki/SRGB>
) is used, not the gamma=1/2.2
* approximation used elsewhere in libpng.
*
* When an alpha channel is present it is expected to denote pixel coverage
...
...
@@ -2967,7 +2936,7 @@ typedef struct
* 'flags' field of png_image.
*/
#define PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB 0x01
/* This indicates th
e
the RGB values of the in-memory bitmap do not
/* This indicates th
at
the RGB values of the in-memory bitmap do not
* correspond to the red, green and blue end-points defined by sRGB.
*/
...
...
3rdparty/libpng/pngconf.h
浏览文件 @
087d9745
/* pngconf.h - machine configurable file for libpng
*
* libpng version 1.6.3
5, July 15, 2018
* libpng version 1.6.3
6
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -57,14 +58,13 @@
#endif
/* PNG_BUILDING_SYMBOL_TABLE */
/* Prior to 1.6.0 it was possible to turn off 'const' in declarations using
* PNG_NO_CONST; this is no longer supported except for data declarations which
* apparently still cause problems in 2011 on some compilers.
/* Prior to 1.6.0, it was possible to turn off 'const' in declarations,
* using PNG_NO_CONST. This is no longer supported.
*/
#define PNG_CONST const
/* backward compatibility only */
/* This controls optimization of the reading of 16-bit and 32-bit
values
*
from PNG files. It can be set on a per-app-file basis -
it
/* This controls optimization of the reading of 16-bit and 32-bit
*
values from PNG files. It can be set on a per-app-file basis:
it
* just changes whether a macro is used when the function is called.
* The library builder sets the default; if read functions are not
* built into the library the macro implementation is forced on.
...
...
3rdparty/libpng/pngdebug.h
浏览文件 @
087d9745
/* pngdebug.h - Debugging macros for libpng, also used in pngtest.c
*
*
Last changed in libpng 1.6.8 [December 19, 2013]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
3rdparty/libpng/pngerror.c
浏览文件 @
087d9745
/* pngerror.c - stub functions for i/o and memory allocation
*
*
Last changed in libpng 1.6.31 [July 27, 2017]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -425,7 +425,7 @@ png_app_error(png_const_structrp png_ptr, png_const_charp error_message)
* if the character is invalid.
*/
#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
static
PNG_CONST
char
png_digit
[
16
]
=
{
static
const
char
png_digit
[
16
]
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
};
...
...
@@ -885,7 +885,7 @@ PNG_FUNCTION(void /* PRIVATE */, (PNGCBAPI
png_safe_error
),(
png_structp
png_nonconst_ptr
,
png_const_charp
error_message
),
PNG_NORETURN
)
{
const
png_const_structrp
png_ptr
=
png_nonconst_ptr
;
png_const_structrp
png_ptr
=
png_nonconst_ptr
;
png_imagep
image
=
png_voidcast
(
png_imagep
,
png_ptr
->
error_ptr
);
/* An error is always logged here, overwriting anything (typically a warning)
...
...
@@ -920,7 +920,7 @@ png_safe_error),(png_structp png_nonconst_ptr, png_const_charp error_message),
void
/* PRIVATE */
PNGCBAPI
png_safe_warning
(
png_structp
png_nonconst_ptr
,
png_const_charp
warning_message
)
{
const
png_const_structrp
png_ptr
=
png_nonconst_ptr
;
png_const_structrp
png_ptr
=
png_nonconst_ptr
;
png_imagep
image
=
png_voidcast
(
png_imagep
,
png_ptr
->
error_ptr
);
/* A warning is only logged if there is no prior warning or error. */
...
...
3rdparty/libpng/pngget.c
浏览文件 @
087d9745
/* pngget.c - retrieval of values from info struct
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
3rdparty/libpng/pnginfo.h
浏览文件 @
087d9745
/* pnginfo.h - header file for PNG reference library
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2013,2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
3rdparty/libpng/pnglibconf.h
浏览文件 @
087d9745
/* libpng 1.6.34 STANDARD API DEFINITION */
/* pnglibconf.h - library build configuration */
/*
Libpng version 1.6.34 - September 29, 2017
*/
/*
libpng version 1.6.36
*/
/* Copyright (c) 1998-2017 Glenn Randers-Pehrson */
/* Copyright (c) 2018 Cosmin Truta */
/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */
/* This code is released under the libpng license. */
/* For conditions of distribution and use, see the disclaimer */
...
...
@@ -20,8 +19,6 @@
#define PNG_ALIGNED_MEMORY_SUPPORTED
/*#undef PNG_ARM_NEON_API_SUPPORTED*/
/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/
/*#undef PNG_POWERPC_VSX_API_SUPPORTED*/
/*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/
#define PNG_BENIGN_ERRORS_SUPPORTED
#define PNG_BENIGN_READ_ERRORS_SUPPORTED
/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/
...
...
@@ -46,6 +43,8 @@
#define PNG_IO_STATE_SUPPORTED
#define PNG_MNG_FEATURES_SUPPORTED
#define PNG_POINTER_INDEXING_SUPPORTED
/*#undef PNG_POWERPC_VSX_API_SUPPORTED*/
/*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/
#define PNG_PROGRESSIVE_READ_SUPPORTED
#define PNG_READ_16BIT_SUPPORTED
#define PNG_READ_ALPHA_MODE_SUPPORTED
...
...
3rdparty/libpng/pngmem.c
浏览文件 @
087d9745
/* pngmem.c - stub functions for memory allocation
*
*
Last changed in libpng 1.6.26 [October 20, 2016]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
3rdparty/libpng/pngpread.c
浏览文件 @
087d9745
/* pngpread.c - read a png file in push mode
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -972,20 +972,20 @@ png_read_push_finish_row(png_structrp png_ptr)
/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* Start of interlace block */
static
PNG_CONST
png_byte
png_pass_start
[]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
static
const
png_byte
png_pass_start
[]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
/* Offset to next interlace block */
static
PNG_CONST
png_byte
png_pass_inc
[]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
static
const
png_byte
png_pass_inc
[]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
/* Start of interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_ystart
[]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
static
const
png_byte
png_pass_ystart
[]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
/* Offset to next interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_yinc
[]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
static
const
png_byte
png_pass_yinc
[]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
/* Height of interlace block. This is not currently used - if you need
* it, uncomment it here and in png.h
static
PNG_CONST
png_byte png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
static
const
png_byte png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
*/
#endif
...
...
3rdparty/libpng/pngpriv.h
浏览文件 @
087d9745
/* pngpriv.h - private declarations for use inside libpng
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -174,7 +174,10 @@
# else
/* !defined __ARM_NEON__ */
/* The 'intrinsics' code simply won't compile without this -mfpu=neon:
*/
# define PNG_ARM_NEON_IMPLEMENTATION 2
# if !defined(__aarch64__)
/* The assembler code currently does not work on ARM64 */
# define PNG_ARM_NEON_IMPLEMENTATION 2
# endif
/* __aarch64__ */
# endif
/* __ARM_NEON__ */
# endif
/* !PNG_ARM_NEON_IMPLEMENTATION */
...
...
@@ -1534,10 +1537,10 @@ PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr,
#endif
PNG_INTERNAL_FUNCTION
(
void
,
png_check_chunk_name
,(
png_const_structrp
png_ptr
,
const
png_uint_32
chunk_name
),
PNG_EMPTY
);
png_uint_32
chunk_name
),
PNG_EMPTY
);
PNG_INTERNAL_FUNCTION
(
void
,
png_check_chunk_length
,(
png_const_structrp
png_ptr
,
const
png_uint_32
chunk_length
),
PNG_EMPTY
);
png_uint_32
chunk_length
),
PNG_EMPTY
);
PNG_INTERNAL_FUNCTION
(
void
,
png_handle_unknown
,(
png_structrp
png_ptr
,
png_inforp
info_ptr
,
png_uint_32
length
,
int
keep
),
PNG_EMPTY
);
...
...
@@ -2114,6 +2117,29 @@ PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_sse2,
PNG_INTERNAL_FUNCTION
(
png_uint_32
,
png_check_keyword
,
(
png_structrp
png_ptr
,
png_const_charp
key
,
png_bytep
new_key
),
PNG_EMPTY
);
#if PNG_ARM_NEON_IMPLEMENTATION == 1
PNG_INTERNAL_FUNCTION
(
void
,
png_riffle_palette_rgba
,
(
png_structrp
,
png_row_infop
),
PNG_EMPTY
);
PNG_INTERNAL_FUNCTION
(
int
,
png_do_expand_palette_neon_rgba
,
(
png_structrp
,
png_row_infop
,
png_const_bytep
,
const
png_bytepp
,
const
png_bytepp
),
PNG_EMPTY
);
PNG_INTERNAL_FUNCTION
(
int
,
png_do_expand_palette_neon_rgb
,
(
png_structrp
,
png_row_infop
,
png_const_bytep
,
const
png_bytepp
,
const
png_bytepp
),
PNG_EMPTY
);
#endif
/* Maintainer: Put new private prototypes here ^ */
#include "pngdebug.h"
...
...
3rdparty/libpng/pngread.c
浏览文件 @
087d9745
/* pngread.c - read a PNG file
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -1621,7 +1621,7 @@ png_image_skip_unused_chunks(png_structrp png_ptr)
* errors (which are unfortunately quite common.)
*/
{
static
PNG_CONST
png_byte
chunks_to_process
[]
=
{
static
const
png_byte
chunks_to_process
[]
=
{
98
,
75
,
71
,
68
,
'\0'
,
/* bKGD */
99
,
72
,
82
,
77
,
'\0'
,
/* cHRM */
103
,
65
,
77
,
65
,
'\0'
,
/* gAMA */
...
...
@@ -1758,9 +1758,9 @@ png_create_colormap_entry(png_image_read_control *display,
png_uint_32
alpha
,
int
encoding
)
{
png_imagep
image
=
display
->
image
;
const
int
output_encoding
=
(
image
->
format
&
PNG_FORMAT_FLAG_LINEAR
)
!=
0
?
int
output_encoding
=
(
image
->
format
&
PNG_FORMAT_FLAG_LINEAR
)
!=
0
?
P_LINEAR
:
P_sRGB
;
const
int
convert_to_Y
=
(
image
->
format
&
PNG_FORMAT_FLAG_COLOR
)
==
0
&&
int
convert_to_Y
=
(
image
->
format
&
PNG_FORMAT_FLAG_COLOR
)
==
0
&&
(
red
!=
green
||
green
!=
blue
);
if
(
ip
>
255
)
...
...
@@ -1869,13 +1869,13 @@ png_create_colormap_entry(png_image_read_control *display,
/* Store the value. */
{
# ifdef PNG_FORMAT_AFIRST_SUPPORTED
const
int
afirst
=
(
image
->
format
&
PNG_FORMAT_FLAG_AFIRST
)
!=
0
&&
int
afirst
=
(
image
->
format
&
PNG_FORMAT_FLAG_AFIRST
)
!=
0
&&
(
image
->
format
&
PNG_FORMAT_FLAG_ALPHA
)
!=
0
;
# else
# define afirst 0
# endif
# ifdef PNG_FORMAT_BGR_SUPPORTED
const
int
bgr
=
(
image
->
format
&
PNG_FORMAT_FLAG_BGR
)
!=
0
?
2
:
0
;
int
bgr
=
(
image
->
format
&
PNG_FORMAT_FLAG_BGR
)
!=
0
?
2
:
0
;
# else
# define bgr 0
# endif
...
...
@@ -2085,11 +2085,11 @@ png_image_read_colormap(png_voidp argument)
{
png_image_read_control
*
display
=
png_voidcast
(
png_image_read_control
*
,
argument
);
const
png_imagep
image
=
display
->
image
;
png_imagep
image
=
display
->
image
;
const
png_structrp
png_ptr
=
image
->
opaque
->
png_ptr
;
const
png_uint_32
output_format
=
image
->
format
;
const
int
output_encoding
=
(
output_format
&
PNG_FORMAT_FLAG_LINEAR
)
!=
0
?
png_structrp
png_ptr
=
image
->
opaque
->
png_ptr
;
png_uint_32
output_format
=
image
->
format
;
int
output_encoding
=
(
output_format
&
PNG_FORMAT_FLAG_LINEAR
)
!=
0
?
P_LINEAR
:
P_sRGB
;
unsigned
int
cmap_entries
;
...
...
@@ -2802,7 +2802,7 @@ png_image_read_colormap(png_voidp argument)
unsigned
int
num_trans
=
png_ptr
->
num_trans
;
png_const_bytep
trans
=
num_trans
>
0
?
png_ptr
->
trans_alpha
:
NULL
;
png_const_colorp
colormap
=
png_ptr
->
palette
;
const
int
do_background
=
trans
!=
NULL
&&
int
do_background
=
trans
!=
NULL
&&
(
output_format
&
PNG_FORMAT_FLAG_ALPHA
)
==
0
;
unsigned
int
i
;
...
...
@@ -3946,7 +3946,7 @@ png_image_read_direct(png_voidp argument)
*/
if
(
linear
!=
0
)
{
PNG_CONST
png_uint_16
le
=
0x0001
;
png_uint_16
le
=
0x0001
;
if
((
*
(
png_const_bytep
)
&
le
)
!=
0
)
png_set_swap
(
png_ptr
);
...
...
@@ -4108,7 +4108,7 @@ png_image_finish_read(png_imagep image, png_const_colorp background,
* original PNG format because it may not occur in the output PNG format
* and libpng deals with the issues of reading the original.
*/
const
unsigned
int
channels
=
PNG_IMAGE_PIXEL_CHANNELS
(
image
->
format
);
unsigned
int
channels
=
PNG_IMAGE_PIXEL_CHANNELS
(
image
->
format
);
/* The following checks just the 'row_stride' calculation to ensure it
* fits in a signed 32-bit value. Because channels/components can be
...
...
@@ -4119,7 +4119,7 @@ png_image_finish_read(png_imagep image, png_const_colorp background,
if
(
image
->
width
<=
0x7fffffffU
/
channels
)
/* no overflow */
{
png_uint_32
check
;
const
png_uint_32
png_row_stride
=
image
->
width
*
channels
;
png_uint_32
png_row_stride
=
image
->
width
*
channels
;
if
(
row_stride
==
0
)
row_stride
=
(
png_int_32
)
/*SAFE*/
png_row_stride
;
...
...
3rdparty/libpng/pngrio.c
浏览文件 @
087d9745
/* pngrio.c - functions for data input
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
3rdparty/libpng/pngrtran.c
浏览文件 @
087d9745
/* pngrtran.c - transforms the data in a row for PNG readers
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -18,6 +18,17 @@
#include "pngpriv.h"
#ifdef PNG_ARM_NEON_IMPLEMENTATION
# if PNG_ARM_NEON_IMPLEMENTATION == 1
# define PNG_ARM_NEON_INTRINSICS_AVAILABLE
# if defined(_MSC_VER) && defined(_M_ARM64)
# include <arm64_neon.h>
# else
# include <arm_neon.h>
# endif
# endif
#endif
#ifdef PNG_READ_SUPPORTED
/* Set the action on getting a CRC error for an ancillary or critical chunk. */
...
...
@@ -2986,7 +2997,6 @@ png_do_gray_to_rgb(png_row_infop row_info, png_bytep row)
*/
static
int
png_do_rgb_to_gray
(
png_structrp
png_ptr
,
png_row_infop
row_info
,
png_bytep
row
)
{
int
rgb_error
=
0
;
...
...
@@ -2995,12 +3005,11 @@ png_do_rgb_to_gray(png_structrp png_ptr, png_row_infop row_info, png_bytep row)
if
((
row_info
->
color_type
&
PNG_COLOR_MASK_PALETTE
)
==
0
&&
(
row_info
->
color_type
&
PNG_COLOR_MASK_COLOR
)
!=
0
)
{
PNG_CONST
png_uint_32
rc
=
png_ptr
->
rgb_to_gray_red_coeff
;
PNG_CONST
png_uint_32
gc
=
png_ptr
->
rgb_to_gray_green_coeff
;
PNG_CONST
png_uint_32
bc
=
32768
-
rc
-
gc
;
PNG_CONST
png_uint_32
row_width
=
row_info
->
width
;
PNG_CONST
int
have_alpha
=
(
row_info
->
color_type
&
PNG_COLOR_MASK_ALPHA
)
!=
0
;
png_uint_32
rc
=
png_ptr
->
rgb_to_gray_red_coeff
;
png_uint_32
gc
=
png_ptr
->
rgb_to_gray_green_coeff
;
png_uint_32
bc
=
32768
-
rc
-
gc
;
png_uint_32
row_width
=
row_info
->
width
;
int
have_alpha
=
(
row_info
->
color_type
&
PNG_COLOR_MASK_ALPHA
)
!=
0
;
if
(
row_info
->
bit_depth
==
8
)
{
...
...
@@ -4143,12 +4152,11 @@ png_do_encode_alpha(png_row_infop row_info, png_bytep row, png_structrp png_ptr)
{
if
(
row_info
->
bit_depth
==
8
)
{
PNG_CONST
png_bytep
table
=
png_ptr
->
gamma_from_1
;
png_bytep
table
=
png_ptr
->
gamma_from_1
;
if
(
table
!=
NULL
)
{
PNG_CONST
int
step
=
(
row_info
->
color_type
&
PNG_COLOR_MASK_COLOR
)
?
4
:
2
;
int
step
=
(
row_info
->
color_type
&
PNG_COLOR_MASK_COLOR
)
?
4
:
2
;
/* The alpha channel is the last component: */
row
+=
step
-
1
;
...
...
@@ -4162,13 +4170,12 @@ png_do_encode_alpha(png_row_infop row_info, png_bytep row, png_structrp png_ptr)
else
if
(
row_info
->
bit_depth
==
16
)
{
PNG_CONST
png_uint_16pp
table
=
png_ptr
->
gamma_16_from_1
;
PNG_CONST
int
gamma_shift
=
png_ptr
->
gamma_shift
;
png_uint_16pp
table
=
png_ptr
->
gamma_16_from_1
;
int
gamma_shift
=
png_ptr
->
gamma_shift
;
if
(
table
!=
NULL
)
{
PNG_CONST
int
step
=
(
row_info
->
color_type
&
PNG_COLOR_MASK_COLOR
)
?
8
:
4
;
int
step
=
(
row_info
->
color_type
&
PNG_COLOR_MASK_COLOR
)
?
8
:
4
;
/* The alpha channel is the last component: */
row
+=
step
-
2
;
...
...
@@ -4199,8 +4206,9 @@ png_do_encode_alpha(png_row_infop row_info, png_bytep row, png_structrp png_ptr)
* upon whether you supply trans and num_trans.
*/
static
void
png_do_expand_palette
(
png_row_infop
row_info
,
png_bytep
row
,
png_const_colorp
palette
,
png_const_bytep
trans_alpha
,
int
num_trans
)
png_do_expand_palette
(
png_structrp
png_ptr
,
png_row_infop
row_info
,
png_bytep
row
,
png_const_colorp
palette
,
png_const_bytep
trans_alpha
,
int
num_trans
)
{
int
shift
,
value
;
png_bytep
sp
,
dp
;
...
...
@@ -4304,14 +4312,25 @@ png_do_expand_palette(png_row_infop row_info, png_bytep row,
sp
=
row
+
(
size_t
)
row_width
-
1
;
dp
=
row
+
((
size_t
)
row_width
<<
2
)
-
1
;
for
(
i
=
0
;
i
<
row_width
;
i
++
)
i
=
0
;
#ifdef PNG_ARM_NEON_INTRINSICS_AVAILABLE
if
(
png_ptr
->
riffled_palette
!=
NULL
)
{
/* The RGBA optimization works with png_ptr->bit_depth == 8
* but sometimes row_info->bit_depth has been changed to 8.
* In these cases, the palette hasn't been riffled.
*/
i
=
png_do_expand_palette_neon_rgba
(
png_ptr
,
row_info
,
row
,
&
sp
,
&
dp
);
}
#endif
for
(;
i
<
row_width
;
i
++
)
{
if
((
int
)(
*
sp
)
>=
num_trans
)
*
dp
--
=
0xff
;
else
*
dp
--
=
trans_alpha
[
*
sp
];
*
dp
--
=
palette
[
*
sp
].
blue
;
*
dp
--
=
palette
[
*
sp
].
green
;
*
dp
--
=
palette
[
*
sp
].
red
;
...
...
@@ -4328,8 +4347,13 @@ png_do_expand_palette(png_row_infop row_info, png_bytep row,
{
sp
=
row
+
(
size_t
)
row_width
-
1
;
dp
=
row
+
(
size_t
)(
row_width
*
3
)
-
1
;
i
=
0
;
#ifdef PNG_ARM_NEON_INTRINSICS_AVAILABLE
i
=
png_do_expand_palette_neon_rgb
(
png_ptr
,
row_info
,
row
,
&
sp
,
&
dp
);
#endif
for
(
i
=
0
;
i
<
row_width
;
i
++
)
for
(;
i
<
row_width
;
i
++
)
{
*
dp
--
=
palette
[
*
sp
].
blue
;
*
dp
--
=
palette
[
*
sp
].
green
;
...
...
@@ -4743,8 +4767,22 @@ png_do_read_transformations(png_structrp png_ptr, png_row_infop row_info)
{
if
(
row_info
->
color_type
==
PNG_COLOR_TYPE_PALETTE
)
{
png_do_expand_palette
(
row_info
,
png_ptr
->
row_buf
+
1
,
png_ptr
->
palette
,
png_ptr
->
trans_alpha
,
png_ptr
->
num_trans
);
#ifdef PNG_ARM_NEON_INTRINSICS_AVAILABLE
if
((
png_ptr
->
num_trans
>
0
)
&&
(
png_ptr
->
bit_depth
==
8
))
{
/* Allocate space for the decompressed full palette. */
if
(
png_ptr
->
riffled_palette
==
NULL
)
{
png_ptr
->
riffled_palette
=
png_malloc
(
png_ptr
,
256
*
4
);
if
(
png_ptr
->
riffled_palette
==
NULL
)
png_error
(
png_ptr
,
"NULL row buffer"
);
/* Build the RGBA palette. */
png_riffle_palette_rgba
(
png_ptr
,
row_info
);
}
}
#endif
png_do_expand_palette
(
png_ptr
,
row_info
,
png_ptr
->
row_buf
+
1
,
png_ptr
->
palette
,
png_ptr
->
trans_alpha
,
png_ptr
->
num_trans
);
}
else
...
...
3rdparty/libpng/pngrutil.c
浏览文件 @
087d9745
/* pngrutil.c - utilities to read a PNG file
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -1461,8 +1461,7 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
{
/* We have the ICC profile header; do the basic header checks.
*/
const
png_uint_32
profile_length
=
png_get_uint_32
(
profile_header
);
png_uint_32
profile_length
=
png_get_uint_32
(
profile_header
);
if
(
png_icc_check_length
(
png_ptr
,
&
png_ptr
->
colorspace
,
keyword
,
profile_length
)
!=
0
)
...
...
@@ -1479,8 +1478,8 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
* profile. The header check has already validated
* that none of this stuff will overflow.
*/
const
png_uint_32
tag_count
=
png_get_uint_32
(
profile_header
+
128
);
png_uint_32
tag_count
=
png_get_uint_32
(
profile_header
+
128
);
png_bytep
profile
=
png_read_buffer
(
png_ptr
,
profile_length
,
2
/*silent*/
);
...
...
@@ -3132,7 +3131,7 @@ png_handle_unknown(png_structrp png_ptr, png_inforp info_ptr,
*/
void
/* PRIVATE */
png_check_chunk_name
(
png_const_structrp
png_ptr
,
const
png_uint_32
chunk_name
)
png_check_chunk_name
(
png_const_structrp
png_ptr
,
png_uint_32
chunk_name
)
{
int
i
;
png_uint_32
cn
=
chunk_name
;
...
...
@@ -3151,7 +3150,7 @@ png_check_chunk_name(png_const_structrp png_ptr, const png_uint_32 chunk_name)
}
void
/* PRIVATE */
png_check_chunk_length
(
png_const_structrp
png_ptr
,
const
png_uint_32
length
)
png_check_chunk_length
(
png_const_structrp
png_ptr
,
png_uint_32
length
)
{
png_alloc_size_t
limit
=
PNG_UINT_31_MAX
;
...
...
@@ -3363,7 +3362,7 @@ png_combine_row(png_const_structrp png_ptr, png_bytep dp, int display)
/* Hence the pre-compiled masks indexed by PACKSWAP (or not), depth and
* then pass:
*/
static
PNG_CONST
png_uint_32
row_mask
[
2
/*PACKSWAP*/
][
3
/*depth*/
][
6
]
=
static
const
png_uint_32
row_mask
[
2
/*PACKSWAP*/
][
3
/*depth*/
][
6
]
=
{
/* Little-endian byte masks for PACKSWAP */
{
S_MASKS
(
1
,
0
),
S_MASKS
(
2
,
0
),
S_MASKS
(
4
,
0
)
},
...
...
@@ -3374,7 +3373,7 @@ png_combine_row(png_const_structrp png_ptr, png_bytep dp, int display)
/* display_mask has only three entries for the odd passes, so index by
* pass>>1.
*/
static
PNG_CONST
png_uint_32
display_mask
[
2
][
3
][
3
]
=
static
const
png_uint_32
display_mask
[
2
][
3
][
3
]
=
{
/* Little-endian byte masks for PACKSWAP */
{
B_MASKS
(
1
,
0
),
B_MASKS
(
2
,
0
),
B_MASKS
(
4
,
0
)
},
...
...
@@ -3687,7 +3686,7 @@ png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
{
/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* Offset to next interlace block */
static
PNG_CONST
unsigned
int
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
static
const
unsigned
int
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
png_debug
(
1
,
"in png_do_read_interlace"
);
if
(
row
!=
NULL
&&
row_info
!=
NULL
)
...
...
@@ -4329,16 +4328,16 @@ png_read_finish_row(png_structrp png_ptr)
/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* Start of interlace block */
static
PNG_CONST
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
static
const
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
/* Offset to next interlace block */
static
PNG_CONST
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
static
const
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
/* Start of interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
static
const
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
/* Offset to next interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
static
const
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
png_debug
(
1
,
"in png_read_finish_row"
);
png_ptr
->
row_number
++
;
...
...
@@ -4394,16 +4393,16 @@ png_read_start_row(png_structrp png_ptr)
/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* Start of interlace block */
static
PNG_CONST
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
static
const
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
/* Offset to next interlace block */
static
PNG_CONST
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
static
const
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
/* Start of interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
static
const
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
/* Offset to next interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
static
const
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
unsigned
int
max_pixel_depth
;
size_t
row_bytes
;
...
...
3rdparty/libpng/pngset.c
浏览文件 @
087d9745
/* pngset.c - storage of image information into info struct
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -137,7 +137,7 @@ png_set_cHRM_XYZ(png_const_structrp png_ptr, png_inforp info_ptr, double red_X,
#ifdef PNG_eXIf_SUPPORTED
void
PNGAPI
png_set_eXIf
(
png_const_structrp
png_ptr
,
png_inforp
info_ptr
,
const
png_bytep
eXIf_buf
)
png_bytep
eXIf_buf
)
{
png_warning
(
png_ptr
,
"png_set_eXIf does not work; use png_set_eXIf_1"
);
PNG_UNUSED
(
info_ptr
)
...
...
@@ -146,7 +146,7 @@ png_set_eXIf(png_const_structrp png_ptr, png_inforp info_ptr,
void
PNGAPI
png_set_eXIf_1
(
png_const_structrp
png_ptr
,
png_inforp
info_ptr
,
const
png_uint_32
num_exif
,
const
png_bytep
eXIf_buf
)
png_uint_32
num_exif
,
png_bytep
eXIf_buf
)
{
int
i
;
...
...
@@ -1399,7 +1399,7 @@ png_set_keep_unknown_chunks(png_structrp png_ptr, int keep,
/* Ignore all unknown chunks and all chunks recognized by
* libpng except for IHDR, PLTE, tRNS, IDAT, and IEND
*/
static
PNG_CONST
png_byte
chunks_to_ignore
[]
=
{
static
const
png_byte
chunks_to_ignore
[]
=
{
98
,
75
,
71
,
68
,
'\0'
,
/* bKGD */
99
,
72
,
82
,
77
,
'\0'
,
/* cHRM */
101
,
88
,
73
,
102
,
'\0'
,
/* eXIf */
...
...
3rdparty/libpng/pngstruct.h
浏览文件 @
087d9745
/* pngstruct.h - header file for PNG reference library
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -228,6 +228,10 @@ struct png_struct_def
* big_row_buf; while writing it is separately
* allocated.
*/
#ifdef PNG_READ_EXPAND_SUPPORTED
/* Buffer to accelerate palette transformations. */
png_bytep
riffled_palette
;
#endif
#ifdef PNG_WRITE_FILTER_SUPPORTED
png_bytep
try_row
;
/* buffer to save trial row when filtering */
png_bytep
tst_row
;
/* buffer to save best trial row when filtering */
...
...
3rdparty/libpng/pngtrans.c
浏览文件 @
087d9745
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -345,7 +345,7 @@ png_do_swap(png_row_infop row_info, png_bytep row)
#endif
#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
static
PNG_CONST
png_byte
onebppswaptable
[
256
]
=
{
static
const
png_byte
onebppswaptable
[
256
]
=
{
0x00
,
0x80
,
0x40
,
0xC0
,
0x20
,
0xA0
,
0x60
,
0xE0
,
0x10
,
0x90
,
0x50
,
0xD0
,
0x30
,
0xB0
,
0x70
,
0xF0
,
0x08
,
0x88
,
0x48
,
0xC8
,
0x28
,
0xA8
,
0x68
,
0xE8
,
...
...
@@ -380,7 +380,7 @@ static PNG_CONST png_byte onebppswaptable[256] = {
0x1F
,
0x9F
,
0x5F
,
0xDF
,
0x3F
,
0xBF
,
0x7F
,
0xFF
};
static
PNG_CONST
png_byte
twobppswaptable
[
256
]
=
{
static
const
png_byte
twobppswaptable
[
256
]
=
{
0x00
,
0x40
,
0x80
,
0xC0
,
0x10
,
0x50
,
0x90
,
0xD0
,
0x20
,
0x60
,
0xA0
,
0xE0
,
0x30
,
0x70
,
0xB0
,
0xF0
,
0x04
,
0x44
,
0x84
,
0xC4
,
0x14
,
0x54
,
0x94
,
0xD4
,
...
...
@@ -415,7 +415,7 @@ static PNG_CONST png_byte twobppswaptable[256] = {
0x2F
,
0x6F
,
0xAF
,
0xEF
,
0x3F
,
0x7F
,
0xBF
,
0xFF
};
static
PNG_CONST
png_byte
fourbppswaptable
[
256
]
=
{
static
const
png_byte
fourbppswaptable
[
256
]
=
{
0x00
,
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
,
0x90
,
0xA0
,
0xB0
,
0xC0
,
0xD0
,
0xE0
,
0xF0
,
0x01
,
0x11
,
0x21
,
0x31
,
0x41
,
0x51
,
0x61
,
0x71
,
...
...
3rdparty/libpng/pngwio.c
浏览文件 @
087d9745
/* pngwio.c - functions for data output
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2014,2016,2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
3rdparty/libpng/pngwrite.c
浏览文件 @
087d9745
/* pngwrite.c - general routines to write a PNG file
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -469,7 +469,7 @@ png_write_end(png_structrp png_ptr, png_inforp info_ptr)
#ifdef PNG_CONVERT_tIME_SUPPORTED
void
PNGAPI
png_convert_from_struct_tm
(
png_timep
ptime
,
PNG_CONST
struct
tm
*
ttime
)
png_convert_from_struct_tm
(
png_timep
ptime
,
const
struct
tm
*
ttime
)
{
png_debug
(
1
,
"in png_convert_from_struct_tm"
);
...
...
@@ -948,6 +948,10 @@ png_write_destroy(png_structrp png_ptr)
png_free_buffer_list
(
png_ptr
,
&
png_ptr
->
zbuffer_list
);
png_free
(
png_ptr
,
png_ptr
->
row_buf
);
png_ptr
->
row_buf
=
NULL
;
#ifdef PNG_READ_EXPANDED_SUPPORTED
png_free
(
png_ptr
,
png_ptr
->
riffled_palette
);
png_ptr
->
riffled_palette
=
NULL
;
#endif
#ifdef PNG_WRITE_FILTER_SUPPORTED
png_free
(
png_ptr
,
png_ptr
->
prev_row
);
png_free
(
png_ptr
,
png_ptr
->
try_row
);
...
...
@@ -1536,7 +1540,7 @@ png_write_image_16bit(png_voidp argument)
display
->
first_row
);
png_uint_16p
output_row
=
png_voidcast
(
png_uint_16p
,
display
->
local_row
);
png_uint_16p
row_end
;
const
unsigned
int
channels
=
(
image
->
format
&
PNG_FORMAT_FLAG_COLOR
)
!=
0
?
unsigned
int
channels
=
(
image
->
format
&
PNG_FORMAT_FLAG_COLOR
)
!=
0
?
3
:
1
;
int
aindex
=
0
;
png_uint_32
y
=
image
->
height
;
...
...
@@ -1573,7 +1577,7 @@ png_write_image_16bit(png_voidp argument)
while
(
out_ptr
<
row_end
)
{
const
png_uint_16
alpha
=
in_ptr
[
aindex
];
png_uint_16
alpha
=
in_ptr
[
aindex
];
png_uint_32
reciprocal
=
0
;
int
c
;
...
...
@@ -1695,7 +1699,7 @@ png_write_image_8bit(png_voidp argument)
display
->
first_row
);
png_bytep
output_row
=
png_voidcast
(
png_bytep
,
display
->
local_row
);
png_uint_32
y
=
image
->
height
;
const
unsigned
int
channels
=
(
image
->
format
&
PNG_FORMAT_FLAG_COLOR
)
!=
0
?
unsigned
int
channels
=
(
image
->
format
&
PNG_FORMAT_FLAG_COLOR
)
!=
0
?
3
:
1
;
if
((
image
->
format
&
PNG_FORMAT_FLAG_ALPHA
)
!=
0
)
...
...
@@ -1783,25 +1787,25 @@ png_write_image_8bit(png_voidp argument)
static
void
png_image_set_PLTE
(
png_image_write_control
*
display
)
{
const
png_imagep
image
=
display
->
image
;
png_imagep
image
=
display
->
image
;
const
void
*
cmap
=
display
->
colormap
;
const
int
entries
=
image
->
colormap_entries
>
256
?
256
:
int
entries
=
image
->
colormap_entries
>
256
?
256
:
(
int
)
image
->
colormap_entries
;
/* NOTE: the caller must check for cmap != NULL and entries != 0 */
const
png_uint_32
format
=
image
->
format
;
const
unsigned
int
channels
=
PNG_IMAGE_SAMPLE_CHANNELS
(
format
);
png_uint_32
format
=
image
->
format
;
unsigned
int
channels
=
PNG_IMAGE_SAMPLE_CHANNELS
(
format
);
# if defined(PNG_FORMAT_BGR_SUPPORTED) &&\
defined(PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED)
const
int
afirst
=
(
format
&
PNG_FORMAT_FLAG_AFIRST
)
!=
0
&&
int
afirst
=
(
format
&
PNG_FORMAT_FLAG_AFIRST
)
!=
0
&&
(
format
&
PNG_FORMAT_FLAG_ALPHA
)
!=
0
;
# else
# define afirst 0
# endif
# ifdef PNG_FORMAT_BGR_SUPPORTED
const
int
bgr
=
(
format
&
PNG_FORMAT_FLAG_BGR
)
!=
0
?
2
:
0
;
int
bgr
=
(
format
&
PNG_FORMAT_FLAG_BGR
)
!=
0
?
2
:
0
;
# else
# define bgr 0
# endif
...
...
@@ -1951,12 +1955,12 @@ png_image_write_main(png_voidp argument)
* and total image size to ensure that they are within the system limits.
*/
{
const
unsigned
int
channels
=
PNG_IMAGE_PIXEL_CHANNELS
(
image
->
format
);
unsigned
int
channels
=
PNG_IMAGE_PIXEL_CHANNELS
(
image
->
format
);
if
(
image
->
width
<=
0x7fffffffU
/
channels
)
/* no overflow */
{
png_uint_32
check
;
const
png_uint_32
png_row_stride
=
image
->
width
*
channels
;
png_uint_32
png_row_stride
=
image
->
width
*
channels
;
if
(
display
->
row_stride
==
0
)
display
->
row_stride
=
(
png_int_32
)
/*SAFE*/
png_row_stride
;
...
...
@@ -2052,7 +2056,7 @@ png_image_write_main(png_voidp argument)
*/
if
(
write_16bit
!=
0
)
{
PNG_CONST
png_uint_16
le
=
0x0001
;
png_uint_16
le
=
0x0001
;
if
((
*
(
png_const_bytep
)
&
le
)
!=
0
)
png_set_swap
(
png_ptr
);
...
...
@@ -2166,7 +2170,7 @@ image_memory_write)(png_structp png_ptr, png_bytep/*const*/ data, size_t size)
{
png_image_write_control
*
display
=
png_voidcast
(
png_image_write_control
*
,
png_ptr
->
io_ptr
/*backdoor: png_get_io_ptr(png_ptr)*/
);
const
png_alloc_size_t
ob
=
display
->
output_bytes
;
png_alloc_size_t
ob
=
display
->
output_bytes
;
/* Check for overflow; this should never happen: */
if
(
size
<=
((
png_alloc_size_t
)
-
1
)
-
ob
)
...
...
3rdparty/libpng/pngwtran.c
浏览文件 @
087d9745
/* pngwtran.c - transforms the data in a row for PNG writers
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -254,8 +254,7 @@ png_do_shift(png_row_infop row_info, png_bytep row,
for
(
i
=
0
;
i
<
istop
;
i
++
,
bp
++
)
{
const
unsigned
int
c
=
i
%
channels
;
unsigned
int
c
=
i
%
channels
;
int
j
;
unsigned
int
v
,
out
;
...
...
@@ -283,7 +282,7 @@ png_do_shift(png_row_infop row_info, png_bytep row,
for
(
bp
=
row
,
i
=
0
;
i
<
istop
;
i
++
)
{
const
unsigned
int
c
=
i
%
channels
;
unsigned
int
c
=
i
%
channels
;
int
j
;
unsigned
int
value
,
v
;
...
...
3rdparty/libpng/pngwutil.c
浏览文件 @
087d9745
/* pngwutil.c - utilities to write a PNG file
*
*
Last changed in libpng 1.6.35 [July 15, 2018]
*
Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
*
(Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
*
(Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
Copyright (c) 1996-1997 Andreas Dilger
*
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
...
...
@@ -1893,16 +1893,16 @@ png_write_start_row(png_structrp png_ptr)
/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* Start of interlace block */
static
PNG_CONST
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
static
const
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
/* Offset to next interlace block */
static
PNG_CONST
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
static
const
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
/* Start of interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
static
const
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
/* Offset to next interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
static
const
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
#endif
png_alloc_size_t
buf_size
;
...
...
@@ -2008,16 +2008,16 @@ png_write_finish_row(png_structrp png_ptr)
/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* Start of interlace block */
static
PNG_CONST
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
static
const
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
/* Offset to next interlace block */
static
PNG_CONST
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
static
const
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
/* Start of interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
static
const
png_byte
png_pass_ystart
[
7
]
=
{
0
,
0
,
4
,
0
,
2
,
0
,
1
};
/* Offset to next interlace block in the y direction */
static
PNG_CONST
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
static
const
png_byte
png_pass_yinc
[
7
]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
#endif
png_debug
(
1
,
"in png_write_finish_row"
);
...
...
@@ -2098,10 +2098,10 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* Start of interlace block */
static
PNG_CONST
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
static
const
png_byte
png_pass_start
[
7
]
=
{
0
,
4
,
0
,
2
,
0
,
1
,
0
};
/* Offset to next interlace block */
static
PNG_CONST
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
static
const
png_byte
png_pass_inc
[
7
]
=
{
8
,
8
,
4
,
4
,
2
,
2
,
1
};
png_debug
(
1
,
"in png_do_write_interlace"
);
...
...
@@ -2276,7 +2276,7 @@ png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row,
#ifdef PNG_WRITE_FILTER_SUPPORTED
static
size_t
/* PRIVATE */
png_setup_sub_row
(
png_structrp
png_ptr
,
const
png_uint_32
bpp
,
png_setup_sub_row
(
png_structrp
png_ptr
,
png_uint_32
bpp
,
size_t
row_bytes
,
size_t
lmins
)
{
png_bytep
rp
,
dp
,
lp
;
...
...
@@ -2315,7 +2315,7 @@ png_setup_sub_row(png_structrp png_ptr, const png_uint_32 bpp,
}
static
void
/* PRIVATE */
png_setup_sub_row_only
(
png_structrp
png_ptr
,
const
png_uint_32
bpp
,
png_setup_sub_row_only
(
png_structrp
png_ptr
,
png_uint_32
bpp
,
size_t
row_bytes
)
{
png_bytep
rp
,
dp
,
lp
;
...
...
@@ -2380,7 +2380,7 @@ png_setup_up_row_only(png_structrp png_ptr, size_t row_bytes)
}
static
size_t
/* PRIVATE */
png_setup_avg_row
(
png_structrp
png_ptr
,
const
png_uint_32
bpp
,
png_setup_avg_row
(
png_structrp
png_ptr
,
png_uint_32
bpp
,
size_t
row_bytes
,
size_t
lmins
)
{
png_bytep
rp
,
dp
,
pp
,
lp
;
...
...
@@ -2420,7 +2420,7 @@ png_setup_avg_row(png_structrp png_ptr, const png_uint_32 bpp,
return
(
sum
);
}
static
void
/* PRIVATE */
png_setup_avg_row_only
(
png_structrp
png_ptr
,
const
png_uint_32
bpp
,
png_setup_avg_row_only
(
png_structrp
png_ptr
,
png_uint_32
bpp
,
size_t
row_bytes
)
{
png_bytep
rp
,
dp
,
pp
,
lp
;
...
...
@@ -2442,7 +2442,7 @@ png_setup_avg_row_only(png_structrp png_ptr, const png_uint_32 bpp,
}
static
size_t
/* PRIVATE */
png_setup_paeth_row
(
png_structrp
png_ptr
,
const
png_uint_32
bpp
,
png_setup_paeth_row
(
png_structrp
png_ptr
,
png_uint_32
bpp
,
size_t
row_bytes
,
size_t
lmins
)
{
png_bytep
rp
,
dp
,
pp
,
cp
,
lp
;
...
...
@@ -2503,7 +2503,7 @@ png_setup_paeth_row(png_structrp png_ptr, const png_uint_32 bpp,
return
(
sum
);
}
static
void
/* PRIVATE */
png_setup_paeth_row_only
(
png_structrp
png_ptr
,
const
png_uint_32
bpp
,
png_setup_paeth_row_only
(
png_structrp
png_ptr
,
png_uint_32
bpp
,
size_t
row_bytes
)
{
png_bytep
rp
,
dp
,
pp
,
cp
,
lp
;
...
...
3rdparty/libpng/powerpc/filter_vsx_intrinsics.c
浏览文件 @
087d9745
/* filter_vsx_intrinsics.c - PowerPC optimised filter functions
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 2017 Glenn Randers-Pehrson
* Written by Vadim Barkov, 2017.
* Last changed in libpng 1.6.29 [March 16, 2017]
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*/
#include <stdio.h>
#include <stdint.h>
#include "../pngpriv.h"
...
...
@@ -173,7 +174,7 @@ static const vector unsigned char VSX_SHORT_TO_CHAR4_3 = {16,16,16,16,16,16,16,1
void
png_read_filter_row_sub4_vsx
(
png_row_infop
row_info
,
png_bytep
row
,
png_const_bytep
prev_row
)
{
const
png_byte
bpp
=
4
;
png_byte
bpp
=
4
;
vector
unsigned
char
rp_vec
;
vector
unsigned
char
part_vec
;
...
...
@@ -230,7 +231,7 @@ void png_read_filter_row_sub4_vsx(png_row_infop row_info, png_bytep row,
void
png_read_filter_row_sub3_vsx
(
png_row_infop
row_info
,
png_bytep
row
,
png_const_bytep
prev_row
)
{
const
png_byte
bpp
=
3
;
png_byte
bpp
=
3
;
vector
unsigned
char
rp_vec
;
vector
unsigned
char
part_vec
;
...
...
@@ -294,7 +295,7 @@ void png_read_filter_row_sub3_vsx(png_row_infop row_info, png_bytep row,
void
png_read_filter_row_avg4_vsx
(
png_row_infop
row_info
,
png_bytep
row
,
png_const_bytep
prev_row
)
{
const
png_byte
bpp
=
4
;
png_byte
bpp
=
4
;
vector
unsigned
char
rp_vec
;
vector
unsigned
char
pp_vec
;
...
...
@@ -381,7 +382,7 @@ void png_read_filter_row_avg4_vsx(png_row_infop row_info, png_bytep row,
void
png_read_filter_row_avg3_vsx
(
png_row_infop
row_info
,
png_bytep
row
,
png_const_bytep
prev_row
)
{
const
png_byte
bpp
=
3
;
png_byte
bpp
=
3
;
vector
unsigned
char
rp_vec
;
vector
unsigned
char
pp_vec
;
...
...
@@ -499,7 +500,7 @@ void png_read_filter_row_avg3_vsx(png_row_infop row_info, png_bytep row,
void
png_read_filter_row_paeth4_vsx
(
png_row_infop
row_info
,
png_bytep
row
,
png_const_bytep
prev_row
)
{
const
png_byte
bpp
=
4
;
png_byte
bpp
=
4
;
int
a
,
b
,
c
,
pa
,
pb
,
pc
,
p
;
vector
unsigned
char
rp_vec
;
...
...
@@ -619,7 +620,7 @@ void png_read_filter_row_paeth4_vsx(png_row_infop row_info, png_bytep row,
void
png_read_filter_row_paeth3_vsx
(
png_row_infop
row_info
,
png_bytep
row
,
png_const_bytep
prev_row
)
{
const
png_byte
bpp
=
3
;
png_byte
bpp
=
3
;
int
a
,
b
,
c
,
pa
,
pb
,
pc
,
p
;
vector
unsigned
char
rp_vec
;
...
...
3rdparty/libpng/powerpc/powerpc_init.c
浏览文件 @
087d9745
/* powerpc_init.c - POWERPC optimised filter functions
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 2017 Glenn Randers-Pehrson
* Written by Vadim Barkov, 2017.
* Last changed in libpng 1.6.29 [March 16, 2017]
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*/
/* Below, after checking __linux__, various non-C90 POSIX 1003.1 functions are
* called.
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录