comparison h264_parser.c @ 8442:60be1c7d8345 libavcodec

Make h264 parser 50% faster.
author michael
date Tue, 23 Dec 2008 02:34:58 +0000
parents a38b31a2ac52
children 7c82ed8d4824
comparison
equal deleted inserted replaced
8441:f97c423dcb7f 8442:60be1c7d8345
42 if(state>13) 42 if(state>13)
43 state= 7; 43 state= 7;
44 44
45 for(i=0; i<buf_size; i++){ 45 for(i=0; i<buf_size; i++){
46 if(state==7){ 46 if(state==7){
47 #ifdef HAVE_FAST_UNALIGNED
48 # ifdef HAVE_FAST_64BIT
49 while(i<buf_size && !((~*(uint64_t*)(buf+i) & (*(uint64_t*)(buf+i) - 0x0101010101010101ULL)) & 0x8080808080808080ULL))
50 i+=8;
51 # else
52 while(i<buf_size && !((~*(uint32_t*)(buf+i) & (*(uint32_t*)(buf+i) - 0x01010101U)) & 0x80808080U))
53 i+=4;
54 # endif
55 #endif
47 for(; i<buf_size; i++){ 56 for(; i<buf_size; i++){
48 if(!buf[i]){ 57 if(!buf[i]){
49 state=2; 58 state=2;
50 break; 59 break;
51 } 60 }