Mercurial > libavcodec.hg
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; |