avcodec/vc1: correct AC inverse quantization scaling
authorJerome Borsboom <jerome.borsboom@carpalis.nl>
Mon, 23 Apr 2018 19:00:15 +0000 (21:00 +0200)
committerPaul B Mahol <onemda@gmail.com>
Wed, 25 Apr 2018 20:07:20 +0000 (22:07 +0200)
HALFQP should only be added to the inverse quantizer when the block is
coded with PQUANT. See 8.1.3.8 in VC-1 spec.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
libavcodec/vc1_block.c

index e78e480..de06b6f 100644 (file)
@@ -944,7 +944,7 @@ static int vc1_decode_intra_block(VC1Context *v, int16_t block[64], int n,
     ac_val = s->ac_val[0][s->block_index[n]];
     ac_val2 = ac_val;
 
-    scale = mquant * 2 + v->halfpq;
+    scale = mquant * 2 + ((mquant == v->pq) ? v->halfpq : 0);
 
     if (dc_pred_dir) //left
         ac_val -= 16;