mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
avcodec/dpx_parser: reset index when finding a startcode, not after
This is simpler Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
25e6310a3e
commit
f518fb3318
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user