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 )
+