summaryrefslogtreecommitdiff
path: root/apps/codecs/libffmpegFLAC/decoder.c
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2006-10-25 00:59:38 +0000
committerThom Johansen <thomj@rockbox.org>2006-10-25 00:59:38 +0000
commit4134e91950a3104bb364148768c6d8060b18a1d0 (patch)
treed5e5833354308211af9619efc558bf0fc1027ec9 /apps/codecs/libffmpegFLAC/decoder.c
parent73c0cfa6321e077c45d0a72882a3ad2ce9a453fd (diff)
downloadrockbox-4134e91950a3104bb364148768c6d8060b18a1d0.zip
rockbox-4134e91950a3104bb364148768c6d8060b18a1d0.tar.gz
rockbox-4134e91950a3104bb364148768c6d8060b18a1d0.tar.bz2
rockbox-4134e91950a3104bb364148768c6d8060b18a1d0.tar.xz
Assembler optimised FLAC 24 bit handling routines for Coldfire based players. Decoding speed should be improved drastically. Haven't got so many 24 bit files myself, so let me know if something sounds off.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11329 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libffmpegFLAC/decoder.c')
-rw-r--r--apps/codecs/libffmpegFLAC/decoder.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/codecs/libffmpegFLAC/decoder.c b/apps/codecs/libffmpegFLAC/decoder.c
index 9c85864..4dbae97 100644
--- a/apps/codecs/libffmpegFLAC/decoder.c
+++ b/apps/codecs/libffmpegFLAC/decoder.c
@@ -262,10 +262,12 @@ static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order)
if ((s->bps + coeff_prec + av_log2(pred_order)) <= 32) {
#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
(void)sum;
- lpc_decode_emac(s->blocksize - pred_order, qlevel, pred_order, decoded + pred_order, coeffs);
+ lpc_decode_emac(s->blocksize - pred_order, qlevel, pred_order,
+ decoded + pred_order, coeffs);
#elif defined(CPU_ARM) && !defined(SIMULATOR)
(void)sum;
- lpc_decode_arm(s->blocksize - pred_order, qlevel, pred_order, decoded + pred_order, coeffs);
+ lpc_decode_arm(s->blocksize - pred_order, qlevel, pred_order,
+ decoded + pred_order, coeffs);
#else
for (i = pred_order; i < s->blocksize; i++)
{
@@ -276,6 +278,12 @@ static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order)
}
#endif
} else {
+ #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+ (void)wsum;
+ (void)j;
+ lpc_decode_emac_wide(s->blocksize - pred_order, qlevel, pred_order,
+ decoded + pred_order, coeffs);
+ #else
for (i = pred_order; i < s->blocksize; i++)
{
wsum = 0;
@@ -283,6 +291,7 @@ static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order)
wsum += (int64_t)coeffs[j] * (int64_t)decoded[i-j-1];
decoded[i] += wsum >> qlevel;
}
+ #endif
}
return 0;