MVTools is a set of filters for motion estimation and compensation.
This is a port of version 2.5.11.3 of the Avisynth plugin (the latest from http://avisynth.org.ru/mvtools/mvtools2.html).
Some changes from version 2.5.11.9 of the SVP fork have been incorporated as well (http://www.svp-team.com/wiki/Download).
- All:
- Free multithreading, courtesy of VapourSynth.
- Parameters are all lowercase now.
- YUY2 is not supported.
- Grayscale, 4:2:0, 4:2:2, 4:4:0, and 4:4:4 are supported.
- Up to 16 bits per sample are supported.
- The audio is definitely not killed.
- No "planar" parameter.
- Analyse:
- No "temporal" parameter, as it's sort of incompatible with multithreading.
- No "outfile" parameter.
- No "sadx264" parameter. If isse is True, the best functions imported from x264 will be selected automatically. Otherwise, only C functions will be used.
- New parameters "fields" and "tff".
- The optimised SAD, SATD, and SSD functions from x264 have been updated to the latest versions (as of September 2014).
- Recalculate:
- Same as Analyse.
- Compensate:
- No "recursion" parameter. It was dodgy.
- New parameter "tff".
- Mask:
- No "isse" parameter, because there is no asm in Mask anymore.
- SCDetection:
- No "ysc" parameter. The input frames are returned unchanged, with the
_SceneChangePrev
or_SceneChangeNext
property attached. - No "isse" parameter. It wasn't used.
- No "ysc" parameter. The input frames are returned unchanged, with the
mv.Super(clip clip[, int hpad=8, int vpad=8, int pel=2, int levels=0, bint chroma=True, int sharp=2, int rfilter=2, clip pelclip=None, bint isse=True]) mv.Analyse(clip super[, int blksize=8, int blksizev=blksize, int levels=0, int search=4, int searchparam=2, int pelsearch=0, bint isb=False, int lambda, bint chroma=True, int delta=1, bint truemotion=True, int lsad, int plevel, int global, int pnew, int pzero=pnew, int pglobal=0, int overlap=0, int overlapv=overlap, bint divide=False, int badsad=10000, int badrange=24, bint isse=True, bint meander=True, bint trymany=False, bint fields=False, bint tff, int search_coarse=3, int dct=0]) mv.Recalculate(clip super, clip vectors[, int blksize=8, int blksizev=blksize, int search=4, int searchparam=2, int lambda, bint chroma=True, bint truemotion=True, int pnew, int overlap=0, int overlapv=overlap, bint divide=False, bint isse=True, bint meander=True, bint fields=False, bint tff, int dct=0]) mv.Compensate(clip clip, clip super, clip vectors[, int scbehavior=1, int thsad=10000, bint fields=False, int thscd1=400, int thscd2=130, bint isse=True, bint tff]) mv.Degrain1(clip clip, clip super, clip mvbw, clip mvfw[, int thsad=400, int thsadc=thsad, int plane=4, int limit=255, int limitc=limit, int thscd1=400, int thscd2=130, bint isse=True]) mv.Degrain2(clip clip, clip super, clip mvbw, clip mvfw, clip mvbw2, clip mvfw2[, int thsad=400, int thsadc=thsad, int plane=4, int limit=255, int limitc=limit, int thscd1=400, int thscd2=130, bint isse=True]) mv.Degrain3(clip clip, clip super, clip mvbw, clip mvfw, clip mvbw2, clip mvfw2, clip mvbw3, clip mvfw3[, int thsad=400, int thsadc=thsad, int plane=4, int limit=255, int limitc=limit, int thscd1=400, int thscd2=130, bint isse=True]) mv.Mask(clip clip, clip vectors[, float ml=100.0, float gamma=1.0, int kind=0, int ysc=0, int thscd1=400, int thscd2=130]) mv.Finest(clip super[, bint isse=True]) mv.FlowBlur(clip clip, clip super, clip mvbw, clip mvfw[, float blur=50.0, int prec=1, int thscd1=400, int thscd2=130, bint isse=True]) mv.FlowInter(clip clip, clip super, clip mvbw, clip mvfw[, float time=50.0, float ml=100.0, bint blend=True, int thscd1=400, int thscd2=130, bint isse=True]) mv.FlowFPS(clip clip, clip super, clip mvbw, clip mvfw[, int num=25, int den=1, int mask=2, float ml=100.0, bint blend=True, int thscd1=400, int thscd2=130, bint isse=True]) mv.BlockFPS(clip clip, clip super, clip mvbw, clip mvfw[, int num=25, int den=1, int mode=0, int thres, bint blend=True, int thscd1=400, int thscd2=130, bint isse=True]) mv.SCDetection(clip clip, clip vectors[, int thscd1=400, int thscd2=130])
If fields is True, it is assumed that the clip named clip first went through std.SeparateFields.
For information about the other parameters, consult the Avisynth plugin's documentation at http://avisynth.org.ru/mvtools/mvtools2.html. This will not be necessary in the future.
- Possibly lower memory usage
FFTW3 configured for 32 bit floats is required ("fftw3f").
./autogen.sh ./configure make
GPL 2, like the Avisynth plugin.