changeset 10591:8aff2b05e978 libavcodec

Also check the location of the picture start code and picture coding extension a little.
author michael
date Sat, 28 Nov 2009 23:05:06 +0000
parents 0c6e62729784
children 69feacc1a220
files mpeg12.c
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mpeg12.c	Sat Nov 28 22:51:53 2009 +0000
+++ b/mpeg12.c	Sat Nov 28 23:05:06 2009 +0000
@@ -2306,6 +2306,7 @@
             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 @@
                                     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 @@
                 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;