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