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; }