On Fri, 13 Feb 2015 13:50:23 +0800 Zhaoxiu Zeng <zhaoxiu.z...@gmail.com> wrote:
> From 3cac16572aee4425377e4bc9e496ab5844200a51 Mon Sep 17 00:00:00 2001 > From: Zeng Zhaoxiu <zhaoxiu.z...@gmail.com> > Date: Fri, 13 Feb 2015 13:27:26 +0800 > Subject: [PATCH 1/2] avcodec/parser: simplify ff_mpeg4video_split() > > Signed-off-by: Zeng Zhaoxiu <zhaoxiu.z...@gmail.com> > --- > libavcodec/parser.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/libavcodec/parser.c b/libavcodec/parser.c > index aa25481..83019e7 100644 > --- a/libavcodec/parser.c > +++ b/libavcodec/parser.c > @@ -28,6 +28,7 @@ > #include "libavutil/mem.h" > > #include "parser.h" > +#include "internal.h" > > static AVCodecParser *av_first_parser = NULL; > > @@ -308,13 +309,14 @@ void ff_parse_close(AVCodecParserContext *s) > > int ff_mpeg4video_split(AVCodecContext *avctx, const uint8_t *buf, > int buf_size) > { > - int i; > uint32_t state = -1; > + const uint8_t *ptr = buf, *end = buf + buf_size; > > - for (i = 0; i < buf_size; i++) { > - state = state << 8 | buf[i]; > + while (ptr < end) { > + ptr = avpriv_find_start_code(ptr, end, &state); > if (state == 0x1B3 || state == 0x1B6) > - return i - 3; > + return ptr - 4 - buf; > } > + > return 0; > } I don't know, it looks more complicated to me now. Following track of an integer index is much easier than playing with pointer arithmetics. Also, why this (apparently) can return a negative integer index just fine, your pointer calculations can go out of the range [buf, buf+buf_size], possibly leading to undefined behavior. The code introduces a function call, without actually reducing the number of lines. Well, I know nothing about this code, so you don't need to listen to me. These are just my impressions. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel