summaryrefslogtreecommitdiff
path: root/libavcodec/arm
Commit message (Collapse)AuthorAge
...
* arm: check if AS supports .dnJanne Grunau2014-06-03
| | | | | | | | | | | | 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-29
|
* mpegvideo: move the MpegEncContext fields used from arm asm to the beginningAnton Khirnov2014-04-29
| | | | | 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-24
|
* Remove a number of unnecessary dsputil.h #includesDiego Biurrun2014-04-04
|
* arm: asm decode_block_coeffs_internal is vp8 specificJanne Grunau2014-04-04
| | | | | Unbreaks compilation on arm due to conflicting types for 'ff_decode_block_coeffs_armv6'.
* On2 VP7 decoderPeter Ross2014-04-04
| | | | | | | | | 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-27
|
* truehd: add hand-scheduled ARM asm version of ff_mlp_pack_output.Ben Avison2014-03-26
| | | | | | | | | | | | | | | | | | | | | | 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-26
| | | | | | | | | | | | | | | | | | | | | | 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>
* truehd: add hand-scheduled ARM asm version of mlp_filter_channel.Ben Avison2014-03-26
| | | | | | | | | | | | | | | | | | | | | | | | | Profiling results for overall audio decode and the mlp_filter_channel(_arm) function in particular are as follows: Before After Mean StdDev Mean StdDev Confidence Change 6:2 total 380.4 22.0 370.8 17.0 87.4% +2.6% (insignificant) 6:2 function 60.7 7.2 36.6 8.1 100.0% +65.8% 8:2 total 357.0 17.5 343.2 19.0 97.8% +4.0% (insignificant) 8:2 function 60.3 8.8 37.3 3.8 100.0% +61.8% 6:6 total 717.2 23.2 658.4 15.7 100.0% +8.9% 6:6 function 140.4 12.9 81.5 9.2 100.0% +72.4% 8:8 total 981.9 16.2 896.2 24.5 100.0% +9.6% 8:8 function 193.4 15.0 103.3 11.5 100.0% +87.2% Experiments with adding preload instructions to this function yielded no useful benefit, so these have not been included. 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>
* dsputil: Refactor duplicated CALL_2X_PIXELS / PIXELS16 macrosDiego Biurrun2014-03-22
|
* dsputil: Use correct type in me_cmp_func function pointerDiego Biurrun2014-03-20
|
* build: Group general components separate from de/encoders in arch MakefilesDiego Biurrun2014-03-20
| | | | This is in line with how the top-level libavcodec Makefile is structured.
* dsputil: Propagate bit depth information to all (sub)init functionsDiego Biurrun2014-03-20
| | | | This avoids recalculating the value over and over again.
* arm: dsputil: K&R formatting cosmeticsDiego Biurrun2014-03-20
|
* arm: dsputil: Drop restrict keyword from add_pixels_clamped_armv6 prototypeDiego Biurrun2014-03-14
| | | | | | | | The function is assigned to a function pointer that does not have the restrict keyword for that parameter. This fixes compilation for MSVC builds that don't recognize "restrict", broken since ed9625eb62.
* Update dsputil- and SIMD-related comments to match reality more closelyDiego Biurrun2014-03-13
|
* arm: dsputil: Add a bunch of missing #includesDiego Biurrun2014-03-13
|
* dsputil: Remove prototypes for nonexisting optimization functionsDiego Biurrun2014-03-13
|
* armv6: vp8: use explicit labels in motion compensation asmJanne Grunau2014-03-12
| | | | | The integrated arm assembler in clang-503.0.38 (Xcode-5.1) fails to assemble a branch to 'label + offset' in thumb mode.
* arm: get_cabac inline asmJanne Grunau2014-03-09
| | | | | | | | | | Based on the aarch64 asm. CPU cycle counts on cortex-a9 compared to gcc 4.8.2: before: 475 decicycles in get_cabac_noinline, 67106035 runs, 2829 skips after: 393 decicycles in get_cabac_noinline, 67106474 runs, 2390 skips Overall speedup is above 2%. Code generated by clang 3.4 is slower on the same hardware and the relative change is a little larger.
* arm: vp3: remove incorrect const in ff_vp3_idct_dc_add_neon declarationJanne Grunau2014-03-09
| | | | | Was missed in aeaf268e52fc11c1f64914a319e0edddf1346d6a when integrating clear_blocks into the idct.
* arm: hpeldsp: fix put_pixels8_y2_{,no_rnd_}armv6Janne Grunau2014-03-08
| | | | | | | | The overread avoidance fix in cbddee1cca0ebd01e8c5aa694d31228eb4de4b41 broke the computation for the last row since it prevented the safe reading from the height+1-th row. CC: libav-stable@libav.org
* arm: hpeldsp: prevent overreads in armv6 asmJanne Grunau2014-03-05
| | | | | | | Based on a patch by Russel King <rmk+libav@arm.linux.org.uk> Bug-Id: 646 CC: libav-stable@libav.org
* arm: dcadsp: implement decode_hf as external NEON asmJanne Grunau2014-02-28
|
* dcadec: simplify decoding of VQ high frequenciesChristophe Gisquet2014-02-28
| | | | | | | | | | | | | | | | | | | The vector dequantization has a test in a loop preventing effective SIMD implementation. By moving it out of the loop, this loop can be DSPized. Therefore, modify the current DSP implementation. In particular, the DSP implementation no longer has to handle null loop sizes. The decode_hf implementations have following timings: For x86 Arrandale: C SSE SSE2 SSE4 win32: 260 162 119 104 win64: 242 N/A 89 72 The arm NEON optimizations follow in a later patch as external asm. The now unused check for the y modifier in arm inline asm is removed from configure.
* dcadec: remove scaling in lfe_interpolation_firChristophe Gisquet2014-02-28
| | | | | | | The scaling factor is constant so it is faster to scale the FIR coefficients in the tables during compilation. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* arm: Remove a stray .fpu directiveMartin Storsjö2014-02-09
| | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* dca: include dcadsp.h in {arm,x86}/dca.h for checkheadersJanne Grunau2014-02-08
|
* dcadsp: split lfe_dir casesChristophe Gisquet2014-02-07
| | | | | | | | | The x86 runs short on registers because numerous elements are not static. In addition, splitting them allows more optimized code, at least for x86. Arm asm changes by Janne Grunau. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* dcadsp: add int8x8_fmul_int32 to dsp contextChristophe Gisquet2014-02-07
| | | | | | | | | | | | | | It is currently declared as a macro who is set to inlinable functions, among which a Neon and a default C implementations. Add a DSP parameter to each inline function, unused except by the default C implementation which calls a function from the DSP context. On an Arrandale CPU, gain for an inlined SSE2 function vs. a call: - Win32: 29 to 26 cycles - Win64: 25 to 23 cycles Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* arm: Add X() around all references to extern symbolsMartin Storsjö2014-02-07
| | | | | | Don't rely on the fact that an unprefixed label currently exists. Signed-off-by: Martin Storsjö <martin@martin.st>
* vp8: Use 2 registers for dst_stride and src_stride in neon bilin filterMartin Storsjö2014-02-06
| | | | | | Based on a patch by Ronald S. Bultje. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Use full filenames as multiple inclusion guardsDiego Biurrun2014-01-14
|
* arm: Add an option for making sure NEON registers aren't clobberedMartin Storsjö2014-01-11
| | | | | | This is pretty much based on the same test for XMM registers. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Add a missing # as prefix for an immediate constantMartin Storsjö2014-01-07
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Allow overriding the alignment set in the function macroMartin Storsjö2014-01-07
| | | | | | | | | | | | | | | The function macro always sets .align 2 before declaring the function label (since 5c5e1ea3) and always sets the section to .text (since 278caa6a). The .align 5 before certain functions, added in fc252eba, were added before .text and .align were added to the function macro and thus became useless/unused when the function macro got them. This restores the original intention, to align the loop entry points. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Remove a leftover define for the pld instructionMartin Storsjö2014-01-07
| | | | | | | This file no longer uses the pld instruction at all, all such uses have been split into hpeldsp_arm.S. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: cosmetics: Reindent the h264dsp neon init functionMartin Storsjö2014-01-07
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* Rename CONFIG_FFT_FLOAT ---> FFT_FLOATDiego Biurrun2014-01-06
| | | | | The define does not originate from configure, so it should not have a name that is CONFIG_-prefixed.
* h264: do not use 422 functions for monochromeAnton Khirnov2014-01-06
| | | | | | | Fixes invalid memory access. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC:libav-stable@libav.org
* arm: Use the matching endfunc macro instead of the assembler directive directlyMartin Storsjö2014-01-04
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Add a missing endfunc macro callMartin Storsjö2014-01-04
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Don't clobber callee saved registers in scalarproductMartin Storsjö2013-12-20
| | | | | | | q4-q7/d8-d15 are supposed to not be clobbered by the callee. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* vc1: arm: Add NEON no_rnd chroma MCMason Carter2013-12-20
| | | | | | | | Apply David Conrad's old patch to the modern codebase. http://ffmpeg.org/pipermail/ffmpeg-devel/2009-April/059877.html Signed-off-by: Martin Storsjö <martin@martin.st>
* vc1: arm: Add NEON assemblyMason Carter2013-12-20
| | | | | | | | | | | | | For: ff_vc1_inv_trans_{8,4}x{8,4}_{dc_,}neon ff_put_pixels8x8_neon ff_put_vc1_mspel_mc{0,1,2,3}{0,1,2,3}_neon (except for 00) Based on ARM assembly code in libavcodec/arm by Rob Clark and Mans Rullgard. Signed-off-by: Martin Storsjö <martin@martin.st>
* dsputil: Move apply_window_int16 to ac3dspDiego Biurrun2013-12-08
| | | | The (optimized) functions are used nowhere else.
* arm: fmtconvert: Split armv6 fmtconvert code off from vfp codeDiego Biurrun2013-08-29
|
* arm: dcadsp: Move synth filter initialization to dcadsp fileDiego Biurrun2013-08-29
|