diff options
author | Jens Arnold <amiconn@rockbox.org> | 2008-10-03 21:40:32 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2008-10-03 21:40:32 +0000 |
commit | d1b19be423ab5fc62a7d16b26813b9624bf57709 (patch) | |
tree | 01ad3fe534efbb614b82712ecf419f99edfc349b /apps/codecs/demac/libdemac/predictor.c | |
parent | 66fe9a462c5093003a0b65239b54b44f6395b342 (diff) | |
download | rockbox-d1b19be423ab5fc62a7d16b26813b9624bf57709.tar.gz rockbox-d1b19be423ab5fc62a7d16b26813b9624bf57709.zip |
Various speedups: (1) Put actual decoding functions into IRAM on PP5002. (2) Put the insane filter buffer into IRAM on coldfire and PP502x (just for completeness, as long as there's no better use). (3) Use the ARMv6 'ssat' instruction for saturation on Gigabeat S.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18701 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/demac/libdemac/predictor.c')
-rw-r--r-- | apps/codecs/demac/libdemac/predictor.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/apps/codecs/demac/libdemac/predictor.c b/apps/codecs/demac/libdemac/predictor.c index edf8b71575..f0e3b65556 100644 --- a/apps/codecs/demac/libdemac/predictor.c +++ b/apps/codecs/demac/libdemac/predictor.c | |||
@@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA | |||
27 | 27 | ||
28 | #include "parser.h" | 28 | #include "parser.h" |
29 | #include "predictor.h" | 29 | #include "predictor.h" |
30 | #include "demac_iram.h" | ||
30 | 31 | ||
31 | /* Return 0 if x is zero, -1 if x is positive, 1 if x is negative */ | 32 | /* Return 0 if x is zero, -1 if x is positive, 1 if x is negative */ |
32 | #define SIGN(x) (x) ? (((x) > 0) ? -1 : 1) : 0 | 33 | #define SIGN(x) (x) ? (((x) > 0) ? -1 : 1) : 0 |
@@ -67,7 +68,10 @@ void init_predictor_decoder(struct predictor_t* p) | |||
67 | } | 68 | } |
68 | 69 | ||
69 | #if !defined(CPU_ARM) && !defined(CPU_COLDFIRE) | 70 | #if !defined(CPU_ARM) && !defined(CPU_COLDFIRE) |
70 | int predictor_decode_stereo(struct predictor_t* p, int32_t* decoded0, int32_t* decoded1, int count) | 71 | int ICODE_ATTR_DEMAC predictor_decode_stereo(struct predictor_t* p, |
72 | int32_t* decoded0, | ||
73 | int32_t* decoded1, | ||
74 | int count) | ||
71 | { | 75 | { |
72 | int32_t predictionA, predictionB; | 76 | int32_t predictionA, predictionB; |
73 | 77 | ||
@@ -203,7 +207,9 @@ int predictor_decode_stereo(struct predictor_t* p, int32_t* decoded0, int32_t* d | |||
203 | } | 207 | } |
204 | #endif | 208 | #endif |
205 | 209 | ||
206 | int predictor_decode_mono(struct predictor_t* p, int32_t* decoded0, int count) | 210 | int ICODE_ATTR_DEMAC predictor_decode_mono(struct predictor_t* p, |
211 | int32_t* decoded0, | ||
212 | int count) | ||
207 | { | 213 | { |
208 | int32_t predictionA, currentA, A; | 214 | int32_t predictionA, currentA, A; |
209 | 215 | ||