MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / mad_bit_read

Function mad_bit_read

modules/data/mp3/libmad/bit.c:141–179  ·  view source on GitHub ↗

* NAME: bit->read() * DESCRIPTION: read an arbitrary number of bits and return their UIMSBF value */

Source from the content-addressed store, hash-verified

139 * DESCRIPTION: read an arbitrary number of bits and return their UIMSBF value
140 */
141unsigned long mad_bit_read(struct mad_bitptr *bitptr, unsigned int len)
142{
143 unsigned long value;
144
145 if (bitptr->left == CHAR_BIT)
146 bitptr->cache = *bitptr->byte;
147
148 if (len < bitptr->left) {
149 value = (bitptr->cache & ((1 << bitptr->left) - 1)) >>
150 (bitptr->left - len);
151 bitptr->left -= len;
152
153 return value;
154 }
155
156 /* remaining bits in current byte */
157
158 value = bitptr->cache & ((1 << bitptr->left) - 1);
159 len -= bitptr->left;
160
161 bitptr->byte++;
162 bitptr->left = CHAR_BIT;
163
164 /* more bytes */
165
166 while (len >= CHAR_BIT) {
167 value = (value << CHAR_BIT) | *bitptr->byte++;
168 len -= CHAR_BIT;
169 }
170
171 if (len > 0) {
172 bitptr->cache = *bitptr->byte;
173
174 value = (value << len) | (bitptr->cache >> (CHAR_BIT - len));
175 bitptr->left -= len;
176 }
177
178 return value;
179}
180
181# if 0
182/*

Callers 7

decode_headerFunction · 0.85
mad_bit_crcFunction · 0.85
III_sideinfoFunction · 0.85
III_scalefactors_lsfFunction · 0.85
III_scalefactorsFunction · 0.85
III_huffdecodeFunction · 0.85
mad_layer_IIIFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected