diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2009-11-28 23:05:06 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2009-11-28 23:05:06 +0000 |
commit | 88eba670fbd336cfdecb02f0293ebd6139d63235 (patch) | |
tree | 821d4ae4573ce3a47e8c8a02dae17b659b1b11d5 /libavcodec/mpeg12.c | |
parent | fc23d843e11b8d7e461127dd4bb25d7525ec5990 (diff) | |
download | ffmpeg-88eba670fbd336cfdecb02f0293ebd6139d63235.tar.gz |
Also check the location of the picture start code and picture coding
extension a little.
Originally committed as revision 20644 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpeg12.c')
-rw-r--r-- | libavcodec/mpeg12.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 33ae18f667..d5f1c69485 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -2306,6 +2306,7 @@ static int decode_chunks(AVCodecContext *avctx, break; case PICTURE_START_CODE: + if(last_code == 0 || last_code == SLICE_MIN_START_CODE){ if(mpeg_decode_postinit(avctx) < 0){ av_log(avctx, AV_LOG_ERROR, "mpeg_decode_postinit() failure\n"); return -1; @@ -2316,6 +2317,9 @@ static int decode_chunks(AVCodecContext *avctx, buf_ptr, input_size) < 0) s2->pict_type=0; last_code= PICTURE_START_CODE; + }else{ + av_log(avctx, AV_LOG_ERROR, "ignoring pic after %X\n", last_code); + } break; case EXT_START_CODE: init_get_bits(&s2->gb, buf_ptr, input_size*8); @@ -2338,8 +2342,11 @@ static int decode_chunks(AVCodecContext *avctx, mpeg_decode_picture_display_extension(s); break; case 0x8: + if(last_code == PICTURE_START_CODE){ mpeg_decode_picture_coding_extension(s); - last_code= PICTURE_START_CODE; + }else{ + av_log(avctx, AV_LOG_ERROR, "ignoring pic cod ext after %X\n", last_code); + } break; } break; |