[Mplayer-cvslog] CVS: main/libmpcodecs vf_spp.c,1.4,1.5

Michael Niedermayer CVS michael at mplayerhq.hu
Mon Oct 27 22:12:57 CET 2003


Update of /cvsroot/mplayer/main/libmpcodecs
In directory mail:/var/tmp.root/cvs-serv27074

Modified Files:
	vf_spp.c 
Log Message:
different / faster / simpler "quantization" 
filtered images look like with the old quantization (to me at least) if anyone notices a difference then tell me ASAP


Index: vf_spp.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpcodecs/vf_spp.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- vf_spp.c	27 Oct 2003 19:14:38 -0000	1.4
+++ vf_spp.c	27 Oct 2003 21:12:29 -0000	1.5
@@ -86,28 +86,20 @@
 static inline void requantize(DCTELEM dst[64], DCTELEM src[64], int qp, uint8_t *permutation){
 	int i; 
 	const int qmul= qp<<1;
-	const int qadd= (qp-1)|1;
-	const int qinv= ((1<<(SHIFT-3)) + qmul/2)/ qmul;
 	int bias= 0; //FIXME
 	unsigned int threshold1, threshold2;
-
-	threshold1= (1<<SHIFT) - bias - 1;
+	
+	threshold1= qmul*((1<<3) - bias) - 1;
 	threshold2= (threshold1<<1);
         
 	memset(dst, 0, 64*sizeof(DCTELEM));
-	dst[0]= (src[0] + 4)>>3;;
+	dst[0]= (src[0] + 4)>>3;
 
-	for(i=1; i<64; i++){
-		int level= qinv*src[i];
+        for(i=1; i<64; i++){
+		int level= src[i];
 		if(((unsigned)(level+threshold1))>threshold2){
 			const int j= permutation[i];
-			if(level>0){
-				level= (bias + level)>>SHIFT;
-				dst[j]= level*qmul + qadd;
-			}else{
-				level= (bias - level)>>SHIFT;
-				dst[j]= -level*qmul - qadd;
-			}
+			dst[j]= (level + 4)>>3;
 		}
 	}
 }



More information about the MPlayer-cvslog mailing list