summaryrefslogtreecommitdiffstats
path: root/libavcodec/arm
Commit message (Collapse)AuthorAgeFilesLines
* arm: add a cpu flag for the VFPv2 vector modeJanne Grunau2015-12-143-4/+4
| | | | | | | | | | | | | | The vector mode was deprecated in ARMv7-A/VFPv3 and various cpu implementations do not support it in hardware. Vector mode code will depending the OS either be emulated in software or result in an illegal instruction on cpus which does not support it. This was not really problem in practice since NEON implementations of the same functions are preferred. It will however become a problem for checkasm which tests every cpu flag separately. Since this is a cpu feature newer cpu do not support anymore the behaviour of this flag differs from the other flags. It can be only activated by runtime cpu feature selection.
* 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 <[email protected]> Bug-Id: https://bugs.webkit.org/show_bug.cgi?id=137022 CC: [email protected]
* 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 <[email protected]> Signed-off-by: Martin Storsjö <[email protected]>
* 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ö <[email protected]>
* 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ö <[email protected]>
* arm: fft_vfp: Add a missing "endconst" when building in thumb modeMartin Storsjö2014-12-081-0/+1
| | | | Signed-off-by: Martin Storsjö <[email protected]>
* motion_est: convert stride to ptrdiff_tVittorio Giovara2014-11-241-5/+5
| | | | | CC: [email protected] 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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ö <[email protected]>
* arm: cosmetics: Fix a misaligned asm operandMartin Storsjö2014-07-181-1/+1
| | | | Signed-off-by: Martin Storsjö <[email protected]>
* 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ö <[email protected]>
* 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ö <[email protected]>
* 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: [email protected] Signed-off-by: Martin Storsjö <[email protected]>
* 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 <[email protected]> Signed-off-by: Luca Barbato <[email protected]> Signed-off-by: Diego Biurrun <[email protected]>
* 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ö <[email protected]>