diff options
| author | Thom Johansen <thomj@rockbox.org> | 2006-10-25 00:59:38 +0000 |
|---|---|---|
| committer | Thom Johansen <thomj@rockbox.org> | 2006-10-25 00:59:38 +0000 |
| commit | 4134e91950a3104bb364148768c6d8060b18a1d0 (patch) | |
| tree | d5e5833354308211af9619efc558bf0fc1027ec9 /apps/codecs/libffmpegFLAC/decoder.c | |
| parent | 73c0cfa6321e077c45d0a72882a3ad2ce9a453fd (diff) | |
| download | rockbox-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.c | 13 |
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; |