]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Split RV3/4 deblock pattern into horizontal and vertical parts
authorkostya <kostya@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 8 Nov 2008 18:15:13 +0000 (18:15 +0000)
committerkostya <kostya@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 8 Nov 2008 18:15:13 +0000 (18:15 +0000)
during calculating.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@15794 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/rv34.c

index 867a3461cb7a9b5d1b69c3f127c6cf6c6f95dba5..047ab04c3d348f8195c3d7807e8120af44c97af8 100644 (file)
@@ -1082,19 +1082,23 @@ static int is_mv_diff_gt_3(int16_t (*motion_val)[2], int step)
 static int rv34_set_deblock_coef(RV34DecContext *r)
 {
     MpegEncContext *s = &r->s;
-    int mvmask = 0, i, j;
+    int hmvmask = 0, vmvmask = 0, i, j;
     int midx = s->mb_x * 2 + s->mb_y * 2 * s->b8_stride;
     int16_t (*motion_val)[2] = s->current_picture_ptr->motion_val[0][midx];
     for(j = 0; j < 16; j += 8){
         for(i = 0; i < 2; i++){
             if(is_mv_diff_gt_3(motion_val + i, 1))
-                mvmask |= 0x11 << (j + i*2);
+                vmvmask |= 0x11 << (j + i*2);
             if(is_mv_diff_gt_3(motion_val + i, s->b8_stride))
-                mvmask |= 0x03 << (j + i*2);
+                hmvmask |= 0x03 << (j + i*2);
         }
         motion_val += s->b8_stride;
     }
-    return mvmask;
+    if(s->first_slice_line)
+        hmvmask &= ~0x000F;
+    if(!s->mb_x)
+        vmvmask &= ~0x1111;
+    return hmvmask | vmvmask; //XXX: should be stored separately for RV3
 }
 
 static int rv34_decode_macroblock(RV34DecContext *r, int8_t *intra_types)