Jens Arnold
|
fe04e40be7
|
Further optimised (vs. libgcc) unsigned 32 bit division for ARMv4 (based on the ARMv5(+) version from libgcc), in IRAM on PP for better performance on PP5002, and put into the codeclib for possible reuse. APE -c1000 is now usable on both PP502x and PP5002 (~138% realtime, they're on par now). Gigabeat F/X should also see an APE speedup.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19009 a1c6a512-1295-4272-9138-f99709370657
|
2008-11-05 00:10:05 +00:00 |
|
Jens Arnold
|
7a835ee0c6
|
Some entropy decoder tweaks. Also removed unnecessary 'tmp' variables.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19008 a1c6a512-1295-4272-9138-f99709370657
|
2008-11-04 23:46:04 +00:00 |
|
Jens Arnold
|
dd7cacdc88
|
Another minor improvement: better pipelining and one less register used in vector addition/ subtraction.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18739 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-07 20:52:42 +00:00 |
|
Jens Arnold
|
6b84f60046
|
APE: Further ARMv6 filter optimisations: Save 4 'ror's per round by utilising the shift feature of the 'pack halfword' instructions in the unaligned vector addition/ subtraction, better pipelining in the aligned scalarproduct(), and a new method to calculate the unaligned scalarproduct().
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18736 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-07 19:40:17 +00:00 |
|
Jens Arnold
|
6219f4c862
|
Fix warnings on non-arm targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18702 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-03 21:52:47 +00:00 |
|
Jens Arnold
|
d1b19be423
|
Various speedups: (1) Put actual decoding functions into IRAM on PP5002. (2) Put the insane filter buffer into IRAM on coldfire and PP502x (just for completeness, as long as there's no better use). (3) Use the ARMv6 'ssat' instruction for saturation on Gigabeat S.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18701 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-03 21:40:32 +00:00 |
|
Jens Arnold
|
5d29f5188f
|
Put the rangecoder struct into IRAM for a nice speedup on coldfire.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18699 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-03 15:54:34 +00:00 |
|
Jens Arnold
|
d456460707
|
Further speedup for ARMv6 by better pipelining in scalarproduct().
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18697 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-03 12:30:18 +00:00 |
|
Jens Arnold
|
67554591d9
|
Fix static noise on armv6.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18694 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-03 10:09:57 +00:00 |
|
Jens Arnold
|
46bf6bd493
|
Add preliminary ARMv5te optimisations (verified working, but can probably be sped up further), and fix a comment in the ARMv6 code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18693 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-03 09:33:36 +00:00 |
|
Jens Arnold
|
6fcf2765dd
|
Add armv6 specific asm code for the APE filters, speeding up -c2000..-c5000 a bit on Gigabeat S.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18692 a1c6a512-1295-4272-9138-f99709370657
|
2008-10-03 08:54:34 +00:00 |
|
Dave Chapman
|
f026c0fc82
|
Remove unnecessary #include - this fixes compilation of the standalone demac tool
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15320 a1c6a512-1295-4272-9138-f99709370657
|
2007-10-26 21:17:37 +00:00 |
|
Jens Arnold
|
35f23267bf
|
Further optimised the filter vector math assembly for coldfire, and added assembly filter vector math for ARM. Both make use of the fact that the first argument of the vector functions is longword aligned. * The ARM version is tailored for ARM7TDMI, and would slow down arm9 or higher. Introduced a new CPU_ macro for ARM7TDMI. Speedup for coldfire: -c3000 104%->109%, -c4000 43%->46%, -c5000 1.7%->2.0%. Speedup for PP502x: -c2000 66%->75%, -c3000 37%->48%, -c4000 11%->18%, -c5000 2.5%->3.7%
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15302 a1c6a512-1295-4272-9138-f99709370657
|
2007-10-25 18:58:16 +00:00 |
|
Jens Arnold
|
3ea3caf341
|
* Flip argument order for scalarproduct() so that the first argument is always 32 bit aligned, like it is already the case for vector_add() and vector_sub(), for upcoming optimisations. * Un-inline the apply_filter functions for better cache utilisation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15301 a1c6a512-1295-4272-9138-f99709370657
|
2007-10-25 18:45:28 +00:00 |
|
Jens Arnold
|
87f5359d60
|
Shuffle some instructions around for that extra percent of performance. Fix a bunch of comments.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15216 a1c6a512-1295-4272-9138-f99709370657
|
2007-10-19 22:57:19 +00:00 |
|
Jens Arnold
|
5d066590cc
|
APE codec: Assembler optimised predictor for coldfire. Heavily based on the arm version atm, instruction reordering will probably allow for a bit more speedup soon. Speedup: -c1000: 177% -> 210%, -c2000: 135% -> 147%, -c3000: 97% -> 103%.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15211 a1c6a512-1295-4272-9138-f99709370657
|
2007-10-19 21:35:07 +00:00 |
|
Jens Arnold
|
2e9c77cc2a
|
APE codec: Further optimised filtering yields 3..4% speedup for -c2000 (now 135% realtime), -c3000 (now 97% realtime) and higher modes. Single 32 bit stores are faster than movem/lea in IRAM.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15200 a1c6a512-1295-4272-9138-f99709370657
|
2007-10-19 07:30:55 +00:00 |
|
Jens Arnold
|
2640bdb262
|
APE codec: Assembler optimised vector math routines for coldfire. -c2000 is now usable at 130% realtime (was 107%), -c3000 is near realtime (93%, was 64%). -c1000 doesn't change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15194 a1c6a512-1295-4272-9138-f99709370657
|
2007-10-18 22:37:33 +00:00 |
|
Dave Chapman
|
cee61b57c8
|
Remove some unused code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13630 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-14 22:35:01 +00:00 |
|
Dave Chapman
|
283738086d
|
Oops, forgot to set keywords prop
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13627 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-13 22:03:28 +00:00 |
|
Dave Chapman
|
6b713820c1
|
ARM assembler predictor decoding function. This increases my -c1000 test track from around 94% realtime on an ipod to around 104% realtime, but yields only a tiny speedup (453% to 455%) on the Gigabeat. Including this optimisation, total decoding time for my 245.70s -c1000 test track on an ipod is 236.06s, with the predictor decoding taking 51.40s of that time - meaning the predictor decoding is only about 22% of the total decoding time.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13626 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-13 22:02:34 +00:00 |
|
Dave Chapman
|
601ede7f9c
|
C optimisations to the predictor decoding - create a single function for decoding stereo streams, and reorganise to minimise the number of variables used. My -c1000 test track now decodes at 93% realtime on PortalPlayer (was 78%), 187% on Coldfire (was 170%) and 447% on Gigabeat (was 408%).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13608 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-10 08:55:16 +00:00 |
|
Dave Chapman
|
6131996538
|
Define and use a local APE_MAX function to make the standalone demac decoder compile again.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13601 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-09 00:58:15 +00:00 |
|
Dave Chapman
|
7b1d90a851
|
Seeking and resume support for Monkey's Audio
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13597 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-08 22:35:26 +00:00 |
|
Dave Chapman
|
c995ae8026
|
Make v3.97 APE files work in Rockbox
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13571 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-06 17:46:49 +00:00 |
|
Dave Chapman
|
8dcd6058c8
|
Correct a comment (thanks to Markun for spotting)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13569 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-06 08:53:55 +00:00 |
|
Dave Chapman
|
520274219a
|
Initial commit of Monkey's Audio (.ape/.mac) support. Note that Monkey's is an extremely CPU-intensive codec, and that the decoding speed is directly related to the compression level (-c1000, -c2000, -c3000, -c4000 or -c5000) used when encoding the file. Current performance is: -c1000 to -c3000 are realtime on a Gigabeat, -c1000 is realtime on Coldfire targets (H100, H300 and Cowon), and nothing is realtime on PortalPlayer targets (iPods, H10, Sansa). Hopefully this can be improved. More information at FS #7256.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13562 a1c6a512-1295-4272-9138-f99709370657
|
2007-06-05 16:58:29 +00:00 |
|