[FFmpeg-devel] [PATCH v2 2/3] avfilter/vf_convolution: Add x86 SIMD optimizations for filter_row()
Andriy Gelman
andriy.gelman at gmail.com
Sun Dec 22 18:50:48 EET 2019
Xu,
On Sun, 22. Dec 16:37, xujunzz at sjtu.edu.cn wrote:
> From: Xu Jun <xujunzz at sjtu.edu.cn>
>
> Read 16 elements from memory, shuffle and parallally compute 4 rows at a time, shuffle and parallelly write 16 results to memory.
> Performance improves about 15% compared to v1.
>
> Tested using this command:
> ./ffmpeg_g -s 1280*720 -pix_fmt yuv420p -i test.yuv -vf convolution="1 2 3 4 5 6 7 8 9:1 2 3 4 5 6 7 8 9:1 2 3 4 5 6 7 8 9:1 2 3 4 5 6 7 8 9:1/45:1/45:1/45:1/45:1:2:3:4:row:row:row:row" -an -vframes 5000 -f null /dev/null -benchmark
>
> after patch:
> frame= 4317 fps=622 q=-0.0 Lsize=N/A time=00:02:52.68 bitrate=N/A speed=24.9x
> video:2260kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
> bench: utime=20.539s stime=1.834s rtime=6.943s
>
> before patch(c version):
> frame= 4317 fps=306 q=-0.0 Lsize=N/A time=00:02:52.68 bitrate=N/A speed=12.2x
> video:2260kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
> bench: utime=60.591s stime=1.787s rtime=14.100s
>
> Signed-off-by: Xu Jun <xujunzz at sjtu.edu.cn>
> ---
> libavfilter/x86/vf_convolution.asm | 131 ++++++++++++++++++++++++++
> libavfilter/x86/vf_convolution_init.c | 9 ++
> 2 files changed, 140 insertions(+)
> mode change 100644 => 100755 libavfilter/x86/vf_convolution.asm
>
> diff --git a/libavfilter/x86/vf_convolution.asm b/libavfilter/x86/vf_convolution.asm
> old mode 100644
> new mode 100755
> index 754d4d1064..2a09374b00
> --- a/libavfilter/x86/vf_convolution.asm
> +++ b/libavfilter/x86/vf_convolution.asm
> @@ -154,3 +154,134 @@ cglobal filter_3x3, 4, 15, 7, dst, width, rdiv, bias, matrix, ptr, c0, c1, c2, c
> INIT_XMM sse4
> FILTER_3X3
> %endif
> +
Patch 2-3 are failing to build:
https://unofficial.patchwork-ffmpeg.org/project/FFmpeg/list/?series=26
--
Andriy
More information about the ffmpeg-devel
mailing list