[FFmpeg-devel] Interpolation algorithms for FFmpeg

Sebastian Vater cdgs.basty
Tue Aug 3 13:49:46 CEST 2010

Michael Niedermayer a ?crit :
> On Wed, Jul 28, 2010 at 08:38:47PM +0200, Sebastian Vater wrote:
>> Hi guys!
>> In accordance with my chief I planned my Bachelor work to deal with interpolation algorithms and I also have to code one.
>> After getting some informations from Benjamin Larsson what is already supported in FFmpeg, I was doing some research last weekend on interpolation for being a) usable for
>> FFmpeg and b) for my Bachelor work.
>> I found this one very interesting (Farrow Interpolation mode):
>> http://www.mathworks.com/access/helpdesk/help/toolbox/dspblks/ref/variablefractionaldelay.html#f6-552788
> what is farrow interpolation?
> this text in that link is pretty much crap. I can explain what fir is in 2
> lines they drag it out over pages and diagrams that only make sense to someone
> who knows already what the things are besides that the informations is
> obviously incomplete.

I just continued research regarding your question and founded this thread:

There's also a PDF file:

And someone summarized it as follows:

Let me try to summarize Farrow's idea in three bullet points:
The numbers are from the reference.

* I can use a FIR filter to interpolate one particular point between
samples, for example at an offset of 1/32 sample time

* I keep 32 different banks of FIR coefficients at hand, so that I can
choose between interpolating at for example 0/32, 1/32, 2/32... 31/32
delay. That's a "polyphase" filter.

* I may still need a higher timing resolution. Instead of decreasing the
step size (and using more polyphase filter "banks") I calculate each FIR
coefficient through a polynomial (for example 4th order) with the delay
0..1 as variable.

This sounds to me that it is a special FIR, but regarding to this thread there's also a farrow interpolation filter using linear interpolation.

> ffmpeg would be interrested in any of the following
> * picture scaling by doing interpolation along the direction of most equal
>   color or otherwise along the texture pattern
> * video frame rate changing by interpolation along motion vectors
> * audio resampling by adaptively switching filters (for example filter
>   length) depending on audio characteristics with the intent of maximizing
>   similarity to the ideal/correct signal.
> other ideas welcome but they must be formally well defined not links to
> documents about commercial products.

Well, I thought maybe start with:

To get a first overview of interpolation algorithms and then take a look
on them, which is what I do right now.


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

More information about the ffmpeg-devel mailing list