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)