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
Marvin Scholz
6b9f4f36f7
swscale/internal: fix typo in loongarch specific code
...
Regression from 2d077f9acd
2024-11-25 17:15:00 +01:00
Niklas Haas
2d077f9acd
swscale/internal: group user-facing options together
...
This is a preliminary step to separating these into a new struct. This
commit contains no functional changes, it is a pure search-and-replace.
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
2024-11-21 12:49:56 +01:00
Ramiro Polla
8b30daedf7
swscale/range_convert: indent after previous commit
2024-10-27 13:20:56 +01:00
Ramiro Polla
f7ee0195df
swscale/range_convert: drop redundant conditionals from arch-specific init functions
...
These conditions are already checked for in the main init function.
2024-10-27 13:20:56 +01:00
Ramiro Polla
7728b3357d
swscale/range_convert: call arch-specific init functions from main init function
...
This commit also fixes the issue that the call to ff_sws_init_range_convert()
from sws_init_swscale() was not setting up the arch-specific optimizations.
2024-10-27 13:20:56 +01:00
Niklas Haas
67adb30322
swscale: rename SwsContext to SwsInternal
...
And preserve the public SwsContext as separate name. The motivation here
is that I want to turn SwsContext into a public struct, while keeping the
internal implementation hidden. Additionally, I also want to be able to
use multiple internal implementations, e.g. for GPU devices.
This commit does not include any functional changes. For the most part, it is
a simple rename. The only complications arise from the public facing API
functions, which preserve their current type (and hence require an additional
unwrapping step internally), and the checkasm test framework, which directly
accesses SwsInternal.
For consistency, the affected functions that need to maintain a distionction
have generally been changed to refer to the SwsContext as *sws, and the
SwsInternal as *c.
In an upcoming commit, I will provide a backing definition for the public
SwsContext, and update `sws_internal()` to dereference the internal struct
instead of merely casting it.
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
2024-10-24 22:50:00 +02:00
jinbo
e6ecc1e757
swscale: Fix conflicting types for loongarch
...
Build breaks after c1a0e65763
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-10-09 01:55:50 +02:00
Niklas Haas
c1a0e65763
swscale/internal: constify SwsFunc
...
I want to move away from having random leaf processing functions mutate
plane pointers, and while we're at it, we might as well make the strides
and tables const as well.
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
2024-10-07 19:51:34 +02:00
Shiyou Yin
4713a5cc24
swscale: [loongarch] Fix checkasm-sw_yuv2rgb failure.
...
Reviewed-by: 陈昊 <chenhao@loongson.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-07-28 19:02:16 +02:00
Shiyou Yin
6b35fcacdb
swscale: [loongarch] Fix undeclared functions prob.
...
Compile with '--disable-lasx', ‘lumRangeFromJpeg_lasx’ undeclared.
Reviewed-by: 金波 <jinbo@loongson.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-05-31 02:20:23 +02:00
Shiyou Yin
2a7d622ddd
swscale: [LA] Optimize swscale funcs in input.c
...
Optimized 7 funcs with LSX and LASX:
1. yuy2ToUV_c
2. yvy2ToUV_c
3. uyvyToUV_c
4. nv12ToUV_c
5. nv21ToUV_c
6. abgrToA_c
7. rgbaToA_c
Reviewed-by: colleague of Shiyou Yin
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-04-11 23:53:59 +02:00
Shiyou Yin
8b76df9142
swscale: [LA] Optimize yuv2plane1_8_c.
...
Reviewed-by: colleague of Shiyou Yin
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-04-11 23:53:59 +02:00
Shiyou Yin
f3fe2cb5f7
swscale: [LA] Optimize range convert for yuvj420p.
...
Reviewed-by: 陈昊 <chenhao@loongson.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-04-11 23:53:41 +02:00
Jin Bo
cb4ae8baee
swscale/la: Add following builtin optimized functions
...
yuv420_rgb24_lsx
yuv420_bgr24_lsx
yuv420_rgba32_lsx
yuv420_argb32_lsx
yuv420_bgra32_lsx
yuv420_abgr32_lsx
./configure --disable-lasx
ffmpeg -i ~/media/1_h264_1080p_30fps_3Mbps.mp4 -f rawvideo
-pix_fmt rgb24 -y /dev/null -an
before: 184fps
after: 207fps
Reviewed-by: Shiyou Yin <yinshiyou-hf@loongson.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2023-05-25 21:05:15 +02:00
Lu Wang
4501b1dfd7
swscale/la: Optimize the functions of the swscale series with lsx.
...
./configure --disable-lasx
ffmpeg -i ~/media/1_h264_1080p_30fps_3Mbps.mp4 -f rawvideo -s 640x480
-pix_fmt bgra -y /dev/null -an
before: 91fps
after: 160fps
Reviewed-by: Shiyou Yin <yinshiyou-hf@loongson.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2023-05-25 21:05:08 +02:00
Hao Chen
925ac0da32
swscale/la: Add output_lasx.c file.
...
ffmpeg -i 1_h264_1080p_30fps_3Mbps.mp4 -f rawvideo -s 640x480 -pix_fmt
rgb24 -y /dev/null -an
before: 150fps
after: 183fps
Signed-off-by: Hao Chen <chenhao@loongson.cn>
Reviewed-by: yinshiyou-hf@loongson.cn
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-09-10 22:56:39 +02:00
Hao Chen
74d09b068d
swscale/la: Add yuv2rgb_lasx.c and rgb2rgb_lasx.c files
...
ffmpeg -i 1_h264_1080p_30fps_3Mbps.mp4 -f rawvideo -pix_fmt rgb24 -y /dev/null -an
before: 178fps
after: 210fps
Signed-off-by: Hao Chen <chenhao@loongson.cn>
Reviewed-by: yinshiyou-hf@loongson.cn
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-09-10 22:56:38 +02:00
Hao Chen
38cacce22a
swscale/la: Optimize hscale functions with lasx.
...
ffmpeg -i 1_h264_1080p_30fps_3Mbps.mp4 -f rawvideo -s 640x480 -y /dev/null -an
before: 101fps
after: 138fps
Signed-off-by: Hao Chen <chenhao@loongson.cn>
Reviewed-by: yinshiyou-hf@loongson.cn
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-09-10 22:56:38 +02:00