]> granicus.if.org Git - libvpx/commit
Specialize Neon averaging subpel variance by filter value
authorSalome Thirot <salome.thirot@arm.com>
Fri, 20 Jan 2023 11:42:06 +0000 (11:42 +0000)
committerSalome Thirot <salome.thirot@arm.com>
Mon, 23 Jan 2023 15:06:28 +0000 (15:06 +0000)
commit67abc6738942fff8299919e736138679d4a08016
treee31db5057f442007d6dc93f5794cbe8e81e13f1a
parentb7f6c641397eb1ddac6fcaf34ec6db8fa0cbd7e7
Specialize Neon averaging subpel variance by filter value

Use the same specialization for averaging subpel variance functions
as used for the non-averaging variants. The rationale for the
specialization is as follows:

The optimal implementation of the bilinear interpolation depends on
the filter values being used. For both horizontal and vertical
interpolation this can simplify to just taking the source values, or
averaging the source and reference values - which can be computed
more easily than a bilinear interpolation with arbitrary filter
values.

This patch introduces tests to find the most optimal bilinear
interpolation implementation based on the filter values being used.
This new specialization is only used for larger block sizes

This is a backport of this libaom change[1].

After this change, the only differences between the code in libvpx and
libaom are due to libvpx being compiled with ISO C90, which forbids
mixing declarations and code [-Wdeclaration-after-statement].

[1] https://aomedia-review.googlesource.com/c/aom/+/166962

Change-Id: I7860c852db94a7c9c3d72ae4411316685f3800a4
vpx_dsp/arm/subpel_variance_neon.c