summaryrefslogtreecommitdiff
path: root/libavcodec/arm
Commit message (Collapse)AuthorAgeFilesLines
* build: Add vc1dsp component for more fine-grained dependenciesDiego Biurrun2016-02-191-3/+3
|
* dca: remove unused decode_hf function and quant_d tablesAlexandra Hájková2015-12-242-36/+0
| | | | | They were superseded with their integer equivalents. Rename integer decode_hf to decode_hf.
* arm: add ff_int32_to_float_fmul_array8_neonJanne Grunau2015-12-142-0/+41
| | | | | | | | | | | | | | | | | | | | | | | Quite a bit faster than int32_to_float_fmul_array8_c calling ff_int32_to_float_fmul_scalar_neon through FmtConvertContext. Number of cycles per int32_to_float_fmul_array8 call while decoding padded.dts on exynos5422: before after change cortex-a7: 1270 951 -25% cortex-a15: 434 285 -34% checkasm --bench cycle counts: cortex-a15 cortex-a7 int32_to_float_fmul_array8_c: 1730.4 4384.5 int32_to_float_fmul_array8_neon_c: 571.5 1694.3 int32_to_float_fmul_array8_neon: 374.0 1448.8 Interesting are the differences between int32_to_float_fmul_array8_neon_c and int32_to_float_fmul_array8_neon. The former is current behaviour of calling ff_int32_to_float_fmul_scalar_neon repeatedly from the c function, The raw numbers differ since checkasm uses different lengths than the dca decoder.
* 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 <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'.