# HG changeset patch # User conrad # Date 1278888767 0 # Node ID c3682c0606e31bcb06bb85ab1581b034e1691e82 # Parent 3d186eff2224bcd5bdbb0fd62f2e3933cab099c5 vc1: ff_draw_horiz_band needs a one row delay when the loop filter is active diff -r 3d186eff2224 -r c3682c0606e3 vc1dec.c --- a/vc1dec.c Sun Jul 11 17:46:44 2010 +0000 +++ b/vc1dec.c Sun Jul 11 22:52:47 2010 +0000 @@ -2680,9 +2680,15 @@ return; } } - ff_draw_horiz_band(s, s->mb_y * 16, 16); + if (!v->s.loop_filter) + ff_draw_horiz_band(s, s->mb_y * 16, 16); + else if (s->mb_y) + ff_draw_horiz_band(s, (s->mb_y-1) * 16, 16); + s->first_slice_line = 0; } + if (v->s.loop_filter) + ff_draw_horiz_band(s, (s->mb_height-1)*16, 16); ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); } @@ -2812,9 +2818,14 @@ return; } } - ff_draw_horiz_band(s, s->mb_y * 16, 16); + if (!v->s.loop_filter) + ff_draw_horiz_band(s, s->mb_y * 16, 16); + else if (s->mb_y) + ff_draw_horiz_band(s, (s->mb_y-1) * 16, 16); s->first_slice_line = 0; } + if (v->s.loop_filter) + ff_draw_horiz_band(s, (s->mb_height-1)*16, 16); ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); } @@ -2913,9 +2924,14 @@ } if(v->s.loop_filter) vc1_loop_filter_iblk(s, v->pq); } - ff_draw_horiz_band(s, s->mb_y * 16, 16); + if (!v->s.loop_filter) + ff_draw_horiz_band(s, s->mb_y * 16, 16); + else if (s->mb_y) + ff_draw_horiz_band(s, (s->mb_y-1) * 16, 16); s->first_slice_line = 0; } + if (v->s.loop_filter) + ff_draw_horiz_band(s, (s->mb_height-1)*16, 16); ff_er_add_slice(s, 0, 0, s->mb_width - 1, s->mb_height - 1, (AC_END|DC_END|MV_END)); }