summaryrefslogtreecommitdiff
path: root/libavcodec/dcadsp.c
Commit message (Collapse)AuthorAgeFilesLines
* dca_core: convert to lavu/txLynne2022-11-061-4/+6
| | | | | Thanks to Martin Storsjö <martin@martin.st> for fixing and testing the arm32 and aarch64 changes.
* all: Replace if (ARCH_FOO) checks by #if ARCH_FOOAndreas Rheinhardt2022-06-151-2/+3
| | | | | | | | | | | | | | | | | | This is more spec-compliant because it does not rely on dead-code elimination by the compiler. Especially MSVC has problems with this, as can be seen in https://ffmpeg.org/pipermail/ffmpeg-devel/2022-May/296373.html or https://ffmpeg.org/pipermail/ffmpeg-devel/2022-May/297022.html This commit does not eliminate every instance where we rely on dead code elimination: It only tackles branching to the initialization of arch-specific dsp code, not e.g. all uses of CONFIG_ and HAVE_ checks. But maybe it is already enough to compile FFmpeg with MSVC with whole-programm-optimizations enabled (if one does not disable too many components). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* Remove unnecessary mem.h inclusionsAndreas Rheinhardt2021-07-221-1/+0
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/dcadsp: Fix integer overflow in dmix_add_c()Michael Niedermayer2021-03-081-1/+1
| | | | | | | | Fixes: signed integer overflow: 1515225320 + 759416059 cannot be represented in type 'int' Fixes: 29256/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DCA_fuzzer-5719088561258496 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavu: move LOCAL_ALIGNED from internal.h to mem_internal.hAnton Khirnov2021-01-011-0/+1
| | | | That is a more appropriate place for it.
* avcodec/dcadsp: Fix runtime error: signed integer overflowMichael Niedermayer2017-04-091-1/+1
| | | | | Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/dcadsp: Fix 2 runtime error: signed integer overflow: -1958094138 - ↵Michael Niedermayer2017-03-051-2/+2
| | | | | | | | | 1078906344 cannot be represented in type 'int' Fixes: 722/clusterfuzz-testcase-5711268868521984 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/dca: Fix multiple runtime error: signed integer overflowMichael Niedermayer2017-02-281-1/+1
| | | | | | | | Fixes: 680/clusterfuzz-testcase-5416627266912256 Fixes: 681/clusterfuzz-testcase-5013323462475776 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/dcadsp: Fix runtime error: signed integer overflow: 394625024 * 8 ↵Michael Niedermayer2017-02-221-1/+1
| | | | | | | | | cannot be represented in type 'int' Fixes: 643/clusterfuzz-testcase-5209078743695360 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/dca: add DTS Express (LBR) decoderfoo862016-05-101-0/+74
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/dcadsp: use LOCAL_ALIGNED_32 instead of LOCAL_ALIGNED(32, ...)James Almer2016-05-061-4/+4
|
* x86/dcadec: add ff_lfe_fir0_float_{sse,sse2,avx,fma3}James Almer2016-02-061-0/+3
| | | | | | | Up to ~4 times faster on x86_64, ~8 times on x86_32 if compiling using x87 fp math. Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/dcadsp: rename lfe_fir_float functionsJames Almer2016-02-061-4/+4
| | | | | Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/dcadsp: replace intptr_t with ptrdiff_tJames Almer2016-02-051-23/+23
| | | | | Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/dca: add new decoder based on libdcadecfoo862016-01-311-0/+413
|
* avcodec/dca: remove old decoderfoo862016-01-311-134/+0
| | | | | Remove all files and functions which are not going to be reused, and disable all functions and FATE tests temporarily which will be.
* Merge commit '40d949677335a564f769823f4afdb7e7a3da8d6b'Hendrik Leppkes2016-01-021-3/+3
|\ | | | | | | | | | | | | * commit '40d949677335a564f769823f4afdb7e7a3da8d6b': dca: use defines for subband related constants Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * dca: use defines for subband related constantsAlexandra Hájková2015-12-311-3/+3
| | | | | | | | Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* | Merge commit '2008f76054906e9ff6bf744800af0e5a5bfe61be'Hendrik Leppkes2016-01-021-20/+1
|\ \ | |/ | | | | | | | | | | * commit '2008f76054906e9ff6bf744800af0e5a5bfe61be': dca: remove unused decode_hf function and quant_d tables Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * dca: remove unused decode_hf function and quant_d tablesAlexandra Hájková2015-12-241-20/+1
| | | | | | | | | | They were superseded with their integer equivalents. Rename integer decode_hf to decode_hf.
* | Merge commit 'aebf07075f4244caf591a3af71e5872fe314e87b'Hendrik Leppkes2016-01-021-0/+34
|\ \ | |/ | | | | | | | | | | * commit 'aebf07075f4244caf591a3af71e5872fe314e87b': dca: change the core to work with integer coefficients. Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * dca: change the core to work with integer coefficients.Alexandra Hájková2015-12-231-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | The DCA core decoder converts integer coefficients read from the bitstream to floats just after reading them (along with dequantization). All the other steps of the audio reconstruction are done with floats which makes the output for the DTS lossless extension (XLL) actually lossy. This patch changes the DCA core to work with integer coefficients until QMF. At this point the integer coefficients are converted to floats. The coefficients for the LFE channel (lfe_data) are not touched. This is the first step for the really lossless XLL decoding.
* | Merge commit 'c33c1fa8af2b2e82418a06901b6ad17b3d61b73e'Hendrik Leppkes2016-01-021-0/+2
|\ \ | |/ | | | | | | | | | | * commit 'c33c1fa8af2b2e82418a06901b6ad17b3d61b73e': arm64: convert dcadsp neon asm from arm Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * arm64: convert dcadsp neon asm from armJanne Grunau2015-12-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | ~2% faster dts decoding overall. cortex-a57 cortex-a53 dca_decode_hf_c: 474.8 1659.9 dca_decode_hf_neon: 225.2 301.1 dca_lfe_fir0_c: 913.2 1537.7 dca_lfe_fir0_neon: 286.8 451.9 dca_lfe_fir1_c: 848.7 1711.5 dca_lfe_fir1_neon: 387.1 506.4
* | Merge commit '45ff7c93dd84a254cc96acc589e5ac3d7bd16bce'Michael Niedermayer2014-09-161-10/+15
|\ \ | |/ | | | | | | | | | | | | | | | | | | * commit '45ff7c93dd84a254cc96acc589e5ac3d7bd16bce': dca: K&R formatting cosmetics Conflicts: libavcodec/dca_parser.c libavcodec/dcadec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dca: K&R formatting cosmeticsGabriel Dume2014-09-161-10/+15
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | Merge commit '4cb6964244fd6c099383d8b7e99731e72cc844b9'Michael Niedermayer2014-02-281-6/+16
|\ \ | |/ | | | | | | | | | | | | | | | | | | * commit '4cb6964244fd6c099383d8b7e99731e72cc844b9': dcadec: simplify decoding of VQ high frequencies Conflicts: configure libavcodec/dcadec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dcadec: simplify decoding of VQ high frequenciesChristophe Gisquet2014-02-281-6/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge commit '57b1eb9f75b04571063ddec316e290c216c114ac'Michael Niedermayer2014-02-281-6/+4
|\ \ | |/ | | | | | | | | | | | | | | | | | | * commit '57b1eb9f75b04571063ddec316e290c216c114ac': dcadsp: scan coefficients linearly in dca_lfe_fir Conflicts: libavcodec/dcadsp.c See: 9ae8e23188fc2e533eea74757c9060557941d3d9 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dcadsp: scan coefficients linearly in dca_lfe_firChristophe Gisquet2014-02-281-8/+6
| | | | | | | | | | | | This change is inspired by x86 asm where it frees a register. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* | Merge commit '87ec849fe9acba075c843e67bcd01f256f481a18'Michael Niedermayer2014-02-281-9/+7
|\ \ | |/ | | | | | | | | | | | | | | | | | | * commit '87ec849fe9acba075c843e67bcd01f256f481a18': dcadec: remove scaling in lfe_interpolation_fir Conflicts: libavcodec/dcadec.c libavcodec/dcadsp.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dcadec: remove scaling in lfe_interpolation_firChristophe Gisquet2014-02-281-9/+7
| | | | | | | | | | | | | | 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>
| * dcadsp: split lfe_dir casesChristophe Gisquet2014-02-071-3/+17
| | | | | | | | | | | | | | | | | | 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: scan coefficients linearly instead.Christophe Gisquet2014-02-151-7/+7
| | | | | | | | | | | | This change is inspired by x86 asm, where this frees a register. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | dcadsp: split lfe_dir casesChristophe Gisquet2014-02-081-3/+17
| | | | | | | | | | | | | | The x86 runs short on registers because numerous elements are not static. In addition, splitting them allows more optimized code, at least for x86. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '5b59a9fc6152169599561f04b4f66370edda5c9c'Michael Niedermayer2014-02-081-0/+1
|\ \ | |/ | | | | | | | | | | * commit '5b59a9fc6152169599561f04b4f66370edda5c9c': x86: dcadsp: implement int8x8_fmul_int32 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * x86: dcadsp: implement int8x8_fmul_int32Christophe Gisquet2014-02-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | For the callable function (as opposed to the inline one): C SSE SSE2 SSE4 Win32: 47 42 29 26 Win64: 30 33 25 23 The SSE version is neither compiled nor set for ARCH_X86_64, as the inlinable function takes over. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
| * dcadsp: add int8x8_fmul_int32 to dsp contextChristophe Gisquet2014-02-071-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | dcadsp: add int8x8_fmul_int32 to DSP contextChristophe Gisquet2014-02-081-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '800ffab48a7844dd5dc0a33b8f6b8e5ed718cf2e'Michael Niedermayer2013-07-221-0/+30
|\ \ | |/ | | | | | | | | | | * commit '800ffab48a7844dd5dc0a33b8f6b8e5ed718cf2e': dcadsp: Add a new method, qmf_32_subbands Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dcadsp: Add a new method, qmf_32_subbandsBen Avison2013-07-221-0/+30
| | | | | | | | | | | | | | This does most of the work formerly carried out by the static function qmf_32_subbands() in dcadec.c. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '6fee1b90ce3bf4fbdfde7016e0890057c9000487'Michael Niedermayer2013-05-051-1/+2
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '6fee1b90ce3bf4fbdfde7016e0890057c9000487': avcodec: Add av_cold attributes to init functions missing them Conflicts: libavcodec/aacpsy.c libavcodec/atrac3.c libavcodec/dvdsubdec.c libavcodec/ffv1.c libavcodec/ffv1enc.c libavcodec/h261enc.c libavcodec/h264_parser.c libavcodec/h264dsp.c libavcodec/h264pred.c libavcodec/libschroedingerenc.c libavcodec/libxvid_rc.c libavcodec/mpeg12.c libavcodec/mpeg12enc.c libavcodec/proresdsp.c libavcodec/rangecoder.c libavcodec/videodsp.c libavcodec/x86/proresdsp_init.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avcodec: Add av_cold attributes to init functions missing themDiego Biurrun2013-05-041-1/+2
| |
| * Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-191-4/+4
| | | | | | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
| * Remove unneeded add bias from 3 functions.Justin Ruggles2011-01-311-3/+3
| | | | | | | | | | | | | | | | DSPContext.vector_fmul_window() DCADSPContext.lfe_fir() SynthFilterContext.synth_filter_float() Signed-off-by: Mans Rullgard <mans@mansr.com>
* | Remove unneeded add bias from 3 functions.Justin Ruggles2011-02-021-3/+3
|/ | | | | | | | | DSPContext.vector_fmul_window() DCADSPContext.lfe_fir() SynthFilterContext.synth_filter_float() Signed-off-by: Mans Rullgard <mans@mansr.com> (cherry picked from commit 80ba1ddb58b5923b9f36a6acd542affc4ca722eb)
* DCA: ARM/NEON optimised lfe_firMåns Rullgård2010-04-121-0/+2
| | | | Originally committed as revision 22863 to svn://svn.ffmpeg.org/ffmpeg/trunk
* DCA: break out lfe_interpolation_fir() inner loops to a functionMåns Rullgård2010-04-121-0/+49
This enables SIMD optimisations of this function. Originally committed as revision 22861 to svn://svn.ffmpeg.org/ffmpeg/trunk