summaryrefslogtreecommitdiff
path: root/libavcodec/mpeg12.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2003-04-11 21:15:17 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-04-11 21:15:17 +0000
commit9c00c3af90c120742461d5217d7b276f7f512e70 (patch)
tree2dd9a1ae5138728984c5469e146d26c92c53f6b9 /libavcodec/mpeg12.c
parent6afd3b92b43818443a193528bd4e909b96068c22 (diff)
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.c16
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 {