Commit b3a56e60 authored by zhaoxiu.zeng's avatar zhaoxiu.zeng Committed by Michael Niedermayer

avcodec/hevc_parser: use avpriv_find_start_code in hevc_split()

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 1f4088b2
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment