annotate Plugins/Input/mpg123/getbits.c @ 767:3ade061e7364 trunk

[svn] - typo
author nenolod
date Wed, 01 Mar 2006 10:05:28 -0800
parents 05d824e30afd
children b5ae09a6c2f1
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"
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
2 #include "common.h"
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
4 void mpg123_backbits(struct bitstream_info *bitbuf,int number_of_bits)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5 {
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
6 bitbuf->bitindex -= number_of_bits;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
7 bitbuf->wordpointer += (bitbuf->bitindex>>3);
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
8 bitbuf->bitindex &= 0x7;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
11 int mpg123_getbitoffset(struct bitstream_info *bitbuf)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12 {
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
13 return (-bitbuf->bitindex)&0x7;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
16 int mpg123_getbyte(struct bitstream_info *bitbuf)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 #ifdef DEBUG_GETBITS
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
19 if(bitbuf->bitindex)
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
20 fprintf(stderr,"getbyte called unsynched!\n");
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21 #endif
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
22 return *bitbuf->wordpointer++;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
25 unsigned int mpg123_getbits(struct bitstream_info *bitbuf,int number_of_bits)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 {
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
27 unsigned long rval;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 #ifdef DEBUG_GETBITS
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
30 fprintf(stderr,"g%d",number_of_bits);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
33 if(!number_of_bits)
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
34 return 0;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 #if 0
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
37 check_buffer_range(number_of_bits+bitbuf->bitindex);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
40 {
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
41 rval = bitbuf->wordpointer[0];
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
42 rval <<= 8;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
43 rval |= bitbuf->wordpointer[1];
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
44 rval <<= 8;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
45 rval |= bitbuf->wordpointer[2];
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
47 rval <<= bitbuf->bitindex;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
48 rval &= 0xffffff;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
50 bitbuf->bitindex += number_of_bits;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
52 rval >>= (24-number_of_bits);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
54 bitbuf->wordpointer += (bitbuf->bitindex>>3);
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
55 bitbuf->bitindex &= 7;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
56 }
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 #ifdef DEBUG_GETBITS
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
59 fprintf(stderr,":%x ",rval);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
62 return rval;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
65 unsigned int mpg123_getbits_fast(struct bitstream_info *bitbuf,int number_of_bits)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 {
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
67 unsigned int rval;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 #ifdef DEBUG_GETBITS
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
69 fprintf(stderr,"g%d",number_of_bits);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72 #if 0
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
73 check_buffer_range(number_of_bits+bitbuf->bitindex);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
76 rval = (unsigned char) (bitbuf->wordpointer[0] << bitbuf->bitindex);
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
77 rval |= ((unsigned int) bitbuf->wordpointer[1]<<bitbuf->bitindex)>>8;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
78 rval <<= number_of_bits;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
79 rval >>= 8;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
81 bitbuf->bitindex += number_of_bits;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
83 bitbuf->wordpointer += (bitbuf->bitindex>>3);
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
84 bitbuf->bitindex &= 7;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 #ifdef DEBUG_GETBITS
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
87 fprintf(stderr,":%x ",rval);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 #endif
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
89 return rval;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
92 unsigned int mpg123_get1bit(struct bitstream_info *bitbuf)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 {
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
94 unsigned char rval;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96 #ifdef DEBUG_GETBITS
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
97 fprintf(stderr,"g%d",1);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 #if 0
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
101 check_buffer_range(1+bitbuf->bitindex);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
104 rval = *(bitbuf->wordpointer) << bitbuf->bitindex;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
106 bitbuf->bitindex++;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
107 bitbuf->wordpointer += (bitbuf->bitindex>>3);
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
108 bitbuf->bitindex &= 7;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 #ifdef DEBUG_GETBITS
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
111 fprintf(stderr,":%d ",rval>>7);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
114 return rval>>7;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 }
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
116