mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/hevc_parser: use avpriv_find_start_code in hevc_split()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
1f4088b285
commit
b3a56e60be
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue