[Mplayer-cvslog] CVS: main/postproc swscale.c,1.26,1.27

Michael Niedermayer michael at mplayer.dev.hu
Tue Oct 30 21:32:04 CET 2001


Update of /cvsroot/mplayer/main/postproc
In directory mplayer:/var/tmp.root/cvs-serv13831

Modified Files:
	swscale.c 
Log Message:
bugfixes
small speedup for the non x86 stuff


Index: swscale.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/swscale.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- swscale.c	29 Oct 2001 19:54:22 -0000	1.26
+++ swscale.c	30 Oct 2001 20:30:24 -0000	1.27
@@ -33,6 +33,7 @@
 
 TODO
 more intelligent missalignment avoidance for the horizontal scaler
+bicubic scaler
 */
 
 #define ABS(a) ((a) > 0 ? (a) : (-(a)))
@@ -912,7 +913,6 @@
       unsigned int xpos=0;
       // *** horizontal scale Y line to temp buffer
 #ifdef ARCH_X86
-
 #ifdef HAVE_MMX2
 	if(canMMX2BeUsed)
 	{
@@ -1012,7 +1012,7 @@
       for(i=0;i<dstWidth;i++){
 	register unsigned int xx=xpos>>16;
         register unsigned int xalpha=(xpos&0xFFFF)>>9;
-	dst[i]=(src[xx]*(xalpha^127)+src[xx+1]*xalpha);
+	dst[i]= (src[xx]<<7) + (src[xx+1] - src[xx])*xalpha;
 	xpos+=xInc;
       }
 #endif
@@ -1068,8 +1068,6 @@
 FUNNYUVCODE
 FUNNYUVCODE
 FUNNYUVCODE
-
-
 		"xorl %%eax, %%eax		\n\t" // i
 		"movl %6, %%esi			\n\t" // src
 		"movl %1, %%edi			\n\t" // buf1
@@ -1143,6 +1141,10 @@
           register unsigned int xalpha=(xpos&0xFFFF)>>9;
 	  dst[i]=(src1[xx]*(xalpha^127)+src1[xx+1]*xalpha);
 	  dst[i+2048]=(src2[xx]*(xalpha^127)+src2[xx+1]*xalpha);
+/* slower
+	  dst[i]= (src1[xx]<<7) + (src1[xx+1] - src1[xx])*xalpha;
+	  dst[i+2048]=(src2[xx]<<7) + (src2[xx+1] - src2[xx])*xalpha;
+*/
 	  xpos+=xInc;
       }
 #endif
@@ -1195,8 +1197,8 @@
 if(canMMX2BeUsed) 	s_xinc+= 20;
 else			s_xinc = ((srcWidth-2)<<16)/(dstw-2) - 20;
 
-if(fullUVIpol && !dstbpp==12) 	s_xinc2= s_xinc>>1;
-else				s_xinc2= s_xinc;
+if(fullUVIpol && !(dstbpp==12)) 	s_xinc2= s_xinc>>1;
+else					s_xinc2= s_xinc;
   // force calculation of the horizontal interpolation of the first line
 
   if(y==0){
@@ -1440,7 +1442,7 @@
 
 #ifdef HAVE_MMX
 	__asm __volatile(SFENCE:::"memory");
-	__asm __volatile(EMMS);
+	__asm __volatile(EMMS:::"memory");
 #endif
 }
 




More information about the MPlayer-cvslog mailing list