[Mplayer-cvslog] CVS: main/postproc postprocess.c,1.76,1.77 postprocess_template.c,1.72,1.73
Richard Felker CVS
rfelker at mplayerhq.hu
Thu Jan 23 05:19:43 CET 2003
Update of /cvsroot/mplayer/main/postproc
In directory mail:/var/tmp.root/cvs-serv16582/postproc
Modified Files:
postprocess.c postprocess_template.c
Log Message:
C implementation of the median deinterlacer (seems to be the only one
that generates tolerable output for anime) so it will work on non-MMX
architectures. Someone should optimize it better eventually.
Index: postprocess.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess.c,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- postprocess.c 5 Jan 2003 19:10:42 -0000 1.76
+++ postprocess.c 23 Jan 2003 04:19:24 -0000 1.77
@@ -34,7 +34,7 @@
LinIpolDeinterlace e E E*
CubicIpolDeinterlace a e e*
LinBlendDeinterlace e E E*
-MedianDeinterlace# Ec Ec
+MedianDeinterlace# E Ec Ec
TempDeNoiser# E e e
* i dont have a 3dnow CPU -> its untested, but noone said it doesnt work so it seems to work
Index: postprocess_template.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess_template.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -r1.72 -r1.73
--- postprocess_template.c 5 Jan 2003 19:10:42 -0000 1.72
+++ postprocess_template.c 23 Jan 2003 04:19:24 -0000 1.73
@@ -1889,19 +1889,24 @@
);
#endif // MMX
#else
- //FIXME
- int x;
+ int x, y;
src+= 4*stride;
+ // FIXME - there should be a way to do a few columns in parallel like w/mmx
for(x=0; x<8; x++)
{
- src[0 ] = (src[0 ] + 2*src[stride ] + src[stride*2])>>2;
- src[stride ] = (src[stride ] + 2*src[stride*2] + src[stride*3])>>2;
- src[stride*2] = (src[stride*2] + 2*src[stride*3] + src[stride*4])>>2;
- src[stride*3] = (src[stride*3] + 2*src[stride*4] + src[stride*5])>>2;
- src[stride*4] = (src[stride*4] + 2*src[stride*5] + src[stride*6])>>2;
- src[stride*5] = (src[stride*5] + 2*src[stride*6] + src[stride*7])>>2;
- src[stride*6] = (src[stride*6] + 2*src[stride*7] + src[stride*8])>>2;
- src[stride*7] = (src[stride*7] + 2*src[stride*8] + src[stride*9])>>2;
+ uint8_t *colsrc = src;
+ for (y=0; y<4; y++)
+ {
+ int a, b, c, d, e, f;
+ a = colsrc[0 ];
+ b = colsrc[stride ];
+ c = colsrc[stride*2];
+ d = (a-b)>>31;
+ e = (b-c)>>31;
+ f = (c-a)>>31;
+ colsrc[stride ] = (a|(d^f)) & (b|(d^e)) & (c|(e^f));
+ colsrc += stride*2;
+ }
src++;
}
#endif
More information about the MPlayer-cvslog
mailing list