ffmpeg | branch: master | Michael Niedermayer <mich...@niedermayer.cc> | Sat Jul 25 00:18:05 2015 +0200| [dee551bbd280c5f43b9f100d944944c27f188549] | committer: Michael Niedermayer
avcodec/dvdec: skip 3rd stage ac decoding when the headers indicates that the data is inconsistent Fixes Ticket1589 Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dee551bbd280c5f43b9f100d944944c27f188549 --- libavcodec/dvdec.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 656110e..2a241ab 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -294,6 +294,7 @@ static int dv_decode_video_segment(AVCodecContext *avctx, void *arg) int vs_bit_buffer_damaged = 0; int mb_bit_buffer_damaged[5] = {0}; int retried = 0; + int sta; av_assert1((((int) mb_bit_buffer) & 7) == 0); av_assert1((((int) vs_bit_buffer) & 7) == 0); @@ -310,6 +311,12 @@ retry: for (mb_index = 0; mb_index < 5; mb_index++, mb1 += s->sys->bpm, block1 += s->sys->bpm * 64) { /* skip header */ quant = buf_ptr[3] & 0x0f; + if ((buf_ptr[3] >> 4) == 0x0E) + vs_bit_buffer_damaged = 1; + if (!mb_index) { + sta = buf_ptr[3] >> 4; + } else if (sta != (buf_ptr[3] >> 4)) + vs_bit_buffer_damaged = 1; buf_ptr += 4; init_put_bits(&pb, mb_bit_buffer, 80); mb = mb1; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog