diff options
Diffstat (limited to 'multimedia/xine-lib/patches/patch-av')
-rw-r--r-- | multimedia/xine-lib/patches/patch-av | 53 |
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 */ |