1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-12 01:46:16 +00:00

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


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11297 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
michael 2003-10-27 21:12:29 +00:00
parent 0259d347c8
commit eb14533f92

View File

@ -86,28 +86,20 @@ struct vf_priv_s {
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;
}
}
}