Mercurial > audlegacy
diff Plugins/Input/mpg123/getbits.h @ 127:05d824e30afd trunk
[svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
author | nenolod |
---|---|
date | Wed, 09 Nov 2005 16:40:03 -0800 |
parents | fa848bd484d8 |
children | b5ae09a6c2f1 |
line wrap: on
line diff
--- a/Plugins/Input/mpg123/getbits.h Tue Nov 08 12:04:15 2005 -0800 +++ b/Plugins/Input/mpg123/getbits.h Wed Nov 09 16:40:03 2005 -0800 @@ -1,46 +1,33 @@ -/* - * This does the same as getbits.c but with defines to - * force inlining - */ +/* that's the same file as getits.c but with defines to + force inlining */ + +unsigned long rval; +unsigned char rval_uc; -#define mpg123_backbits(nob) \ -do { \ - bsi.bitindex -= nob; \ - bsi.wordpointer += (bsi.bitindex >> 3); \ - bsi.bitindex &= 0x7; \ -} while (0) +#define mpg123_backbits(bitbuf,nob) ((void)( \ + (*(bitbuf)).bitindex -= (nob), \ + (*(bitbuf)).wordpointer += ((*(bitbuf)).bitindex>>3), \ + (*(bitbuf)).bitindex &= 0x7 )) -#define mpg123_getbitoffset() ((-bsi.bitindex) & 0x7) -#define mpg123_getbyte() (*bsi.wordpointer++) +#define mpg123_getbitoffset(bitbuf) ((-(*(bitbuf)).bitindex)&0x7) +#define mpg123_getbyte(bitbuf) (*(*(bitbuf)).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(bitbuf,nob) ( \ + rval = (*(bitbuf)).wordpointer[0], rval <<= 8, rval |= (*(bitbuf)).wordpointer[1], \ + rval <<= 8, rval |= (*(bitbuf)).wordpointer[2], rval <<= (*(bitbuf)).bitindex, \ + rval &= 0xffffff, (*(bitbuf)).bitindex += (nob), \ + rval >>= (24-(nob)), (*(bitbuf)).wordpointer += ((*(bitbuf)).bitindex>>3), \ + (*(bitbuf)).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_getbits_fast(bitbuf,nob) ( \ + rval = (unsigned char) ((*(bitbuf)).wordpointer[0] << (*(bitbuf)).bitindex), \ + rval |= ((unsigned long) (*(bitbuf)).wordpointer[1]<<(*(bitbuf)).bitindex)>>8, \ + rval <<= (nob), rval >>= 8, \ + (*(bitbuf)).bitindex += (nob), (*(bitbuf)).wordpointer += ((*(bitbuf)).bitindex>>3), \ + (*(bitbuf)).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) +#define mpg123_get1bit(bitbuf) ( \ + rval_uc = *(*(bitbuf)).wordpointer << (*(bitbuf)).bitindex, (*(bitbuf)).bitindex++, \ + (*(bitbuf)).wordpointer += ((*(bitbuf)).bitindex>>3), (*(bitbuf)).bitindex &= 7, rval_uc>>7 ) +