28 #define UNCHECKED_BITSTREAM_READER 1
40 int next_avc= h->
is_avc ? 0 : buf_size;
50 for(i=0; i<buf_size; i++){
55 nalsize = (nalsize << 8) | buf[i++];
56 if(nalsize <= 0 || nalsize > buf_size - i){
60 next_avc= i + nalsize;
65 #if HAVE_FAST_UNALIGNED
70 while(i<next_avc && !((~*(
const uint64_t*)(buf+i) & (*(
const uint64_t*)(buf+i) - 0x0101010101010101ULL)) & 0x8080808080808080ULL))
73 while(i<next_avc && !((~*(
const uint32_t*)(buf+i) & (*(
const uint32_t*)(buf+i) - 0x01010101U)) & 0x80808080U))
77 for(; i<next_avc; i++){
84 if(buf[i]==1) state^= 5;
85 else if(buf[i]) state = 7;
89 if(v==6 || v==7 || v==8 || v==9){
94 }
else if(v==1 || v==2 || v==5){
129 return i-(state&5) - 3*(state>7);
142 const uint8_t *
const buf,
int buf_size)
145 int buf_index, next_avc;
147 unsigned int slice_type;
150 int q264 = buf_size >=4 && !memcmp(
"Q264", buf, 4);
166 next_avc = h->
is_avc ? 0 : buf_size;
168 int src_length, dst_length, consumed, nalsize = 0;
170 if (buf_index >= next_avc) {
174 next_avc = buf_index + nalsize;
177 if (buf_index >= buf_size)
179 if (buf_index >= next_avc)
182 src_length = next_avc - buf_index;
184 state = buf[buf_index];
185 switch (state & 0x1f) {
194 if (ptr==
NULL || dst_length < 0)
197 buf_index += consumed;
292 const uint8_t **poutbuf,
int *poutbuf_size,
293 const uint8_t *buf,
int buf_size)
347 *poutbuf_size = buf_size;
352 const uint8_t *buf,
int buf_size)
358 for(i=0; i<=buf_size; i++){
359 if((state&0xFFFFFF1F) == 0x107)
363 if((state&0xFFFFFF00) == 0x100 && (state&0xFFFFFF1F) != 0x107 && (state&0xFFFFFF1F) != 0x108 && (state&0xFFFFFF1F) != 0x109){
365 while(i>4 && buf[i-5]==0) i--;
370 state= (state<<8) | buf[i];
397 .parser_close =
close,