From 0e29c4f761575d60c764e56ed1d07b432eaf0262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Sat, 30 Jul 2011 11:22:11 +0200 Subject: [PATCH] Revert bink dequantization hack that is no longer necessary. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Reimar Döffinger --- libavcodec/bink.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/libavcodec/bink.c b/libavcodec/bink.c index 534d63b5a6..6b58f7716b 100644 --- a/libavcodec/bink.c +++ b/libavcodec/bink.c @@ -572,22 +572,6 @@ static inline int binkb_get_value(BinkContext *c, int bundle_num) return ret; } -static inline DCTELEM dequant(DCTELEM in, uint32_t quant, int dc) -{ - /* Note: multiplication is unsigned but we want signed shift - * otherwise clipping breaks. - * TODO: The official decoder does not use clipping at all - * but instead uses the full 32-bit result. - * However clipping at least gets rid of the case that a - * half-black half-white intra block gets black and white swapped - * and should cause at most minor differences (except for DC). */ - int32_t res = in * quant; - res >>= 11; - if (!dc) - res = av_clip_int16(res); - return res; -} - /** * Read 8x8 block of DCT coefficients. * @@ -686,10 +670,10 @@ static int read_dct_coeffs(GetBitContext *gb, int32_t block[64], const uint8_t * quant = quant_matrices[quant_idx]; - block[0] = dequant(block[0], quant[0], 1); + block[0] = (block[0] * quant[0]) >> 11; for (i = 0; i < coef_count; i++) { int idx = coef_idx[i]; - block[scan[idx]] = dequant(block[scan[idx]], quant[idx], 0); + block[scan[idx]] = (block[scan[idx]] * quant[idx]) >> 11; } return 0;