[FFmpeg-devel] Behaviour of liba52 decoder

Måns Rullgård mans
Thu Jan 10 23:49:36 CET 2008


Michael Niedermayer <michaelni at gmx.at> writes:

> On Thu, Jan 10, 2008 at 06:54:13PM +0000, M?ns Rullg?rd wrote:
>> Michael Niedermayer <michaelni at gmx.at> writes:
>> 
>> > On Thu, Jan 10, 2008 at 01:36:31PM -0500, Rich Felker wrote:
>> >> On Thu, Jan 10, 2008 at 06:28:52PM +0000, M?ns Rullg?rd wrote:
>> >> > I'm surprised nobody has mentioned the fact that we now have a native
>> >> > AC3 decoder, so there is no longer any need for the liba52 wrapper.
>> >> > Is there some reason I'm missing why it's still there?
>> >> 
>> >> Good question. I'd be happy to see it removed.
>> >
>> > if ours is faster sure remove liba52 support ...
>> 
>> Is speed the only deciding factor here?  I suppose I could benchmark
>> decoding a DVD or two.
>
> The question is probably if we have volunteers to do more complete testing
> that is
> * .o size
> * memory requirement
> * as already mentioned speed
> * quality (are there specific tests mandated by the ac3 spec?)
> * feature completeness (i assume we are better especially with EAC3 around
>   the corner and liba52 being not very actively developed lately AFAIK)
> * error concealment (being mandatory for EAC3 we should be as good or better
>   here as well eventually)
>
> Anyway speed tests alone would already be very interresting
> C and SSE of course for both

I did a basic speed test decoding the audio from a couple of DVDs,
naturally first demuxed into a raw AC3 file.

System: Core2 quad 2.66GHz, 4GB DDR2-800

DVD               Channels  Length      ffac3   ffac3-nommx liba52
-------------------------------------------------------------------
The Big Lebowski  5.1       01:52:13.6  42.937s 1m3.019s    57.066s
Lost Highway      2         02:08:51.2  19.785s 27.622s     24.745s

The native decoder appears to be faster for typical use, a bit slower
without SIMD.

Full command lines and output follows.

Liba52
------

$ time /tmp/ffmpeg/ffmpeg -i the_big_lebowski.ac3 -f null -y /dev/null
FFmpeg version git-c206da0, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --cc=gcc-4.2.2 --cpu=nocona --enable-gpl --enable-liba52
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.3.0
  libavdevice version: 52.0.0
  built on Jan 10 2008 20:27:40, gcc: 4.2.2 (Gentoo 4.2.2 p1.0)
Input #0, ac3, from 'the_big_lebowski.ac3':
  Duration: 01:52:13.6, bitrate: 448 kb/s
    Stream #0.0: Audio: liba52, 48000 Hz, 5:1, 448 kb/s
Output #0, null, to '/dev/null':
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, 5:1, 4608 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
No accelerated IMDCT transform found
Press [q] to stop encoding
size=      -0kB time=6733.6 bitrate=  -0.0kbits/s    
video:0kB audio:3787650kB global headers:0kB muxing overhead -100.000001%

real    0m57.536s
user    0m57.066s
sys     0m0.423s

$ time /tmp/ffmpeg/ffmpeg -i lost_highway.ac3 -f null -y /dev/null
FFmpeg version git-c206da0, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --cc=gcc-4.2.2 --cpu=nocona --enable-gpl --enable-liba52
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.3.0
  libavdevice version: 52.0.0
  built on Jan 10 2008 20:27:40, gcc: 4.2.2 (Gentoo 4.2.2 p1.0)
Input #0, ac3, from 'lost_highway.ac3':
  Duration: 02:08:51.2, bitrate: 224 kb/s
    Stream #0.0: Audio: liba52, 48000 Hz, stereo, 224 kb/s
Output #0, null, to '/dev/null':
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, stereo, 1536 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
No accelerated IMDCT transform found
Press [q] to stop encoding
size=      -0kB time=7731.3 bitrate=  -0.0kbits/s    
video:0kB audio:1449612kB global headers:0kB muxing overhead -100.000001%

real    0m25.208s
user    0m24.745s
sys     0m0.383s

FFAC3
-----

$ time /tmp/ffmpeg/ffmpeg -i the_big_lebowski.ac3 -f null -y /dev/null
FFmpeg version git-c206da0, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --cc=gcc-4.2.2 --cpu=nocona --enable-gpl
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.3.0
  libavdevice version: 52.0.0
  built on Jan 10 2008 22:23:48, gcc: 4.2.2 (Gentoo 4.2.2 p1.0)
Input #0, ac3, from 'the_big_lebowski.ac3':
  Duration: 01:52:13.6, bitrate: 448 kb/s
    Stream #0.0: Audio: ac3, 48000 Hz, 5:1, 448 kb/s
Output #0, null, to '/dev/null':
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, 5:1, 4608 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
size=      -0kB time=6733.6 bitrate=  -0.0kbits/s    
video:0kB audio:3787668kB global headers:0kB muxing overhead -100.000001%

real    0m43.224s
user    0m42.937s
sys     0m0.283s

$ time /tmp/ffmpeg/ffmpeg -i lost_highway.ac3 -f null -y /dev/null
FFmpeg version git-c206da0, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --cc=gcc-4.2.2 --cpu=nocona --enable-gpl
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.3.0
  libavdevice version: 52.0.0
  built on Jan 10 2008 22:23:48, gcc: 4.2.2 (Gentoo 4.2.2 p1.0)
Input #0, ac3, from 'lost_highway.ac3':
  Duration: 02:08:51.2, bitrate: 224 kb/s
    Stream #0.0: Audio: ac3, 48000 Hz, stereo, 224 kb/s
Output #0, null, to '/dev/null':
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, stereo, 1536 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
size=      -0kB time=7731.3 bitrate=  -0.0kbits/s    
video:0kB audio:1449618kB global headers:0kB muxing overhead -100.000001%

real    0m20.075s
user    0m19.785s
sys     0m0.290s

FFAC3-nommx
-----------

$ time /tmp/ffmpeg/ffmpeg -i the_big_lebowski.ac3 -f null -y /dev/null
FFmpeg version git-c206da0, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --cc=gcc-4.2.2 --cpu=nocona --enable-gpl --disable-mmx --disable-ssse3
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.3.0
  libavdevice version: 52.0.0
  built on Jan 10 2008 22:43:50, gcc: 4.2.2 (Gentoo 4.2.2 p1.0)
Input #0, ac3, from 'the_big_lebowski.ac3':
  Duration: 01:52:13.6, bitrate: 448 kb/s
    Stream #0.0: Audio: ac3, 48000 Hz, 5:1, 448 kb/s
Output #0, null, to '/dev/null':
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, 5:1, 4608 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
size=      -0kB time=6733.6 bitrate=  -0.0kbits/s    
video:0kB audio:3787668kB global headers:0kB muxing overhead -100.000001%

real    1m3.231s
user    1m3.019s
sys     0m0.217s

$ time /tmp/ffmpeg/ffmpeg -i lost_highway.ac3 -f null -y /dev/null
FFmpeg version git-c206da0, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --cc=gcc-4.2.2 --cpu=nocona --enable-gpl --disable-mmx --disable-ssse3
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.3.0
  libavdevice version: 52.0.0
  built on Jan 10 2008 22:43:50, gcc: 4.2.2 (Gentoo 4.2.2 p1.0)
Input #0, ac3, from 'lost_highway.ac3':
  Duration: 02:08:51.2, bitrate: 224 kb/s
    Stream #0.0: Audio: ac3, 48000 Hz, stereo, 224 kb/s
Output #0, null, to '/dev/null':
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, stereo, 1536 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
size=      -0kB time=7731.3 bitrate=  -0.0kbits/s    
video:0kB audio:1449618kB global headers:0kB muxing overhead -100.000001%

real    0m27.848s
user    0m27.622s
sys     0m0.220s


-- 
M?ns Rullg?rd
mans at mansr.com




More information about the ffmpeg-devel mailing list