summaryrefslogtreecommitdiff
path: root/apps/codecs/libwavpack/unpack.c
diff options
context:
space:
mode:
authorDave Bryant <bryant@rockbox.org>2006-02-23 20:53:59 +0000
committerDave Bryant <bryant@rockbox.org>2006-02-23 20:53:59 +0000
commitf0d1c96ee435e03af0c92aa5ac5260499ae589ed (patch)
tree48ad35f7a5bff47eae27c7488bc32be0e889bd86 /apps/codecs/libwavpack/unpack.c
parenteeec278d21ae258da9108bbbccf04d977c3d3bfa (diff)
downloadrockbox-f0d1c96ee435e03af0c92aa5ac5260499ae589ed.tar.gz
rockbox-f0d1c96ee435e03af0c92aa5ac5260499ae589ed.zip
Optimization of WavPack decoding in ARM assembler (for iPods). This allows WavPack files encoded in "high" mode to
play without skipping, although it's still rather marginal (i.e. can't play with other DSP effects enabled). For now this will not work with 24-bit files either, although that is coming along. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8814 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libwavpack/unpack.c')
-rw-r--r--apps/codecs/libwavpack/unpack.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/apps/codecs/libwavpack/unpack.c b/apps/codecs/libwavpack/unpack.c
index 8f5c1ee46f..0c61e0e38a 100644
--- a/apps/codecs/libwavpack/unpack.c
+++ b/apps/codecs/libwavpack/unpack.c
@@ -288,6 +288,8 @@ int read_config_info (WavpackContext *wpc, WavpackMetadata *wpmd)
288 288
289#if defined(CPU_COLDFIRE) && !defined(SIMULATOR) 289#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
290extern void decorr_stereo_pass_cont_mcf5249 (struct decorr_pass *dpp, long *buffer, long sample_count); 290extern void decorr_stereo_pass_cont_mcf5249 (struct decorr_pass *dpp, long *buffer, long sample_count);
291#elif defined(CPU_ARM) && !defined(SIMULATOR)
292extern void decorr_stereo_pass_cont_arm (struct decorr_pass *dpp, long *buffer, long sample_count);
291#else 293#else
292static void decorr_stereo_pass_cont (struct decorr_pass *dpp, long *buffer, long sample_count); 294static void decorr_stereo_pass_cont (struct decorr_pass *dpp, long *buffer, long sample_count);
293#endif 295#endif
@@ -350,6 +352,8 @@ long unpack_samples (WavpackContext *wpc, long *buffer, ulong sample_count)
350 decorr_stereo_pass (dpp, buffer, 8); 352 decorr_stereo_pass (dpp, buffer, 8);
351#if defined(CPU_COLDFIRE) && !defined(SIMULATOR) 353#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
352 decorr_stereo_pass_cont_mcf5249 (dpp, buffer + 16, sample_count - 8); 354 decorr_stereo_pass_cont_mcf5249 (dpp, buffer + 16, sample_count - 8);
355#elif defined(CPU_ARM) && !defined(SIMULATOR)
356 decorr_stereo_pass_cont_arm (dpp, buffer + 16, sample_count - 8);
353#else 357#else
354 decorr_stereo_pass_cont (dpp, buffer + 16, sample_count - 8); 358 decorr_stereo_pass_cont (dpp, buffer + 16, sample_count - 8);
355#endif 359#endif
@@ -510,7 +514,7 @@ static void decorr_stereo_pass (struct decorr_pass *dpp, long *buffer, long samp
510 dpp->weight_B = weight_B; 514 dpp->weight_B = weight_B;
511} 515}
512 516
513#if !defined(CPU_COLDFIRE) || defined(SIMULATOR) 517#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(SIMULATOR)
514 518
515static void decorr_stereo_pass_cont (struct decorr_pass *dpp, long *buffer, long sample_count) 519static void decorr_stereo_pass_cont (struct decorr_pass *dpp, long *buffer, long sample_count)
516{ 520{