summaryrefslogtreecommitdiff
path: root/apps/codecs/demac (follow)
Commit message (Collapse)AuthorAge
...
* Get rid of unused return values, except the one from decode_chunk() which ↵Jens Arnold2008-11-26
| | | | | | will be used in the dual core split. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19236 a1c6a512-1295-4272-9138-f99709370657
* Added 'keywords' and 'eol-style' properties.Björn Stenberg2008-11-25
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19218 a1c6a512-1295-4272-9138-f99709370657
* Reorder instructions to avoid pipeline stalls on ARMv6 wherever possible ↵Jens Arnold2008-11-24
| | | | | | (sometimes using different registers to allow this). Speeds up the predictor by almost 20% on ARMv6 (overall speedup for -c1000 is 5%), and might also help a bit on ARMv5. ARMv4 speed is unaffected. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19210 a1c6a512-1295-4272-9138-f99709370657
* Branch optimisation in both C (giving hints to gcc - verified using ↵Jens Arnold2008-11-24
| | | | | | -fprofile-arcs and gcov) and asm files. Biggest effect on coldfire (-c1000: +8%, -c2000: +5%), but ARM also profits a bit (less than 1% on ARM7TDMI, around 1% on ARM1136). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19199 a1c6a512-1295-4272-9138-f99709370657
* Tweak the ARMv6 filter assembly a bit further.Jens Arnold2008-11-24
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19198 a1c6a512-1295-4272-9138-f99709370657
* Remove .a files before running ar, to avoid problems with renamed files ↵Björn Stenberg2008-11-20
| | | | | | remaining in the library. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19160 a1c6a512-1295-4272-9138-f99709370657
* New makefile solution: A single invocation of 'make' to build the entire ↵Björn Stenberg2008-11-20
| | | | | | | | | tree. Fully controlled dependencies give faster and more correct recompiles. Many #include lines adjusted to conform to the new standards. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19146 a1c6a512-1295-4272-9138-f99709370657
* Several tweaks and cleanups: * Use .rept instead of repeated macros for ↵Jens Arnold2008-11-19
| | | | | | repeating blocks. * Use MUL (variant) instead of MLA (variant) in the first step of the ARM scalarproduct() if there's no loop. * Unroll ARM assembler functions to 32 where not already done, plus the generic scalarproduct(). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19144 a1c6a512-1295-4272-9138-f99709370657
* Compile-time choice between 16 bit and 32 bit integers for the filters. 32 ↵Jens Arnold2008-11-19
| | | | | | bit filters are faster on ARMv4 (with assembler code), so use them there. Nice speedup on PP and Gigabeat F/X. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19140 a1c6a512-1295-4272-9138-f99709370657
* Centralise compile-time configuration.Jens Arnold2008-11-16
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19121 a1c6a512-1295-4272-9138-f99709370657
* Make it compile again on linux...Jens Arnold2008-11-16
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19120 a1c6a512-1295-4272-9138-f99709370657
* Make the standalone decoder actually work on Windows (need to open the ↵Jens Arnold2008-11-16
| | | | | | output file in binary mode). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19119 a1c6a512-1295-4272-9138-f99709370657
* Make the standalone decoder build on cygwin.Jens Arnold2008-11-16
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19117 a1c6a512-1295-4272-9138-f99709370657
* Move the contents of rangecoding.h into entropy.c, and remove the former. It ↵Jens Arnold2008-11-16
| | | | | | was only used there, and defined some variables in the .h git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19116 a1c6a512-1295-4272-9138-f99709370657
* Avoid unnecessary register copies on ARMv5.Jens Arnold2008-11-16
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19112 a1c6a512-1295-4272-9138-f99709370657
* Make the standalone demac program compile againDave Chapman2008-11-15
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19107 a1c6a512-1295-4272-9138-f99709370657
* Fix comments.Jens Arnold2008-11-12
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19102 a1c6a512-1295-4272-9138-f99709370657
* Tiny speedup by simplifying the filter wrap check.Jens Arnold2008-11-12
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19101 a1c6a512-1295-4272-9138-f99709370657
* Tiny performance improvement for the (not yet usable) compression levels >= ↵Jens Arnold2008-11-12
| | | | | | -c2000 on ARM7TDMI, utilizing the multiplier's early termination. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19099 a1c6a512-1295-4272-9138-f99709370657
* Further optimised (vs. libgcc) unsigned 32 bit division for ARMv4 (based on ↵Jens Arnold2008-11-05
| | | | | | 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
* Some entropy decoder tweaks. Also removed unnecessary 'tmp' variables.Jens Arnold2008-11-04
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19008 a1c6a512-1295-4272-9138-f99709370657
* Another minor improvement: better pipelining and one less register used in ↵Jens Arnold2008-10-07
| | | | | | vector addition/ subtraction. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18739 a1c6a512-1295-4272-9138-f99709370657
* APE: Further ARMv6 filter optimisations: Save 4 'ror's per round by ↵Jens Arnold2008-10-07
| | | | | | 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
* Fix warnings on non-arm targets.Jens Arnold2008-10-03
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18702 a1c6a512-1295-4272-9138-f99709370657
* Various speedups: (1) Put actual decoding functions into IRAM on PP5002. (2) ↵Jens Arnold2008-10-03
| | | | | | 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
* Put the rangecoder struct into IRAM for a nice speedup on coldfire.Jens Arnold2008-10-03
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18699 a1c6a512-1295-4272-9138-f99709370657
* Further speedup for ARMv6 by better pipelining in scalarproduct().Jens Arnold2008-10-03
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18697 a1c6a512-1295-4272-9138-f99709370657
* Fix static noise on armv6.Jens Arnold2008-10-03
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18694 a1c6a512-1295-4272-9138-f99709370657
* Add preliminary ARMv5te optimisations (verified working, but can probably be ↵Jens Arnold2008-10-03
| | | | | | 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
* Add armv6 specific asm code for the APE filters, speeding up -c2000..-c5000 ↵Jens Arnold2008-10-03
| | | | | | a bit on Gigabeat S. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18692 a1c6a512-1295-4272-9138-f99709370657
* Remove unnecessary #include - this fixes compilation of the standalone demac ↵Dave Chapman2007-10-26
| | | | | | tool git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15320 a1c6a512-1295-4272-9138-f99709370657
* Further optimised the filter vector math assembly for coldfire, and added ↵Jens Arnold2007-10-25
| | | | | | 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
* * Flip argument order for scalarproduct() so that the first argument is ↵Jens Arnold2007-10-25
| | | | | | 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
* Shuffle some instructions around for that extra percent of performance. Fix ↵Jens Arnold2007-10-19
| | | | | | a bunch of comments. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15216 a1c6a512-1295-4272-9138-f99709370657
* APE codec: Assembler optimised predictor for coldfire. Heavily based on the ↵Jens Arnold2007-10-19
| | | | | | 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
* APE codec: Further optimised filtering yields 3..4% speedup for -c2000 (now ↵Jens Arnold2007-10-19
| | | | | | 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
* APE codec: Assembler optimised vector math routines for coldfire. -c2000 is ↵Jens Arnold2007-10-18
| | | | | | 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
* Remove some unused codeDave Chapman2007-06-14
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13630 a1c6a512-1295-4272-9138-f99709370657
* Oops, forgot to set keywords propDave Chapman2007-06-13
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13627 a1c6a512-1295-4272-9138-f99709370657
* ARM assembler predictor decoding function. This increases my -c1000 test ↵Dave Chapman2007-06-13
| | | | | | 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
* C optimisations to the predictor decoding - create a single function for ↵Dave Chapman2007-06-10
| | | | | | 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
* Define and use a local APE_MAX function to make the standalone demac decoder ↵Dave Chapman2007-06-09
| | | | | | compile again. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13601 a1c6a512-1295-4272-9138-f99709370657
* Seeking and resume support for Monkey's AudioDave Chapman2007-06-08
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13597 a1c6a512-1295-4272-9138-f99709370657
* Make v3.97 APE files work in RockboxDave Chapman2007-06-06
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13571 a1c6a512-1295-4272-9138-f99709370657
* Correct a comment (thanks to Markun for spotting)Dave Chapman2007-06-06
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13569 a1c6a512-1295-4272-9138-f99709370657
* Initial commit of Monkey's Audio (.ape/.mac) support. Note that Monkey's is ↵Dave Chapman2007-06-05
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