|
|
@ -4441,14 +4441,14 @@ static void vc1_decode_i_blocks(VC1Context *v) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (!v->s.loop_filter) |
|
|
|
if (!v->s.loop_filter) |
|
|
|
ff_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
else if (s->mb_y) |
|
|
|
else if (s->mb_y) |
|
|
|
ff_draw_horiz_band(s, (s->mb_y - 1) * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, (s->mb_y - 1) * 16, 16); |
|
|
|
|
|
|
|
|
|
|
|
s->first_slice_line = 0; |
|
|
|
s->first_slice_line = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (v->s.loop_filter) |
|
|
|
if (v->s.loop_filter) |
|
|
|
ff_draw_horiz_band(s, (s->end_mb_y - 1) * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, (s->end_mb_y - 1) * 16, 16); |
|
|
|
|
|
|
|
|
|
|
|
/* This is intentionally mb_height and not end_mb_y - unlike in advanced
|
|
|
|
/* This is intentionally mb_height and not end_mb_y - unlike in advanced
|
|
|
|
* profile, these only differ are when decoding MSS2 rectangles. */ |
|
|
|
* profile, these only differ are when decoding MSS2 rectangles. */ |
|
|
@ -4569,9 +4569,9 @@ static void vc1_decode_i_blocks_adv(VC1Context *v) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (!v->s.loop_filter) |
|
|
|
if (!v->s.loop_filter) |
|
|
|
ff_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
else if (s->mb_y) |
|
|
|
else if (s->mb_y) |
|
|
|
ff_draw_horiz_band(s, (s->mb_y-1) * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, (s->mb_y-1) * 16, 16); |
|
|
|
s->first_slice_line = 0; |
|
|
|
s->first_slice_line = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -4585,7 +4585,7 @@ static void vc1_decode_i_blocks_adv(VC1Context *v) |
|
|
|
vc1_loop_filter_iblk_delayed(v, v->pq); |
|
|
|
vc1_loop_filter_iblk_delayed(v, v->pq); |
|
|
|
} |
|
|
|
} |
|
|
|
if (v->s.loop_filter) |
|
|
|
if (v->s.loop_filter) |
|
|
|
ff_draw_horiz_band(s, (s->end_mb_y-1)*16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, (s->end_mb_y-1)*16, 16); |
|
|
|
ff_er_add_slice(&s->er, 0, s->start_mb_y << v->field_mode, s->mb_width - 1, |
|
|
|
ff_er_add_slice(&s->er, 0, s->start_mb_y << v->field_mode, s->mb_width - 1, |
|
|
|
(s->end_mb_y << v->field_mode) - 1, ER_MB_END); |
|
|
|
(s->end_mb_y << v->field_mode) - 1, ER_MB_END); |
|
|
|
} |
|
|
|
} |
|
|
@ -4648,7 +4648,7 @@ static void vc1_decode_p_blocks(VC1Context *v) |
|
|
|
memmove(v->ttblk_base, v->ttblk, sizeof(v->ttblk_base[0]) * s->mb_stride); |
|
|
|
memmove(v->ttblk_base, v->ttblk, sizeof(v->ttblk_base[0]) * s->mb_stride); |
|
|
|
memmove(v->is_intra_base, v->is_intra, sizeof(v->is_intra_base[0]) * s->mb_stride); |
|
|
|
memmove(v->is_intra_base, v->is_intra, sizeof(v->is_intra_base[0]) * s->mb_stride); |
|
|
|
memmove(v->luma_mv_base, v->luma_mv, sizeof(v->luma_mv_base[0]) * s->mb_stride); |
|
|
|
memmove(v->luma_mv_base, v->luma_mv, sizeof(v->luma_mv_base[0]) * s->mb_stride); |
|
|
|
if (s->mb_y != s->start_mb_y) ff_draw_horiz_band(s, (s->mb_y - 1) * 16, 16); |
|
|
|
if (s->mb_y != s->start_mb_y) ff_mpeg_draw_horiz_band(s, (s->mb_y - 1) * 16, 16); |
|
|
|
s->first_slice_line = 0; |
|
|
|
s->first_slice_line = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (apply_loop_filter) { |
|
|
|
if (apply_loop_filter) { |
|
|
@ -4660,7 +4660,7 @@ static void vc1_decode_p_blocks(VC1Context *v) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (s->end_mb_y >= s->start_mb_y) |
|
|
|
if (s->end_mb_y >= s->start_mb_y) |
|
|
|
ff_draw_horiz_band(s, (s->end_mb_y - 1) * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, (s->end_mb_y - 1) * 16, 16); |
|
|
|
ff_er_add_slice(&s->er, 0, s->start_mb_y << v->field_mode, s->mb_width - 1, |
|
|
|
ff_er_add_slice(&s->er, 0, s->start_mb_y << v->field_mode, s->mb_width - 1, |
|
|
|
(s->end_mb_y << v->field_mode) - 1, ER_MB_END); |
|
|
|
(s->end_mb_y << v->field_mode) - 1, ER_MB_END); |
|
|
|
} |
|
|
|
} |
|
|
@ -4715,13 +4715,13 @@ static void vc1_decode_b_blocks(VC1Context *v) |
|
|
|
if (v->s.loop_filter) vc1_loop_filter_iblk(v, v->pq); |
|
|
|
if (v->s.loop_filter) vc1_loop_filter_iblk(v, v->pq); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!v->s.loop_filter) |
|
|
|
if (!v->s.loop_filter) |
|
|
|
ff_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
else if (s->mb_y) |
|
|
|
else if (s->mb_y) |
|
|
|
ff_draw_horiz_band(s, (s->mb_y - 1) * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, (s->mb_y - 1) * 16, 16); |
|
|
|
s->first_slice_line = 0; |
|
|
|
s->first_slice_line = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (v->s.loop_filter) |
|
|
|
if (v->s.loop_filter) |
|
|
|
ff_draw_horiz_band(s, (s->end_mb_y - 1) * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, (s->end_mb_y - 1) * 16, 16); |
|
|
|
ff_er_add_slice(&s->er, 0, s->start_mb_y << v->field_mode, s->mb_width - 1, |
|
|
|
ff_er_add_slice(&s->er, 0, s->start_mb_y << v->field_mode, s->mb_width - 1, |
|
|
|
(s->end_mb_y << v->field_mode) - 1, ER_MB_END); |
|
|
|
(s->end_mb_y << v->field_mode) - 1, ER_MB_END); |
|
|
|
} |
|
|
|
} |
|
|
@ -4739,7 +4739,7 @@ static void vc1_decode_skip_blocks(VC1Context *v) |
|
|
|
memcpy(s->dest[0], s->last_picture.f.data[0] + s->mb_y * 16 * s->linesize, s->linesize * 16); |
|
|
|
memcpy(s->dest[0], s->last_picture.f.data[0] + s->mb_y * 16 * s->linesize, s->linesize * 16); |
|
|
|
memcpy(s->dest[1], s->last_picture.f.data[1] + s->mb_y * 8 * s->uvlinesize, s->uvlinesize * 8); |
|
|
|
memcpy(s->dest[1], s->last_picture.f.data[1] + s->mb_y * 8 * s->uvlinesize, s->uvlinesize * 8); |
|
|
|
memcpy(s->dest[2], s->last_picture.f.data[2] + s->mb_y * 8 * s->uvlinesize, s->uvlinesize * 8); |
|
|
|
memcpy(s->dest[2], s->last_picture.f.data[2] + s->mb_y * 8 * s->uvlinesize, s->uvlinesize * 8); |
|
|
|
ff_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
ff_mpeg_draw_horiz_band(s, s->mb_y * 16, 16); |
|
|
|
s->first_slice_line = 0; |
|
|
|
s->first_slice_line = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
s->pict_type = AV_PICTURE_TYPE_P; |
|
|
|
s->pict_type = AV_PICTURE_TYPE_P; |
|
|
|