summaryrefslogtreecommitdiff
path: root/multimedia/xine-lib/patches/patch-av
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/xine-lib/patches/patch-av')
-rw-r--r--multimedia/xine-lib/patches/patch-av53
1 files changed, 53 insertions, 0 deletions
diff --git a/multimedia/xine-lib/patches/patch-av b/multimedia/xine-lib/patches/patch-av
new file mode 100644
index 00000000000..65b1c43eca6
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-av
@@ -0,0 +1,53 @@
+$NetBSD: patch-av,v 1.10 2012/07/02 16:27:11 drochner Exp $
+
+--- src/post/deinterlace/plugins/greedy2frame_template_sse2.c.orig 2012-06-26 15:57:44.000000000 +0000
++++ src/post/deinterlace/plugins/greedy2frame_template_sse2.c
+@@ -170,10 +170,10 @@ static void DeinterlaceGreedy2Frame_SSE2
+ * See above for a description of the algorithm.
+ * weave if (weave(M) AND (weave(T) OR weave(B)))
+ */
+- "movdqa (%3), %%xmm1 \n\t" /* xmm1 = T1 */
+- "movdqa (%4), %%xmm0 \n\t" /* xmm0 = T0 */
+- "movdqa (%q5,%3), %%xmm3 \n\t" /* xmm3 = B1 */
+- "movdqa (%q5,%4), %%xmm2 \n\t" /* xmm2 = B0 */
++ "movdqa (%2), %%xmm1 \n\t" /* xmm1 = T1 */
++ "movdqa (%3), %%xmm0 \n\t" /* xmm0 = T0 */
++ "movdqa (%q4,%2), %%xmm3 \n\t" /* xmm3 = B1 */
++ "movdqa (%q4,%3), %%xmm2 \n\t" /* xmm2 = B0 */
+
+ /* calculate |T1-T0| keep T1 put result in xmm5 */
+ "movdqa %%xmm1, %%xmm5 \n\t"
+@@ -181,20 +181,19 @@ static void DeinterlaceGreedy2Frame_SSE2
+ "psubusb %%xmm1, %%xmm0 \n\t"
+ "por %%xmm0, %%xmm5 \n\t"
+
+- "movdqa (%0), %%xmm0 \n\t" /* xmm0 = M1 */
+ /* T1 is data for line to copy */
+- "movntdq %%xmm1, %2 \n\t"
++ "movntdq %%xmm1, %1 \n\t"
+
+ /* if |T1-T0| > Threshold we want 0 else dword minus one */
+ "psrlw $1, %%xmm5 \n\t"
+ "pand %%xmm6, %%xmm5 \n\t"
+- "pcmpgtb %1, %%xmm5 \n\t"
++ "pcmpgtb %0, %%xmm5 \n\t"
+ "pcmpeqd %%xmm7, %%xmm5 \n\t"
+
+- "prefetcht0 64(%q5,%3) \n\t"
+- "prefetcht0 64(%q5,%4) \n\t"
++ "prefetcht0 64(%q4,%3) \n\t"
++ "prefetcht0 64(%q4,%4) \n\t"
+ :
+- : "r" (M1), "m" (GreedyTwoFrameThreshold128),
++ : "m" (GreedyTwoFrameThreshold128),
+ "m" (*Destc), "r" (T1), "r" (T0), "r" (Pitch) );
+
+ asm volatile (
+@@ -204,6 +203,7 @@ static void DeinterlaceGreedy2Frame_SSE2
+ "psubusb %%xmm3, %%xmm2 \n\t"
+ "por %%xmm2, %%xmm4 \n\t"
+
++ "movdqa (%0), %%xmm0 \n\t" /* xmm0 = M1 */
+ "movdqa (%1), %%xmm2 \n\t" /* xmm2 = M0 */
+
+ /* if |B1-B0| > Threshold we want 0 else dword minus one */