diff Plugins/Input/mpg123/getbits.c @ 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.c	Tue Nov 08 12:04:15 2005 -0800
+++ b/Plugins/Input/mpg123/getbits.c	Wed Nov 09 16:40:03 2005 -0800
@@ -1,132 +1,116 @@
 #include "mpg123.h"
-
-#if 0
-static void
-check_buffer_range(int size)
-{
-    int pos = (bsi.wordpointer - bsbuf) + (size >> 3);
+#include "common.h"
 
-    if (pos >= fsizeold) {
-        fprintf(stderr, "Pointer out of range (%d,%d)!\n", pos, fsizeold);
-    }
-}
-#endif
-
-void
-mpg123_backbits(int number_of_bits)
+void mpg123_backbits(struct bitstream_info *bitbuf,int number_of_bits)
 {
-    bsi.bitindex -= number_of_bits;
-    bsi.wordpointer += (bsi.bitindex >> 3);
-    bsi.bitindex &= 0x7;
+  bitbuf->bitindex    -= number_of_bits;
+  bitbuf->wordpointer += (bitbuf->bitindex>>3);
+  bitbuf->bitindex    &= 0x7;
 }
 
-int
-mpg123_getbitoffset(void)
+int mpg123_getbitoffset(struct bitstream_info *bitbuf) 
 {
-    return (-bsi.bitindex) & 0x7;
+  return (-bitbuf->bitindex)&0x7;
 }
 
-int
-mpg123_getbyte(void)
+int mpg123_getbyte(struct bitstream_info *bitbuf)
 {
 #ifdef DEBUG_GETBITS
-    if (bsi.bitindex)
-        fprintf(stderr, "getbyte called unsynched!\n");
+  if(bitbuf->bitindex) 
+    fprintf(stderr,"getbyte called unsynched!\n");
 #endif
-    return *bsi.wordpointer++;
+  return *bitbuf->wordpointer++;
 }
 
-unsigned int
-mpg123_getbits(int number_of_bits)
+unsigned int mpg123_getbits(struct bitstream_info *bitbuf,int number_of_bits)
 {
-    unsigned long rval;
+  unsigned long rval;
 
 #ifdef DEBUG_GETBITS
-    fprintf(stderr, "g%d", number_of_bits);
+fprintf(stderr,"g%d",number_of_bits);
 #endif
 
-    if (!number_of_bits)
-        return 0;
+  if(!number_of_bits)
+    return 0;
 
 #if 0
-    check_buffer_range(number_of_bits + bsi.bitindex);
+   check_buffer_range(number_of_bits+bitbuf->bitindex);
 #endif
 
-    {
-        rval = bsi.wordpointer[0];
-        rval <<= 8;
-        rval |= bsi.wordpointer[1];
-        rval <<= 8;
-        rval |= bsi.wordpointer[2];
+  {
+    rval = bitbuf->wordpointer[0];
+    rval <<= 8;
+    rval |= bitbuf->wordpointer[1];
+    rval <<= 8;
+    rval |= bitbuf->wordpointer[2];
 
-        rval <<= bsi.bitindex;
-        rval &= 0xffffff;
+    rval <<= bitbuf->bitindex;
+    rval &= 0xffffff;
 
-        bsi.bitindex += number_of_bits;
+    bitbuf->bitindex += number_of_bits;
 
-        rval >>= (24 - number_of_bits);
+    rval >>= (24-number_of_bits);
 
-        bsi.wordpointer += (bsi.bitindex >> 3);
-        bsi.bitindex &= 7;
-    }
+    bitbuf->wordpointer += (bitbuf->bitindex>>3);
+    bitbuf->bitindex &= 7;
+  }
 
 #ifdef DEBUG_GETBITS
-    fprintf(stderr, ":%x ", rval);
+fprintf(stderr,":%x ",rval);
 #endif
 
-    return rval;
+  return rval;
 }
 
-unsigned int
-mpg123_getbits_fast(int number_of_bits)
+unsigned int mpg123_getbits_fast(struct bitstream_info *bitbuf,int number_of_bits)
 {
-    unsigned int rval;
+  unsigned int rval;
 #ifdef DEBUG_GETBITS
-    fprintf(stderr, "g%d", number_of_bits);
+fprintf(stderr,"g%d",number_of_bits);
 #endif
 
 #if 0
-    check_buffer_range(number_of_bits + bsi.bitindex);
+   check_buffer_range(number_of_bits+bitbuf->bitindex);
 #endif
 
-    rval = (unsigned char) (bsi.wordpointer[0] << bsi.bitindex);
-    rval |= ((unsigned int) bsi.wordpointer[1] << bsi.bitindex) >> 8;
-    rval <<= number_of_bits;
-    rval >>= 8;
+  rval =  (unsigned char) (bitbuf->wordpointer[0] << bitbuf->bitindex);
+  rval |= ((unsigned int) bitbuf->wordpointer[1]<<bitbuf->bitindex)>>8;
+  rval <<= number_of_bits;
+  rval >>= 8;
 
-    bsi.bitindex += number_of_bits;
+  bitbuf->bitindex += number_of_bits;
 
-    bsi.wordpointer += (bsi.bitindex >> 3);
-    bsi.bitindex &= 7;
+  bitbuf->wordpointer += (bitbuf->bitindex>>3);
+  bitbuf->bitindex &= 7;
 
 #ifdef DEBUG_GETBITS
-    fprintf(stderr, ":%x ", rval);
+fprintf(stderr,":%x ",rval);
 #endif
-    return rval;
+  return rval;
 }
 
-unsigned int
-mpg123_get1bit(void)
+unsigned int mpg123_get1bit(struct bitstream_info *bitbuf)
 {
-    unsigned char rval;
+  unsigned char rval;
 
 #ifdef DEBUG_GETBITS
-    fprintf(stderr, "g%d", 1);
+fprintf(stderr,"g%d",1);
 #endif
 
 #if 0
-    check_buffer_range(1 + bsi.bitindex);
+   check_buffer_range(1+bitbuf->bitindex);
 #endif
 
-    rval = *bsi.wordpointer << bsi.bitindex;
+  rval = *(bitbuf->wordpointer) << bitbuf->bitindex;
 
-    bsi.bitindex++;
-    bsi.wordpointer += (bsi.bitindex >> 3);
-    bsi.bitindex &= 7;
+  bitbuf->bitindex++;
+  bitbuf->wordpointer += (bitbuf->bitindex>>3);
+  bitbuf->bitindex &= 7;
 
 #ifdef DEBUG_GETBITS
-    fprintf(stderr, ":%d ", rval >> 7);
+fprintf(stderr,":%d ",rval>>7);
 #endif
 
-    return rval >> 7;
+  return rval>>7;
 }
+