Mercurial > audlegacy
diff Plugins/Input/mpg123/getbits.h @ 61:fa848bd484d8 trunk
[svn] Move plugins to Plugins/
author | nenolod |
---|---|
date | Fri, 28 Oct 2005 22:58:11 -0700 |
parents | |
children | 05d824e30afd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/Input/mpg123/getbits.h Fri Oct 28 22:58:11 2005 -0700 @@ -0,0 +1,46 @@ + +/* + * 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)