diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2003-04-11 21:15:17 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2003-04-11 21:15:17 +0000 |
commit | 9c00c3af90c120742461d5217d7b276f7f512e70 (patch) | |
tree | 2dd9a1ae5138728984c5469e146d26c92c53f6b9 /libavcodec/mpeg12.c | |
parent | 6afd3b92b43818443a193528bd4e909b96068c22 (diff) | |
download | ffmpeg-9c00c3af90c120742461d5217d7b276f7f512e70.tar.gz |
100l (mpeg2 decoding fixed)
Originally committed as revision 1756 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpeg12.c')
-rw-r--r-- | libavcodec/mpeg12.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index c77e19aeda..c5b39e1c92 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -821,7 +821,7 @@ static void init_vlcs(MpegEncContext *s) init_vlc(&mv_vlc, MV_VLC_BITS, 17, &mbMotionVectorTable[0][1], 2, 1, &mbMotionVectorTable[0][0], 2, 1); - init_vlc(&mbincr_vlc, MBINCR_VLC_BITS, 35, + init_vlc(&mbincr_vlc, MBINCR_VLC_BITS, 36, &mbAddrIncrTable[0][1], 2, 1, &mbAddrIncrTable[0][0], 2, 1); init_vlc(&mb_pat_vlc, MB_PAT_VLC_BITS, 63, @@ -1959,16 +1959,18 @@ static int mpeg_decode_slice(AVCodecContext *avctx, for(;;) { int code = get_vlc2(&s->gb, mbincr_vlc.table, MBINCR_VLC_BITS, 2); if (code < 0){ - align_get_bits(&s->gb); - if(s->mb_skip_run != 0 || show_bits(&s->gb, 24) != 1){ - fprintf(stderr, "slice end missmatch\n"); - return -1; - } - goto eos; /* error = end of slice */ + fprintf(stderr, "mb incr damaged\n"); + return -1; } if (code >= 33) { if (code == 33) { s->mb_skip_run += 33; + }else if(code == 35){ + if(s->mb_skip_run != 0 || show_bits(&s->gb, 15) != 0){ + fprintf(stderr, "slice missmatch\n"); + return -1; + } + goto eos; /* end of slice */ } /* otherwise, stuffing, nothing to do */ } else { |