summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-28 22:38:15 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-28 22:38:15 +0000
commit2d5546459c4b4e5c3f8acf8890f79097232b159d (patch)
tree87f393a0aae66dfcfbe3e3ce032795aa687e5f38 /postproc
parent9d5f1a30a5d8b19ef8949f53fe13d2ebba71e835 (diff)
downloadmpv-2d5546459c4b4e5c3f8acf8890f79097232b159d.tar.bz2
mpv-2d5546459c4b4e5c3f8acf8890f79097232b159d.tar.xz
minor QP bugfix
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4400 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/postprocess_template.c18
1 files 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