diff --git a/libavcodec/vc1_parser.c b/libavcodec/vc1_parser.c
index a9baccce79a8df9e1a9e1bdf3a430e38b33efd1a..3f4618dbedc5e2095ce10b7f92fc7db5e637b112 100644
--- a/libavcodec/vc1_parser.c
+++ b/libavcodec/vc1_parser.c
@@ -99,11 +99,17 @@ static int vc1_split(AVCodecContext *avctx,
 {
     int i;
     uint32_t state= -1;
+    int charged=0;
 
     for(i=0; i<buf_size; i++){
         state= (state<<8) | buf[i];
-        if(IS_MARKER(state) && state != VC1_CODE_SEQHDR && state != VC1_CODE_ENTRYPOINT)
-            return i-3;
+        if(IS_MARKER(state)){
+            if(state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT){
+                charged=1;
+            }else if(charged){
+                return i-3;
+            }
+        }
     }
     return 0;
 }