]> granicus.if.org Git - libvpx/commit
Add AVX vectorized vp9_diamond_search_sad
authorGeza Lore <gezalore@gmail.com>
Wed, 28 Oct 2015 14:35:04 +0000 (14:35 +0000)
committerGeza Lore <gezalore@gmail.com>
Thu, 5 Nov 2015 10:02:17 +0000 (10:02 +0000)
commitf1342a7b070ef61b9fbdf03e899ac2107cfcb6bd
tree5efe375867d31ec2c01394ee74386912f507cd96
parent965a8dea0bab30e2003e70305ca70abb09b7845d
Add AVX vectorized vp9_diamond_search_sad

This function now has an AVX intrinsics version which is about 80%
faster compared to the C implementation. This provides a 2-4% total
speed-up for encode, depending on encoding parameters. The function
utilizes 3 properties of the cost function lookup table, constructed
in 'cal_nmvjointsadcost' and 'cal_nmvsadcosts'.
For the joint cost:
  - mvjointsadcost[1] == mvjointsadcost[2] == mvjointsadcost[3]
For the component costs:
  - For all i: mvsadcost[0][i] == mvsadcost[1][i]
        (equal per component cost)
  - For all i: mvsadcost[0][i] == mvsadcost[0][-i]
        (Cost function is even)
These must hold, otherwise the AVX version of the function cannot be used.

Change-Id: I184055b864c5a2dc37b2d8c5c9012eb801e9daf6
vp9/common/vp9_rtcd_defs.pl
vp9/encoder/vp9_encoder.c
vp9/encoder/vp9_mcomp.c
vp9/encoder/vp9_mcomp.h
vp9/encoder/x86/vp9_diamond_search_sad_avx.c [new file with mode: 0644]
vp9/vp9cx.mk