Commit 10fa50c1 authored by Michael Niedermayer's avatar Michael Niedermayer

avcodec/mpeg12dec: Fix missing slice handling without padding

Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent 4170a44b
...@@ -1871,6 +1871,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, ...@@ -1871,6 +1871,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y,
if (++s->mb_x >= s->mb_width) { if (++s->mb_x >= s->mb_width) {
const int mb_size = 16 >> s->avctx->lowres; const int mb_size = 16 >> s->avctx->lowres;
int left;
ff_mpeg_draw_horiz_band(s, mb_size * (s->mb_y >> field_pic), mb_size); ff_mpeg_draw_horiz_band(s, mb_size * (s->mb_y >> field_pic), mb_size);
ff_mpv_report_decode_progress(s); ff_mpv_report_decode_progress(s);
...@@ -1910,12 +1911,13 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, ...@@ -1910,12 +1911,13 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y,
// in cases where the slice is completely outside the visible // in cases where the slice is completely outside the visible
// area, we detect this here instead of running into the end expecting // area, we detect this here instead of running into the end expecting
// more data // more data
left = get_bits_left(&s->gb);
if (s->mb_y >= ((s->height + 15) >> 4) && if (s->mb_y >= ((s->height + 15) >> 4) &&
!s->progressive_sequence && !s->progressive_sequence &&
get_bits_left(&s->gb) <= 8 && left <= 25 &&
get_bits_left(&s->gb) >= 0 && left >= 0 &&
s->mb_skip_run == -1 && s->mb_skip_run == -1 &&
show_bits(&s->gb, 8) == 0) (!left || show_bits(&s->gb, left) == 0))
goto eos; goto eos;
ff_init_block_index(s); ff_init_block_index(s);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment