aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/arm/fft_vfp.S
Commit message (Collapse)AuthorAgeFilesLines
* Merge commit 'f963f80399deb1a2b44c1bac3af7123e8a0c9e46'Michael Niedermayer2014-12-091-1/+1
|\ | | | | | | | | | | | | | | | | | | * commit 'f963f80399deb1a2b44c1bac3af7123e8a0c9e46': arm: Use .data.rel.ro for const data with relocations Conflicts: configure Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * arm: Use .data.rel.ro for const data with relocationsMartin Storsjö2014-12-091-1/+1
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'b280c6202b28b371a8d96850194fd69d7ad5dcc0'Michael Niedermayer2014-12-081-10/+5
|\| | | | | | | | | | | | | * commit 'b280c6202b28b371a8d96850194fd69d7ad5dcc0': arm: fft_vfp: Unify the behaviour in ff_fft_calc_vfp between arm/thumb Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * arm: fft_vfp: Unify the behaviour in ff_fft_calc_vfp between arm/thumbMartin Storsjö2014-12-081-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | Don't include the function pointer table in the code segment in arm mode. This shouldn't have any significant performance effect. It does end up as a few more instructions than before, for ARM, but only at the entry to this function, not within the fft functions themselves. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'ae81576414f2d2083d3118fb4abe1ebc5a7a4c54'Michael Niedermayer2014-12-081-0/+1
|\| | | | | | | | | | | | | * commit 'ae81576414f2d2083d3118fb4abe1ebc5a7a4c54': arm: fft_vfp: Add a missing "endconst" when building in thumb mode Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * arm: fft_vfp: Add a missing "endconst" when building in thumb modeMartin Storsjö2014-12-081-0/+1
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '87552d54d3337c3241e8a9e1a05df16eaa821496'Michael Niedermayer2014-07-181-14/+250
|\| | | | | | | | | | | | | * commit '87552d54d3337c3241e8a9e1a05df16eaa821496': armv6: Accelerate ff_fft_calc for general case (nbits != 4) Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * armv6: Accelerate ff_fft_calc for general case (nbits != 4)Ben Avison2014-07-181-14/+250
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous implementation targeted DTS Coherent Acoustics, which only requires nbits == 4 (fft16()). This case was (and still is) linked directly rather than being indirected through ff_fft_calc_vfp(), but now the full range from radix-4 up to radix-65536 is available. This benefits other codecs such as AAC and AC3. The implementaion is based upon the C version, with each routine larger than radix-16 calling a hierarchy of smaller FFT functions, then performing a post-processing pass. This pass benefits a lot from loop unrolling to counter the long pipelines in the VFP. A relaxed calling standard also reduces the overhead of the call hierarchy, and avoiding the excessive inlining performed by GCC probably helps with I-cache utilisation too. I benchmarked the result by measuring the number of gperftools samples that hit anywhere in the AAC decoder (starting from aac_decode_frame()) or specifically in the FFT routines (fft4() to fft512() and pass()) for the same sample AAC stream: Before After Mean StdDev Mean StdDev Confidence Change Audio decode 2245.5 53.1 1599.6 43.8 100.0% +40.4% FFT routines 940.6 22.0 348.1 20.8 100.0% +170.2% Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '8b9eba664edaddf9a304d3acbf0388b5c520781d'Michael Niedermayer2013-07-221-4/+4
|/ | | | | | | * commit '8b9eba664edaddf9a304d3acbf0388b5c520781d': arm: Add VFP-accelerated version of fft16 Merged-by: Michael Niedermayer <michaelni@gmx.at>
* arm: Add VFP-accelerated version of fft16Martin Storsjö2013-07-221-0/+298
Before After Mean StdDev Mean StdDev Change This function 1389.3 4.2 967.8 35.1 +43.6% Overall 15577.5 83.2 15400.0 336.4 +1.2% Signed-off-by: Martin Storsjö <martin@martin.st>