[FFmpeg-devel] [PATCH v2 2/3] avfilter/vf_convolution: Add x86 SIMD optimizations for filter_row()

Xu Jun xujunzz at sjtu.edu.cn
Mon Dec 30 04:34:55 EET 2019


Hi, Andriy

----- Original Message -----
> From: "Andriy Gelman" <andriy.gelman at gmail.com>
> To: "FFmpeg development discussions and patches" <ffmpeg-devel at ffmpeg.org>
> Cc: xujunzz at sjtu.edu.cn
> Sent: Monday, December 23, 2019 12:50:48 AM
> Subject: Re: [FFmpeg-devel] [PATCH v2 2/3] avfilter/vf_convolution: Add x86 SIMD optimizations for filter_row()

> 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

I'm sorry I haven't built patches independently. There seem to be some bugs in the dependency of the patches.
I'll fix them in v3.

Xu Jun  


More information about the ffmpeg-devel mailing list