diff options
author | Dave Chapman <dave@dchapman.com> | 2005-11-03 18:14:37 +0000 |
---|---|---|
committer | Dave Chapman <dave@dchapman.com> | 2005-11-03 18:14:37 +0000 |
commit | 439ba9bdbb059d9065aa4d26688e50ab90ed5930 (patch) | |
tree | 77405510a11cbee41e492920f1da75938e5fc295 | |
parent | 6f7f921ebee5589c7bc9e1196392c0ae7f28f96c (diff) | |
download | rockbox-439ba9bdbb059d9065aa4d26688e50ab90ed5930.tar.gz rockbox-439ba9bdbb059d9065aa4d26688e50ab90ed5930.zip |
Move code into IRAM and explicitly inline some functions (gcc was inlining them anyway, but this way is better)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7741 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/codecs/libalac/alac.c | 33 | ||||
-rw-r--r-- | apps/codecs/libalac/decomp.h | 6 |
2 files changed, 30 insertions, 9 deletions
diff --git a/apps/codecs/libalac/alac.c b/apps/codecs/libalac/alac.c index 22d04d2def..638ca93c16 100644 --- a/apps/codecs/libalac/alac.c +++ b/apps/codecs/libalac/alac.c | |||
@@ -105,7 +105,7 @@ void alac_set_info(alac_file *alac, char *inputbuffer) | |||
105 | /* stream reading */ | 105 | /* stream reading */ |
106 | 106 | ||
107 | /* supports reading 1 to 16 bits, in big endian format */ | 107 | /* supports reading 1 to 16 bits, in big endian format */ |
108 | static uint32_t readbits_16(alac_file *alac, int bits) | 108 | static inline uint32_t readbits_16(alac_file *alac, int bits) |
109 | { | 109 | { |
110 | uint32_t result; | 110 | uint32_t result; |
111 | int new_accumulator; | 111 | int new_accumulator; |
@@ -137,7 +137,7 @@ static uint32_t readbits_16(alac_file *alac, int bits) | |||
137 | } | 137 | } |
138 | 138 | ||
139 | /* supports reading 1 to 32 bits, in big endian format */ | 139 | /* supports reading 1 to 32 bits, in big endian format */ |
140 | static uint32_t readbits(alac_file *alac, int bits) | 140 | static inline uint32_t readbits(alac_file *alac, int bits) |
141 | { | 141 | { |
142 | int32_t result = 0; | 142 | int32_t result = 0; |
143 | 143 | ||
@@ -153,7 +153,7 @@ static uint32_t readbits(alac_file *alac, int bits) | |||
153 | } | 153 | } |
154 | 154 | ||
155 | /* reads a single bit */ | 155 | /* reads a single bit */ |
156 | static int readbit(alac_file *alac) | 156 | static inline int readbit(alac_file *alac) |
157 | { | 157 | { |
158 | int result; | 158 | int result; |
159 | int new_accumulator; | 159 | int new_accumulator; |
@@ -173,7 +173,7 @@ static int readbit(alac_file *alac) | |||
173 | return result; | 173 | return result; |
174 | } | 174 | } |
175 | 175 | ||
176 | static void unreadbits(alac_file *alac, int bits) | 176 | static inline void unreadbits(alac_file *alac, int bits) |
177 | { | 177 | { |
178 | int new_accumulator = (alac->input_buffer_bitaccumulator - bits); | 178 | int new_accumulator = (alac->input_buffer_bitaccumulator - bits); |
179 | 179 | ||
@@ -187,7 +187,7 @@ static void unreadbits(alac_file *alac, int bits) | |||
187 | /* hideously inefficient. could use a bitmask search, | 187 | /* hideously inefficient. could use a bitmask search, |
188 | * alternatively bsr on x86, | 188 | * alternatively bsr on x86, |
189 | */ | 189 | */ |
190 | static int count_leading_zeros(int32_t input) | 190 | static inline int count_leading_zeros(int32_t input) |
191 | { | 191 | { |
192 | int i = 0; | 192 | int i = 0; |
193 | while (!(0x80000000 & input) && i < 32) | 193 | while (!(0x80000000 & input) && i < 32) |
@@ -206,7 +206,16 @@ void basterdised_rice_decompress(alac_file *alac, | |||
206 | int rice_kmodifier, /* arg424->d */ | 206 | int rice_kmodifier, /* arg424->d */ |
207 | int rice_historymult, /* arg424->c */ | 207 | int rice_historymult, /* arg424->c */ |
208 | int rice_kmodifier_mask /* arg424->e */ | 208 | int rice_kmodifier_mask /* arg424->e */ |
209 | ) | 209 | ) ICODE_ATTR; |
210 | void basterdised_rice_decompress(alac_file *alac, | ||
211 | int32_t *output_buffer, | ||
212 | int output_size, | ||
213 | int readsamplesize, /* arg_10 */ | ||
214 | int rice_initialhistory, /* arg424->b */ | ||
215 | int rice_kmodifier, /* arg424->d */ | ||
216 | int rice_historymult, /* arg424->c */ | ||
217 | int rice_kmodifier_mask /* arg424->e */ | ||
218 | ) | ||
210 | { | 219 | { |
211 | int output_count; | 220 | int output_count; |
212 | unsigned int history = rice_initialhistory; | 221 | unsigned int history = rice_initialhistory; |
@@ -344,6 +353,13 @@ static void predictor_decompress_fir_adapt(int32_t *error_buffer, | |||
344 | int readsamplesize, | 353 | int readsamplesize, |
345 | int16_t *predictor_coef_table, | 354 | int16_t *predictor_coef_table, |
346 | int predictor_coef_num, | 355 | int predictor_coef_num, |
356 | int predictor_quantitization) ICODE_ATTR; | ||
357 | static void predictor_decompress_fir_adapt(int32_t *error_buffer, | ||
358 | int32_t *buffer_out, | ||
359 | int output_size, | ||
360 | int readsamplesize, | ||
361 | int16_t *predictor_coef_table, | ||
362 | int predictor_coef_num, | ||
347 | int predictor_quantitization) | 363 | int predictor_quantitization) |
348 | { | 364 | { |
349 | int i; | 365 | int i; |
@@ -609,6 +625,11 @@ void deinterlace_16(int32_t* buffer0, | |||
609 | int32_t* buffer1, | 625 | int32_t* buffer1, |
610 | int numsamples, | 626 | int numsamples, |
611 | uint8_t interlacing_shift, | 627 | uint8_t interlacing_shift, |
628 | uint8_t interlacing_leftweight) ICODE_ATTR; | ||
629 | void deinterlace_16(int32_t* buffer0, | ||
630 | int32_t* buffer1, | ||
631 | int numsamples, | ||
632 | uint8_t interlacing_shift, | ||
612 | uint8_t interlacing_leftweight) | 633 | uint8_t interlacing_leftweight) |
613 | { | 634 | { |
614 | int i; | 635 | int i; |
diff --git a/apps/codecs/libalac/decomp.h b/apps/codecs/libalac/decomp.h index caa9f90059..853c9d884a 100644 --- a/apps/codecs/libalac/decomp.h +++ b/apps/codecs/libalac/decomp.h | |||
@@ -31,12 +31,12 @@ typedef struct | |||
31 | /* end setinfo stuff */ | 31 | /* end setinfo stuff */ |
32 | } alac_file; | 32 | } alac_file; |
33 | 33 | ||
34 | void create_alac(int samplesize, int numchannels, alac_file* alac); | 34 | void create_alac(int samplesize, int numchannels, alac_file* alac) ICODE_ATTR; |
35 | int alac_decode_frame(alac_file *alac, | 35 | int alac_decode_frame(alac_file *alac, |
36 | unsigned char *inbuffer, | 36 | unsigned char *inbuffer, |
37 | int32_t outputbuffer[ALAC_MAX_CHANNELS][ALAC_BLOCKSIZE], | 37 | int32_t outputbuffer[ALAC_MAX_CHANNELS][ALAC_BLOCKSIZE], |
38 | void (*yield)(void)); | 38 | void (*yield)(void)) ICODE_ATTR; |
39 | void alac_set_info(alac_file *alac, char *inputbuffer); | 39 | void alac_set_info(alac_file *alac, char *inputbuffer) ICODE_ATTR; |
40 | 40 | ||
41 | #endif /* __ALAC__DECOMP_H */ | 41 | #endif /* __ALAC__DECOMP_H */ |
42 | 42 | ||