[libav-devel] [PATCH 05/13] arm: call imdct_half function pointer in synth_filter_float_{vfp, neon}

Janne Grunau janne-libav at jannau.net
Thu Dec 10 16:01:43 CET 2015


On 2015-12-10 15:43:40 +0200, Martin Storsjö wrote:
> On Wed, 9 Dec 2015, Janne Grunau wrote:
> 
> >Limits the propagated error in the upcoming synth_filter_float checkasm
> >test.
> >---
> >libavcodec/arm/asm-offsets.h       | 3 +++
> >libavcodec/arm/dcadsp_init_arm.c   | 8 ++++++++
> >libavcodec/arm/synth_filter_neon.S | 5 ++++-
> >libavcodec/arm/synth_filter_vfp.S  | 5 ++++-
> >4 files changed, 19 insertions(+), 2 deletions(-)
> >
> >diff --git a/libavcodec/arm/asm-offsets.h b/libavcodec/arm/asm-offsets.h
> >index 0ea2f04..62cdd15 100644
> >--- a/libavcodec/arm/asm-offsets.h
> >+++ b/libavcodec/arm/asm-offsets.h
> >@@ -29,4 +29,7 @@
> >#define H263_AIC                 0x40
> >#define INTER_SCANTAB_RASTER_END 0x88
> >
> >+/* FFTContex */
> 
> typo
>
> The rest is probably ok, although I don't see (yet at least) how
> this would limit the propagated error.

I think the change can be dropped. Due to the VFP_VM cpu flag 
synth_filter_float_vfp and synth_filter_float_neon will be never 
compared. It actually works as expected on a cortex-a8.

checkasm compares ref with opt1 and opt1 with opt2 if there is more than 
1 optimized version.  It kind of makes sense for exact tests since opt1 
should be faster than ref1.  In this case with will compare 
synth_filter_float_vfp with synth_filter_float_neon. The vfp and neon 
imdct_half implementations differ numerically and that error is 
amplified in synth_filter_float to ~0.001 for values in the range 
[-16.0, 16.0].

Janne


More information about the libav-devel mailing list