[FFmpeg-devel] [PATCH 0/7] ARM NEON optimisations
Panagiotis Issaris
takis.issaris
Tue Dec 16 13:21:24 CET 2008
On Tue, 2008-12-16 at 10:57 +0000, M?ns Rullg?rd wrote:
> Panagiotis Issaris wrote:
> > Hi M?ns,
> >
> > On Fri, 2008-12-05 at 23:34 +0000, Mans Rullgard wrote:
> >> The following patches add NEON optimised versions of various dsputil
> >> functions. I have improved some of the functions slightly since last
> >> time I sent these patches. I am not including a few patches which can
> >> be improved further this time.
> > ...
> >> If I get no useful feedback, I will start applying these soon.
>
> I have committed these 7 patches. More to follow.
>
> > I benchmarked video decoding with and without the NEON, and the frame
> > rate nearly doubled! Great work!
>
> What hardware are you using? Beagle board? What samples did you try?
Beagle board revision B6, which I received a few weeks ago.
I mostly use movie trailers from the Quicktime/Apple website.
I've tried various resolutions and samples, but here's a small extract
of the output. Note that I had to fiddle a bit with the flags to get the
NEON compiled in... and in searching how to get it to work, I stumbled
upon the IRC log with the discussion regarding the broken CodeSourcery
compiler. I've compiled these using CS's 2007q3 compiler.
root at beagleboard:/# ./ffmpeg2007 -benchmark -i iceage3-tlrd_h320.mov -f
null -an
/dev/null
FFmpeg version git-932edfb, Copyright (c) 2000-2008 Fabrice Bellard, et
al.
configuration: --cross-prefix=arm-none-linux-gnueabi- --arch=armv7l
--cpu=cortex-a8 --enable-neon --disable-devices --disable-network
libavutil 49.12. 0 / 49.12. 0
libavcodec 52. 6. 1 / 52. 6. 1
libavformat 52.23. 1 / 52.23. 1
libavdevice 52. 1. 0 / 52. 1. 0
built on Dec 14 2008 23:09:00, gcc: 4.2.1
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'iceage3-tlrd_h320.mov':
Duration: 00:02:27.19, start: 0.000000, bitrate: 315 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 320x172, 23.98 tb(r)
Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16
Stream #0.2(eng): Data: tmcd / 0x64636D74
Output #0, null, to '/dev/null':
Stream #0.0(eng): Video: rawvideo, yuv420p, 320x172, q=2-31, 200
kb/s, 23.98 tb(c)
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 3529 fps= 72 q=0.0 Lsize= -0kB time=147.19 bitrate=
-0.0kbits/s
video:0kB audio:0kB global headers:0kB muxing overhead -inf%
bench: utime=46.414s
root at beagleboard:/# ./ffmpeg2007neon -benchmark -i
iceage3-tlrd_h320.mov -f nul
l -an /dev/null
FFmpeg version git-932edfb, Copyright (c) 2000-2008 Fabrice Bellard, et
al.
configuration: --cross-prefix=arm-none-linux-gnueabi- --arch=armv7l
--cpu=cortex-a8 --enable-neon --disable-devices --disable-network
--enable-armvfp --ext
ra-cflags=-mfpu=neon -mfloat-abi=softfp
libavutil 49.12. 0 / 49.12. 0
libavcodec 52. 6. 1 / 52. 6. 1
libavformat 52.23. 1 / 52.23. 1
libavdevice 52. 1. 0 / 52. 1. 0
built on Dec 15 2008 00:59:30, gcc: 4.2.1
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'iceage3-tlrd_h320.mov':
Duration: 00:02:27.19, start: 0.000000, bitrate: 315 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 320x172, 23.98 tb(r)
Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16
Stream #0.2(eng): Data: tmcd / 0x64636D74
Output #0, null, to '/dev/null':
Stream #0.0(eng): Video: rawvideo, yuv420p, 320x172, q=2-31, 200
kb/s, 23.98 tb(c)
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 3529 fps=122 q=0.0 Lsize= -0kB time=147.19 bitrate=
-0.0kbits/s
video:0kB audio:0kB global headers:0kB muxing overhead -inf%
> > Oh, and I used you git tree, not the patches you posted on this mailing
> > list.
>
> The 'arm' branch of my git tree has all these patches and some additional
> optimisations for audio decoders. These still need a little more fine-
> tuning before going in.
Excellent. I haven't benchmarked these yet though.
With friendly regards,
Takis
More information about the ffmpeg-devel
mailing list