28 #define UNCHECKED_BITSTREAM_READER 1
44 int next_avc= h->
is_avc ? 0 : buf_size;
54 for (i = 0; i < buf_size; i++) {
59 nalsize = (nalsize << 8) | buf[i++];
60 if (nalsize <= 0 || nalsize > buf_size - i) {
64 next_avc = i + nalsize;
72 }
else if (state <= 2) {
79 }
else if (state <= 5) {
80 int nalu_type = buf[i] & 0x1F;
123 return i - (state & 5) - 3 * (state > 7);
140 for (list = 0; list < h->
list_count; list++) {
143 for (index = 0; ; index++) {
146 if (reordering_of_pic_nums_idc < 3)
148 else if (reordering_of_pic_nums_idc > 3) {
150 "illegal reordering_of_pic_nums_idc %d\n",
151 reordering_of_pic_nums_idc);
158 "reference count %d overflow\n", index);
176 "illegal memory management control operation %d\n",
209 const uint8_t *buf_end = buf + buf_size;
211 unsigned int slice_type;
212 int state = -1, got_reset = 0;
214 int q264 = buf_size >=4 && !memcmp(
"Q264", buf, 4);
230 int src_length, dst_length, consumed, nalsize = 0;
236 nalsize = (nalsize << 8) | *buf++;
237 if (nalsize <= 0 || nalsize > buf_end - buf) {
241 src_length = nalsize;
247 src_length = buf_end -
buf;
249 switch (state & 0x1f) {
253 if ((state & 0x1f) ==
NAL_IDR_SLICE || ((state >> 5) & 0x3) == 0) {
260 if (src_length > 1000)
266 if (ptr == NULL || dst_length < 0)
299 "pps_id %u out of range\n", pps_id);
304 "non-existing PPS %u referenced\n", pps_id);
310 "non-existing SPS %u referenced\n", h->
pps.
sps_id);
353 field_poc[0] = field_poc[1] = INT_MAX;
426 if (field_poc[0] < field_poc[1])
428 else if (field_poc[0] > field_poc[1])
443 buf += h->
is_avc ? nalsize : consumed;
454 const uint8_t **poutbuf,
int *poutbuf_size,
509 *poutbuf_size = buf_size;
520 for (i = 0; i <= buf_size; i++) {
521 if ((state & 0xFFFFFF1F) == 0x107)
528 if ((state & 0xFFFFFF00) == 0x100 && (state & 0xFFFFFF1F) != 0x107 &&
529 (state & 0xFFFFFF1F) != 0x108 && (state & 0xFFFFFF1F) != 0x109) {
531 while (i > 4 && buf[i - 5] == 0)
537 state = (state << 8) | buf[i];
565 .parser_close =
close,