x86/hevc: add ff_hevc_sao_band_filter_{8,10,12}_{sse2,avx,avx2}
authorJames Almer <jamrial@gmail.com>
Sun, 1 Feb 2015 18:01:36 +0000 (15:01 -0300)
committerJames Almer <jamrial@gmail.com>
Sun, 1 Feb 2015 23:22:35 +0000 (20:22 -0300)
commitfa3eccb4f9f3ecc9e2bb3c5924c2aa343b808076
tree3cb8dd1f22abc025929deedb3cd90c672d68ad53
parenta1684311b3de0766932c42b1ffdd59823d786bc2
x86/hevc: add ff_hevc_sao_band_filter_{8,10,12}_{sse2,avx,avx2}

Original x86 intrinsics code and initial 8bit yasm port by Pierre-Edouard Lepere.
10/12bit yasm ports, refactoring and optimizations by James Almer

Benchmarks of BQTerrace_1920x1080_60_qp22.bin with an Intel Core i5-4200U

width 32
40338 decicycles in sao_band_filter_0_8, 2048 runs, 0 skips
8056 decicycles in ff_hevc_sao_band_filter_8_32_sse2, 2048 runs, 0 skips
7458 decicycles in ff_hevc_sao_band_filter_8_32_avx, 2048 runs, 0 skips
4504 decicycles in ff_hevc_sao_band_filter_8_32_avx2, 2048 runs, 0 skips

width 64
136046 decicycles in sao_band_filter_0_8, 16384 runs, 0 skips
28576 decicycles in ff_hevc_sao_band_filter_8_32_sse2, 16384 runs, 0 skips
26707 decicycles in ff_hevc_sao_band_filter_8_32_avx, 16384 runs, 0 skips
14387 decicycles in ff_hevc_sao_band_filter_8_32_avx2, 16384 runs, 0 skips

Reviewed-by: Christophe Gisquet <christophe.gisquet@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/hevc_filter.c
libavcodec/hevcdsp.c
libavcodec/hevcdsp.h
libavcodec/x86/Makefile
libavcodec/x86/hevc_sao.asm [new file with mode: 0644]
libavcodec/x86/hevcdsp_init.c