summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac
AgeCommit message (Collapse)Author
2008-11-16Avoid unnecessary register copies on ARMv5.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19112 a1c6a512-1295-4272-9138-f99709370657
2008-11-15Make the standalone demac program compile againDave Chapman
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19107 a1c6a512-1295-4272-9138-f99709370657
2008-11-12Fix comments.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19102 a1c6a512-1295-4272-9138-f99709370657
2008-11-12Tiny speedup by simplifying the filter wrap check.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19101 a1c6a512-1295-4272-9138-f99709370657
2008-11-12Tiny performance improvement for the (not yet usable) compression levels >= ↵Jens Arnold
-c2000 on ARM7TDMI, utilizing the multiplier's early termination. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19099 a1c6a512-1295-4272-9138-f99709370657
2008-11-05Further optimised (vs. libgcc) unsigned 32 bit division for ARMv4 (based on ↵Jens Arnold
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-04Some entropy decoder tweaks. Also removed unnecessary 'tmp' variables.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19008 a1c6a512-1295-4272-9138-f99709370657
2008-10-07Another minor improvement: better pipelining and one less register used in ↵Jens Arnold
vector addition/ subtraction. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18739 a1c6a512-1295-4272-9138-f99709370657
2008-10-07APE: Further ARMv6 filter optimisations: Save 4 'ror's per round by ↵Jens Arnold
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-03Fix warnings on non-arm targets.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18702 a1c6a512-1295-4272-9138-f99709370657
2008-10-03Various speedups: (1) Put actual decoding functions into IRAM on PP5002. (2) ↵Jens Arnold
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-03Put the rangecoder struct into IRAM for a nice speedup on coldfire.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18699 a1c6a512-1295-4272-9138-f99709370657
2008-10-03Further speedup for ARMv6 by better pipelining in scalarproduct().Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18697 a1c6a512-1295-4272-9138-f99709370657
2008-10-03Fix static noise on armv6.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18694 a1c6a512-1295-4272-9138-f99709370657
2008-10-03Add preliminary ARMv5te optimisations (verified working, but can probably be ↵Jens Arnold
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-03Add armv6 specific asm code for the APE filters, speeding up -c2000..-c5000 ↵Jens Arnold
a bit on Gigabeat S. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18692 a1c6a512-1295-4272-9138-f99709370657
2007-10-26Remove unnecessary #include - this fixes compilation of the standalone demac ↵Dave Chapman
tool git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15320 a1c6a512-1295-4272-9138-f99709370657
2007-10-25Further optimised the filter vector math assembly for coldfire, and added ↵Jens Arnold
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* Flip argument order for scalarproduct() so that the first argument is ↵Jens Arnold
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-19Shuffle some instructions around for that extra percent of performance. Fix ↵Jens Arnold
a bunch of comments. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15216 a1c6a512-1295-4272-9138-f99709370657
2007-10-19APE codec: Assembler optimised predictor for coldfire. Heavily based on the ↵Jens Arnold
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-19APE codec: Further optimised filtering yields 3..4% speedup for -c2000 (now ↵Jens Arnold
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-18APE codec: Assembler optimised vector math routines for coldfire. -c2000 is ↵Jens Arnold
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-06-14Remove some unused codeDave Chapman
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13630 a1c6a512-1295-4272-9138-f99709370657
2007-06-13Oops, forgot to set keywords propDave Chapman
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13627 a1c6a512-1295-4272-9138-f99709370657
2007-06-13ARM assembler predictor decoding function. This increases my -c1000 test ↵Dave Chapman
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-10C optimisations to the predictor decoding - create a single function for ↵Dave Chapman
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-09Define and use a local APE_MAX function to make the standalone demac decoder ↵Dave Chapman
compile again. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13601 a1c6a512-1295-4272-9138-f99709370657
2007-06-08Seeking and resume support for Monkey's AudioDave Chapman
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13597 a1c6a512-1295-4272-9138-f99709370657
2007-06-06Make v3.97 APE files work in RockboxDave Chapman
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13571 a1c6a512-1295-4272-9138-f99709370657
2007-06-06Correct a comment (thanks to Markun for spotting)Dave Chapman
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13569 a1c6a512-1295-4272-9138-f99709370657
2007-06-05Initial commit of Monkey's Audio (.ape/.mac) support. Note that Monkey's is ↵Dave Chapman
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