Commit 849d4003 authored by michaelni's avatar michaelni

fixing encoding at high QPs (was broken after the dct accuracy increase due to...

fixing encoding at high QPs (was broken after the dct accuracy increase due to too small inverse table)


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@901 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent efdc2c8c
......@@ -46,9 +46,9 @@ static int RENAME(dct_quantize)(MpegEncContext *s,
if (s->mb_intra) {
int dummy;
if (n < 4)
q = s->y_dc_scale<<3;
q = s->y_dc_scale;
else
q = s->c_dc_scale<<3;
q = s->c_dc_scale;
/* note: block[0] is assumed to be positive */
if (!s->h263_aic) {
#if 1
......@@ -56,7 +56,7 @@ static int RENAME(dct_quantize)(MpegEncContext *s,
"xorl %%edx, %%edx \n\t"
"mul %%ecx \n\t"
: "=d" (level), "=a"(dummy)
: "a" (block[0] + (q >> 1)), "c" (inverse[q])
: "a" ((block[0]>>2) + q), "c" (inverse[q<<1])
);
#else
asm volatile (
......@@ -64,13 +64,13 @@ static int RENAME(dct_quantize)(MpegEncContext *s,
"divw %%cx \n\t"
"movzwl %%ax, %%eax \n\t"
: "=a" (level)
: "a" (block[0] + (q >> 1)), "c" (q)
: "a" ((block[0]>>2) + q), "c" (q<<1)
: "%edx"
);
#endif
} else
/* For AIC we skip quant/dequant of INTRADC */
level = block[0]>>3;
level = (block[0] + 4)>>3;
block[0]=0; //avoid fake overflow
// temp_block[0] = (block[0] + (q >> 1)) / q;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment