[svn] / trunk / xvidcore / src / image / x86_asm / deintl_sse.asm Repository:
ViewVC logotype

Annotation of /trunk/xvidcore/src/image/x86_asm/deintl_sse.asm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1883 - (view) (download)

1 : Skal 1733 ;/*****************************************************************************
2 :     ; *
3 :     ; * XVID MPEG-4 VIDEO CODEC
4 :     ; * - simple de-interlacer
5 :     ; * Copyright(C) 2006 Pascal Massimino <skal@xvid.org>
6 :     ; *
7 : Isibaar 1883 ; * This file is part of Xvid, a free MPEG-4 video encoder/decoder
8 : Skal 1733 ; *
9 : Isibaar 1883 ; * Xvid is free software; you can redistribute it and/or modify it
10 : Skal 1733 ; * under the terms of the GNU General Public License as published by
11 :     ; * the Free Software Foundation; either version 2 of the License, or
12 :     ; * (at your option) any later version.
13 :     ; *
14 :     ; * This program is distributed in the hope that it will be useful,
15 :     ; * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 :     ; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 :     ; * GNU General Public License for more details.
18 :     ; *
19 :     ; * You should have received a copy of the GNU General Public License
20 :     ; * along with this program; if not, write to the Free Software
21 :     ; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 :     ; *
23 : Isibaar 1883 ; * $Id: deintl_sse.asm,v 1.7 2010-03-09 10:00:14 Isibaar Exp $
24 : Skal 1733 ; *
25 :     ; *************************************************************************/
26 :    
27 :     ;/**************************************************************************
28 :     ; *
29 :     ; * History:
30 :     ; *
31 :     ; * Oct 13 2006: initial version
32 :     ; *
33 :     ; *************************************************************************/
34 :    
35 : Isibaar 1795 %include "nasm.inc"
36 : Skal 1733
37 :     ;//////////////////////////////////////////////////////////////////////
38 :    
39 :     cglobal xvid_deinterlace_sse
40 :    
41 :     ;//////////////////////////////////////////////////////////////////////
42 :    
43 : Isibaar 1795 DATA
44 : Skal 1733
45 : Isibaar 1795 align SECTION_ALIGN
46 : Skal 1733 Mask_6b times 16 db 0x3f
47 :     Rnd_3b: times 16 db 3
48 :    
49 : Isibaar 1844 TEXT
50 : Skal 1733
51 :     ;//////////////////////////////////////////////////////////////////////
52 :     ;// sse version
53 :    
54 : Isibaar 1795 align SECTION_ALIGN
55 : Skal 1733 xvid_deinterlace_sse:
56 :    
57 : Isibaar 1795 mov _EAX, prm1 ; Pix
58 :     mov TMP0, prm3 ; Height
59 :     mov TMP1, prm4 ; BpS
60 : Skal 1733
61 : Isibaar 1795 push _EBX
62 :     %ifdef ARCH_IS_X86_64
63 :     mov _EBX, prm2 ; Width
64 :     %else
65 :     mov _EBX, [esp+4+ 8] ; Width
66 :     %endif
67 : Skal 1733
68 : Isibaar 1795 add _EBX, 7
69 :     shr TMP0, 1
70 :     shr _EBX, 3 ; Width /= 8
71 :     dec TMP0
72 : Skal 1733
73 :     movq mm6, [Mask_6b]
74 :    
75 : Isibaar 1793 .Loop_x:
76 : Isibaar 1795 push _EAX
77 :     movq mm1, [_EAX ]
78 :     movq mm2, [_EAX+ TMP1]
79 :     lea _EAX, [_EAX+ TMP1]
80 : Skal 1733 movq mm0, mm2
81 :    
82 : Isibaar 1795 push TMP0
83 : Skal 1733
84 :     .Loop:
85 : Isibaar 1795 movq mm3, [_EAX+ TMP1]
86 :     movq mm4, [_EAX+2*TMP1]
87 : Skal 1733 movq mm5, mm2
88 :     pavgb mm0, mm4
89 :     pavgb mm1, mm3
90 :     movq mm7, mm2
91 :     psubusb mm2, mm0
92 :     psubusb mm0, mm7
93 :     paddusb mm0, [Rnd_3b]
94 :     psrlw mm2, 2
95 :     psrlw mm0, 2
96 :     pand mm2, mm6
97 :     pand mm0, mm6
98 :     paddusb mm1, mm2
99 :     psubusb mm1, mm0
100 : Isibaar 1795 movq [_EAX], mm1
101 :     lea _EAX, [_EAX+2*TMP1]
102 : Skal 1733 movq mm0, mm5
103 :     movq mm1, mm3
104 :     movq mm2, mm4
105 : Isibaar 1795 dec TMP0
106 : Skal 1733 jg .Loop
107 :    
108 :     pavgb mm0, mm2 ; p0 += p2
109 :     pavgb mm1, mm1 ; p1 += p1
110 :     movq mm7, mm2
111 :     psubusb mm2, mm0
112 :     psubusb mm0, mm7
113 :     paddusb mm0, [Rnd_3b]
114 :     psrlw mm2, 2
115 :     psrlw mm0, 2
116 :     pand mm2, mm6
117 :     pand mm0, mm6
118 :     paddusb mm1, mm2
119 :     psubusb mm1, mm0
120 : Isibaar 1795 movq [_EAX], mm1
121 : Skal 1733
122 : Isibaar 1795 pop TMP0
123 :     pop _EAX
124 :     add _EAX, 8
125 : Skal 1733
126 : Isibaar 1795 dec _EBX
127 : Skal 1733 jg .Loop_x
128 :    
129 : Isibaar 1795 pop _EBX
130 : Skal 1733 ret
131 : Isibaar 1793 ENDFUNC
132 : Skal 1733
133 :     ;//////////////////////////////////////////////////////////////////////
134 : Isibaar 1877 NON_EXEC_STACK

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4