• Stone Chen's avatar
    libavcodec/x86/vvc: Add AVX2 DMVR SAD functions for VVC · 0e52a4e4
    Stone Chen authored
    Implements AVX2 DMVR (decoder-side motion vector refinement) SAD functions. DMVR SAD is only calculated if w >= 8, h >= 8, and w * h > 128. To reduce complexity, SAD is only calculated on even rows. This is calculated for all video bitdepths, but the values passed to the function are always 16bit (even if the original video bitdepth is 8). The AVX2 implementation uses min/max/sub.
    
    Additionally this changes parameters dx and dy from int to intptr_t. This allows dx & dy to be used as pointer offsets without needing to use movsxd.
    
    Benchmarks ( AMD 7940HS )
    Before:
    BQTerrace_1920x1080_60_10_420_22_RA.vvc | 106.0 |
    Chimera_8bit_1080P_1000_frames.vvc | 204.3 |
    NovosobornayaSquare_1920x1080.bin | 197.3 |
    RitualDance_1920x1080_60_10_420_37_RA.266 | 174.0 |
    
    After:
    BQTerrace_1920x1080_60_10_420_22_RA.vvc | 109.3 |
    Chimera_8bit_1080P_1000_frames.vvc | 216.0 |
    NovosobornayaSquare_1920x1080.bin | 204.0|
    RitualDance_1920x1080_60_10_420_37_RA.266 | 181.7 |
    Reviewed-by: 's avatarRonald S. Bultje <rsbultje@gmail.com>
    Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
    0e52a4e4
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
fftools Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
configure Loading commit data...