diff options
author | Dave Bryant <bryant@rockbox.org> | 2006-02-23 20:53:59 +0000 |
---|---|---|
committer | Dave Bryant <bryant@rockbox.org> | 2006-02-23 20:53:59 +0000 |
commit | f0d1c96ee435e03af0c92aa5ac5260499ae589ed (patch) | |
tree | 48ad35f7a5bff47eae27c7488bc32be0e889bd86 /apps/codecs/libwavpack/unpack.c | |
parent | eeec278d21ae258da9108bbbccf04d977c3d3bfa (diff) | |
download | rockbox-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.c | 6 |
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) |
290 | extern void decorr_stereo_pass_cont_mcf5249 (struct decorr_pass *dpp, long *buffer, long sample_count); | 290 | extern void decorr_stereo_pass_cont_mcf5249 (struct decorr_pass *dpp, long *buffer, long sample_count); |
291 | #elif defined(CPU_ARM) && !defined(SIMULATOR) | ||
292 | extern void decorr_stereo_pass_cont_arm (struct decorr_pass *dpp, long *buffer, long sample_count); | ||
291 | #else | 293 | #else |
292 | static void decorr_stereo_pass_cont (struct decorr_pass *dpp, long *buffer, long sample_count); | 294 | static 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 | ||
515 | static void decorr_stereo_pass_cont (struct decorr_pass *dpp, long *buffer, long sample_count) | 519 | static void decorr_stereo_pass_cont (struct decorr_pass *dpp, long *buffer, long sample_count) |
516 | { | 520 | { |