[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