[FFmpeg-devel] [PATCH] activate ac3 decoder

Guillaume Poirier gpoirier
Fri Aug 10 10:14:27 CEST 2007


Hello,

Michael Niedermayer wrote:
> On Tue, Aug 07, 2007 at 06:14:59AM -0400, Justin Ruggles wrote:
> [...]
>>> What's the slowest part of AC3 decoding currently?
>> I haven't profiled it yet, but my best guess is the 512-point IMDCT.
> 
> official liba52 has a split radix FFT writen in C it doesnt have a
> SSE one, it also supports djbfft (which itself neither supports SSE
> AFAIK)

It indeed doesn't look like djbfft has SSE-optimized code.


> our fft is crap, all of it ...
> the C fft is a very slow cooley tukey fft
> our SSE fft contains unneeded instructions (see 
> MPlayer-svn/mplayer/liba52/imdct.c for anonther inefficit cooley tukey
> SSE fft but at least with fewer SSE instructions, note this one was
> writen by me ...)
> 
> so to solve this and make our code faster
> 1. implement a plain C split radix fft


You seem to be putting a very big focus on getting the FFT that has
the fewest number of computations. Indeed, split-radix is the most
efficient in terms of using the fewest number of add and mul.

However, after reading some different papers on FFTs and googling
around, I'm not that convinced. This paper:
http://www.fftw.org/fftw-paper-icassp.pdf
by FFTW people show that in practice, there are other things to take
into account (e.g. CPU cache) than just the number of computations.


There seem to be so many FFT libs out there that I wonder if we really
need to write our own, except, of course if there aren't any decent
that's LGPL-compatible.

Heck, if we didn't care about the license, Intel's IPP is clearly the
best choice out there ;-)
J/K


> 2. implement djbfft support (this should be trivial considering that
> liba52 needs something like 5 lines of code for it)

According to the website djbfft uses a split-radix-2/4 FFT. This looks
like what you are after isn't it?
Why don't we just cannibalize the relevant parts of djbfft and make do
without step 1 of your checklist (1. implement a plain C split radix fft)?
I couldn't figure out what's the license of djbfft so I don't know if
that's possible though :-(

Guillaume




More information about the ffmpeg-devel mailing list