summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac/predictor.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2008-10-03 21:40:32 +0000
committerJens Arnold <amiconn@rockbox.org>2008-10-03 21:40:32 +0000
commitd1b19be423ab5fc62a7d16b26813b9624bf57709 (patch)
tree01ad3fe534efbb614b82712ecf419f99edfc349b /apps/codecs/demac/libdemac/predictor.c
parent66fe9a462c5093003a0b65239b54b44f6395b342 (diff)
downloadrockbox-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.c10
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)
70int predictor_decode_stereo(struct predictor_t* p, int32_t* decoded0, int32_t* decoded1, int count) 71int 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
206int predictor_decode_mono(struct predictor_t* p, int32_t* decoded0, int count) 210int 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