avcodec/dpx_parser: reset index when finding a startcode, not after
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 29 May 2014 15:08:53 +0000 (17:08 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 29 May 2014 15:18:47 +0000 (17:18 +0200)
This is simpler

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/dpx_parser.c

index 70baaf4..6c6d502 100644 (file)
@@ -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;