comparison rv34.c @ 8122:aec296246352 libavcodec

Split RV3/4 deblock pattern into horizontal and vertical parts during calculating.
author kostya
date Sat, 08 Nov 2008 18:15:13 +0000
parents 98f88000fcd4
children e2241dd85c65
comparison
equal deleted inserted replaced
8121:98f88000fcd4 8122:aec296246352
1080 } 1080 }
1081 1081
1082 static int rv34_set_deblock_coef(RV34DecContext *r) 1082 static int rv34_set_deblock_coef(RV34DecContext *r)
1083 { 1083 {
1084 MpegEncContext *s = &r->s; 1084 MpegEncContext *s = &r->s;
1085 int mvmask = 0, i, j; 1085 int hmvmask = 0, vmvmask = 0, i, j;
1086 int midx = s->mb_x * 2 + s->mb_y * 2 * s->b8_stride; 1086 int midx = s->mb_x * 2 + s->mb_y * 2 * s->b8_stride;
1087 int16_t (*motion_val)[2] = s->current_picture_ptr->motion_val[0][midx]; 1087 int16_t (*motion_val)[2] = s->current_picture_ptr->motion_val[0][midx];
1088 for(j = 0; j < 16; j += 8){ 1088 for(j = 0; j < 16; j += 8){
1089 for(i = 0; i < 2; i++){ 1089 for(i = 0; i < 2; i++){
1090 if(is_mv_diff_gt_3(motion_val + i, 1)) 1090 if(is_mv_diff_gt_3(motion_val + i, 1))
1091 mvmask |= 0x11 << (j + i*2); 1091 vmvmask |= 0x11 << (j + i*2);
1092 if(is_mv_diff_gt_3(motion_val + i, s->b8_stride)) 1092 if(is_mv_diff_gt_3(motion_val + i, s->b8_stride))
1093 mvmask |= 0x03 << (j + i*2); 1093 hmvmask |= 0x03 << (j + i*2);
1094 } 1094 }
1095 motion_val += s->b8_stride; 1095 motion_val += s->b8_stride;
1096 } 1096 }
1097 return mvmask; 1097 if(s->first_slice_line)
1098 hmvmask &= ~0x000F;
1099 if(!s->mb_x)
1100 vmvmask &= ~0x1111;
1101 return hmvmask | vmvmask; //XXX: should be stored separately for RV3
1098 } 1102 }
1099 1103
1100 static int rv34_decode_macroblock(RV34DecContext *r, int8_t *intra_types) 1104 static int rv34_decode_macroblock(RV34DecContext *r, int8_t *intra_types)
1101 { 1105 {
1102 MpegEncContext *s = &r->s; 1106 MpegEncContext *s = &r->s;