forked from len0rd/rockbox
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
This commit is contained in:
parent
73c0cfa632
commit
4134e91950
3 changed files with 299 additions and 40 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue