diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2008-11-08 18:15:13 +0000 |
---|---|---|
committer | Kostya Shishkov <kostya.shishkov@gmail.com> | 2008-11-08 18:15:13 +0000 |
commit | 502ecc97af848318d305558f6dc4be16b6af3dd5 (patch) | |
tree | 1d329c8f0782e0b3dc1101327f8dade2b72eaeec /libavcodec/rv34.c | |
parent | a85de417db0b721c601d679338bb9251c542160d (diff) | |
download | ffmpeg-502ecc97af848318d305558f6dc4be16b6af3dd5.tar.gz |
Split RV3/4 deblock pattern into horizontal and vertical parts
during calculating.
Originally committed as revision 15794 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/rv34.c')
-rw-r--r-- | libavcodec/rv34.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c index 867a3461cb..047ab04c3d 100644 --- a/libavcodec/rv34.c +++ b/libavcodec/rv34.c @@ -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) |