# [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:
http://www.dsprelated.com/showmessage/83680/1.php

There's also a PDF file:
http://www.signumconcepts.com/IP_center/paper018.pdf

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.
Hmm...

> 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.
>

http://en.wikipedia.org/wiki/Interpolation

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 (-:

```