diff --git a/libavcodec/dpx_parser.c b/libavcodec/dpx_parser.c index 70baaf42cd..6c6d502d7e 100644 --- a/libavcodec/dpx_parser.c +++ b/libavcodec/dpx_parser.c @@ -57,6 +57,7 @@ static int dpx_parse(AVCodecParserContext *s, AVCodecContext *avctx, state == MKTAG('S','D','P','X')) { d->pc.frame_start_found = 1; d->is_be = state == MKBETAG('S','D','P','X'); + d->index = 0; break; } } @@ -73,27 +74,26 @@ static int dpx_parse(AVCodecParserContext *s, AVCodecContext *avctx, for (;d->pc.frame_start_found && i < buf_size; i++) { d->pc.state = (d->pc.state << 8) | buf[i]; - if (d->index == 16) { + d->index++; + if (d->index == 17) { d->fsize = d->is_be ? d->pc.state : av_bswap32(d->pc.state); if (d->fsize <= 1664) { - d->index = d->pc.frame_start_found = 0; + d->pc.frame_start_found = 0; goto flush; } - d->index = 0; if (d->fsize > buf_size - i + 19) d->remaining_size = d->fsize - buf_size + i - 19; else next = d->fsize + i - 19; break; } - d->index++; } flush: if (ff_combine_frame(&d->pc, next, &buf, &buf_size) < 0) return buf_size; - d->index = d->pc.frame_start_found = 0; + d->pc.frame_start_found = 0; *poutbuf = buf; *poutbuf_size = buf_size;