1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-28 20:53:54 +02:00
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 Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
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 Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
ac3dsp_armv6.S Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
ac3dsp_init_arm.c Merge commit '4958f35a2ebc307049ff2104ffb944f5f457feb3' 2013-12-09 04:12:40 +01:00
ac3dsp_neon.S Merge commit '4958f35a2ebc307049ff2104ffb944f5f457feb3' 2013-12-09 04:12:40 +01:00
asm-offsets.h Merge commit '6a13505c069890cb0e2a07e29fd819a0cf2e73c1' 2014-04-30 00:23:01 +02:00
audiodsp_arm.h Merge commit '9a9e2f1c8aa4539a261625145e5c1f46a8106ac2' 2014-06-22 17:58:28 +02:00
audiodsp_init_arm.c Merge commit '9a9e2f1c8aa4539a261625145e5c1f46a8106ac2' 2014-06-22 17:58:28 +02:00
audiodsp_init_neon.c Merge commit '12004a9a7f20e44f4da2ee6c372d5e1794c8d6c5' 2017-03-20 22:35:07 +01:00
audiodsp_neon.S Merge commit '12004a9a7f20e44f4da2ee6c372d5e1794c8d6c5' 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 Merge commit 'e74433a8e6fc00c8dbde293c97a3e45384c2c1d9' 2014-06-19 04:54:38 +02:00
cabac.h avcodec/arm/cabac: fix inline cabac reader with the UNCHECKED bitstream reader 2014-03-15 01:08:45 +01:00
dca.h avcodec/dca: remove old decoder 2016-01-31 17:09:38 +01:00
fft_fixed_init_arm.c Merge commit '97aec6e75ef36ed0402653519daa8e1fc8ddb555' 2016-04-12 15:43:09 +01:00
fft_fixed_neon.S Merge commit 'f963f80399deb1a2b44c1bac3af7123e8a0c9e46' 2014-12-09 11:58:13 +01:00
fft_init_arm.c Merge commit '4c297249ac0f513a610a62691ce96d6b62f65b94' 2016-04-12 15:43:34 +01:00
fft_neon.S Merge commit 'f963f80399deb1a2b44c1bac3af7123e8a0c9e46' 2014-12-09 11:58:13 +01:00
fft_vfp.S Merge commit 'f963f80399deb1a2b44c1bac3af7123e8a0c9e46' 2014-12-09 11:58:13 +01:00
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 '90b1b9350c0a97c4065ae9054b83e57f48a0de1f' 2016-01-02 11:21:36 +01:00
fmtconvert_neon.S Merge commit '90b1b9350c0a97c4065ae9054b83e57f48a0de1f' 2016-01-02 11:21:36 +01:00
fmtconvert_vfp.S Merge commit 'f0389eb777b1ab4291329d4f709098cdfa7384dc' 2013-08-29 16:10:39 +02:00
g722dsp_init_arm.c Merge commit '702458538d4e52809bcef460d39baabf061b16b5' 2015-02-16 02:16:29 +01:00
g722dsp_neon.S Merge commit '702458538d4e52809bcef460d39baabf061b16b5' 2015-02-16 02:16:29 +01:00
h264chroma_init_arm.c Merge commit 'e4a94d8b36c48d95a7d412c40d7b558422ff659c' 2017-03-21 15:20:45 -03:00
h264cmc_neon.S Merge commit 'e4a94d8b36c48d95a7d412c40d7b558422ff659c' 2017-03-21 15:20:45 -03:00
h264dsp_init_arm.c lavc/arm: Use the neon vertical chroma loop filter also for H.264 4:2:2. 2015-01-31 10:05:24 +01:00
h264dsp_neon.S
h264idct_neon.S Merge commit '5bcbb516f2ff45290ef7995b081762e668693672' 2014-02-08 00:48:26 +01:00
h264pred_init_arm.c Merge commit '256ef19844892c6cf8e0386e3287bae970ec6320' 2015-07-18 02:13:22 +02:00
h264pred_neon.S
h264qpel_init_arm.c Merge commit '7fb993d338d88f2f62e0a358b6c9f3eb9a3a08ac' 2014-07-25 13:05:08 +02:00
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 '1bd890ad173d79e7906c5e1d06bf0a06cca4519d' 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 '1bd890ad173d79e7906c5e1d06bf0a06cca4519d' 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 Merge commit '7151c5d04aed3b496c21f713dcb603e2cbdb9c49' 2014-01-14 14:38:10 +01:00
hpeldsp_arm.S Merge commit '92c5755a185086067fe49e7e64c23a8e7011be31' 2017-03-21 15:10:46 +01:00
hpeldsp_armv6.S Merge commit '61985ad72c47bbb668f2d3923bf5c9df83e79323' 2014-03-09 01:16:21 +01:00
hpeldsp_init_arm.c Merge commit '322a1dda973e802db7b57f2007fad3efcd5bab81' 2014-03-22 22:53:33 +01:00
hpeldsp_init_armv6.c
hpeldsp_init_neon.c
hpeldsp_neon.S
idct.h Merge commit '2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428' 2017-03-21 14:29:52 -03:00
idctdsp_arm.h Merge commit 'e3fcb14347466095839c2a3c47ebecff02da891e' 2014-07-01 15:22:11 +02:00
idctdsp_arm.S idct: Change type of array stride parameters to ptrdiff_t 2016-09-29 14:48:03 +02:00
idctdsp_armv6.S Merge commit 'e3fcb14347466095839c2a3c47ebecff02da891e' 2014-07-01 15:22:11 +02:00
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 Merge commit '4de8b60684ce13dff3e3d372dae4f49b9e53f755' 2014-07-21 01:56:22 +02:00
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 avcodec/idctdsp: change {put,add}_pixels_clamped to ptrdiff_t line_size 2014-09-24 21:43:19 -03:00
idctdsp_neon.S Merge commit 'e3fcb14347466095839c2a3c47ebecff02da891e' 2014-07-01 15:22:11 +02:00
int_neon.S Merge commit '054013a0fc6f2b52c60cee3e051be8cc7f82cef3' 2014-05-30 00:59:15 +02:00
jrevdct_arm.S
lossless_audiodsp_init_arm.c apedsp: move to llauddsp 2014-06-05 20:31:59 +02:00
lossless_audiodsp_neon.S apedsp: move to llauddsp 2014-06-05 20:31:59 +02:00
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 Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
mdct_neon.S Merge commit '5bcbb516f2ff45290ef7995b081762e668693672' 2014-02-08 00:48:26 +01:00
mdct_vfp.S armv6: Accelerate ff_imdct_half for general case (mdct_bits != 6) 2014-07-18 01:34:08 +03:00
me_cmp_armv6.S Merge commit '2d60444331fca1910510038dd3817bea885c2367' 2014-07-17 23:27:40 +02:00
me_cmp_init_arm.c Merge commit '9c12c6ff9539e926df0b2a2299e915ae71872600' 2014-11-24 12:13:00 +01:00
mlpdsp_armv5te.S Merge commit '4c81613df499ba81d64ea102b38d0c6686cc304c' 2014-12-10 00:51:26 +01:00
mlpdsp_armv6.S Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb' 2016-06-21 21:55:34 +02:00
mlpdsp_init_arm.c Merge remote-tracking branch 'qatar/master' 2014-03-26 21:23:09 +01:00
mpegaudiodsp_fixed_armv6.S Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
mpegaudiodsp_init_arm.c Merge commit '2caa93b813adc5dbb7771dfe615da826a2947d18' 2017-03-21 16:04:22 -03:00
mpegvideo_arm.c Merge commit '835f798c7d20bca89eb4f3593846251ad0d84e4b' 2014-08-15 20:11:56 +02:00
mpegvideo_arm.h Merge commit '835f798c7d20bca89eb4f3593846251ad0d84e4b' 2014-08-15 20:11:56 +02:00
mpegvideo_armv5te_s.S
mpegvideo_armv5te.c Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb' 2016-06-21 21:55:34 +02:00
mpegvideo_neon.S Merge commit '5bcbb516f2ff45290ef7995b081762e668693672' 2014-02-08 00:48:26 +01:00
mpegvideoencdsp_armv6.S Merge commit 'c166148409fe8f0dbccef2fe684286a40ba1e37d' 2014-07-07 15:36:58 +02:00
mpegvideoencdsp_init_arm.c Merge commit 'c166148409fe8f0dbccef2fe684286a40ba1e37d' 2014-07-07 15:36:58 +02:00
neon.S Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
neontest.c Merge commit 'de2ae3c1fae5a2eb539b9abd7bc2a9ca8c286ff0' 2017-03-21 14:43:53 +01:00
pixblockdsp_armv6.S Merge commit 'f46bb608d9d76c543e4929dc8cffe36b84bd789e' 2014-07-10 01:22:14 +02:00
pixblockdsp_init_arm.c Merge commit 'de452e503734ebb0fdbce86e9d16693b3530fad3' 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 Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
rv40dsp_init_arm.c Merge commit '7fb993d338d88f2f62e0a358b6c9f3eb9a3a08ac' 2014-07-25 13:05:08 +02:00
rv40dsp_neon.S Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
sbrdsp_init_arm.c Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
sbrdsp_neon.S Reinstate proper FFmpeg license for all files. 2013-08-30 15:47:38 +00:00
simple_idct_arm.S Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb' 2016-06-21 21:55:34 +02:00
simple_idct_armv5te.S Merge commit '014852e932dab6e9cf2a53e7a17ce8321f3e922c' 2017-03-19 16:12:07 +01:00
simple_idct_armv6.S Merge commit '2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428' 2017-03-21 14:29:52 -03:00
simple_idct_neon.S Merge commit '2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428' 2017-03-21 14:29:52 -03:00
startcode_armv6.S h264: Move start code search functions into separate source files. 2014-08-04 22:22:54 +02:00
startcode.h Merge commit 'db7f1c7c5a1d37e7f4da64a79a97bea1c4b6e9f8' 2014-08-05 12:46:10 +02:00
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 Merge commit '7e18a727d2c2a19f22fcf68875d1b05fd2eafcef' 2014-07-18 13:17:29 +02:00
vc1dsp_init_arm.c Fix compile error on arm4/arm5 platform 2014-09-23 21:11:05 +02:00
vc1dsp_init_neon.c Merge commit 'e4a94d8b36c48d95a7d412c40d7b558422ff659c' 2017-03-21 15:20:45 -03:00
vc1dsp_neon.S Merge commit '2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428' 2017-03-21 14:29:52 -03:00
vc1dsp.h Merge commit '832e19063209a5f355af733d1a45f5051f49ce33' 2013-12-20 23:12:16 +01: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 '6892df9294d93322d43255ada299507465bc93c8' 2017-03-19 18:41:26 +01:00
vp3dsp_neon.S Merge remote-tracking branch 'qatar/master' 2014-01-08 05:44:56 +01:00
vp6dsp_init_arm.c Merge commit '721d57e608dc4fd6c86f27c5ae76ef559d646220' 2017-03-19 17:15:24 -03:00
vp6dsp_neon.S Merge commit '8506ff97c9ea4a1f52983497ecf8d4ef193403a9' 2013-08-24 11:04:11 +02:00
vp8_armv6.S
vp8.h arm: asm decode_block_coeffs_internal is vp8 specific 2014-04-04 10:39:29 +02:00
vp8dsp_armv6.S Merge commit '802727b538b484e3f9d1345bfcc4ab24cfea8898' 2017-03-19 15:18:31 -03:00
vp8dsp_init_arm.c Merge commit 'ac4b32df71bd932838043a4838b86d11e169707f' 2014-04-04 14:46:10 +02:00
vp8dsp_init_armv6.c Merge commit 'ac4b32df71bd932838043a4838b86d11e169707f' 2014-04-04 14:46:10 +02:00
vp8dsp_init_neon.c Merge commit 'ac4b32df71bd932838043a4838b86d11e169707f' 2014-04-04 14:46:10 +02:00
vp8dsp_neon.S Merge commit 'e8b96a77010dd62624c3c65c357d7ae3b397ceaa' 2016-11-14 15:21:49 +01:00
vp8dsp.h Merge commit 'ac4b32df71bd932838043a4838b86d11e169707f' 2014-04-04 14:46:10 +02: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
vp9dsp_init.h vp9: re-split the decoder/format/dsp interface header files. 2017-03-28 18:04:26 -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