Magellan Linux

Contents of /trunk/xine-lib/patches/xine-lib-1.1.1-textrels.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (show annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years 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