OSDN Git Service

1000l to myself - get correct quantization for blocks 1 and 2
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 25 Mar 2007 06:00:06 +0000 (06:00 +0000)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 25 Mar 2007 06:00:06 +0000 (06:00 +0000)
P.S.  This condition could be also written as if(n==3 || n==(2-dc_pred_dir))

Originally committed as revision 8508 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/vc1.c

index eac9236..0c6c202 100644 (file)
@@ -2954,7 +2954,9 @@ static int vc1_decode_i_block_adv(VC1Context *v, DCTELEM block[64], int n, int c
     q1 = s->current_picture.qscale_table[mb_pos];
     if(dc_pred_dir && c_avail && mb_pos) q2 = s->current_picture.qscale_table[mb_pos - 1];
     if(!dc_pred_dir && a_avail && mb_pos >= s->mb_stride) q2 = s->current_picture.qscale_table[mb_pos - s->mb_stride];
-    if(n && n<4) q2 = q1;
+    if(dc_pred_dir && n==1) q2 = q1;
+    if(!dc_pred_dir && n==2) q2 = q1;
+    if(n==3) q2 = q1;
 
     if(coded) {
         int last = 0, skip, value;
@@ -3159,7 +3161,9 @@ static int vc1_decode_intra_block(VC1Context *v, DCTELEM block[64], int n, int c
     q1 = s->current_picture.qscale_table[mb_pos];
     if(dc_pred_dir && c_avail && mb_pos) q2 = s->current_picture.qscale_table[mb_pos - 1];
     if(!dc_pred_dir && a_avail && mb_pos >= s->mb_stride) q2 = s->current_picture.qscale_table[mb_pos - s->mb_stride];
-    if(n && n<4) q2 = q1;
+    if(dc_pred_dir && n==1) q2 = q1;
+    if(!dc_pred_dir && n==2) q2 = q1;
+    if(n==3) q2 = q1;
 
     if(coded) {
         int last = 0, skip, value;