avcodec/hevc_parser: use avpriv_find_start_code in hevc_split()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
zhaoxiu.zeng 2015-03-10 00:57:57 +08:00 committed by Michael Niedermayer
parent 1f4088b285
commit b3a56e60be
1 changed files with 13 additions and 13 deletions

View File

@ -286,21 +286,21 @@ static int hevc_parse(AVCodecParserContext *s,
// Split after the parameter sets at the beginning of the stream if they exist.
static int hevc_split(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
{
int i;
const uint8_t *ptr = buf, *end = buf + buf_size;
uint32_t state = -1;
int has_ps = 0;
int has_ps = 0, nut;
for (i = 0; i < buf_size; i++) {
state = (state << 8) | buf[i];
if (((state >> 8) & 0xFFFFFF) == START_CODE) {
int nut = (state >> 1) & 0x3F;
if (nut >= NAL_VPS && nut <= NAL_PPS)
has_ps = 1;
else if (has_ps)
return i - 3;
else // no parameter set at the beginning of the stream
return 0;
}
while (ptr < end) {
ptr = avpriv_find_start_code(ptr, end, &state);
if ((state >> 8) != START_CODE)
break;
nut = (state >> 1) & 0x3F;
if (nut >= NAL_VPS && nut <= NAL_PPS)
has_ps = 1;
else if (has_ps)
return ptr - 4 - buf;
else // no parameter set at the beginning of the stream
return 0;
}
return 0;
}