mirror of https://github.com/opencv/opencv.git
parent
ae4718558d
commit
c6d1421f9b
22 changed files with 4583 additions and 2471 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,111 @@ |
|||||||
|
|
||||||
|
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. |
||||||
|
|
||||||
|
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: |
||||||
|
|
||||||
|
If you modify libpng you may insert additional notices immediately following |
||||||
|
this sentence. |
||||||
|
|
||||||
|
This code is released under the libpng license. |
||||||
|
|
||||||
|
libpng versions 1.2.6, August 15, 2004, through 1.5.12, July 11, 2012, are |
||||||
|
Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are |
||||||
|
distributed according to the same disclaimer and license as libpng-1.2.5 |
||||||
|
with the following individual added to the list of Contributing Authors |
||||||
|
|
||||||
|
Cosmin Truta |
||||||
|
|
||||||
|
libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are |
||||||
|
Copyright (c) 2000-2002 Glenn Randers-Pehrson, 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 |
||||||
|
Gilles Vollant |
||||||
|
|
||||||
|
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. |
||||||
|
|
||||||
|
libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are |
||||||
|
Copyright (c) 1998, 1999 Glenn Randers-Pehrson, 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: |
||||||
|
|
||||||
|
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 |
||||||
|
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 |
||||||
|
|
||||||
|
libpng versions 0.5, May 1995, through 0.88, January 1996, are |
||||||
|
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. |
||||||
|
|
||||||
|
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. |
||||||
|
|
||||||
|
|
||||||
|
A "png_get_copyright" function is available, for convenient use in "about" |
||||||
|
boxes and the like: |
||||||
|
|
||||||
|
printf("%s",png_get_copyright(NULL)); |
||||||
|
|
||||||
|
Also, the PNG logo (in PNG format, of course) is supplied in the |
||||||
|
files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). |
||||||
|
|
||||||
|
Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a |
||||||
|
certification mark of the Open Source Initiative. |
||||||
|
|
||||||
|
Glenn Randers-Pehrson |
||||||
|
glennrp at users.sourceforge.net |
||||||
|
July 11, 2012 |
@ -0,0 +1,225 @@ |
|||||||
|
|
||||||
|
/* filter_neon.S - NEON optimised filter functions |
||||||
|
* |
||||||
|
* Copyright (c) 2011 Glenn Randers-Pehrson |
||||||
|
* Written by Mans Rullgard, 2011. |
||||||
|
* |
||||||
|
* This code is released under the libpng license. |
||||||
|
* For conditions of distribution and use, see the disclaimer |
||||||
|
* and license in png.h |
||||||
|
*/ |
||||||
|
|
||||||
|
#if defined(__linux__) && defined(__ELF__) |
||||||
|
.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */ |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef __ELF__ |
||||||
|
# define ELF |
||||||
|
#else |
||||||
|
# define ELF @
|
||||||
|
#endif |
||||||
|
|
||||||
|
.arch armv7-a |
||||||
|
.fpu neon
|
||||||
|
|
||||||
|
.macro func name, export=0 |
||||||
|
.macro endfunc
|
||||||
|
ELF .size \name, . - \name |
||||||
|
.endfunc |
||||||
|
.purgem endfunc
|
||||||
|
.endm |
||||||
|
.text |
||||||
|
.if \export |
||||||
|
.global \name |
||||||
|
.endif |
||||||
|
ELF .type \name, STT_FUNC |
||||||
|
.func \name |
||||||
|
\name: |
||||||
|
.endm |
||||||
|
|
||||||
|
func png_read_filter_row_sub4_neon, export=1 |
||||||
|
ldr r3, [r0, #4] @ rowbytes
|
||||||
|
vmov.i8 d3, #0 |
||||||
|
1: |
||||||
|
vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] |
||||||
|
vadd.u8 d0, d3, d4 |
||||||
|
vadd.u8 d1, d0, d5 |
||||||
|
vadd.u8 d2, d1, d6 |
||||||
|
vadd.u8 d3, d2, d7 |
||||||
|
vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! |
||||||
|
subs r3, r3, #16 |
||||||
|
bgt 1b |
||||||
|
|
||||||
|
bx lr |
||||||
|
endfunc |
||||||
|
|
||||||
|
func png_read_filter_row_sub3_neon, export=1 |
||||||
|
ldr r3, [r0, #4] @ rowbytes
|
||||||
|
vmov.i8 d3, #0 |
||||||
|
mov r0, r1 |
||||||
|
mov r2, #3 |
||||||
|
mov r12, #12 |
||||||
|
vld1.8 {q11}, [r0], r12 |
||||||
|
1: |
||||||
|
vext.8 d5, d22, d23, #3 |
||||||
|
vadd.u8 d0, d3, d22 |
||||||
|
vext.8 d6, d22, d23, #6 |
||||||
|
vadd.u8 d1, d0, d5 |
||||||
|
vext.8 d7, d23, d23, #1 |
||||||
|
vld1.8 {q11}, [r0], r12 |
||||||
|
vst1.32 {d0[0]}, [r1,:32], r2 |
||||||
|
vadd.u8 d2, d1, d6 |
||||||
|
vst1.32 {d1[0]}, [r1], r2 |
||||||
|
vadd.u8 d3, d2, d7 |
||||||
|
vst1.32 {d2[0]}, [r1], r2 |
||||||
|
vst1.32 {d3[0]}, [r1], r2 |
||||||
|
subs r3, r3, #12 |
||||||
|
bgt 1b |
||||||
|
|
||||||
|
bx lr |
||||||
|
endfunc |
||||||
|
|
||||||
|
func png_read_filter_row_up_neon, export=1 |
||||||
|
ldr r3, [r0, #4] @ rowbytes
|
||||||
|
1: |
||||||
|
vld1.8 {q0}, [r1,:128] |
||||||
|
vld1.8 {q1}, [r2,:128]! |
||||||
|
vadd.u8 q0, q0, q1 |
||||||
|
vst1.8 {q0}, [r1,:128]! |
||||||
|
subs r3, r3, #16 |
||||||
|
bgt 1b |
||||||
|
|
||||||
|
bx lr |
||||||
|
endfunc |
||||||
|
|
||||||
|
func png_read_filter_row_avg4_neon, export=1 |
||||||
|
ldr r12, [r0, #4] @ rowbytes
|
||||||
|
vmov.i8 d3, #0 |
||||||
|
1: |
||||||
|
vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] |
||||||
|
vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! |
||||||
|
vhadd.u8 d0, d3, d16 |
||||||
|
vadd.u8 d0, d0, d4 |
||||||
|
vhadd.u8 d1, d0, d17 |
||||||
|
vadd.u8 d1, d1, d5 |
||||||
|
vhadd.u8 d2, d1, d18 |
||||||
|
vadd.u8 d2, d2, d6 |
||||||
|
vhadd.u8 d3, d2, d19 |
||||||
|
vadd.u8 d3, d3, d7 |
||||||
|
vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! |
||||||
|
subs r12, r12, #16 |
||||||
|
bgt 1b |
||||||
|
|
||||||
|
bx lr |
||||||
|
endfunc |
||||||
|
|
||||||
|
func png_read_filter_row_avg3_neon, export=1 |
||||||
|
push {r4,lr} |
||||||
|
ldr r12, [r0, #4] @ rowbytes
|
||||||
|
vmov.i8 d3, #0 |
||||||
|
mov r0, r1 |
||||||
|
mov r4, #3 |
||||||
|
mov lr, #12 |
||||||
|
vld1.8 {q11}, [r0], lr |
||||||
|
1: |
||||||
|
vld1.8 {q10}, [r2], lr |
||||||
|
vext.8 d5, d22, d23, #3 |
||||||
|
vhadd.u8 d0, d3, d20 |
||||||
|
vext.8 d17, d20, d21, #3 |
||||||
|
vadd.u8 d0, d0, d22 |
||||||
|
vext.8 d6, d22, d23, #6 |
||||||
|
vhadd.u8 d1, d0, d17 |
||||||
|
vext.8 d18, d20, d21, #6 |
||||||
|
vadd.u8 d1, d1, d5 |
||||||
|
vext.8 d7, d23, d23, #1 |
||||||
|
vld1.8 {q11}, [r0], lr |
||||||
|
vst1.32 {d0[0]}, [r1,:32], r4 |
||||||
|
vhadd.u8 d2, d1, d18 |
||||||
|
vst1.32 {d1[0]}, [r1], r4 |
||||||
|
vext.8 d19, d21, d21, #1 |
||||||
|
vadd.u8 d2, d2, d6 |
||||||
|
vhadd.u8 d3, d2, d19 |
||||||
|
vst1.32 {d2[0]}, [r1], r4 |
||||||
|
vadd.u8 d3, d3, d7 |
||||||
|
vst1.32 {d3[0]}, [r1], r4 |
||||||
|
subs r12, r12, #12 |
||||||
|
bgt 1b |
||||||
|
|
||||||
|
pop {r4,pc} |
||||||
|
endfunc |
||||||
|
|
||||||
|
.macro paeth rx, ra, rb, rc |
||||||
|
vaddl.u8 q12, \ra, \rb @ a + b
|
||||||
|
vaddl.u8 q15, \rc, \rc @ 2*c
|
||||||
|
vabdl.u8 q13, \rb, \rc @ pa
|
||||||
|
vabdl.u8 q14, \ra, \rc @ pb
|
||||||
|
vabd.u16 q15, q12, q15 @ pc
|
||||||
|
vcle.u16 q12, q13, q14 @ pa <= pb
|
||||||
|
vcle.u16 q13, q13, q15 @ pa <= pc
|
||||||
|
vcle.u16 q14, q14, q15 @ pb <= pc
|
||||||
|
vand q12, q12, q13 @ pa <= pb && pa <= pc
|
||||||
|
vmovn.u16 d28, q14 |
||||||
|
vmovn.u16 \rx, q12 |
||||||
|
vbsl d28, \rb, \rc |
||||||
|
vbsl \rx, \ra, d28 |
||||||
|
.endm |
||||||
|
|
||||||
|
func png_read_filter_row_paeth4_neon, export=1 |
||||||
|
ldr r12, [r0, #4] @ rowbytes
|
||||||
|
vmov.i8 d3, #0 |
||||||
|
vmov.i8 d20, #0 |
||||||
|
1: |
||||||
|
vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] |
||||||
|
vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! |
||||||
|
paeth d0, d3, d16, d20 |
||||||
|
vadd.u8 d0, d0, d4 |
||||||
|
paeth d1, d0, d17, d16 |
||||||
|
vadd.u8 d1, d1, d5 |
||||||
|
paeth d2, d1, d18, d17 |
||||||
|
vadd.u8 d2, d2, d6 |
||||||
|
paeth d3, d2, d19, d18 |
||||||
|
vmov d20, d19 |
||||||
|
vadd.u8 d3, d3, d7 |
||||||
|
vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! |
||||||
|
subs r12, r12, #16 |
||||||
|
bgt 1b |
||||||
|
|
||||||
|
bx lr |
||||||
|
endfunc |
||||||
|
|
||||||
|
func png_read_filter_row_paeth3_neon, export=1 |
||||||
|
push {r4,lr} |
||||||
|
ldr r12, [r0, #4] @ rowbytes
|
||||||
|
vmov.i8 d3, #0 |
||||||
|
vmov.i8 d4, #0 |
||||||
|
mov r0, r1 |
||||||
|
mov r4, #3 |
||||||
|
mov lr, #12 |
||||||
|
vld1.8 {q11}, [r0], lr |
||||||
|
1: |
||||||
|
vld1.8 {q10}, [r2], lr |
||||||
|
paeth d0, d3, d20, d4 |
||||||
|
vext.8 d5, d22, d23, #3 |
||||||
|
vadd.u8 d0, d0, d22 |
||||||
|
vext.8 d17, d20, d21, #3 |
||||||
|
paeth d1, d0, d17, d20 |
||||||
|
vst1.32 {d0[0]}, [r1,:32], r4 |
||||||
|
vext.8 d6, d22, d23, #6 |
||||||
|
vadd.u8 d1, d1, d5 |
||||||
|
vext.8 d18, d20, d21, #6 |
||||||
|
paeth d2, d1, d18, d17 |
||||||
|
vext.8 d7, d23, d23, #1 |
||||||
|
vld1.8 {q11}, [r0], lr |
||||||
|
vst1.32 {d1[0]}, [r1], r4 |
||||||
|
vadd.u8 d2, d2, d6 |
||||||
|
vext.8 d19, d21, d21, #1 |
||||||
|
paeth d3, d2, d19, d18 |
||||||
|
vst1.32 {d2[0]}, [r1], r4 |
||||||
|
vmov d4, d19 |
||||||
|
vadd.u8 d3, d3, d7 |
||||||
|
vst1.32 {d3[0]}, [r1], r4 |
||||||
|
subs r12, r12, #12 |
||||||
|
bgt 1b |
||||||
|
|
||||||
|
pop {r4,pc} |
||||||
|
endfunc |
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 8.5 KiB |
Loading…
Reference in new issue