ffmpeg/libavfilter/x86
Niklas Haas e44a1aaeec avfilter/x86/scene_sad: add high bit depth AVX2/AVX512 version
Since psadbw only exists for 8-bits, we have to emulate it for 16-bit
inputs. The simplest sequence is to use a normal subtraction, which is safe
as long as the inputs do not exceed 32767 - so limit this implementation
to 15-bit inputs and below.

For 16-bit inputs, we could in theory instead use a pminw / pmaxw to ensure
the resulting difference does not overflow, but this is slower, and also
breaks the subsequent use of pmaddwd, so I opted to skip 16-bit SIMD for
now.

scene_sad10_c:                                      114175.6 ( 1.00x)
scene_sad10_avx2:                                     9617.7 (11.87x)
scene_sad10_avx512:                                   5208.8 (21.92x)
scene_sad12_c:                                      114537.8 ( 1.00x)
scene_sad12_avx2:                                     9614.0 (11.91x)
scene_sad12_avx512:                                   5186.3 (22.08x)
scene_sad14_c:                                      114113.9 ( 1.00x)
scene_sad14_avx2:                                     9612.9 (11.87x)
scene_sad14_avx512:                                   5186.0 (22.00x)
scene_sad15_c:                                      114108.9 ( 1.00x)
scene_sad15_avx2:                                     9612.3 (11.87x)
scene_sad15_avx512:                                   5186.4 (22.00x)
scene_sad16_c:                                      114136.0 ( 1.00x)
2025-07-17 12:26:06 +02:00
..
af_afir.asm avfilter/x86/af_afir: add FMA3 SIMD 2023-09-17 11:11:24 +02:00
af_afir_init.c avfilter/x86/af_afir: add FMA3 SIMD 2023-09-17 11:11:24 +02:00
af_anlmdn.asm
af_anlmdn_init.c
af_volume.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
af_volume_init.c
avf_showcqt.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
avf_showcqt_init.c avfilter/avf_showcqt: switch to TX FFT from avutil 2021-07-27 21:16:28 +02:00
colorspacedsp.asm
colorspacedsp_init.c
f_ebur128.asm avfilter/x86/f_ebur128: replace AVX2 instruction with AVX equivalent 2025-06-22 09:31:44 -03:00
f_ebur128_init.c avfilter/x86/f_ebur128: implement AVX peak calculation 2025-06-21 17:28:39 +02:00
Makefile avfilter/x86/f_ebur128: add x86 AVX implementation 2025-06-21 17:21:36 +02:00
scene_sad.asm avfilter/x86/scene_sad: add high bit depth AVX2/AVX512 version 2025-07-17 12:26:06 +02:00
scene_sad_init.c avfilter/x86/scene_sad: add high bit depth AVX2/AVX512 version 2025-07-17 12:26:06 +02:00
vf_atadenoise.asm
vf_atadenoise_init.c Remove unnecessary mem.h inclusions 2021-07-22 14:47:57 +02:00
vf_blend.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_blend_init.c avfilter/blend: put slice parameters to a single struct 2024-05-14 21:07:37 +02:00
vf_bwdif.asm avfilter/bwdif: add avx2 filter_line function 2023-03-25 02:38:17 +01:00
vf_bwdif_init.c avfilter/bwdifdsp: Constify 2023-09-28 00:17:47 +02:00
vf_convolution.asm libavfilter/x86/vf_convolution: fix sobel swap issue on WIN64 2022-11-21 12:28:25 +08:00
vf_convolution_init.c libavfilter/x86/vf_convolution: add sobel filter optimization and unit test with intel AVX512 VNNI 2022-11-14 10:04:16 +08:00
vf_eq.asm avfilter/x86/vf_eq_init: Remove obsolete MMXEXT function 2022-06-22 13:36:31 +02:00
vf_eq_init.c avfilter/x86/vf_eq_init: Remove obsolete MMXEXT function 2022-06-22 13:36:31 +02:00
vf_framerate.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_framerate_init.c
vf_fspp.asm
vf_fspp_init.c
vf_gblur.asm libavfilter/x86/vf_gblur: correct the order of loop step 2021-09-18 12:38:01 +02:00
vf_gblur_init.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
vf_gradfun.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_gradfun_init.c Remove unnecessary mem.h inclusions 2021-07-22 14:47:57 +02:00
vf_hflip.asm
vf_hflip_init.c
vf_hqdn3d.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_hqdn3d_init.c
vf_idet.asm avfilter/x86/vf_idet: Remove obsolete MMX(EXT) functions 2022-06-22 13:38:01 +02:00
vf_idet_init.c avfilter/x86/vf_idet: Remove obsolete MMX(EXT) functions 2022-06-22 13:38:01 +02:00
vf_interlace.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_limiter.asm avfilter/x86/vf_limiter: use movu, dst may not be always aligned 2022-03-24 09:44:09 +01:00
vf_limiter_init.c
vf_lut3d.asm x86/vf_lut3d: use three operand form for some instructions 2021-10-14 18:09:38 -03:00
vf_lut3d_init.c avfilter/vf_lut3d: fix building with --disable-optimizations 2021-10-13 18:01:21 +02:00
vf_maskedclamp.asm
vf_maskedclamp_init.c Remove unnecessary mem.h inclusions 2021-07-22 14:47:57 +02:00
vf_maskedmerge.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_maskedmerge_init.c
vf_nlmeans.asm avfilter/vf_nlmeans: add x86 SIMD 2021-11-11 21:54:46 +01:00
vf_nlmeans_init.c avfilter/vf_nlmeans: add x86 SIMD 2021-11-11 21:54:46 +01:00
vf_noise.c avfilter/x86/vf_noise: Remove obsolete MMX function 2022-06-22 13:32:08 +02:00
vf_overlay.asm x86: Avoid using 'd' as an argument name 2024-03-24 14:53:57 +01:00
vf_overlay_init.c
vf_pp7.asm
vf_pp7_init.c
vf_psnr.asm
vf_psnr_init.c
vf_pullup.asm
vf_pullup_init.c Remove unnecessary mem.h inclusions 2021-07-22 14:47:57 +02:00
vf_removegrain.asm
vf_removegrain_init.c
vf_spp.c avfilter/x86/vf_spp: Remove permutation-specific code 2025-05-31 01:31:09 +02:00
vf_ssim.asm avfilter/vf_ssim: Fix x86 assembly code for SSIM calculation 2023-08-21 17:04:51 +02:00
vf_ssim_init.c
vf_stereo3d.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_stereo3d_init.c
vf_threshold.asm avfilter/vf_threshold: fix handling of zero threshold 2022-10-27 10:23:24 +02:00
vf_threshold_init.c
vf_tinterlace_init.c Remove unnecessary mem.h inclusions 2021-07-22 14:47:57 +02:00
vf_transpose.asm
vf_transpose_init.c Remove unnecessary mem.h inclusions 2021-07-22 14:47:57 +02:00
vf_v360.asm
vf_v360_init.c
vf_w3fdif.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
vf_w3fdif_init.c Remove unnecessary mem.h inclusions 2021-07-22 14:47:57 +02:00
vf_yadif.asm avfilter/x86/vf_yadif: Remove obsolete MMXEXT functions 2022-06-22 13:37:48 +02:00
vf_yadif_init.c avfilter/x86/vf_yadif: Remove obsolete MMXEXT functions 2022-06-22 13:37:48 +02:00
yadif-10.asm avfilter/x86/vf_yadif: Remove obsolete MMXEXT functions 2022-06-22 13:37:48 +02:00
yadif-16.asm avfilter/x86/vf_yadif: Remove obsolete MMXEXT functions 2022-06-22 13:37:48 +02:00