forked from opencv/opencv
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Andrey Kamaev
committed
Aug 29, 2012
1 parent
ae47185
commit c6d1421
Showing
22 changed files
with
4,583 additions
and
2,471 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Oops, something went wrong.