FFmpeg/libavcodec/arm
Clément Bœsch e4a27e2f2d lavc/arm: fix lack of precision in ff_ps_stereo_interpolate_neon
The code originally pre-multiply by 2 the steps, causing the running sum
of the h factors to drift away due to the lack of precision. It quickly
causes an inaccuracy > 0.01.

I tried diverse approaches such as multiply by 2.0 (instead of adding
the value itself) without success.

I'm unable to bench the impact of this change, feel free to compare.

This commit fixes the incoming aacpsdsp tests.

Following is an alternative simplified function (matching the incoming
AArch64 code) that may be used:

function ff_ps_stereo_interpolate_neon, export=1
        vld1.32         {q0}, [r2]
        vld1.32         {q1}, [r3]
        ldr             r12, [sp]
        vmov.f32        q8, q0
        vmov.f32        q9, q1
        vzip.32         q8, q0
        vzip.32         q9, q1
1:
        vld1.32         {d4}, [r0,:64]
        vld1.32         {d6}, [r1,:64]
        vadd.f32        q8, q8, q9
        vadd.f32        q0, q0, q1
        vmov.f32        d5, d4
        vmov.f32        d7, d6
        vmul.f32        q2, q2, q8
        vmla.f32        q2, q3, q0
        vst1.32         {d4}, [r0,:64]!
        vst1.32         {d5}, [r1,:64]!
        subs            r12, r12, #1
        bgt             1b
        bx              lr
endfunc
2017-06-28 11:59:34 +02:00
..
aac.h
aacpsdsp_init_arm.c
aacpsdsp_neon.S lavc/arm: fix lack of precision in ff_ps_stereo_interpolate_neon 2017-06-28 11:59:34 +02:00
ac3dsp_arm.S
ac3dsp_armv6.S
ac3dsp_init_arm.c
ac3dsp_neon.S
asm-offsets.h
audiodsp_arm.h
audiodsp_init_arm.c
audiodsp_init_neon.c Merge commit '12004a9a7f' 2017-03-20 22:35:07 +01:00
audiodsp_neon.S Merge commit '12004a9a7f' 2017-03-20 22:35:07 +01:00
blockdsp_arm.h blockdsp: drop the high_bit_depth parameter 2016-09-22 09:47:52 +02:00
blockdsp_init_arm.c blockdsp: drop the high_bit_depth parameter 2016-09-22 09:47:52 +02:00
blockdsp_init_neon.c lavc/arm: fix indent in blockdsp_init_neon 2017-03-20 19:01:25 +01:00
blockdsp_neon.S
cabac.h
dca.h avcodec/dca: remove old decoder 2016-01-31 17:09:38 +01:00
fft_fixed_init_arm.c Merge commit '97aec6e75e' 2016-04-12 15:43:09 +01:00
fft_fixed_neon.S
fft_init_arm.c Merge commit '4c297249ac' 2016-04-12 15:43:34 +01:00
fft_neon.S
fft_vfp.S
flacdsp_arm.S
flacdsp_init_arm.c lavc/flac: Fix encoding and decoding with high lpc. 2015-05-17 02:08:58 +02:00
fmtconvert_init_arm.c Merge commit '90b1b9350c' 2016-01-02 11:21:36 +01:00
fmtconvert_neon.S Merge commit '90b1b9350c' 2016-01-02 11:21:36 +01:00
fmtconvert_vfp.S
g722dsp_init_arm.c Merge commit '702458538d' 2015-02-16 02:16:29 +01:00
g722dsp_neon.S Merge commit '702458538d' 2015-02-16 02:16:29 +01:00
h264chroma_init_arm.c Merge commit 'e4a94d8b36' 2017-03-21 15:20:45 -03:00
h264cmc_neon.S Merge commit 'e4a94d8b36' 2017-03-21 15:20:45 -03:00
h264dsp_init_arm.c
h264dsp_neon.S
h264idct_neon.S
h264pred_init_arm.c Merge commit '256ef19844' 2015-07-18 02:13:22 +02:00
h264pred_neon.S
h264qpel_init_arm.c
h264qpel_neon.S
hevcdsp_arm.h hevcdsp: fix compilation for arm and aarch64 2015-03-12 20:01:01 +01:00
hevcdsp_deblock_neon.S hevcdsp: HEVC deblocking ARM NEON register clobber fix 2015-02-16 13:27:41 +01:00
hevcdsp_idct_neon.S Merge commit '1bd890ad17' 2017-01-31 15:31:34 +01:00
hevcdsp_init_arm.c hevcdsp: fix compilation for arm and aarch64 2015-03-12 20:01:01 +01:00
hevcdsp_init_neon.c Merge commit '1bd890ad17' 2017-01-31 15:31:34 +01:00
hevcdsp_qpel_neon.S avcodec/hevcdsp: ARM NEON optimized qpel functions 2015-02-25 18:39:51 +01:00
hpeldsp_arm.h
hpeldsp_arm.S Merge commit '92c5755a18' 2017-03-21 15:10:46 +01:00
hpeldsp_armv6.S
hpeldsp_init_arm.c
hpeldsp_init_armv6.c
hpeldsp_init_neon.c
hpeldsp_neon.S
idct.h Merge commit '2ec9fa5ec6' 2017-03-21 14:29:52 -03:00
idctdsp_arm.h
idctdsp_arm.S idct: Change type of array stride parameters to ptrdiff_t 2016-09-29 14:48:03 +02:00
idctdsp_armv6.S
idctdsp_init_arm.c idct_arm: remove use of ff_put/add_pixels_clamped function pointer. 2017-04-06 10:03:27 -04:00
idctdsp_init_armv5te.c
idctdsp_init_armv6.c idct: Change type of array stride parameters to ptrdiff_t 2016-09-29 14:48:03 +02:00
idctdsp_init_neon.c
idctdsp_neon.S
int_neon.S
jrevdct_arm.S
lossless_audiodsp_init_arm.c
lossless_audiodsp_neon.S
Makefile arm: Add NEON optimizations for 10 and 12 bit vp9 loop filter 2017-01-24 22:35:59 +02:00
mathops.h
mdct_fixed_neon.S
mdct_neon.S
mdct_vfp.S
me_cmp_armv6.S
me_cmp_init_arm.c
mlpdsp_armv5te.S
mlpdsp_armv6.S Merge commit '41ed7ab45f' 2016-06-21 21:55:34 +02:00
mlpdsp_init_arm.c
mpegaudiodsp_fixed_armv6.S
mpegaudiodsp_init_arm.c Merge commit '2caa93b813' 2017-03-21 16:04:22 -03:00
mpegvideo_arm.c
mpegvideo_arm.h
mpegvideo_armv5te.c Merge commit '41ed7ab45f' 2016-06-21 21:55:34 +02:00
mpegvideo_armv5te_s.S
mpegvideo_neon.S
mpegvideoencdsp_armv6.S
mpegvideoencdsp_init_arm.c
neon.S
neontest.c Merge commit 'de2ae3c1fa' 2017-03-21 14:43:53 +01:00
pixblockdsp_armv6.S
pixblockdsp_init_arm.c Merge commit 'de452e5037' 2017-03-20 15:58:32 +01:00
rdft_init_arm.c arm/rdft_init: fix license header 2016-04-12 15:01:19 -03:00
rdft_neon.S
rv34dsp_init_arm.c
rv34dsp_neon.S
rv40dsp_init_arm.c
rv40dsp_neon.S
sbrdsp_init_arm.c
sbrdsp_neon.S
simple_idct_arm.S Merge commit '41ed7ab45f' 2016-06-21 21:55:34 +02:00
simple_idct_armv5te.S Merge commit '014852e932' 2017-03-19 16:12:07 +01:00
simple_idct_armv6.S Merge commit '2ec9fa5ec6' 2017-03-21 14:29:52 -03:00
simple_idct_neon.S Merge commit '2ec9fa5ec6' 2017-03-21 14:29:52 -03:00
startcode.h
startcode_armv6.S
synth_filter_init_arm.c avcodec/synth_filter: split off remaining code from dcadec files 2016-01-25 14:57:38 -03:00
synth_filter_neon.S
synth_filter_vfp.S
vc1dsp.h
vc1dsp_init_arm.c
vc1dsp_init_neon.c Merge commit 'e4a94d8b36' 2017-03-21 15:20:45 -03:00
vc1dsp_neon.S Merge commit '2ec9fa5ec6' 2017-03-21 14:29:52 -03:00
videodsp_arm.h
videodsp_armv5te.S arm: use a local label instead of the function symbol in ff_prefetch_arm 2015-07-20 23:10:29 +02:00
videodsp_init_arm.c
videodsp_init_armv5te.c
vorbisdsp_init_arm.c
vorbisdsp_neon.S
vp3dsp_init_arm.c Merge commit '6892df9294' 2017-03-19 18:41:26 +01:00
vp3dsp_neon.S
vp6dsp_init_arm.c Merge commit '721d57e608' 2017-03-19 17:15:24 -03:00
vp6dsp_neon.S
vp8.h
vp8_armv6.S
vp8dsp.h
vp8dsp_armv6.S Merge commit '802727b538' 2017-03-19 15:18:31 -03:00
vp8dsp_init_arm.c
vp8dsp_init_armv6.c
vp8dsp_init_neon.c
vp8dsp_neon.S Merge commit 'e8b96a7701' 2016-11-14 15:21:49 +01:00
vp9dsp_init.h vp9: re-split the decoder/format/dsp interface header files. 2017-03-28 18:04:26 -04:00
vp9dsp_init_10bpp_arm.c arm: Add NEON optimizations for 10 and 12 bit vp9 MC 2017-01-24 22:35:50 +02:00
vp9dsp_init_12bpp_arm.c arm: Add NEON optimizations for 10 and 12 bit vp9 MC 2017-01-24 22:35:50 +02:00
vp9dsp_init_16bpp_arm_template.c vp9: split out generic decoding skeleton interface API from VP9 types. 2017-03-28 18:04:27 -04:00
vp9dsp_init_arm.c vp9: split out generic decoding skeleton interface API from VP9 types. 2017-03-28 18:04:27 -04:00
vp9itxfm_16bpp_neon.S arm: vp9itxfm16: Do a simpler half/quarter idct16/idct32 when possible 2017-03-19 22:54:33 +02:00
vp9itxfm_neon.S arm/aarch64: vp9: Fix vertical alignment 2017-03-19 22:53:32 +02:00
vp9lpf_16bpp_neon.S arm: Add NEON optimizations for 10 and 12 bit vp9 loop filter 2017-01-24 22:35:59 +02:00
vp9lpf_neon.S arm/aarch64: vp9: Fix vertical alignment 2017-03-19 22:53:32 +02:00
vp9mc_16bpp_neon.S arm: Add NEON optimizations for 10 and 12 bit vp9 MC 2017-01-24 22:35:50 +02:00
vp9mc_neon.S arm: vp9mc: Calculate less unused data in the 4 pixel wide horizontal filter 2017-03-11 13:14:47 +02:00
vp56_arith.h