mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
fixing encoding at high QPs (was broken after the dct accuracy increase due to too small inverse table)
Originally committed as revision 901 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
be7109c12b
commit
1a684b3d53
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user