Plugins: MVTools2

From SmoothVideo Project
Jump to navigation Jump to search

😎 BLACK FRIDAY 2022! Get SVP 4 with a 35% discount 🌟

Intro

SVP 3.0-series contains modified version of MVTools2 Avisynth plugin and we're grateful to all of MVTools authors: Manao, Fizick, Tsp, TSchniede and SEt for developing such a great library.

SVP wouldn't be ever possible without it.

The interface

The complete interface description can be found at the MVTools2 homepage, so below are only the differences.

MAnalyse

Can be faster than original version (with chroma=true) by 20-40%, look at PlaneOfBlocks.h for changes. Also there's one additional parameter:

  • int search_coarse - defines the type of search at coarse levels (every level except finest), values are the same as for search parameter.

MFinest

This function is commented out in latest MVTools 2.5 versions and it's obviously a mistake cause it can helps a lot with caching the big frame for hpel (pel=2) and qpel (pel=4) modes. Still it's not in use with MSmoothFps GPU mode. Only one parameter is required:

  • clip super - multilevel super clip prepared by MSuper function

MSmoothFps

It's a completely new function that encapsulates MFlow, MFlowFps and MBlockFps functionality and with GPU support enabled is almost indefinitely faster than MFlowFps. Please note that it requires additional non-GPL libraries (libflowsee.dll and libflowgpu.dll) to operate.

The parameters list:

  • clip super - MSuper output
  • clip mvbw, mvfw - (unnamed) is clips with backward and forward motion vectors data produced by MAnalyse function
  • clip finest - (optional) output of MFinest function, used only in CPU mode if pel=2 or 4.
  • int num, den - output clip fps numerator and denominator, same meaning and values as in MFlowFps. Default = 25/1
  • int algo - together with block controls rendering mode (also called 'SVP shader' in SVP 3.0.x), see the table below
  • bool block - see the table below
  • bool blend - blend frames at scene change like ConvertFps if true, or repeat last frame like ChangeFps if false. Default = true.
  • int ml - occlusion mask scale parameter, same as is MFlowFps. Default=100.
  • int sadml - area mask (based on block SAD value, the idea was taken from YFRC script) scale parameter, smaller value results in stronger masking but zero value turns the mask off. Default=0.
  • float sadgamma - defines the exponent of relation between SAD value and mask strength. Default = 1.0, linear.
  • int thSCD1, thSCD2 - scene change detection parameters, same as in MFlowFps
  • int gpuid - defines the OpenCL GPU-device that should be used for processing. 11 means "1st GPU device on 1st OpenCL platform", 12 = "2nd device on 1st platform", 21 = "1st device on 2nd platform" and so on. Default = 0 - try to use 1st device on 1st platform.

GPU or CPU

MSmoothFps depends on two additional libraries, one for CPU processing and one for GPU. Their outputs is exactly the same but GPU output can be a little less sharp.

To define the mode you should add global variable to the Avisynth script:
svp_flow_lib=<path_to_desired_dll>

For example: svp_flow_lib="d:\plugins\libflowgpu.dll"

Rendering modes or 'SVP shaders'

algo defines how the source pixels will be merged and blended based on masks and time values. We highly recommend to give a try to algo=13 ;)
When block is false each pixel is moved independently, like in MFlow and MFlowFps, when block is true the entire block is moved at once producing highly noticeable blocking artifacts.
There's no difference is performance between block and pixel modes with GPU processing.

algo block classic function
1 false MFlow
2 false MFlow, but interpolated from nearest frame not from the following one
11 false MFlowFps with mask=0 and ml=+∞
12 false None
13 false None
21 false MFlowFps with mask=0
22 false MFlowFps with mask=1
23 false MFlowFps with mask=2
1 true None
2 true None
11 true MBlockFps with mode=0
12 true MBlockFps with mode=1
13 true MBlockFps with mode=2
21 true None
22 true None
23 true None

Downloads

The latest version of modified MVTools is 2.5.11.9 (28.02.2012) and it's based on official MVTools 2.5.11.3 release (19.09.2011).
The distribution includes:

  • mvtools2.dll library (requires VC++ 2008 SP1 run-time)
  • sources of modified MVTools2
  • libflowsse.dll and libflowgpu.dll libraries
  • sample script
  • readme and licenses

DOWNLOAD