[XviD-devel] Changes to colorspace_yuyv_mmx.asm

carlo.bramix carlo.bramix at libero.it
Wed Aug 3 11:16:49 CEST 2005


Hello,
I did some changes to colorspace_yuyv_mmx.asm.
Here they are:
1) Into macro YUYV_TO_YV12, it shouldn't be required to mask with MM7 if we are working with YUYV colorspace.
The masking is actually done by PSRLW instruction, since it already clears the upper byte of the MMX register.

2) Into macro YV12_TO_YUYVI, I think it's better to recalculate expected value for ESI and EDI instead of doing PUSH/POP on them.

Sincerely,

Carlo Bramini.



Index: src/image/x86_asm/colorspace_yuyv_mmx.asm
===================================================================
RCS file: /xvid/xvidcore/src/image/x86_asm/colorspace_yuyv_mmx.asm,v
retrieving revision 1.6
diff -u -r1.6 colorspace_yuyv_mmx.asm
--- src/image/x86_asm/colorspace_yuyv_mmx.asm	29 Aug 2004 10:02:38 -0000	1.6
+++ src/image/x86_asm/colorspace_yuyv_mmx.asm	3 Aug 2005 08:50:32 -0000
@@ -94,9 +94,10 @@
 %if %1 == 0         ; yuyv
   psrlw mm4, 8
   psrlw mm5, 8
-%endif
+%else
   pand mm4, mm7
   pand mm5, mm7
+%endif
   paddw mm4, mm5
 
   movq mm5, mm1
@@ -104,9 +105,10 @@
 %if %1 == 0         ; yuyv
   psrlw mm5, 8
   psrlw mm6, 8
-%endif
+%else
   pand mm5, mm7
   pand mm6, mm7
+%endif
   paddw mm5, mm6
   paddw mm4, [mmx_one]      ; +1 rounding
   paddw mm5, [mmx_one]      ;
@@ -129,10 +131,11 @@
 %if %1 == 0             ; yuyv
   psrlw mm4, 8
   psrlw mm5, 8
-%endif
+%else
   pand mm4, mm7
   pand mm5, mm7
 %endif
+%endif
 ;--------------------------------------------------------------------
 
     ; write y-component
@@ -141,11 +144,12 @@
   psrlw mm1, 8
   psrlw mm2, 8
   psrlw mm3, 8
-%endif
+%else
   pand mm0, mm7
   pand mm1, mm7
   pand mm2, mm7
   pand mm3, mm7
+%endif
   packuswb mm0, mm1
   packuswb mm2, mm3
 
@@ -247,8 +251,6 @@
   movq [edi+edx], mm6
   movq [edi+edx+8], mm7
 
-  push esi
-  push edi
   add esi, eax
   add edi, edx
   movq mm4, [esi+eax]           ; [yyyy|yyyy] ; y row 2
@@ -263,8 +265,8 @@
   movq [edi+edx+8], mm5
   movq [edi+2*edx], mm6
   movq [edi+2*edx+8], mm7
-  pop edi
-  pop esi
+  sub esi, eax
+  sub edi, edx
 %else           ; UYVY
   movq mm2, [esi]               ; [yyyy|yyyy] ; y row 0
   movq mm3, [esi+eax]           ; [yyyy|yyyy] ; y row 1
@@ -281,8 +283,6 @@
   movq [edi+edx], mm6
   movq [edi+edx+8], mm7
 
-  push esi
-  push edi
   add esi, eax
   add edi, edx
   movq mm2, [esi+eax]           ; [yyyy|yyyy] ; y row 2
@@ -299,8 +299,8 @@
   movq [edi+edx+8], mm5
   movq [edi+2*edx], mm6
   movq [edi+2*edx+8], mm7
-  pop edi
-  pop esi
+  sub esi, eax
+  sub edi, edx
 %endif
 %endmacro
 




____________________________________________________________
Libero Flat, sempre a 4 Mega a 19,95 euro al mese! 
Abbonati subito su http://www.libero.it





More information about the XviD-devel mailing list