summaryrefslogtreecommitdiff
path: root/apps/codecs/libalac/alac.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libalac/alac.c')
-rw-r--r--apps/codecs/libalac/alac.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/apps/codecs/libalac/alac.c b/apps/codecs/libalac/alac.c
index 112ad20bad..f94ff0fa9d 100644
--- a/apps/codecs/libalac/alac.c
+++ b/apps/codecs/libalac/alac.c
@@ -166,6 +166,15 @@ static inline void unreadbits(alac_file *alac, int bits)
166 alac->input_buffer_bitaccumulator *= -1; 166 alac->input_buffer_bitaccumulator *= -1;
167} 167}
168 168
169/* ARMv5+ has a clz instruction equivalent to our function.
170 */
171#if (defined(CPU_ARM) && (ARM_ARCH > 4))
172static inline int count_leading_zeros(uint32_t v)
173{
174 return __builtin_clz(v);
175}
176#else
177
169static const unsigned char bittab[16] ICONST_ATTR = { 178static const unsigned char bittab[16] ICONST_ATTR = {
170 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 179 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4
171}; 180};
@@ -196,9 +205,7 @@ static inline int count_leading_zeros(int input)
196 output -= bittab[input]; 205 output -= bittab[input];
197 return output; 206 return output;
198} 207}
199 208#endif
200
201
202 209
203void basterdised_rice_decompress(alac_file *alac, 210void basterdised_rice_decompress(alac_file *alac,
204 int32_t *output_buffer, 211 int32_t *output_buffer,