1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

Move get_avc_nalsize() and find_start_code() to h264.h

This allows sharing them with the h264 parser

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-10-27 04:22:42 +01:00
parent 61e42c1124
commit 4898440f6b
2 changed files with 37 additions and 37 deletions

View File

@ -1330,43 +1330,6 @@ int ff_set_ref_count(H264Context *h)
static const uint8_t start_code[] = { 0x00, 0x00, 0x01 }; static const uint8_t start_code[] = { 0x00, 0x00, 0x01 };
static int find_start_code(const uint8_t *buf, int buf_size,
int buf_index, int next_avc)
{
// start code prefix search
for (; buf_index + 3 < next_avc; buf_index++)
// This should always succeed in the first iteration.
if (buf[buf_index] == 0 &&
buf[buf_index + 1] == 0 &&
buf[buf_index + 2] == 1)
break;
buf_index += 3;
if (buf_index >= buf_size)
return buf_size;
return buf_index;
}
static int get_avc_nalsize(H264Context *h, const uint8_t *buf,
int buf_size, int *buf_index)
{
int i, nalsize = 0;
if (*buf_index >= buf_size - h->nal_length_size)
return -1;
for (i = 0; i < h->nal_length_size; i++)
nalsize = ((unsigned)nalsize << 8) | buf[(*buf_index)++];
if (nalsize <= 0 || nalsize > buf_size - *buf_index) {
av_log(h->avctx, AV_LOG_ERROR,
"AVC: nal size %d\n", nalsize);
return -1;
}
return nalsize;
}
static int get_bit_length(H264Context *h, const uint8_t *buf, static int get_bit_length(H264Context *h, const uint8_t *buf,
const uint8_t *ptr, int dst_length, const uint8_t *ptr, int dst_length,
int i, int next_avc) int i, int next_avc)

View File

@ -1092,6 +1092,43 @@ static av_always_inline int get_dct8x8_allowed(H264Context *h)
0x0001000100010001ULL)); 0x0001000100010001ULL));
} }
static inline int find_start_code(const uint8_t *buf, int buf_size,
int buf_index, int next_avc)
{
// start code prefix search
for (; buf_index + 3 < next_avc; buf_index++)
// This should always succeed in the first iteration.
if (buf[buf_index] == 0 &&
buf[buf_index + 1] == 0 &&
buf[buf_index + 2] == 1)
break;
buf_index += 3;
if (buf_index >= buf_size)
return buf_size;
return buf_index;
}
static inline int get_avc_nalsize(H264Context *h, const uint8_t *buf,
int buf_size, int *buf_index)
{
int i, nalsize = 0;
if (*buf_index >= buf_size - h->nal_length_size)
return -1;
for (i = 0; i < h->nal_length_size; i++)
nalsize = ((unsigned)nalsize << 8) | buf[(*buf_index)++];
if (nalsize <= 0 || nalsize > buf_size - *buf_index) {
av_log(h->avctx, AV_LOG_ERROR,
"AVC: nal size %d\n", nalsize);
return -1;
}
return nalsize;
}
int ff_h264_field_end(H264Context *h, int in_setup); int ff_h264_field_end(H264Context *h, int in_setup);
int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src); int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src);