ffmpeg/libswscale
Zhao Zhili 9dac8495b0 swscale/aarch64: Add rgb24 to yuv implementation
Test on Apple M1:

rgb24_to_uv_8_c: 0.0
rgb24_to_uv_8_neon: 0.2
rgb24_to_uv_128_c: 1.0
rgb24_to_uv_128_neon: 0.5
rgb24_to_uv_1080_c: 7.0
rgb24_to_uv_1080_neon: 5.7
rgb24_to_uv_1920_c: 12.5
rgb24_to_uv_1920_neon: 9.5
rgb24_to_uv_half_8_c: 0.2
rgb24_to_uv_half_8_neon: 0.2
rgb24_to_uv_half_128_c: 1.0
rgb24_to_uv_half_128_neon: 0.5
rgb24_to_uv_half_1080_c: 6.2
rgb24_to_uv_half_1080_neon: 3.0
rgb24_to_uv_half_1920_c: 11.2
rgb24_to_uv_half_1920_neon: 5.2
rgb24_to_y_8_c: 0.2
rgb24_to_y_8_neon: 0.0
rgb24_to_y_128_c: 0.5
rgb24_to_y_128_neon: 0.5
rgb24_to_y_1080_c: 4.7
rgb24_to_y_1080_neon: 3.2
rgb24_to_y_1920_c: 8.0
rgb24_to_y_1920_neon: 5.7

On Pixel 6:

rgb24_to_uv_8_c: 30.7
rgb24_to_uv_8_neon: 56.9
rgb24_to_uv_128_c: 213.9
rgb24_to_uv_128_neon: 173.2
rgb24_to_uv_1080_c: 1649.9
rgb24_to_uv_1080_neon: 1424.4
rgb24_to_uv_1920_c: 2907.9
rgb24_to_uv_1920_neon: 2480.7
rgb24_to_uv_half_8_c: 36.2
rgb24_to_uv_half_8_neon: 33.4
rgb24_to_uv_half_128_c: 167.9
rgb24_to_uv_half_128_neon: 99.4
rgb24_to_uv_half_1080_c: 1293.9
rgb24_to_uv_half_1080_neon: 778.7
rgb24_to_uv_half_1920_c: 2292.7
rgb24_to_uv_half_1920_neon: 1328.7
rgb24_to_y_8_c: 19.7
rgb24_to_y_8_neon: 27.7
rgb24_to_y_128_c: 129.9
rgb24_to_y_128_neon: 96.7
rgb24_to_y_1080_c: 995.4
rgb24_to_y_1080_neon: 767.7
rgb24_to_y_1920_c: 1747.4
rgb24_to_y_1920_neon: 1337.2

Note both tests use clang as compiler, which has vectorization
enabled by default with -O3.

Reviewed-by: Rémi Denis-Courmont <remi@remlab.net>
Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-06-11 01:12:09 +08:00
..
aarch64 swscale/aarch64: Add rgb24 to yuv implementation 2024-06-11 01:12:09 +08:00
arm
loongarch swscale: [loongarch] Fix undeclared functions prob. 2024-05-31 02:20:23 +02:00
ppc swscale/ppc/swscale_ppc_template: Reindent after the previous commit 2024-04-04 16:47:21 +02:00
riscv sws/input: R-V V 32-bit RGB to halved UV 2024-06-09 14:33:04 +03:00
tests swscale/tests/swscale: Add help text 2024-02-15 23:07:44 +01:00
x86 swscale/x86/rgb_2_rgb: add missing wrap to ff_uyvytoyuv422_avx2 2024-06-09 16:04:36 -03:00
Makefile
alphablend.c
bayer_template.c
gamma.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
half2float.c
hscale.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
hscale_fast_bilinear.c
input.c
libswscale.v
log2_tab.c
options.c all: use designated initializers for AVOption.unit 2024-02-14 14:53:41 +01:00
output.c swscale/output: Fix integer overflow in yuv2rgba64_full_1_c_template() 2024-05-06 03:00:40 +02:00
rgb2rgb.c
rgb2rgb.h
rgb2rgb_template.c
slice.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
swscale.c sws/input: R-V V rgb24ToY & bgr24ToY 2024-06-08 18:30:43 +03:00
swscale.h
swscale_internal.h sws/input: R-V V rgb24ToY & bgr24ToY 2024-06-08 18:30:43 +03:00
swscale_unscaled.c
swscaleres.rc
utils.c swscale: [LA] Optimize range convert for yuvj420p. 2024-04-11 23:53:41 +02:00
version.c lib*/version: Use static_assert for static asserts 2024-03-31 00:08:42 +01:00
version.h Bump after 7.0 branch point 2024-03-27 01:04:54 +01:00
version_major.h libs: bump major version for all libraries 2024-03-07 11:29:43 -03:00
vscale.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
yuv2rgb.c swscale/yuv2rgb: Use 64bit for brightness computation 2024-05-28 03:48:06 +02:00