Contents of /trunk/xine-lib/patches/xine-lib-1.1.1-textrels.patch
Parent Directory | Revision Log
Revision 153 -
(show annotations)
(download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 48911 byte(s)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 48911 byte(s)
-import
1 | Index: xine-lib-1.1.1/src/libw32dll/wine/module.c |
2 | =================================================================== |
3 | --- xine-lib-1.1.1.orig/src/libw32dll/wine/module.c |
4 | +++ xine-lib-1.1.1/src/libw32dll/wine/module.c |
5 | @@ -38,8 +38,8 @@ |
6 | |
7 | #ifdef EMU_QTX_API |
8 | #include "wrapper.h" |
9 | -static int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags); |
10 | -static int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags); |
11 | +int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags); |
12 | +int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags); |
13 | #endif |
14 | |
15 | //#undef TRACE |
16 | @@ -533,8 +533,6 @@ HMODULE WINAPI LoadLibraryExA(LPCSTR lib |
17 | printf ("wine/module: QuickTime.qts patched!!! old entry=%p\n",ptr[0]); |
18 | |
19 | #ifdef EMU_QTX_API |
20 | - report_entry = report_func; |
21 | - report_ret = report_func_ret; |
22 | wrapper_target=ptr[0]; |
23 | ptr[0]=wrapper; |
24 | #endif |
25 | @@ -697,7 +695,7 @@ static int dump_component(char* name,int |
26 | static u_int32_t ret_array[4096]; |
27 | static int ret_i=0; |
28 | |
29 | -static int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags) |
30 | +int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags) |
31 | { |
32 | #ifdef DEBUG_QTX_API |
33 | int i; |
34 | @@ -896,7 +894,7 @@ static int report_func(void *stack_base, |
35 | return 0; |
36 | } |
37 | |
38 | -static int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags) |
39 | +int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags) |
40 | { |
41 | #ifdef DEBUG_QTX_API |
42 | int i; |
43 | @@ -1011,8 +1009,6 @@ FARPROC MODULE_GetProcAddress( |
44 | // || !strcmp(function,"_CallComponent") |
45 | ){ |
46 | fprintf(stderr,"theQuickTimeDispatcher caught -> %p\n",retproc); |
47 | - report_entry = report_func; |
48 | - report_ret = report_func_ret; |
49 | wrapper_target=(void *)retproc; |
50 | retproc=(void *)wrapper; |
51 | } |
52 | Index: xine-lib-1.1.1/src/libw32dll/wine/stubs.s |
53 | =================================================================== |
54 | --- xine-lib-1.1.1.orig/src/libw32dll/wine/stubs.s |
55 | +++ xine-lib-1.1.1/src/libw32dll/wine/stubs.s |
56 | @@ -33,3 +33,6 @@ exp_EH_prolog: |
57 | leal 12(%esp), %ebp |
58 | pushl %eax |
59 | ret |
60 | + |
61 | +.section .note.GNU-stack,"",@progbits |
62 | + |
63 | Index: xine-lib-1.1.1/src/libw32dll/wine/wrapper.S |
64 | =================================================================== |
65 | --- xine-lib-1.1.1.orig/src/libw32dll/wine/wrapper.S |
66 | +++ xine-lib-1.1.1/src/libw32dll/wine/wrapper.S |
67 | @@ -1,17 +1,19 @@ |
68 | .section .data |
69 | -.globl caller_return |
70 | caller_return: |
71 | .long 0 |
72 | -.globl report_entry |
73 | -report_entry: |
74 | - .long null_call |
75 | -.globl report_ret |
76 | -report_ret: |
77 | - .long null_call |
78 | .global wrapper_target |
79 | wrapper_target: |
80 | .long null_call |
81 | |
82 | +#undef __i686 /* gcc define gets in our way */ |
83 | + .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits |
84 | +.globl __i686.get_pc_thunk.bx |
85 | + .hidden __i686.get_pc_thunk.bx |
86 | + .type __i686.get_pc_thunk.bx,@function |
87 | +__i686.get_pc_thunk.bx: |
88 | + movl (%esp), %ebx |
89 | + ret |
90 | + |
91 | .section .text |
92 | .globl null_call |
93 | .type null_call, @function |
94 | @@ -22,46 +24,60 @@ null_call: |
95 | .type wrapper, @function |
96 | .balign 16,0x90 |
97 | wrapper: |
98 | + pushl $0 |
99 | pusha # store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) |
100 | pushf # store flags |
101 | |
102 | push %ebp # set up a stack frame |
103 | movl %esp, %ebp |
104 | |
105 | + call __i686.get_pc_thunk.bx |
106 | + addl $_GLOBAL_OFFSET_TABLE_, %ebx |
107 | + |
108 | leal 4(%ebp), %eax # push flags addr |
109 | push %eax |
110 | leal 8(%ebp), %eax # push registers addr |
111 | push %eax |
112 | |
113 | - leal 40(%ebp), %edx |
114 | + leal 44(%ebp), %edx |
115 | movl (%ebp), %eax |
116 | subl %edx, %eax |
117 | push %eax |
118 | push %edx |
119 | |
120 | - call *report_entry # report entry |
121 | + call report_func@PLT # report entry |
122 | |
123 | test %eax, %eax |
124 | jnz .Ldone |
125 | |
126 | + movl 44(%ebp), %eax # switch return addresses |
127 | + movl %eax, caller_return@GOTOFF(%ebx) |
128 | + leal .Lwrapper_return@GOTOFF(%ebx), %eax |
129 | + movl %eax, 40(%ebp) |
130 | + |
131 | + movl wrapper_target@GOTOFF(%ebx), %eax |
132 | + mov %eax, 40(%ebp) # wrapper_target should return at .Lwrapper_return |
133 | + |
134 | leave # restore %esp, %ebp |
135 | popf # restore flags |
136 | popa # restore registers |
137 | - |
138 | - popl caller_return # switch return addresses |
139 | - pushl $.Lwrapper_return |
140 | - |
141 | - jmp *wrapper_target # wrapper_target should return at .Lwrapper_return |
142 | + |
143 | + ret # fake 'return' to wrapper_target actually |
144 | |
145 | .balign 16, 0x90 |
146 | .Lwrapper_return: |
147 | - pushl caller_return # restore the original return address |
148 | + pushl $0 |
149 | pusha # more for reference sake here |
150 | pushf |
151 | |
152 | push %ebp # set up a stack frame |
153 | movl %esp, %ebp |
154 | |
155 | + call __i686.get_pc_thunk.bx |
156 | + addl $_GLOBAL_OFFSET_TABLE_, %ebx |
157 | + movl caller_return@GOTOFF(%ebx), %eax |
158 | + movl %eax, 40(%ebp) # restore the original return address |
159 | + |
160 | leal 4(%ebp), %eax # push flags addr |
161 | push %eax |
162 | leal 8(%ebp), %eax # push registers addr |
163 | @@ -73,11 +89,13 @@ wrapper: |
164 | push %eax |
165 | push %edx |
166 | |
167 | - call *report_ret # report the return information (same args) |
168 | + call report_func_ret@PLT# report the return information (same args) |
169 | .Ldone: |
170 | |
171 | leave |
172 | popf |
173 | popa |
174 | ret |
175 | - |
176 | + |
177 | +.section .note.GNU-stack,"",@progbits |
178 | + |
179 | Index: xine-lib-1.1.1/src/libw32dll/wine/wrapper.h |
180 | =================================================================== |
181 | --- xine-lib-1.1.1.orig/src/libw32dll/wine/wrapper.h |
182 | +++ xine-lib-1.1.1/src/libw32dll/wine/wrapper.h |
183 | @@ -11,10 +11,6 @@ typedef struct { |
184 | u_int32_t edi, esi, ebp, esp, ebx, edx, ecx, eax; |
185 | } reg386_t; |
186 | |
187 | -typedef int (*wrapper_func_t)(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags); |
188 | - |
189 | -extern wrapper_func_t report_entry, report_ret; |
190 | - |
191 | extern void (*wrapper_target)(void); |
192 | |
193 | extern int wrapper(void); |
194 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/greedy2frame_template.c |
195 | =================================================================== |
196 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/greedy2frame_template.c |
197 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/greedy2frame_template.c |
198 | @@ -183,7 +183,7 @@ static void DeinterlaceGreedy2Frame_MMX( |
199 | * See above for a description of the algorithm. |
200 | */ |
201 | ".align 8 \n\t" |
202 | - "movq "MANGLE(Mask)", %%mm6 \n\t" |
203 | + "movq %4, %%mm6 \n\t" |
204 | |
205 | "movq %0, %%mm1 \n\t" // T1 |
206 | "movq %1, %%mm0 \n\t" // M1 |
207 | @@ -191,7 +191,7 @@ static void DeinterlaceGreedy2Frame_MMX( |
208 | "movq %3, %%mm2 \n\t" // M0 |
209 | : /* no output */ |
210 | : "m" (*T1), "m" (*M1), |
211 | - "m" (*B1), "m" (*M0) ); |
212 | + "m" (*B1), "m" (*M0), "m" (Mask) ); |
213 | |
214 | |
215 | asm volatile( |
216 | @@ -248,10 +248,10 @@ static void DeinterlaceGreedy2Frame_MMX( |
217 | #endif |
218 | |
219 | /* if |M1-M0| > Threshold we want dword worth of twos */ |
220 | - "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm4 \n\t" |
221 | - "pand "MANGLE(Mask)", %%mm4 \n\t" /* get rid of sign bit */ |
222 | - "pcmpgtd "MANGLE(DwordOne)", %%mm4 \n\t" /* do we want to bob */ |
223 | - "pandn "MANGLE(DwordTwo)", %%mm4 \n\t" |
224 | + "pcmpgtb %3, %%mm4 \n\t" |
225 | + "pand %4, %%mm4 \n\t" /* get rid of sign bit */ |
226 | + "pcmpgtd %5, %%mm4 \n\t" /* do we want to bob */ |
227 | + "pandn %6, %%mm4 \n\t" |
228 | |
229 | "movq %1, %%mm2 \n\t" /* mm2 = T0 */ |
230 | |
231 | @@ -264,11 +264,11 @@ static void DeinterlaceGreedy2Frame_MMX( |
232 | "pand %%mm6, %%mm5 \n\t" |
233 | |
234 | /* if |T1-T0| > Threshold we want dword worth of ones */ |
235 | - "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm5 \n\t" |
236 | + "pcmpgtb %3, %%mm5 \n\t" |
237 | "pand %%mm6, %%mm5 \n\t" /* get rid of sign bit */ |
238 | |
239 | - "pcmpgtd "MANGLE(DwordOne)", %%mm5 \n\t" |
240 | - "pandn "MANGLE(DwordOne)", %%mm5 \n\t" |
241 | + "pcmpgtd %5, %%mm5 \n\t" |
242 | + "pandn %5, %%mm5 \n\t" |
243 | "paddd %%mm5, %%mm4 \n\t" |
244 | |
245 | "movq %2, %%mm2 \n\t" /* B0 */ |
246 | @@ -282,13 +282,13 @@ static void DeinterlaceGreedy2Frame_MMX( |
247 | "pand %%mm6, %%mm5 \n\t" |
248 | |
249 | /* if |B1-B0| > Threshold we want dword worth of ones */ |
250 | - "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm5 \n\t" |
251 | + "pcmpgtb %3, %%mm5 \n\t" |
252 | "pand %%mm6, %%mm5 \n\t" /* get rid of any sign bit */ |
253 | - "pcmpgtd "MANGLE(DwordOne)", %%mm5 \n\t" |
254 | - "pandn "MANGLE(DwordOne)", %%mm5 \n\t" |
255 | + "pcmpgtd %5, %%mm5 \n\t" |
256 | + "pandn %5, %%mm5 \n\t" |
257 | "paddd %%mm5, %%mm4 \n\t" |
258 | |
259 | - "pcmpgtd "MANGLE(DwordTwo)", %%mm4 \n\t" |
260 | + "pcmpgtd %6, %%mm4 \n\t" |
261 | |
262 | /* debugging feature |
263 | * output the value of mm4 at this point which is pink where we will weave |
264 | @@ -314,7 +314,7 @@ static void DeinterlaceGreedy2Frame_MMX( |
265 | #endif |
266 | |
267 | : "=m" (*Dest2) |
268 | - : "m" (*T0), "m" (*B0) ); |
269 | + : "m" (*T0), "m" (*B0), "m" (qwGreedyTwoFrameThreshold), "m" (Mask), "m" (DwordOne), "m" (DwordTwo) ); |
270 | |
271 | /* Advance to the next set of pixels. */ |
272 | T1 += 8; |
273 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/greedyh.asm |
274 | =================================================================== |
275 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/greedyh.asm |
276 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/greedyh.asm |
277 | @@ -43,7 +43,6 @@ static void FUNCT_NAME(uint8_t *output, |
278 | |
279 | int Line; |
280 | long LoopCtr; |
281 | - long oldbx; |
282 | unsigned int Pitch = stride*2; |
283 | int FieldHeight = height / 2; |
284 | |
285 | @@ -52,6 +51,7 @@ static void FUNCT_NAME(uint8_t *output, |
286 | unsigned char* L3; // ptr to Line3 |
287 | |
288 | unsigned char* L2P; // ptr to prev Line2 |
289 | + unsigned char* temp; |
290 | unsigned char* Dest = output; |
291 | |
292 | int64_t LastAvg=0; //interp value from left qword |
293 | @@ -121,25 +121,21 @@ static void FUNCT_NAME(uint8_t *output, |
294 | #define asmLastAvg "%0" |
295 | #define asmL1 "%1" |
296 | #define asmL3 "%2" |
297 | -#define asmL2P "%3" |
298 | +#define asmtemp "%3" |
299 | #define asmL2 "%4" |
300 | #define asmDest "%5" |
301 | #define asmLoopCtr "%6" |
302 | -#define asmoldbx "%7" |
303 | #endif |
304 | |
305 | // For ease of reading, the comments below assume that we're operating on an odd |
306 | // field (i.e., that InfoIsOdd is true). Assume the obvious for even lines.. |
307 | + temp = L2P; |
308 | __asm__ __volatile__ |
309 | ( |
310 | - // save ebx (-fPIC) |
311 | - MOVX" %%"XBX", "asmoldbx"\n\t" |
312 | - |
313 | MOVX" "asmL1", %%"XAX"\n\t" |
314 | - LEAX" 8(%%"XAX"), %%"XBX"\n\t" // next qword needed by DJR |
315 | + LEAX" 8(%%"XAX"), %%"XDX"\n\t" // next qword needed by DJR |
316 | MOVX" "asmL3", %%"XCX"\n\t" |
317 | SUBX" %%"XAX", %%"XCX"\n\t" // carry L3 addr as an offset |
318 | - MOVX" "asmL2P", %%"XDX"\n\t" |
319 | MOVX" "asmL2", %%"XSI"\n\t" |
320 | MOVX" "asmDest", %%"XDI"\n\t" // DL1 if Odd or DL2 if Even |
321 | |
322 | @@ -148,11 +144,14 @@ static void FUNCT_NAME(uint8_t *output, |
323 | |
324 | "movq (%%"XSI"), %%mm0\n\t" // L2 - the newest weave pixel value |
325 | "movq (%%"XAX"), %%mm1\n\t" // L1 - the top pixel |
326 | + PUSHX" %%"XDX "\n\t" |
327 | + MOVX" "asmtemp", %%"XDX"\n\t" |
328 | "movq (%%"XDX"), %%mm2\n\t" // L2P - the prev weave pixel |
329 | + POPX" %%"XDX "\n\t" |
330 | "movq (%%"XAX", %%"XCX"), %%mm3\n\t" // L3, next odd row |
331 | "movq %%mm1, %%mm6\n\t" // L1 - get simple single pixel interp |
332 | // pavgb mm6, mm3 // use macro below |
333 | - V_PAVGB ("%%mm6", "%%mm3", "%%mm4", MANGLE(ShiftMask)) |
334 | + V_PAVGB ("%%mm6", "%%mm3", "%%mm4", "%8") |
335 | |
336 | // DJR - Diagonal Jaggie Reduction |
337 | // In the event that we are going to use an average (Bob) pixel we do not want a jagged |
338 | @@ -166,24 +165,24 @@ static void FUNCT_NAME(uint8_t *output, |
339 | "psllq $16, %%mm7\n\t" // left justify 3 pixels |
340 | "por %%mm7, %%mm4\n\t" // and combine |
341 | |
342 | - "movq (%%"XBX"), %%mm5\n\t" // next horiz qword from L1 |
343 | + "movq (%%"XDX"), %%mm5\n\t" // next horiz qword from L1 |
344 | // pavgb mm5, qword ptr[ebx+ecx] // next horiz qword from L3, use macro below |
345 | - V_PAVGB ("%%mm5", "(%%"XBX",%%"XCX")", "%%mm7", MANGLE(ShiftMask)) |
346 | + V_PAVGB ("%%mm5", "(%%"XDX",%%"XCX")", "%%mm7", "%8") |
347 | "psllq $48, %%mm5\n\t" // left just 1 pixel |
348 | "movq %%mm6, %%mm7\n\t" // another copy of simple bob pixel |
349 | "psrlq $16, %%mm7\n\t" // right just 3 pixels |
350 | "por %%mm7, %%mm5\n\t" // combine |
351 | // pavgb mm4, mm5 // avg of forward and prev by 1 pixel, use macro |
352 | - V_PAVGB ("%%mm4", "%%mm5", "%%mm5", MANGLE(ShiftMask)) // mm5 gets modified if MMX |
353 | + V_PAVGB ("%%mm4", "%%mm5", "%%mm5", "%8") // mm5 gets modified if MMX |
354 | // pavgb mm6, mm4 // avg of center and surround interp vals, use macro |
355 | - V_PAVGB ("%%mm6", "%%mm4", "%%mm7", MANGLE(ShiftMask)) |
356 | + V_PAVGB ("%%mm6", "%%mm4", "%%mm7", "%8") |
357 | |
358 | // Don't do any more averaging than needed for mmx. It hurts performance and causes rounding errors. |
359 | #ifndef IS_MMX |
360 | // pavgb mm4, mm6 // 1/4 center, 3/4 adjacent |
361 | - V_PAVGB ("%%mm4", "%%mm6", "%%mm7", MANGLE(ShiftMask)) |
362 | + V_PAVGB ("%%mm4", "%%mm6", "%%mm7", "%8") |
363 | // pavgb mm6, mm4 // 3/8 center, 5/8 adjacent |
364 | - V_PAVGB ("%%mm6", "%%mm4", "%%mm7", MANGLE(ShiftMask)) |
365 | + V_PAVGB ("%%mm6", "%%mm4", "%%mm7", "%8") |
366 | #endif |
367 | |
368 | // get abs value of possible L2 comb |
369 | @@ -236,64 +235,71 @@ static void FUNCT_NAME(uint8_t *output, |
370 | // pminub mm5, mm3 // now = Min(L1,L3), use macro |
371 | V_PMINUB ("%%mm5", "%%mm3", "%%mm7") |
372 | // allow the value to be above the high or below the low by amt of MaxComb |
373 | - "psubusb "MANGLE(MaxComb)", %%mm5\n\t" // lower min by diff |
374 | - "paddusb "MANGLE(MaxComb)", %%mm2\n\t" // increase max by diff |
375 | + "psubusb %9, %%mm5\n\t" // lower min by diff |
376 | + "paddusb %9, %%mm2\n\t" // increase max by diff |
377 | // pmaxub mm4, mm5 // now = Max(best,Min(L1,L3) use macro |
378 | V_PMAXUB ("%%mm4", "%%mm5") |
379 | // pminub mm4, mm2 // now = Min( Max(best, Min(L1,L3), L2 )=L2 clipped |
380 | V_PMINUB ("%%mm4", "%%mm2", "%%mm7") |
381 | |
382 | // Blend weave pixel with bob pixel, depending on motion val in mm0 |
383 | - "psubusb "MANGLE(MotionThreshold)", %%mm0\n\t"// test Threshold, clear chroma change >>>?? |
384 | - "pmullw "MANGLE(MotionSense)", %%mm0\n\t" // mul by user factor, keep low 16 bits |
385 | - "movq "MANGLE(QW256)", %%mm7\n\t" |
386 | + "psubusb %10, %%mm0\n\t"// test Threshold, clear chroma change >>>?? |
387 | + "pmullw %11, %%mm0\n\t" // mul by user factor, keep low 16 bits |
388 | + "movq %12, %%mm7\n\t" |
389 | #ifdef IS_SSE |
390 | "pminsw %%mm7, %%mm0\n\t" // max = 256 |
391 | #else |
392 | - "paddusw "MANGLE(QW256B)", %%mm0\n\t" // add, may sat at fff.. |
393 | - "psubusw "MANGLE(QW256B)", %%mm0\n\t" // now = Min(L1,256) |
394 | + "paddusw %13, %%mm0\n\t" // add, may sat at fff.. |
395 | + "psubusw %13, %%mm0\n\t" // now = Min(L1,256) |
396 | #endif |
397 | "psubusw %%mm0, %%mm7\n\t" // so the 2 sum to 256, weighted avg |
398 | "movq %%mm4, %%mm2\n\t" // save weave chroma info before trashing |
399 | - "pand "MANGLE(YMask)", %%mm4\n\t" // keep only luma from calc'd value |
400 | + "pand %14, %%mm4\n\t" // keep only luma from calc'd value |
401 | "pmullw %%mm7, %%mm4\n\t" // use more weave for less motion |
402 | - "pand "MANGLE(YMask)", %%mm6\n\t" // keep only luma from calc'd value |
403 | + "pand %14, %%mm6\n\t" // keep only luma from calc'd value |
404 | "pmullw %%mm0, %%mm6\n\t" // use more bob for large motion |
405 | "paddusw %%mm6, %%mm4\n\t" // combine |
406 | "psrlw $8, %%mm4\n\t" // div by 256 to get weighted avg |
407 | |
408 | // chroma comes from weave pixel |
409 | - "pand "MANGLE(UVMask)", %%mm2\n\t" // keep chroma |
410 | + "pand %15, %%mm2\n\t" // keep chroma |
411 | "por %%mm4, %%mm2\n\t" // and combine |
412 | |
413 | V_MOVNTQ ("(%%"XDI")", "%%mm2") // move in our clipped best, use macro |
414 | |
415 | // bump ptrs and loop |
416 | LEAX" 8(%%"XAX"), %%"XAX"\n\t" |
417 | - LEAX" 8(%%"XBX"), %%"XBX"\n\t" |
418 | LEAX" 8(%%"XDX"), %%"XDX"\n\t" |
419 | + ADDX" $8, "asmtemp"\n\t" |
420 | LEAX" 8(%%"XDI"), %%"XDI"\n\t" |
421 | LEAX" 8(%%"XSI"), %%"XSI"\n\t" |
422 | DECX" "asmLoopCtr"\n\t" |
423 | "jg 1b\n\t" // loop if not to last line |
424 | // note P-III default assumes backward branches taken |
425 | "jl 1f\n\t" // done |
426 | - MOVX" %%"XAX", %%"XBX"\n\t" // sharpness lookahead 1 byte only, be wrong on 1 |
427 | + MOVX" %%"XAX", %%"XDX"\n\t" // sharpness lookahead 1 byte only, be wrong on 1 |
428 | "jmp 1b\n\t" |
429 | |
430 | "1:\n\t" |
431 | - MOVX" "asmoldbx", %%"XBX"\n\t" |
432 | |
433 | : /* no outputs */ |
434 | |
435 | : "m"(LastAvg), |
436 | "m"(L1), |
437 | "m"(L3), |
438 | - "m"(L2P), |
439 | + "m"(temp), |
440 | "m"(L2), |
441 | "m"(Dest), |
442 | "m"(LoopCtr), |
443 | - "m"(oldbx) |
444 | + "m"(temp), |
445 | + "m"(ShiftMask), |
446 | + "m"(MaxComb), |
447 | + "m"(MotionThreshold), |
448 | + "m"(MotionSense), |
449 | + "m"(QW256), |
450 | + "m"(QW256B), |
451 | + "m"(YMask), |
452 | + "m"(UVMask) |
453 | |
454 | : XAX, XCX, XDX, XSI, XDI, |
455 | #ifdef ARCH_X86 |
456 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc |
457 | =================================================================== |
458 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc |
459 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc |
460 | @@ -7,9 +7,9 @@ |
461 | // up by a little, and adjust later |
462 | |
463 | #ifdef IS_SSE2 |
464 | - "paddusb "MANGLE(ONES)", %%xmm7\n\t" // bias toward no motion |
465 | + "paddusb "_ONES", %%xmm7\n\t" // bias toward no motion |
466 | #else |
467 | - "paddusb "MANGLE(ONES)", %%mm7\n\t" // bias toward no motion |
468 | + "paddusb "_ONES", %%mm7\n\t" // bias toward no motion |
469 | #endif |
470 | |
471 | MERGE4PIXavg("(%%"XDI", %%"XCX")", "(%%"XSI", %%"XCX")") // center, in old and new |
472 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc |
473 | =================================================================== |
474 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc |
475 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc |
476 | @@ -18,7 +18,7 @@ |
477 | // Use the best weave if diffs less than 10 as that |
478 | // means the image is still or moving cleanly |
479 | // if there is motion we will clip which will catch anything |
480 | - "psubusb "MANGLE(FOURS)", %%mm7\n\t" // sets bits to zero if weave diff < 4 |
481 | + "psubusb "_FOURS", %%mm7\n\t" // sets bits to zero if weave diff < 4 |
482 | "pxor %%mm0, %%mm0\n\t" |
483 | "pcmpeqb %%mm0, %%mm7\n\t" // all ff where weave better, else 00 |
484 | "pcmpeqb %%mm7, %%mm0\n\t" // all ff where bob better, else 00 |
485 | @@ -28,10 +28,10 @@ |
486 | #else |
487 | // Use the better of bob or weave |
488 | // pminub mm4, TENS // the most we care about |
489 | - V_PMINUB ("%%mm4", MANGLE(TENS), "%%mm0") // the most we care about |
490 | + V_PMINUB ("%%mm4", _TENS, "%%mm0") // the most we care about |
491 | |
492 | "psubusb %%mm4, %%mm7\n\t" // foregive that much from weave est? |
493 | - "psubusb "MANGLE(FOURS)", %%mm7\n\t" // bias it a bit toward weave |
494 | + "psubusb "_FOURS", %%mm7\n\t" // bias it a bit toward weave |
495 | "pxor %%mm0, %%mm0\n\t" |
496 | "pcmpeqb %%mm0, %%mm7\n\t" // all ff where weave better, else 00 |
497 | "pcmpeqb %%mm7, %%mm0\n\t" // all ff where bob better, else 00 |
498 | @@ -42,9 +42,9 @@ |
499 | |
500 | |
501 | // pminub mm0, Max_Vals // but clip to catch the stray error |
502 | -// V_PMINUB ("%%mm0", MANGLE(Max_Vals), "%%mm1") // but clip to catch the stray error |
503 | +// V_PMINUB ("%%mm0", _Max_Vals, "%%mm1") // but clip to catch the stray error |
504 | // pmaxub mm0, Min_Vals |
505 | -// V_PMAXUB ("%%mm0", MANGLE(Min_Vals)) |
506 | +// V_PMAXUB ("%%mm0", _Min_Vals) |
507 | |
508 | #endif |
509 | |
510 | @@ -53,28 +53,29 @@ |
511 | |
512 | #ifdef USE_VERTICAL_FILTER |
513 | "movq %%mm0, %%mm1\n\t" |
514 | - // pavgb mm0, qword ptr["XBX"] |
515 | - V_PAVGB ("%%mm0", "(%%"XBX")", "%%mm2", MANGLE(ShiftMask)) |
516 | - // movntq qword ptr["XAX"+"XDX"], mm0 |
517 | - V_MOVNTQ ("(%"XAX", %%"XDX")", "%%mm0") |
518 | - // pavgb mm1, qword ptr["XBX"+"XCX"] |
519 | - V_PAVGB ("%%mm1", "(%%"XBX", %%"XCX")", "%%mm2", MANGLE(ShiftMask)) |
520 | - "addq "_dst_pitchw", %%"XBX |
521 | - // movntq qword ptr["XAX"+"XDX"], mm1 |
522 | - V_MOVNTQ ("(%%"XAX", %%"XDX")", "%%mm1") |
523 | + // pavgb mm0, qword ptr["XDX"] |
524 | + V_PAVGB ("%%mm0", "(%%"XDX")", "%%mm2", _ShiftMask) |
525 | + // movntq qword ptr["XAX"+"olddx"], mm0 |
526 | + ADDX" "_olddx", %%"XAX"\n\t" |
527 | + V_MOVNTQ ("(%%"XAX")", "%%mm0") |
528 | + // pavgb mm1, qword ptr["XDX"+"XCX"] |
529 | + V_PAVGB ("%%mm1", "(%%"XDX", %%"XCX")", "%%mm2", _ShiftMask) |
530 | + "addq "_dst_pitchw", %%"XDX |
531 | + // movntq qword ptr["XAX"+"olddx"], mm1 |
532 | + V_MOVNTQ ("(%%"XAX")", "%%mm1") |
533 | #else |
534 | |
535 | - // movntq qword ptr["XAX"+"XDX"], mm0 |
536 | - V_MOVNTQ ("(%%"XAX", %%"XDX")", "%%mm0") |
537 | + // movntq qword ptr["XAX"+"olddx"], mm0 |
538 | + ADDX" "_olddx", %%"XAX"\n\t" |
539 | + V_MOVNTQ ("(%%"XAX")", "%%mm0") |
540 | #endif |
541 | |
542 | - LEAX" 8(%%"XDX"), %%"XDX"\n\t" // bump offset pointer |
543 | - CMPX" "_Last8", %%"XDX"\n\t" // done with line? |
544 | + ADDX" $8, "_olddx"\n\t" // bump offset pointer |
545 | + MOVX" "_olddx", %%"XAX"\n\t" |
546 | + CMPX" "_Last8", %%"XAX"\n\t" // done with line? |
547 | "jb 1b\n\t" // y |
548 | #endif |
549 | |
550 | - MOVX" "_oldbx", %%"XBX"\n\t" |
551 | - |
552 | : /* no outputs */ |
553 | |
554 | : "m"(pBob), |
555 | @@ -85,7 +86,17 @@ |
556 | "m"(pSrc), |
557 | "m"(pSrcP), |
558 | "m"(pBobP), |
559 | - "m"(oldbx) |
560 | + "m"(olddx), |
561 | + "m"(UVMask), |
562 | + "m"(ShiftMask), |
563 | + "m"(FOURS), |
564 | + "m"(TENS), |
565 | + "m"(Max_Vals), |
566 | + "m"(Min_Vals), |
567 | + "m"(YMask), |
568 | + "m"(Max_Mov), |
569 | + "m"(ONES), |
570 | + "m"(DiffThres) |
571 | |
572 | : XAX, XCX, XDX, XSI, XDI, |
573 | #ifdef ARCH_X86 |
574 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc |
575 | =================================================================== |
576 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc |
577 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc |
578 | @@ -66,7 +66,17 @@ long dst_pitchw = dst_pitch; // local s |
579 | #define _pSrc "%5" |
580 | #define _pSrcP "%6" |
581 | #define _pBobP "%7" |
582 | -#define _oldbx "%8" |
583 | +#define _olddx "%8" |
584 | +#define _UVMask "%9" |
585 | +#define _ShiftMask "%10" |
586 | +#define _FOURS "%11" |
587 | +#define _TENS "%12" |
588 | +#define _Max_Vals "%13" |
589 | +#define _Min_Vals "%14" |
590 | +#define _YMask "%15" |
591 | +#define _Max_Mov "%16" |
592 | +#define _ONES "%17" |
593 | +#define _DiffThres "%18" |
594 | #endif |
595 | |
596 | for (y=1; y < FldHeight-1; y++) |
597 | @@ -77,75 +87,73 @@ long dst_pitchw = dst_pitch; // local s |
598 | // Loop general reg usage |
599 | // |
600 | // XAX - pBobP, then pDest |
601 | - // XBX - pBob |
602 | + // XDX - pBob |
603 | // XCX - src_pitch2 |
604 | - // XDX - current offset |
605 | + // _olddx - current offset |
606 | // XDI - prev weave pixels, 1 line up |
607 | // XSI - next weave pixels, 1 line up |
608 | |
609 | - // Save "XBX" (-fPIC) |
610 | - MOVX" %%"XBX", "_oldbx"\n\t" |
611 | - |
612 | #ifdef IS_SSE2 |
613 | |
614 | // sse2 code deleted for now |
615 | |
616 | #else |
617 | // simple bob first 8 bytes |
618 | - MOVX" "_pBob", %%"XBX"\n\t" |
619 | + MOVX" "_pBob", %%"XDX"\n\t" |
620 | MOVX" "_src_pitch2", %%"XCX"\n\t" |
621 | |
622 | #ifdef USE_VERTICAL_FILTER |
623 | - "movq (%%"XBX"), %%mm0\n\t" |
624 | - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" //, qword ptr["XBX"+"XCX"] |
625 | + "movq (%%"XDX"), %%mm0\n\t" |
626 | + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" //, qword ptr["XDX"+"XCX"] |
627 | "movq %%mm0, %%mm2\n\t" |
628 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // halfway between |
629 | - V_PAVGB ("%%mm0", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 1/4 way |
630 | - V_PAVGB ("%%mm1", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 3/4 way |
631 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // halfway between |
632 | + V_PAVGB ("%%mm0", "%%mm2", "%%mm3", _ShiftMask) // 1/4 way |
633 | + V_PAVGB ("%%mm1", "%%mm2", "%%mm3", _ShiftMask) // 3/4 way |
634 | MOVX" "_pDest", %%"XDI"\n\t" |
635 | MOVX" "_dst_pitchw", %%"XAX"\n\t" |
636 | V_MOVNTQ ("(%%"XDI")", "%%mm0") |
637 | V_MOVNTQ ("(%%"XDI", %%"XAX")", "%%mm1") // qword ptr["XDI"+"XAX"], mm1 |
638 | |
639 | // simple bob last 8 bytes |
640 | - MOVX" "_Last8", %%"XDX"\n\t" |
641 | - LEAX" (%%"XBX", %%"XDX"), %%"XSI"\n\t" // ["XBX"+"XDX"] |
642 | + MOVX" "_Last8", %%"XSI"\n\t" |
643 | + ADDX" %%"XDX", %%"XSI"\n\t" // ["XDX"+"olddx"] |
644 | "movq (%%"XSI"), %%mm0\n\t" |
645 | "movq (%%"XSI", %%"XCX"), %%mm1\n\t" // qword ptr["XSI"+"XCX"] |
646 | "movq %%mm0, %%mm2\n\t" |
647 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // halfway between |
648 | - V_PAVGB ("%%mm0", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 1/4 way |
649 | - V_PAVGB ("%%mm1", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 3/4 way |
650 | - ADDX" %%"XDX", %%"XDI"\n\t" // last 8 bytes of dest |
651 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // halfway between |
652 | + V_PAVGB ("%%mm0", "%%mm2", "%%mm3", _ShiftMask) // 1/4 way |
653 | + V_PAVGB ("%%mm1", "%%mm2", "%%mm3", _ShiftMask) // 3/4 way |
654 | + ADDX" "_olddx", %%"XDI"\n\t" // last 8 bytes of dest |
655 | V_MOVNTQ ("%%"XDI"", "%%mm0") |
656 | V_MOVNTQ ("(%%"XDI", %%"XAX")", "%%mm1") // qword ptr["XDI"+"XAX"], mm1) |
657 | |
658 | #else |
659 | - "movq (%%"XBX"), %%mm0\n\t" |
660 | - // pavgb mm0, qword ptr["XBX"+"XCX"] |
661 | - V_PAVGB ("%%mm0", "(%%"XBX", %%"XCX")", "%%mm2", MANGLE(ShiftMask)) // qword ptr["XBX"+"XCX"], mm2, ShiftMask) |
662 | + "movq (%%"XDX"), %%mm0\n\t" |
663 | + // pavgb mm0, qword ptr["XDX"+"XCX"] |
664 | + V_PAVGB ("%%mm0", "(%%"XDX", %%"XCX")", "%%mm2", _ShiftMask) // qword ptr["XDX"+"XCX"], mm2, ShiftMask) |
665 | MOVX" "_pDest", %%"XDI"\n\t" |
666 | V_MOVNTQ ("(%%"XDI")", "%%mm0") |
667 | |
668 | // simple bob last 8 bytes |
669 | - MOVX" "_Last8", %%"XDX"\n\t" |
670 | - LEAX" (%%"XBX", %%"XDX"), %%"XSI"\n\t" //"XSI", ["XBX"+"XDX"] |
671 | + MOVX" "_Last8", %%"XSI"\n\t" |
672 | + ADDX" %%"XDX", %%"XSI"\n\t" //"XSI", ["XDX"+"olddx"] |
673 | "movq (%%"XSI"), %%mm0\n\t" |
674 | // pavgb mm0, qword ptr["XSI"+"XCX"] |
675 | - V_PAVGB ("%%mm0", "(%%"XSI", %%"XCX")", "%%mm2", MANGLE(ShiftMask)) // qword ptr["XSI"+"XCX"], mm2, ShiftMask) |
676 | - V_MOVNTQ ("(%%"XDI", %%"XDX")", "%%mm0") // qword ptr["XDI"+"XDX"], mm0) |
677 | + V_PAVGB ("%%mm0", "(%%"XSI", %%"XCX")", "%%mm2", _ShiftMask) // qword ptr["XSI"+"XCX"], mm2, ShiftMask) |
678 | + ADDX" "_olddx", %%"XDI"\n\t" |
679 | + V_MOVNTQ ("(%%"XDI")", "%%mm0") // qword ptr["XDI"+"olddx"], mm0) |
680 | #endif |
681 | // now loop and get the middle qwords |
682 | MOVX" "_pSrc", %%"XSI"\n\t" |
683 | MOVX" "_pSrcP", %%"XDI"\n\t" |
684 | - MOVX" $8, %%"XDX"\n\t" // curr offset longo all lines |
685 | + MOVX" $8, "_olddx"\n\t" // curr offset longo all lines |
686 | |
687 | "1:\n\t" |
688 | MOVX" "_pBobP", %%"XAX"\n\t" |
689 | ADDX" $8, %%"XDI"\n\t" |
690 | ADDX" $8, %%"XSI"\n\t" |
691 | - ADDX" $8, %%"XBX"\n\t" |
692 | - ADDX" %%"XDX", %%"XAX"\n\t" |
693 | + ADDX" $8, %%"XDX"\n\t" |
694 | + ADDX" "_olddx", %%"XAX"\n\t" |
695 | |
696 | #ifdef USE_STRANGE_BOB |
697 | #include "StrangeBob.inc" |
698 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc |
699 | =================================================================== |
700 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc |
701 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc |
702 | @@ -31,22 +31,22 @@ |
703 | "pxor %%mm6, %%mm6\n\t" |
704 | "pxor %%mm7, %%mm7\n\t" |
705 | |
706 | - "movq -2(%%"XBX"), %%mm0\n\t" // value a from top left |
707 | - "movq -4(%%"XBX", %%"XCX"), %%mm1\n\t" // value m from bottom right |
708 | + "movq -2(%%"XDX"), %%mm0\n\t" // value a from top left |
709 | + "movq -4(%%"XDX", %%"XCX"), %%mm1\n\t" // value m from bottom right |
710 | |
711 | "movq %%mm0, %%mm3\n\t" |
712 | "psubusb %%mm1, %%mm3\n\t" |
713 | "psubusb %%mm0, %%mm1\n\t" |
714 | "por %%mm1, %%mm3\n\t" // abs(a,m) |
715 | |
716 | - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(a,m) > Thres else 0 |
717 | + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(a,m) > Thres else 0 |
718 | "pxor %%mm4, %%mm4\n\t" |
719 | "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(a,m) < Thres, else 00 |
720 | "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(a,m) > Thres, else 00 |
721 | |
722 | |
723 | - "movq -4(%%"XBX"), %%mm0\n\t" // value j |
724 | - "movq 4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n |
725 | + "movq -4(%%"XDX"), %%mm0\n\t" // value j |
726 | + "movq 4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n |
727 | "movq %%mm0, %%mm2\n\t" |
728 | "pavgb %%mm1, %%mm2\n\t" // avg(j,n) |
729 | "movq %%mm0, %%mm3\n\t" |
730 | @@ -55,7 +55,7 @@ |
731 | "por %%mm1, %%mm0\n\t" // abs(j,n) |
732 | |
733 | "movq %%mm0, %%mm1\n\t" |
734 | - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(j,n) > Thres else 0 |
735 | + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(j,n) > Thres else 0 |
736 | "pxor %%mm3, %%mm3\n\t" |
737 | "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(j,n) < Thres, else 00 |
738 | |
739 | @@ -75,31 +75,31 @@ |
740 | "por %%mm0, %%mm7\n\t" |
741 | |
742 | // k & m |
743 | - "movq 2(%%"XBX"), %%mm0\n\t" // value c from top left |
744 | - "movq 4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n from bottom right |
745 | + "movq 2(%%"XDX"), %%mm0\n\t" // value c from top left |
746 | + "movq 4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n from bottom right |
747 | |
748 | "movq %%mm0, %%mm3\n\t" |
749 | "psubusb %%mm1, %%mm3\n\t" |
750 | "psubusb %%mm0, %%mm1\n\t" |
751 | "por %%mm1, %%mm3\n\t" // abs(c,n) |
752 | |
753 | - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(c,n) > Thres else 0 |
754 | + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(c,n) > Thres else 0 |
755 | "pxor %%mm4, %%mm4\n\t" |
756 | "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(c,n) < Thres, else 00 |
757 | "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(c,n) > Thres, else 00 |
758 | |
759 | |
760 | - "movq 4(%%"XBX"), %%mm0\n\t" // value k |
761 | - "movq -4(%%"XBX", %%"XCX"), %%mm1\n\t" // value m |
762 | + "movq 4(%%"XDX"), %%mm0\n\t" // value k |
763 | + "movq -4(%%"XDX", %%"XCX"), %%mm1\n\t" // value m |
764 | "movq %%mm0, %%mm2\n\t" |
765 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(k,m) |
766 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(k,m) |
767 | "movq %%mm0, %%mm3\n\t" |
768 | "psubusb %%mm1, %%mm0\n\t" |
769 | "psubusb %%mm3, %%mm1\n\t" |
770 | "por %%mm1, %%mm0\n\t" // abs(k,m) |
771 | |
772 | "movq %%mm0, %%mm1\n\t" |
773 | - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(k,m) > Thres else 0 |
774 | + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(k,m) > Thres else 0 |
775 | "pxor %%mm3, %%mm3\n\t" |
776 | "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(k,m) < Thres, else 00 |
777 | |
778 | @@ -120,30 +120,30 @@ |
779 | |
780 | |
781 | // c & d |
782 | - "movq (%%"XBX"), %%mm0\n\t" // value b from top left |
783 | - "movq 2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f from bottom right |
784 | + "movq (%%"XDX"), %%mm0\n\t" // value b from top left |
785 | + "movq 2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f from bottom right |
786 | |
787 | "movq %%mm0, %%mm3\n\t" |
788 | "psubusb %%mm1, %%mm3\n\t" |
789 | "psubusb %%mm0, %%mm1\n\t" |
790 | "por %%mm1, %%mm3\n\t" // abs(b,f) |
791 | |
792 | - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(b,f) > Thres else 0 |
793 | + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(b,f) > Thres else 0 |
794 | "pxor %%mm4, %%mm4\n\t" |
795 | "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(b,f) < Thres, else 00 |
796 | "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(b,f) > Thres, else 00 |
797 | |
798 | - "movq 2(%%"XBX"), %%mm0\n\t" // value c |
799 | - "movq -2(%%"XBX", %%"XCX"), %%mm1\n\t" // value d |
800 | + "movq 2(%%"XDX"), %%mm0\n\t" // value c |
801 | + "movq -2(%%"XDX", %%"XCX"), %%mm1\n\t" // value d |
802 | "movq %%mm0, %%mm2\n\t" |
803 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(c,d) |
804 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(c,d) |
805 | "movq %%mm0, %%mm3\n\t" |
806 | "psubusb %%mm1, %%mm0\n\t" |
807 | "psubusb %%mm3, %%mm1\n\t" |
808 | "por %%mm1, %%mm0\n\t" // abs(c,d) |
809 | |
810 | "movq %%mm0, %%mm1\n\t" |
811 | - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(c,d) > Thres else 0 |
812 | + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(c,d) > Thres else 0 |
813 | "pxor %%mm3, %%mm3\n\t" |
814 | "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(c,d) < Thres, else 00 |
815 | |
816 | @@ -163,30 +163,30 @@ |
817 | "por %%mm0, %%mm7\n\t" |
818 | |
819 | // a & f |
820 | - "movq (%%"XBX"), %%mm0\n\t" // value b from top left |
821 | - "movq -2(%%"XBX", %%"XCX"), %%mm1\n\t" // value d from bottom right |
822 | + "movq (%%"XDX"), %%mm0\n\t" // value b from top left |
823 | + "movq -2(%%"XDX", %%"XCX"), %%mm1\n\t" // value d from bottom right |
824 | |
825 | "movq %%mm0, %%mm3\n\t" |
826 | "psubusb %%mm1, %%mm3\n\t" |
827 | "psubusb %%mm0, %%mm1\n\t" |
828 | "por %%mm1, %%mm3\n\t" // abs(b,d) |
829 | |
830 | - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(b,d) > Thres else 0 |
831 | + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(b,d) > Thres else 0 |
832 | "pxor %%mm4, %%mm4\n\t" |
833 | "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(b,d) < Thres, else 00 |
834 | "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(b,d) > Thres, else 00 |
835 | |
836 | - "movq -2(%%"XBX"), %%mm0\n\t" // value a |
837 | - "movq 2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f |
838 | + "movq -2(%%"XDX"), %%mm0\n\t" // value a |
839 | + "movq 2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f |
840 | "movq %%mm0, %%mm2\n\t" |
841 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(a,f) |
842 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(a,f) |
843 | "movq %%mm0, %%mm3\n\t" |
844 | "psubusb %%mm1, %%mm0\n\t" |
845 | "psubusb %%mm3, %%mm1\n\t" |
846 | "por %%mm1, %%mm0\n\t" // abs(a,f) |
847 | |
848 | "movq %%mm0, %%mm1\n\t" |
849 | - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(a,f) > Thres else 0 |
850 | + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(a,f) > Thres else 0 |
851 | "pxor %%mm3, %%mm3\n\t" |
852 | "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(a,f) < Thres, else 00 |
853 | |
854 | @@ -205,22 +205,22 @@ |
855 | "por %%mm2, %%mm6\n\t" |
856 | "por %%mm0, %%mm7\n\t" |
857 | |
858 | - "pand "MANGLE(YMask)", %%mm5\n\t" // mask out chroma from here |
859 | - "pand "MANGLE(YMask)", %%mm6\n\t" // mask out chroma from here |
860 | - "pand "MANGLE(YMask)", %%mm7\n\t" // mask out chroma from here |
861 | + "pand "_YMask", %%mm5\n\t" // mask out chroma from here |
862 | + "pand "_YMask", %%mm6\n\t" // mask out chroma from here |
863 | + "pand "_YMask", %%mm7\n\t" // mask out chroma from here |
864 | |
865 | // b,e |
866 | - "movq (%%"XBX"), %%mm0\n\t" // value b from top |
867 | - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" // value e from bottom |
868 | + "movq (%%"XDX"), %%mm0\n\t" // value b from top |
869 | + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" // value e from bottom |
870 | "movq %%mm0, %%mm2\n\t" |
871 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(b,e) |
872 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(b,e) |
873 | "movq %%mm0, %%mm3\n\t" |
874 | "psubusb %%mm1, %%mm0\n\t" |
875 | "psubusb %%mm3, %%mm1\n\t" |
876 | "por %%mm1, %%mm0\n\t" // abs(b,e) |
877 | |
878 | "movq %%mm0, %%mm1\n\t" |
879 | - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(b,e) > Thres else 0 |
880 | + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(b,e) > Thres else 0 |
881 | "pxor %%mm3, %%mm3\n\t" |
882 | "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(b,e) < Thres, else 00 |
883 | |
884 | @@ -238,8 +238,8 @@ |
885 | "por %%mm0, %%mm7\n\t" |
886 | |
887 | // bob in any leftovers |
888 | - "movq (%%"XBX"), %%mm0\n\t" // value b from top |
889 | - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" // value e from bottom |
890 | + "movq (%%"XDX"), %%mm0\n\t" // value b from top |
891 | + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" // value e from bottom |
892 | |
893 | |
894 | // We will also calc here the max/min values to later limit comb |
895 | @@ -271,7 +271,7 @@ |
896 | "por %%mm2, %%mm3\n\t" // abs diff |
897 | // pmaxub %%mm3, %%mm4 // top or bottom pixel moved most |
898 | V_PMAXUB ("%%mm3", "%%mm4") // top or bottom pixel moved most |
899 | - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // moved more than allowed? or goes to 0? |
900 | + "psubusb "_DiffThres", %%mm3\n\t" // moved more than allowed? or goes to 0? |
901 | "pxor %%mm4, %%mm4\n\t" |
902 | "pcmpeqb %%mm4, %%mm3\n\t" // now ff where low motion, else high motion |
903 | |
904 | @@ -283,19 +283,19 @@ |
905 | V_PMAXUB ("%%mm6", "%%mm2") |
906 | |
907 | "psubusb %%mm3, %%mm2\n\t" // maybe decrease it to 0000.. if no surround motion |
908 | -// "movq %%mm2, "MANGLE(Min_Vals)"\n\t" |
909 | +// "movq %%mm2, "_Min_Vals"\n\t" |
910 | |
911 | "movq %%mm0, %%mm2\n\t" |
912 | V_PMAXUB ("%%mm2", "%%mm1") |
913 | // pminub %%mm6, %%mm2 // clip our current results so far to be below this |
914 | V_PMINUB ("%%mm6", "%%mm2", "%%mm4") |
915 | "paddusb %%mm3, %%mm2\n\t" // maybe increase it to ffffff if no surround motion |
916 | -// "movq %%mm2, "MANGLE(Max_Vals)"\n\t" |
917 | +// "movq %%mm2, "_Max_Vals"\n\t" |
918 | #endif |
919 | |
920 | "movq %%mm0, %%mm2\n\t" |
921 | // pavgb %%mm2, %%mm1 // avg(b,e) |
922 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(b,e) |
923 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(b,e) |
924 | |
925 | "movq %%mm0, %%mm3\n\t" |
926 | "psubusb %%mm1, %%mm3\n\t" |
927 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc |
928 | =================================================================== |
929 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc |
930 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc |
931 | @@ -33,8 +33,8 @@ static const int64_t __attribute__((__us |
932 | static const int64_t __attribute__((__used__)) FOURS = 0x0404040404040404ull; |
933 | static const int64_t __attribute__((__used__)) ONES = 0x0101010101010101ull; |
934 | static const int64_t __attribute__((__used__)) ShiftMask = 0xfefffefffefffeffull; |
935 | -//static int64_t Min_Vals = 0x0000000000000000ull; |
936 | -//static int64_t Max_Vals = 0x0000000000000000ull; |
937 | +static int64_t Min_Vals = 0x0000000000000000ull; |
938 | +static int64_t Max_Vals = 0x0000000000000000ull; |
939 | #endif |
940 | |
941 | #ifndef TopFirst |
942 | @@ -69,7 +69,7 @@ static void FUNCT_NAME(uint8_t *output, |
943 | int rowsize; |
944 | int FldHeight; |
945 | int stride = (width*2); |
946 | - long oldbx; |
947 | + long olddx; |
948 | |
949 | |
950 | src_pitch = stride*2; |
951 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc |
952 | =================================================================== |
953 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc |
954 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc |
955 | @@ -14,22 +14,22 @@ |
956 | // selected for the smallest of abs(a,f), abs(c,d), or abs(b,e), etc. |
957 | |
958 | // a,f |
959 | - "movq -2(%%"XBX"), %%mm0\n\t" // value a from top left |
960 | - "movq 2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f from bottom right |
961 | + "movq -2(%%"XDX"), %%mm0\n\t" // value a from top left |
962 | + "movq 2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f from bottom right |
963 | "movq %%mm0, %%mm6\n\t" |
964 | // pavgb %%mm6, %%mm1 // avg(a,f), also best so far |
965 | - V_PAVGB ("%%mm6", "%%mm1", "%%mm7", MANGLE(ShiftMask)) // avg(a,f), also best so far |
966 | + V_PAVGB ("%%mm6", "%%mm1", "%%mm7", _ShiftMask) // avg(a,f), also best so far |
967 | "movq %%mm0, %%mm7\n\t" |
968 | "psubusb %%mm1, %%mm7\n\t" |
969 | "psubusb %%mm0, %%mm1\n\t" |
970 | "por %%mm1, %%mm7\n\t" // abs diff, also best so far |
971 | |
972 | // c,d |
973 | - "movq 2(%%"XBX"), %%mm0\n\t" // value a from top left |
974 | - "movq -2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f from bottom right |
975 | + "movq 2(%%"XDX"), %%mm0\n\t" // value a from top left |
976 | + "movq -2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f from bottom right |
977 | "movq %%mm0, %%mm2\n\t" |
978 | // pavgb %%mm2, %%mm1 // avg(c,d) |
979 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(c,d) |
980 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(c,d) |
981 | "movq %%mm0, %%mm3\n\t" |
982 | "psubusb %%mm1, %%mm3\n\t" |
983 | "psubusb %%mm0, %%mm1\n\t" |
984 | @@ -49,15 +49,15 @@ |
985 | |
986 | "por %%mm2, %%mm6\n\t" // and merge new & old vals keeping best |
987 | "por %%mm1, %%mm7\n\t" |
988 | - "por "MANGLE(UVMask)", %%mm7\n\t" // but we know chroma is worthless so far |
989 | - "pand "MANGLE(YMask)", %%mm5\n\t" // mask out chroma from here also |
990 | + "por "_UVMask", %%mm7\n\t" // but we know chroma is worthless so far |
991 | + "pand "_YMask", %%mm5\n\t" // mask out chroma from here also |
992 | |
993 | // j,n |
994 | - "movq -4(%%"XBX"), %%mm0\n\t" // value j from top left |
995 | - "movq 4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n from bottom right |
996 | + "movq -4(%%"XDX"), %%mm0\n\t" // value j from top left |
997 | + "movq 4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n from bottom right |
998 | "movq %%mm0, %%mm2\n\t" |
999 | // pavgb %%mm2, %%mm1 // avg(j,n) |
1000 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(j,n) |
1001 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(j,n) |
1002 | "movq %%mm0, %%mm3\n\t" |
1003 | "psubusb %%mm1, %%mm3\n\t" |
1004 | "psubusb %%mm0, %%mm1\n\t" |
1005 | @@ -79,11 +79,11 @@ |
1006 | "por %%mm1, %%mm7\n\t" // " |
1007 | |
1008 | // k, m |
1009 | - "movq 4(%%"XBX"), %%mm0\n\t" // value k from top right |
1010 | - "movq -4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n from bottom left |
1011 | + "movq 4(%%"XDX"), %%mm0\n\t" // value k from top right |
1012 | + "movq -4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n from bottom left |
1013 | "movq %%mm0, %%mm4\n\t" |
1014 | // pavgb %%mm4, %%mm1 // avg(k,m) |
1015 | - V_PAVGB ("%%mm4", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(k,m) |
1016 | + V_PAVGB ("%%mm4", "%%mm1", "%%mm3", _ShiftMask) // avg(k,m) |
1017 | |
1018 | "movq %%mm0, %%mm3\n\t" |
1019 | "psubusb %%mm1, %%mm3\n\t" |
1020 | @@ -108,8 +108,8 @@ |
1021 | "por %%mm1, %%mm7\n\t" // " |
1022 | |
1023 | // b,e |
1024 | - "movq (%%"XBX"), %%mm0\n\t" // value b from top |
1025 | - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" // value e from bottom |
1026 | + "movq (%%"XDX"), %%mm0\n\t" // value b from top |
1027 | + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" // value e from bottom |
1028 | |
1029 | // We will also calc here the max/min values to later limit comb |
1030 | // so the max excursion will not exceed the Max_Comb constant |
1031 | @@ -140,7 +140,7 @@ |
1032 | "por %%mm2, %%mm3\n\t" // abs diff |
1033 | // pmaxub %%mm3, %%mm4 // top or bottom pixel moved most |
1034 | V_PMAXUB ("%%mm3", "%%mm4") // top or bottom pixel moved most |
1035 | - "psubusb "MANGLE(Max_Mov)", %%mm3\n\t" // moved more than allowed? or goes to 0? |
1036 | + "psubusb "_Max_Mov", %%mm3\n\t" // moved more than allowed? or goes to 0? |
1037 | "pxor %%mm4, %%mm4\n\t" |
1038 | "pcmpeqb %%mm4, %%mm3\n\t" // now ff where low motion, else high motion |
1039 | |
1040 | @@ -152,19 +152,19 @@ |
1041 | V_PMAXUB ("%%mm6", "%%mm2") |
1042 | |
1043 | "psubusb %%mm3, %%mm2\n\t" // maybe decrease it to 0000.. if no surround motion |
1044 | -// "movq %%mm2, "MANGLE(Min_Vals)"\n\t" |
1045 | +// "movq %%mm2, "_Min_Vals"\n\t" |
1046 | |
1047 | "movq %%mm0, %%mm2\n\t" |
1048 | V_PMAXUB ("%%mm2", "%%mm1") |
1049 | // pminub %%mm6, %%mm2 // clip our current results so far to be below this |
1050 | V_PMINUB ("%%mm6", "%%mm2", "%%mm4") |
1051 | "paddusb %%mm3, %%mm2\n\t" // maybe increase it to ffffff if no surround motion |
1052 | -// "movq %%mm2, "MANGLE(Max_Vals)"\n\t" |
1053 | +// "movq %%mm2, "_Max_Vals"\n\t" |
1054 | #endif |
1055 | |
1056 | "movq %%mm0, %%mm2\n\t" |
1057 | // pavgb %%mm2, %%mm1 // avg(b,e) |
1058 | - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(b,e) |
1059 | + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(b,e) |
1060 | |
1061 | "movq %%mm0, %%mm3\n\t" |
1062 | "psubusb %%mm1, %%mm3\n\t" |
1063 | Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h |
1064 | =================================================================== |
1065 | --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h |
1066 | +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h |
1067 | @@ -114,7 +114,7 @@ |
1068 | "por %%xmm0, %%xmm5\n\t" /* and merge new & old vals */ \ |
1069 | "por %%xmm2, %%xmm7\n\t" |
1070 | |
1071 | -#define RESET_CHROMA "por "MANGLE(UVMask)", %%xmm7\n\t" |
1072 | +#define RESET_CHROMA "por "_UVMask", %%xmm7\n\t" |
1073 | |
1074 | #else // ifdef IS_SSE2 |
1075 | |
1076 | @@ -126,7 +126,7 @@ |
1077 | "psubusb %%mm1, %%mm2\n\t" \ |
1078 | "psubusb %%mm0, %%mm3\n\t" \ |
1079 | "por %%mm3, %%mm2\n\t" \ |
1080 | - V_PAVGB ("%%mm0", "%%mm1", "%%mm3", MANGLE(ShiftMask)) /* avg of 2 pixels */ \ |
1081 | + V_PAVGB ("%%mm0", "%%mm1", "%%mm3", _ShiftMask) /* avg of 2 pixels */ \ |
1082 | "movq %%mm2, %%mm3\n\t" /* another copy of our our weights */ \ |
1083 | "pxor %%mm1, %%mm1\n\t" \ |
1084 | "psubusb %%mm7, %%mm3\n\t" /* nonzero where old weights lower, else 0 */ \ |
1085 | @@ -144,14 +144,14 @@ |
1086 | "movq "PADDR2A", %%mm1\n\t" /* our pixel2 value */ \ |
1087 | "movq "PADDR1B", %%mm2\n\t" /* our 4 pixels */ \ |
1088 | "movq "PADDR2B", %%mm3\n\t" /* our pixel2 value */ \ |
1089 | - V_PAVGB("%%mm0", "%%mm2", "%%mm2", MANGLE(ShiftMask)) \ |
1090 | - V_PAVGB("%%mm1", "%%mm3", "%%mm3", MANGLE(ShiftMask)) \ |
1091 | + V_PAVGB("%%mm0", "%%mm2", "%%mm2", _ShiftMask) \ |
1092 | + V_PAVGB("%%mm1", "%%mm3", "%%mm3", _ShiftMask) \ |
1093 | "movq %%mm0, %%mm2\n\t" /* another copy of our pixel1 value */ \ |
1094 | "movq %%mm1, %%mm3\n\t" /* another copy of our pixel1 value */ \ |
1095 | "psubusb %%mm1, %%mm2\n\t" \ |
1096 | "psubusb %%mm0, %%mm3\n\t" \ |
1097 | "por %%mm3, %%mm2\n\t" \ |
1098 | - V_PAVGB("%%mm0", "%%mm1", "%%mm3", MANGLE(ShiftMask)) /* avg of 2 pixels */ \ |
1099 | + V_PAVGB("%%mm0", "%%mm1", "%%mm3", _ShiftMask) /* avg of 2 pixels */ \ |
1100 | "movq %%mm2, %%mm3\n\t" /* another copy of our our weights */ \ |
1101 | "pxor %%mm1, %%mm1\n\t" \ |
1102 | "psubusb %%mm7, %%mm3\n\t" /* nonzero where old weights lower, else 0 */ \ |
1103 | @@ -164,7 +164,7 @@ |
1104 | "por %%mm0, %%mm5\n\t" /* and merge new & old vals */ \ |
1105 | "por %%mm2, %%mm7\n\t" |
1106 | |
1107 | -#define RESET_CHROMA "por "MANGLE(UVMask)", %%mm7\n\t" |
1108 | +#define RESET_CHROMA "por "_UVMask", %%mm7\n\t" |
1109 | |
1110 | #endif |
1111 |