]> granicus.if.org Git - libvpx/commit
Specialize Neon subpel variance by filter value for large blocks
authorSalome Thirot <salome.thirot@arm.com>
Fri, 20 Jan 2023 10:35:34 +0000 (10:35 +0000)
committerSalome Thirot <salome.thirot@arm.com>
Mon, 23 Jan 2023 13:11:59 +0000 (13:11 +0000)
commitae5b60cb4730639fc7742df577600ce71ddb5936
tree7ee84c38b9f55440322effee7d1311c7b8f6cd85
parentfcfb471ce2a413e760bdff805c5ae66778cb4169
Specialize Neon subpel variance by filter value for large blocks

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
(>= 16x16) as we need to be doing enough work to make the cost of
finding the optimal implementation worth it.

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/+/162463

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