[FFmpeg-devel] [PATCH] Transpose filter

Sebastian Vater cdgs.basty
Mon Oct 18 23:51:45 CEST 2010


Michael Niedermayer a ?crit :
> On Mon, Oct 18, 2010 at 05:42:38PM +0200, Stefano Sabatini wrote:
>   
>> On date Sunday 2010-10-17 22:05:40 +0200, Michael Niedermayer encoded:
>>     
>>> On Sun, Oct 17, 2010 at 09:54:53PM +0200, Stefano Sabatini wrote:
>>>       
>> [...]
>>     
>>>>  doc/filters.texi           |   35 +++++++
>>>>  libavfilter/Makefile       |    1 
>>>>  libavfilter/allfilters.c   |    1 
>>>>  libavfilter/vf_transpose.c |  211 +++++++++++++++++++++++++++++++++++++++++++++
>>>>  4 files changed, 248 insertions(+)
>>>> 19f52fa952acc7efca50ef7fbc1f3742f3b566eb  0002-Add-transpose-filter.patch
>>>> From e04cbff39214bfc1a1641b592e1af51e3111c268 Mon Sep 17 00:00:00 2001
>>>> From: Stefano Sabatini <stefano.sabatini-lala at poste.it>
>>>> Date: Mon, 11 Oct 2010 14:16:35 +0200
>>>> Subject: [PATCH 2/4] Add transpose filter.
>>>>         
>>> should be ok if tested and benchmarked against mplayers rotate
>>>       
>> $ gcc --version
>> gcc (Debian 4.4.4-8) 4.4.5 20100728 (prerelease)
>> Copyright (C) 2010 Free Software Foundation, Inc.
>> This is free software; see the source for copying conditions.  There is NO
>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>>
>>
>> Curious, I tried the code and I got:
>> 14515950 dezicycles in fftranspose, 1 runs, 0 skips
>> 8731830 dezicycles in fftranspose, 2 runs, 0 skips
>> 7977697 dezicycles in fftranspose, 4 runs, 0 skips
>> 6721785 dezicycles in fftranspose, 8 runs, 0 skips
>> 6964627 dezicycles in fftranspose, 16 runs, 0 skips
>> 6305574 dezicycles in fftranspose, 32 runs, 0 skips
>> 6071716 dezicycles in fftranspose, 64 runs, 0 skips
>> 5950493 dezicycles in fftranspose, 128 runs, 0 skips
>> 6108487 dezicycles in fftranspose, 256 runs, 0 skips
>> 6190255 dezicycles in fftranspose, 512 runs, 0 skips
>> 6182728 dezicycles in fftranspose, 1024 runs, 0 skips
>>
>> Changing:
>> *(out + x) = *(in + x*inlinesize + y);
>> to
>> out[x] = in[x*inlinesize + y];
>>
>> I got:
>> 2796300 dezicycles in fftranspose, 1 runs, 0 skips
>> 1741350 dezicycles in fftranspose, 2 runs, 0 skips
>> 2488815 dezicycles in fftranspose, 4 runs, 0 skips
>> 2041652 dezicycles in fftranspose, 8 runs, 0 skips
>> 1914091 dezicycles in fftranspose, 16 runs, 0 skips
>> 1881855 dezicycles in fftranspose, 32 runs, 0 skips
>> 1696222 dezicycles in fftranspose, 64 runs, 0 skips
>> 1603417 dezicycles in fftranspose, 128 runs, 0 skips
>> 1545936 dezicycles in fftranspose, 256 runs, 0 skips
>> 1566907 dezicycles in fftranspose, 512 runs, 0 skips
>> 1611006 dezicycles in fftranspose, 1024 runs, 0 skips
>> 1610478 dezicycles in fftranspose, 2048 runs, 0 skips
>> 1605196 dezicycles in fftranspose, 4096 runs, 0 skips
>> 1612250 dezicycles in fftranspose, 8192 runs, 0 skips
>>
>> which are comparable with the same values from mplayer rotate:
>> 2222190 dezicycles in mpcrotate, 1 runs, 0 skips
>> 1382235 dezicycles in mpcrotate, 2 runs, 0 skips
>> 1361745 dezicycles in mpcrotate, 4 runs, 0 skips
>> 1385261 dezicycles in mpcrotate, 8 runs, 0 skips
>> 1362976 dezicycles in mpcrotate, 16 runs, 0 skips
>> 1259585 dezicycles in mpcrotate, 32 runs, 0 skips
>> 1340383 dezicycles in mpcrotate, 64 runs, 0 skips
>> 1419385 dezicycles in mpcrotate, 128 runs, 0 skips
>> 1588434 dezicycles in mpcrotate, 256 runs, 0 skips
>> 1604090 dezicycles in mpcrotate, 512 runs, 0 skips
>> 1650801 dezicycles in mpcrotate, 1024 runs, 0 skips
>> 1692090 dezicycles in mpcrotate, 2046 runs, 2 skips
>> 1703945 dezicycles in mpcrotate, 4093 runs, 3 skips
>> 1689078 dezicycles in mpcrotate, 8188 runs, 4 skips
>>
>> I have no idea why it is so much faster, anyway patch updated.
>> -- 
>> FFmpeg = Fiendish & Foolish Marvellous Prodigious Elected Geek
>>     
>
>   

Hey!
Thanks for the benchmark, this is *VERY* interesting for me too, since I
use lots of pointer arithmetic stuff like that instead of array indexing
in my ported code (TuComposer => AVSequencer), too.

Strange enough, I had almost exactly the opposite results ~ 10 years ago
when developed the original TuComposer code.

I will address this issue somewhere in the next month (I'm very busy
right now regarding university stuff) in my code.

-- 

Best regards,
                   :-) Basty/CDGS (-:




More information about the ffmpeg-devel mailing list