ffmpeg | branch: master | zhaoxiu.zeng <[email protected]> | Fri Feb 13 00:03:21 2015 +0800| [b4b9a64bdb61dee30008b1e089ab58ca631100e5] | committer: Michael Niedermayer
avcodec/vc1: simplify vc1_split() Signed-off-by: Michael Niedermayer <[email protected]> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b4b9a64bdb61dee30008b1e089ab58ca631100e5 --- libavcodec/vc1_parser.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/libavcodec/vc1_parser.c b/libavcodec/vc1_parser.c index 3a2308e..b2ba7b6 100644 --- a/libavcodec/vc1_parser.c +++ b/libavcodec/vc1_parser.c @@ -29,6 +29,7 @@ #include "parser.h" #include "vc1.h" #include "get_bits.h" +#include "internal.h" /** The maximum number of bytes of a sequence, entry point or * frame header whose values we pay any attention to */ @@ -250,20 +251,18 @@ static int vc1_parse(AVCodecParserContext *s, static int vc1_split(AVCodecContext *avctx, const uint8_t *buf, int buf_size) { - int i; - uint32_t state= -1; - int charged=0; + uint32_t state = -1; + int charged = 0; + const uint8_t *ptr = buf, *end = buf + buf_size; - for(i=0; i<buf_size; i++){ - state= (state<<8) | buf[i]; - if(IS_MARKER(state)){ - if(state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT){ - charged=1; - }else if(charged){ - return i-3; - } - } + while (ptr < end) { + ptr = avpriv_find_start_code(ptr, end, &state); + if (state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT) { + charged = 1; + } else if (charged && IS_MARKER(state)) + return ptr - 4 - buf; } + return 0; } _______________________________________________ ffmpeg-cvslog mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
