FFmpeg/libswscale/x86
Ramiro Polla 2d1358a84d swscale/range_convert: saturate output instead of limiting input
For bit depths <= 14, the result is saturated to 15 bits.
For bit depths > 14, the result is saturated to 19 bits.

x86_64:
chrRangeFromJpeg8_1920_c:    2126.5   2127.4  (1.00x)
chrRangeFromJpeg16_1920_c:   2331.4   2325.2  (1.00x)
chrRangeToJpeg8_1920_c:      3163.0   3166.9  (1.00x)
chrRangeToJpeg16_1920_c:     3163.7   2152.4  (1.47x)
lumRangeFromJpeg8_1920_c:    1262.2   1263.0  (1.00x)
lumRangeFromJpeg16_1920_c:   1079.5   1080.5  (1.00x)
lumRangeToJpeg8_1920_c:      1860.5   1886.8  (0.99x)
lumRangeToJpeg16_1920_c:     1910.2   1077.0  (1.77x)

aarch64 A55:
chrRangeFromJpeg8_1920_c:   28836.2  28835.2  (1.00x)
chrRangeFromJpeg16_1920_c:  28840.1  28839.8  (1.00x)
chrRangeToJpeg8_1920_c:     44196.2  23074.7  (1.92x)
chrRangeToJpeg16_1920_c:    36527.3  17318.9  (2.11x)
lumRangeFromJpeg8_1920_c:   15388.5  15389.7  (1.00x)
lumRangeFromJpeg16_1920_c:  15389.3  15388.2  (1.00x)
lumRangeToJpeg8_1920_c:     23069.7  19227.8  (1.20x)
lumRangeToJpeg16_1920_c:    19227.8  15387.0  (1.25x)

aarch64 A76:
chrRangeFromJpeg8_1920_c:    6334.7   6324.4  (1.00x)
chrRangeFromJpeg16_1920_c:   6336.0   6339.9  (1.00x)
chrRangeToJpeg8_1920_c:     11474.5   9656.0  (1.19x)
chrRangeToJpeg16_1920_c:     9640.5   6340.4  (1.52x)
lumRangeFromJpeg8_1920_c:    4453.2   4422.0  (1.01x)
lumRangeFromJpeg16_1920_c:   4414.2   4420.9  (1.00x)
lumRangeToJpeg8_1920_c:      6645.0   5949.1  (1.12x)
lumRangeToJpeg16_1920_c:     6005.2   4446.8  (1.35x)

NOTE: all simd optimizations for range_convert have been disabled
      except for x86, which already had the same behaviour.
      they will be re-enabled when they are fixed for each architecture.
2024-12-05 21:10:29 +01:00
..
hscale_fast_bilinear_simd.c swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
input.asm swscale/x86/rgb2rgb: fix deinterleaveBytes for unaligned dst pointers 2024-09-06 23:05:01 +02:00
Makefile swscale/x86: add sse2 and avx2 {lum,chr}ConvertRange 2024-06-16 00:35:51 +02:00
output.asm swscale: introduce new, dynamic scaling API 2024-11-25 11:03:50 +01:00
range_convert.asm swscale/range_convert: saturate output instead of limiting input 2024-12-05 21:10:29 +01:00
rgb2rgb.c swscale/x86/rgb2rgb: add optimized versions of the remaining shuffle_bytes functions 2024-11-02 15:01:31 -03:00
rgb_2_rgb.asm swscale/x86/rgb2rgb: add optimized versions of the remaining shuffle_bytes functions 2024-11-02 15:01:31 -03:00
scale.asm swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
scale_avx2.asm swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
swscale.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
swscale_template.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
w64xmmtest.c swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
yuv2rgb.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
yuv2yuvX.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
yuv_2_rgb.asm swscale/x86/yuv2rgb: add ssse3 yuv42{0,2}p -> gbrp unscaled colorspace converters 2024-08-18 22:26:14 +02:00