X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=bitstream.h;h=d13ef4c2bd6946deff17e9104432052b1319b25e;hb=4163d3460d5dc61264636ebeb7b3fe8052b93568;hp=cc56a83c0207c2abc9c6fd25e9e9fd1aa4c5bb7d;hpb=1f986e5d3d91283fd8d929599b709d1942e139b0;p=paraslash.git diff --git a/bitstream.h b/bitstream.h index cc56a83c..d13ef4c2 100644 --- a/bitstream.h +++ b/bitstream.h @@ -56,16 +56,12 @@ static inline unsigned int get_bits(struct getbit_context *gbc, int n) return ret; } +/* This is rather hot, we can do better than get_bits(gbc, 1). */ static inline unsigned int get_bits1(struct getbit_context *gbc) { - int idx = gbc->index; - uint8_t result = gbc->buffer[idx >> 3]; - - result <<= (idx & 0x07); - result >>= 8 - 1; - idx++; - gbc->index = idx; - return result; + int idx = gbc->index++; + uint8_t tmp = gbc->buffer[idx >> 3], mask = (1 << (7 - (idx & 7))); + return !!(tmp & mask); } /**