Files
Herwig Birke f09e2d611a .
2018-02-27 17:26:29 +01:00

47 lines
1.2 KiB
C

/*
* This does the same as getbits.c but with defines to
* force inlining
*/
#define mpg123_backbits(nob) \
do { \
bsi.bitindex -= nob; \
bsi.wordpointer += (bsi.bitindex >> 3); \
bsi.bitindex &= 0x7; \
} while (0)
#define mpg123_getbitoffset() ((-bsi.bitindex) & 0x7)
#define mpg123_getbyte() (*bsi.wordpointer++)
#define mpg123_getbits(nob) \
(rval = bsi.wordpointer[0], \
rval <<= 8, \
rval |= bsi.wordpointer[1], \
rval <<= 8, \
rval |= bsi.wordpointer[2], \
rval <<= bsi.bitindex, \
rval &= 0xffffff, \
bsi.bitindex += (nob), \
rval >>= (24-(nob)), \
bsi.wordpointer += (bsi.bitindex>>3), \
bsi.bitindex &= 7, \
rval)
#define mpg123_getbits_fast(nob) \
(rval = (unsigned char) (bsi.wordpointer[0] << bsi.bitindex), \
rval |= ((unsigned long) bsi.wordpointer[1] << bsi.bitindex) >> 8, \
rval <<= (nob), \
rval >>= 8, \
bsi.bitindex += (nob), \
bsi.wordpointer += (bsi.bitindex >> 3), \
bsi.bitindex &= 7, \
rval)
#define mpg123_get1bit() \
(rval_uc = *bsi.wordpointer << bsi.bitindex, \
bsi.bitindex++, \
bsi.wordpointer += (bsi.bitindex>>3), \
bsi.bitindex &= 7, \
rval_uc >> 7)