annotate Plugins/Input/mpg123/getbits.c @ 61:fa848bd484d8 trunk

[svn] Move plugins to Plugins/
author nenolod
date Fri, 28 Oct 2005 22:58:11 -0700
parents
children 05d824e30afd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1 #include "mpg123.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
4 static void
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5 check_buffer_range(int size)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 int pos = (bsi.wordpointer - bsbuf) + (size >> 3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 if (pos >= fsizeold) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10 fprintf(stderr, "Pointer out of range (%d,%d)!\n", pos, fsizeold);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15 void
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
16 mpg123_backbits(int number_of_bits)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 bsi.bitindex -= number_of_bits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19 bsi.wordpointer += (bsi.bitindex >> 3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 bsi.bitindex &= 0x7;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24 mpg123_getbitoffset(void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 return (-bsi.bitindex) & 0x7;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 mpg123_getbyte(void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 #ifdef DEBUG_GETBITS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 if (bsi.bitindex)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34 fprintf(stderr, "getbyte called unsynched!\n");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 return *bsi.wordpointer++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 unsigned int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 mpg123_getbits(int number_of_bits)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 unsigned long rval;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 #ifdef DEBUG_GETBITS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45 fprintf(stderr, "g%d", number_of_bits);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48 if (!number_of_bits)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52 check_buffer_range(number_of_bits + bsi.bitindex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 rval = bsi.wordpointer[0];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57 rval <<= 8;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 rval |= bsi.wordpointer[1];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59 rval <<= 8;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 rval |= bsi.wordpointer[2];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 rval <<= bsi.bitindex;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63 rval &= 0xffffff;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65 bsi.bitindex += number_of_bits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67 rval >>= (24 - number_of_bits);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 bsi.wordpointer += (bsi.bitindex >> 3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70 bsi.bitindex &= 7;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 #ifdef DEBUG_GETBITS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 fprintf(stderr, ":%x ", rval);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 return rval;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 unsigned int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 mpg123_getbits_fast(int number_of_bits)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83 unsigned int rval;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84 #ifdef DEBUG_GETBITS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 fprintf(stderr, "g%d", number_of_bits);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 check_buffer_range(number_of_bits + bsi.bitindex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 rval = (unsigned char) (bsi.wordpointer[0] << bsi.bitindex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 rval |= ((unsigned int) bsi.wordpointer[1] << bsi.bitindex) >> 8;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94 rval <<= number_of_bits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 rval >>= 8;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 bsi.bitindex += number_of_bits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99 bsi.wordpointer += (bsi.bitindex >> 3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 bsi.bitindex &= 7;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 #ifdef DEBUG_GETBITS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103 fprintf(stderr, ":%x ", rval);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 return rval;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 unsigned int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109 mpg123_get1bit(void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 unsigned char rval;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113 #ifdef DEBUG_GETBITS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 fprintf(stderr, "g%d", 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118 check_buffer_range(1 + bsi.bitindex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 rval = *bsi.wordpointer << bsi.bitindex;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 bsi.bitindex++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124 bsi.wordpointer += (bsi.bitindex >> 3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125 bsi.bitindex &= 7;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 #ifdef DEBUG_GETBITS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 fprintf(stderr, ":%d ", rval >> 7);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 return rval >> 7;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 }