From bdd677ac1359df5615ede8813160cbaf373964b5 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 28 Jan 2002 22:38:15 +0000 Subject: [PATCH] minor QP bugfix Originally committed as revision 4400 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc --- postproc/postprocess_template.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/postproc/postprocess_template.c b/postproc/postprocess_template.c index daf22cb299..9191b0b235 100644 --- a/postproc/postprocess_template.c +++ b/postproc/postprocess_template.c @@ -1,5 +1,5 @@ /* - Copyright (C) 2001 Michael Niedermayer (michaelni@gmx.at) + Copyright (C) 2001-2002 Michael Niedermayer (michaelni@gmx.at) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2587,7 +2587,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int after watching a black picture for 5 hours*/ static uint64_t *yHistogram= NULL; int black=0, white=255; // blackest black and whitest white in the picture - int QPCorrecture= 256; + int QPCorrecture= 256*256; /* Temporary buffers for handling the last row(s) */ static uint8_t *tempDst= NULL; @@ -2615,7 +2615,6 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int long long memcpyTime=0, vertTime=0, horizTime=0, sumTime; sumTime= rdtsc(); #endif - dcOffset= ppMode->maxDcDiff; dcThreshold= ppMode->maxDcDiff*2 + 1; @@ -2727,16 +2726,17 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int packedYScale|= packedYScale<<32; packedYScale|= packedYScale<<16; + + if(mode & LEVEL_FIX) QPCorrecture= (int)(scale*256*256 + 0.5); + else QPCorrecture= 256*256; } else { packedYScale= 0x0100010001000100LL; packedYOffset= 0; + QPCorrecture= 256*256; } - if(mode & LEVEL_FIX) QPCorrecture= packedYScale &0xFFFF; - else QPCorrecture= 256; - /* copy & deinterlace first row of blocks */ y=-BLOCK_SIZE; { @@ -2819,8 +2819,8 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int #endif #ifdef ARCH_X86 int *QPptr= isColor ? &QPs[(y>>3)*QPStride] :&QPs[(y>>4)*QPStride]; - int QPDelta= isColor ? 1<<(32-3) : 1<<(32-4); - int QPFrac= QPDelta; + int QPDelta= isColor ? (-1) : 1<<31; + int QPFrac= 1<<30; #endif int QP=0; /* can we mess with a 8x16 block from srcBlock/dstBlock downwards and 1 line upwards @@ -2875,7 +2875,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int #endif if(!isColor) { - QP= (QP* QPCorrecture)>>8; + QP= (QP* QPCorrecture + 256*128)>>16; yHistogram[ srcBlock[srcStride*12 + 4] ]++; } #ifdef HAVE_MMX