diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/libalac/alac.c | 13 |
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)) | ||
172 | static inline int count_leading_zeros(uint32_t v) | ||
173 | { | ||
174 | return __builtin_clz(v); | ||
175 | } | ||
176 | #else | ||
177 | |||
169 | static const unsigned char bittab[16] ICONST_ATTR = { | 178 | static 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 | ||
203 | void basterdised_rice_decompress(alac_file *alac, | 210 | void basterdised_rice_decompress(alac_file *alac, |
204 | int32_t *output_buffer, | 211 | int32_t *output_buffer, |