47 lines
1.2 KiB
C
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)
|