28 #define UNCHECKED_BITSTREAM_READER 1
42 int next_avc= h->
is_avc ? 0 : buf_size;
52 for(i=0; i<buf_size; i++){
57 nalsize = (nalsize << 8) | buf[i++];
58 if(nalsize <= 0 || nalsize > buf_size - i){
62 next_avc= i + nalsize;
67 #if HAVE_FAST_UNALIGNED
72 while(i<next_avc && !((~*(
const uint64_t*)(buf+i) & (*(
const uint64_t*)(buf+i) - 0x0101010101010101ULL)) & 0x8080808080808080ULL))
75 while(i<next_avc && !((~*(
const uint32_t*)(buf+i) & (*(
const uint32_t*)(buf+i) - 0x01010101U)) & 0x80808080U))
79 for(; i<next_avc; i++){
86 if(buf[i]==1) state^= 5;
87 else if(buf[i]) state = 7;
91 if(v==6 || v==7 || v==8 || v==9){
96 }
else if(v==1 || v==2 || v==5){
131 return i-(state&5) - 3*(state>7);
147 const uint8_t *buf_end = buf + buf_size;
149 unsigned int slice_type;
152 int q264 = buf_size >=4 && !memcmp(
"Q264", buf, 4);
170 int src_length, dst_length, consumed, nalsize = 0;
176 nalsize = (nalsize << 8) | *buf++;
177 if (nalsize <= 0 || nalsize > buf_end - buf) {
181 src_length = nalsize;
187 src_length = buf_end -
buf;
189 switch (state & 0x1f) {
198 if (ptr==
NULL || dst_length < 0)
322 if (field_poc[0] < field_poc[1])
324 else if (field_poc[0] > field_poc[1])
339 buf += h->
is_avc ? nalsize : consumed;
350 const uint8_t **poutbuf,
int *poutbuf_size,
405 *poutbuf_size = buf_size;
416 for(i=0; i<=buf_size; i++){
417 if((state&0xFFFFFF1F) == 0x107)
421 if((state&0xFFFFFF00) == 0x100 && (state&0xFFFFFF1F) != 0x107 && (state&0xFFFFFF1F) != 0x108 && (state&0xFFFFFF1F) != 0x109){
423 while(i>4 && buf[i-5]==0) i--;
428 state= (state<<8) | buf[i];
455 .parser_close =
close,