summaryrefslogtreecommitdiffstats
path: root/libavcodec/arm
Commit message (Collapse)AuthorAgeFilesLines
* arm: use a local label instead of the function symbol in ff_prefetch_armJanne Grunau2015-07-201-1/+2
| | | | | | | | Avoids a relocation which might end out of range for thumb2. Reported-By: Ludovic Fauvet <etix@videolan.org> Bug-Id: https://bugs.webkit.org/show_bug.cgi?id=137022 CC: libav-stable@libav.org
* h264: arm: use intra pred8x8 functions only for chroma_format_idc <= 1Janne Grunau2015-07-181-14/+16
|
* configure: Factor out g722dsp moduleVittorio Giovara2015-07-171-4/+2
|
* configure: Factor out vp8dsp moduleVittorio Giovara2015-07-171-12/+6
|
* configure: Factor out rv34dsp moduleVittorio Giovara2015-07-171-3/+2
|
* configure: Factor out flacdsp moduleVittorio Giovara2015-07-171-2/+2
|
* lavc: do not compile fmtconvert unconditionallyAnton Khirnov2015-02-281-4/+3
| | | | Only ac3dec and dcadec use it.
* fmtconvert: drop unused functionsAnton Khirnov2015-02-284-434/+0
|
* g722: Add ARM NEON implementation for g722_apply_qmf()Peter Meerwald2015-02-153-0/+108
| | | | | Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net> Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: mlpdsp: handle pic offset calculation in a macroJanne Grunau2014-12-091-16/+20
| | | | | Makes the code easier to read since it hides different offset calculations for arm and thumb mode.
* arm: make ff_mlp_filter_channel_arm and ff_mlp_rematrix_channel_arm position ↵Janne Grunau2014-12-091-10/+13
| | | | | | independent No significant difference in used cpu cycles on a cortex-a9.
* arm: Use .data.rel.ro for const data with relocationsMartin Storsjö2014-12-093-3/+3
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* 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>
* 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>
* motion_est: convert stride to ptrdiff_tVittorio Giovara2014-11-241-5/+5
| | | | | CC: libav-stable@libav.org Bug-Id: CID 700556 / CID 700557 / CID 700558
* idctdsp: Add global function pointers for {add|put}_pixels_clamped functionsDiego Biurrun2014-09-021-7/+0
| | | | | | These function pointers already existed in the ARM code. Adding them globally allows calls to the function pointers to access arch-optimized versions of the functions transparently.
* build: Add explanatory comments to (optimization) blocks in the MakefilesDiego Biurrun2014-08-151-0/+18
|
* mpegvideo: cosmetics: Lowercase ugly uppercase MPV_ function name prefixesDiego Biurrun2014-08-153-4/+4
|
* vc-1: Add platform-specific start code search routine to VC1DSPContext.Ben Avison2014-08-041-0/+3
| | | | | | | Initialise VC1DSPContext for parser as well as for decoder. Note, the VC-1 code doesn't actually use the function pointer yet. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* h264: Move start code search functions into separate source files.Ben Avison2014-08-044-6/+31
| | | | | | This permits re-use with parsers for codecs which use similar start codes. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* qpeldsp: Mark source pointer in qpel_mc_func function pointer constDiego Biurrun2014-07-252-66/+68
|
* arm: Macroize the test for 'setend' CPU instruction supportBen Avison2014-07-211-5/+1
| | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* dct-test: Move arch-specific bits into arch-specific subdirectoriesDiego Biurrun2014-07-211-0/+40
|
* idct: Move arm-specific declarations to a header in the arm directoryDiego Biurrun2014-07-205-15/+44
|
* idctdsp: prettyprinting cosmeticsDiego Biurrun2014-07-184-20/+20
|
* idct: Convert IDCT permutation #defines to an enumDiego Biurrun2014-07-184-5/+5
| | | | Also rename the enum values to be consistent with other DCT permutations.
* arm: cosmetics: Consistently use lowercase for shift operatorsMartin Storsjö2014-07-182-3/+3
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: cosmetics: Fix a misaligned asm operandMartin Storsjö2014-07-181-1/+1
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* armv6: Accelerate ff_fft_calc for general case (nbits != 4)Ben Avison2014-07-182-17/+255
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* armv6: Accelerate ff_imdct_half for general case (mdct_bits != 6)Ben Avison2014-07-181-2/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | The previous implementation targeted DTS Coherent Acoustics, which only requires mdct_bits == 6. This relatively small size lent itself to unrolling the loops a small number of times, and encoding offsets calculated at assembly time within the load/store instructions of each iteration. In the more general case (codecs such as AAC and AC3) much larger arrays are used - mdct_bits == [8, 9, 11]. The old method does not scale for these cases, so more integer registers are used with non-unrolled versions of the loops (and with some stack spillage). The postrotation filter loop is still unrolled by a factor of 2 to permit the double-buffering of some VFP registers to facilitate overlap of neighbouring iterations. 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 ff_imdct_half_c / ff_imdct_half_vfp, for the same example AAC stream: Before After Mean StdDev Mean StdDev Confidence Change aac_decode_frame 2368.1 35.8 2117.2 35.3 100.0% +11.8% ff_imdct_half_* 457.5 22.4 251.2 16.2 100.0% +82.1% Signed-off-by: Martin Storsjö <martin@martin.st>
* dsputil: Split motion estimation compare bits off into their own contextDiego Biurrun2014-07-173-5/+4
|
* arm: dsputil: Coalesce all init filesDiego Biurrun2014-07-164-91/+28
|
* dsputil: Drop unused bit_depth parameter from all init functionsDiego Biurrun2014-07-113-7/+4
|
* dsputil: Split off pixel block routines into their own contextDiego Biurrun2014-07-095-63/+120
|
* arm: Avoid using the 'setend' instruction on ARMv7 and newerMartin Storsjö2014-07-081-1/+5
| | | | | | | | | | This instruction is deprecated on ARMv8, and it is serializing on some ARMv7 cores as well [1]. [1] http://article.gmane.org/gmane.linux.ports.arm.kernel/339293 CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* dsputil: Move pix_sum, pix_norm1, shrink function pointers to mpegvideoencDiego Biurrun2014-07-065-61/+116
|
* dsputil: Split off IDCT bits into their own contextDiego Biurrun2014-06-3013-128/+250
|
* h264: avoid using uninitialized memory in NEON chroma mcJanne Grunau2014-06-231-4/+56
| | | | | Adapt commit 982b596ea6640bfe218a31f6c3fc542d9fe61c31 for the arm and aarch64 NEON asm. 5-10% faster on Cortex-A9.
* dsputil: Split audio operations off into a separate contextDiego Biurrun2014-06-227-55/+168
|
* dsputil: Split clear_block*/fill_block* off into a separate contextDiego Biurrun2014-06-187-24/+137
|
* arm: check if AS supports .dnJanne Grunau2014-06-032-0/+8
| | | | | | | | | | | | Move the GNU as check before the arch specific asm checks since the .dn check requires gas compatible assembler. Disable the VC-1 motion compensation NEON asm which is the only part using that directive. The integrated assembler in the upcoming clang 3.5 does not support .dn/.qn without plans to change that. Too much effort to implement it while it is rarely used. http://llvm.org/bugs/show_bug.cgi?id=18199.
* dsputil: Move APE-specific bits into apedspDiego Biurrun2014-05-295-45/+102
|
* mpegvideo: move the MpegEncContext fields used from arm asm to the beginningAnton Khirnov2014-04-291-6/+6
| | | | | This should reduce the frequency with which the offsets need to be updated.
* lavu: add CHK_OFFS as AV_CHECK_OFFSET to check struct member offsetsJanne Grunau2014-04-242-13/+8
|
* Remove a number of unnecessary dsputil.h #includesDiego Biurrun2014-04-041-1/+0
|
* arm: asm decode_block_coeffs_internal is vp8 specificJanne Grunau2014-04-041-1/+1
| | | | | Unbreaks compilation on arm due to conflicting types for 'ff_decode_block_coeffs_armv6'.
* On2 VP7 decoderPeter Ross2014-04-046-46/+72
| | | | | | | | | Further performance improvements and security fixes by Vittorio Giovara, Luca Barbato and Diego Biurrun. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com> Signed-off-by: Luca Barbato <lu_zero@gentoo.org> Signed-off-by: Diego Biurrun <diego@biurrun.de>
* arm: build: Maintain decoder objects separate from infrastructure objectsDiego Biurrun2014-03-271-3/+4
|
* truehd: add hand-scheduled ARM asm version of ff_mlp_pack_output.Ben Avison2014-03-263-0/+628
| | | | | | | | | | | | | | | | | | | | | | Profiling results for overall decode and the output_data function in particular are as follows: Before After Mean StdDev Mean StdDev Confidence Change 6:2 total 339.6 15.1 329.3 16.0 95.8% +3.1% (insignificant) 6:2 function 24.6 6.0 9.9 3.1 100.0% +148.5% 8:2 total 324.5 15.5 323.6 14.3 15.2% +0.3% (insignificant) 8:2 function 20.4 3.9 9.9 3.4 100.0% +104.7% 6:6 total 572.8 20.6 539.9 24.2 100.0% +6.1% 6:6 function 54.5 5.6 16.0 3.8 100.0% +240.9% 8:8 total 741.5 21.2 702.5 18.5 100.0% +5.6% 8:8 function 63.9 7.6 18.4 4.8 100.0% +247.3% The assembly version has also been tested with a fuzz tester to ensure that any combinations of inputs not exercised by my available test streams still generate mathematically identical results to the C version. Signed-off-by: Martin Storsjö <martin@martin.st>
* truehd: add hand-scheduled ARM asm version of ff_mlp_rematrix_channel.Ben Avison2014-03-262-0/+234
| | | | | | | | | | | | | | | | | | | | | | Profiling results for overall audio decode and the rematrix_channels function in particular are as follows: Before After Mean StdDev Mean StdDev Confidence Change 6:2 total 370.8 17.0 348.8 20.1 99.9% +6.3% 6:2 function 46.4 8.4 45.8 6.6 18.0% +1.2% (insignificant) 8:2 total 343.2 19.0 339.1 15.4 54.7% +1.2% (insignificant) 8:2 function 38.9 3.9 40.2 6.9 52.4% -3.2% (insignificant) 6:6 total 658.4 15.7 604.6 20.8 100.0% +8.9% 6:6 function 109.0 8.7 59.5 5.4 100.0% +83.3% 8:8 total 896.2 24.5 766.4 17.6 100.0% +16.9% 8:8 function 223.4 12.8 93.8 5.0 100.0% +138.3% The assembly version has also been tested with a fuzz tester to ensure that any combinations of inputs not exercised by my available test streams still generate mathematically identical results to the C version. Signed-off-by: Martin Storsjö <martin@martin.st>
OpenPOWER on IntegriCloud