MVTools2/MSuper

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(formatting, links, phrasing)
m (Fixing the Eedi3 link)
 
(3 intermediate revisions by 2 users not shown)
Line 6: Line 6:
  
 
== Description ==
 
== Description ==
Get source clip and prepare a special '''''super''''' clip with multilevel, hierarchically scaled frame data. The super clip is used by both [[MAnalyse]] and other motion compensation client functions.  
+
Gets a source clip and prepares a special '''Super''' clip with multilevel (hierarchical scaled) frames data. The Super clip is used by both [[MAnalyse]] and motion compensation (client) functions.<br>
 
+
The audio properties of the Super clip are used to store and transfer its parameters (specifically ''num_audio_samples''), therefore any existing audio is killed in the Super clip. That is one of reasons why you can additionally use a source clip with client functions. You may have a look to the Super clip yourself (it has a normal format).<br>
For storing and transferring metadata we use audio properties of the super clip (specifically, ''num_audio_samples'') as a trick. So, audio is killed in the super clip. That is one of reasons why we require a separate source clip with '''MVTools''' client functions. You may have a look at the super clip yourself; it has a normal format.
+
Supported formats: Y, YUV and planar RGB (8-32) bits, and YUY2. You can use a different Super clip to generate vectors with MAnalyze and a different Super clip format for the actual action. This enables support for planar RGB with MFlowFPS, and lets MDegrain work with 32 bit float input clips.  
  
 
== Syntax and Parameters ==
 
== Syntax and Parameters ==
 
{{FuncDef|MSuper (clip, int "hpad", int "vpad", int "pel", int "levels", bool "chroma", <br>
 
{{FuncDef|MSuper (clip, int "hpad", int "vpad", int "pel", int "levels", bool "chroma", <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int "sharp", int "rfilter", clip "pelclip", bool "isse", bool "planar") }}
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int "sharp", int "rfilter", clip "pelclip", bool "isse", bool "planar", bool "mt") }}
  
 
:{{Par2|hpad|int|8}}
 
:{{Par2|hpad|int|8}}
::Horizontal padding added to source frame (both left and right). Small padding is added for more correct motion estimation near frame borders.
+
::Horizontal padding added to source frame (both left and right). A small padding is added for more correct motion estimation near frame borders.  
  
 
:{{Par2|vpad|int|8}}
 
:{{Par2|vpad|int|8}}
::Vertical padding added to source frame (both top and bottom). Small padding is added for more correct motion estimation near frame borders.
+
::Vertical padding added to source frame (both top and bottom), for the same reason as ''hpad''.
  
 
:{{Par2|pel|int|2}}
 
:{{Par2|pel|int|2}}
::Set motion estimation accuracy. Value can only be 1, 2 or 4.  
+
::Motion estimation accuracy. Value can only be 1, 2 or 4.  
 
:::*1 : means precision to the pixel.  
 
:::*1 : means precision to the pixel.  
 
:::*2 : means precision to half a pixel.  
 
:::*2 : means precision to half a pixel.  
Line 27: Line 27:
  
 
:{{Par2|levels|int|0}}
 
:{{Par2|levels|int|0}}
::Set the number of hierarchical levels in super clip frames. [[MAnalyse]] needs all levels, but for other client functions a single, finest level is enough (courser levels are not used). Default = 0 (auto, all possible levels are produced).  
+
::Number of hierarchical levels for super clip frames. [[MAnalyse]] needs all levels, but for other client functions a single, finest level is enough (coarser levels are not used). 0 is auto (all possible levels are produced).  
  
 
:{{Par2|chroma|bool|true}}
 
:{{Par2|chroma|bool|true}}
::If true, prepare chroma planes also. (false = luma only).
+
::When true, process chroma planes too. False for luma only.
  
 
:{{Par2|sharp|int|2}}
 
:{{Par2|sharp|int|2}}
::Sub-pixel interpolation method for {{FuncArg|pel}} = 2 or 4.
+
::Sub-pixel interpolation method for when {{FuncArg|pel}} == 2 || 4.
 
:::*0 : soft interpolation (bilinear).
 
:::*0 : soft interpolation (bilinear).
 
:::*1 : bicubic interpolation (4 tap Catmull-Rom)
 
:::*1 : bicubic interpolation (4 tap Catmull-Rom)
Line 41: Line 41:
 
::Hierarchical levels smoothing and reducing (halving) filter.
 
::Hierarchical levels smoothing and reducing (halving) filter.
 
:::* 0 : simple 4 pixels averaging like unfiltered [[SimpleResize]] (old method)
 
:::* 0 : simple 4 pixels averaging like unfiltered [[SimpleResize]] (old method)
:::* 1 : triangle (shifted) filter like [[ReduceBy2]] for more smoothing (decrease aliasing)
+
:::* 1 : triangle (shifted) filter like [[ReduceBy2]] for more smoothing (decreased aliasing)
 
:::* 2 : triangle filter like [[BilinearResize]] for even more smoothing
 
:::* 2 : triangle filter like [[BilinearResize]] for even more smoothing
 
:::* 3 : quadratic filter for even more smoothing
 
:::* 3 : quadratic filter for even more smoothing
 
:::* 4 : cubic filter like [[BicubicResize]](b=1,c=0) for even more smoothing
 
:::* 4 : cubic filter like [[BicubicResize]](b=1,c=0) for even more smoothing
  
:: You may also try to apply some external filter to ''superclip'' or its coarse bottom part (by appropriate crop and overlay).
+
:: You may also try to apply some external filter to the''superclip'' or its coarse bottom part (by appropriate crop and overlay).
  
 
:{{Par2|pelclip|clip| }}
 
:{{Par2|pelclip|clip| }}
::Optional upsampled source clip for using instead of internal sub-pixel interpolation (for {{FuncArg|pel}}>1).
+
::Optional upsampled source clip for using instead of internal sub-pixel interpolation (for {{FuncArg|pel}} > 1).
 
::Pixels at rows and columns positions multiple to {{FuncArg|pel}} (0,2,4,... for {{FuncArg|pel}}=2) (without padding) must be original source pixels; other pixels must be interpolated.
 
::Pixels at rows and columns positions multiple to {{FuncArg|pel}} (0,2,4,... for {{FuncArg|pel}}=2) (without padding) must be original source pixels; other pixels must be interpolated.
  
Line 56: Line 56:
 
  MSuper(..., pel=2, pelclip=LanczosResize(width*2,height*2,src_left=0.25, src_top=0.25))
 
  MSuper(..., pel=2, pelclip=LanczosResize(width*2,height*2,src_left=0.25, src_top=0.25))
 
</div>
 
</div>
::Another useful {{FuncArg|pelclip}} is the [[eedi3]] edge-directed resampler.
+
::Another useful filter for {{FuncArg|pelclip}} is the [[Eedi3]] edge-directed resampler.
 
::Recent note: it is true for luma, but is not exactly corresponded to chroma pixels positions of internal '''MVTools''' interpolation. Nevertheless, vectors and motion compensation are quite similar for usual clips, same chroma would be with ''src_left=0.5'' for YUY2 and additionally ''src_top=0.5'' for YV12.{{Clarify}}
 
::Recent note: it is true for luma, but is not exactly corresponded to chroma pixels positions of internal '''MVTools''' interpolation. Nevertheless, vectors and motion compensation are quite similar for usual clips, same chroma would be with ''src_left=0.5'' for YUY2 and additionally ''src_top=0.5'' for YV12.{{Clarify}}
 
:{{Par2|isse|bool|true}}
 
::If true, enable ISSE, MMX and other CPU optimizations. You may want to disable them for for debugging. If your processor doesn't support CPU optimizations, it will be disabled anyway (and you won't be able to activate them). Default is True.
 
 
:{{Par2|planar|bool|false}}
 
::If true, use special planar color format for [[YUY2]] clips both for input and output. '''Ignored for YV12 clips.'''
 
:::'''MSuper''' uses a special trick for storing frames with [[planar]] color in an interleaved YUY2 container. This way we can avoid numerous internal interleaved to planar conversions and increase speed. You can convert normal interleaved YUY2 source clip to planar format with the ''Interleaved2planar'' function from [[RemoveGrain_v0.9/SSETools]] plugin by {{Author/kassandro}}, and convert final result by ''Planar2interleaved'' function. This special planar YUY2 format is also supported by [[RemoveGrain_v0.9|Removegrain]] plugin by Kassandro, [[MaskTools2]] plugin by Manao and some others.
 
::Note: super clip is always planar. Default is false.
 
  
  

Latest revision as of 21:02, 7 November 2021

Back to MVTools2



[edit] Description

Gets a source clip and prepares a special Super clip with multilevel (hierarchical scaled) frames data. The Super clip is used by both MAnalyse and motion compensation (client) functions.
The audio properties of the Super clip are used to store and transfer its parameters (specifically num_audio_samples), therefore any existing audio is killed in the Super clip. That is one of reasons why you can additionally use a source clip with client functions. You may have a look to the Super clip yourself (it has a normal format).
Supported formats: Y, YUV and planar RGB (8-32) bits, and YUY2. You can use a different Super clip to generate vectors with MAnalyze and a different Super clip format for the actual action. This enables support for planar RGB with MFlowFPS, and lets MDegrain work with 32 bit float input clips.

[edit] Syntax and Parameters

MSuper (clip, int "hpad", int "vpad", int "pel", int "levels", bool "chroma",
      int "sharp", int "rfilter", clip "pelclip", bool "isse", bool "planar", bool "mt")

int  hpad = 8
Horizontal padding added to source frame (both left and right). A small padding is added for more correct motion estimation near frame borders.
int  vpad = 8
Vertical padding added to source frame (both top and bottom), for the same reason as hpad.
int  pel = 2
Motion estimation accuracy. Value can only be 1, 2 or 4.
  • 1 : means precision to the pixel.
  • 2 : means precision to half a pixel.
  • 4 : means precision to quarter of a pixel, produced by spatial interpolation (more accurate but slower and not always better due to big level scale step).
int  levels = 0
Number of hierarchical levels for super clip frames. MAnalyse needs all levels, but for other client functions a single, finest level is enough (coarser levels are not used). 0 is auto (all possible levels are produced).
bool  chroma = true
When true, process chroma planes too. False for luma only.
int  sharp = 2
Sub-pixel interpolation method for when pel == 2 || 4.
  • 0 : soft interpolation (bilinear).
  • 1 : bicubic interpolation (4 tap Catmull-Rom)
  • 2 : sharper Wiener interpolation (6 tap, similar to Lanczos).
int  rfilter = 2
Hierarchical levels smoothing and reducing (halving) filter.
  • 0 : simple 4 pixels averaging like unfiltered SimpleResize (old method)
  • 1 : triangle (shifted) filter like ReduceBy2 for more smoothing (decreased aliasing)
  • 2 : triangle filter like BilinearResize for even more smoothing
  • 3 : quadratic filter for even more smoothing
  • 4 : cubic filter like BicubicResize(b=1,c=0) for even more smoothing
You may also try to apply some external filter to thesuperclip or its coarse bottom part (by appropriate crop and overlay).
clip  pelclip =
Optional upsampled source clip for using instead of internal sub-pixel interpolation (for pel > 1).
Pixels at rows and columns positions multiple to pel (0,2,4,... for pel=2) (without padding) must be original source pixels; other pixels must be interpolated.
Example for pel=2:
MSuper(..., pel=2, pelclip=LanczosResize(width*2,height*2,src_left=0.25, src_top=0.25))
Another useful filter for pelclip is the Eedi3 edge-directed resampler.
Recent note: it is true for luma, but is not exactly corresponded to chroma pixels positions of internal MVTools interpolation. Nevertheless, vectors and motion compensation are quite similar for usual clips, same chroma would be with src_left=0.5 for YUY2 and additionally src_top=0.5 for YV12.[clarification needed]


[edit] Examples

TODO



Back to MVTools2

Personal tools