# MVTools2/MShow

MShow can be used to view the backward/forward motion vectors produced by MAnalyse.

##  Syntax and Parameters

MShow (clip, clip, int "scale", int "sil", int "tol", bool "showsad", int "number", int "thSCD1", int "thSCD2", bool "isse", bool "planar")

clip   =
Super clip from MSuper.

clip   =
Vector clip from MAnalyse.

int  scale = 1
Allows to enlarge the motion vectors, in order for example to gain in accuracy (when pel > 1 and scale = 1, you can't see a variation of less than one pixel).

int  sil = 0
Allows to see a different level of analysis (when searching for motion vectors, a hierarchical analysis is done, and it may be interesting to see what happens at higher levels).

int  tol = 20000
Tolerance threshold. If the distortion induced by the motion vector is over var>tol the vector isn't shown.

Allows to show the mean (scaled to block 8x8) SAD after compensating the picture and quantity (ThSCD1) of bad (ThSCD1) blocks.
Default is false which shows all vectors.

int  number = -1
Allows to mark given block (with this number) as white.

int  thSCD1 = 400
Threshold which decides whether a block has changed between the previous frame and the current one. When a block has changed, it means that motion estimation for it isn't relevant. It occurs for example at scene changes. So it is one of the thresholds used to tweak the scene changes detection engine. Raising it will lower the number of blocks detected as changed. It may be useful for noisy or flickered video. The threshold is compared to the SAD (Sum of Absolute Differences, a value which says how bad the motion estimation was) value. For exactly identical blocks we have SAD=0. But real blocks are always different because of objects complex movement (zoom, rotation, deformation), discrete pixels sampling, and noise. Suppose we have two compared 8x8 blocks with every pixel different by 5. It this case SAD will be 8x8x5 = 320 (block will not detected as changed for thSCD1=400). If you use 4x4 blocks, SAD will be 320/4. If you use 16x16 blocks, SAD will be 320*4. Really this parameter is scaled internally in MVTools, and you must always use reduced to block size 8x8 value. Default is 400.

int  thSCD2 = 130
Threshold which sets how many blocks have to change for the frame to be considered as a scene change. It is ranged from 0 to 255, 0 meaning 0%, 255 meaning 100%. Default is 130 (which means 51%).

bool  isse = true
Flag which allows to enable (if set to True) or disable (if set to False) ISSE, MMX and other CPU optimizations (for debugging).
Default is True. If your processor doesn't support CPU optimizations, it will be disabled anyway (and you won't be able to activate them).

bool  planar = false
Flag to use special planar color format for YUY2 clips both for input and output of function. It uses special trick for storing of frames with planar color data organization (separate Y, U, V planes in memory) in normal interleaved YUY2 frames format as a 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 Interleaved2planar function from RemoveGrain plugin by kassandro, and convert final result by Planar2interleaved function. This special planar YUY2 format is also supported by RemoveGrain plugin by Kassandro, MaskTools2 plugin by Manao and some others. This parameter is ignored for YV12 clips. Note: super clip is always planar. Default is planar=false.

##  Examples

Show foward motion vectors.

```AviSource("blah.avi")
super   = MSuper()
vectors = MAnalyse(super, isb=false)
MShow(super, vectors)
```

Show backward motion vectors.

```super   = MSuper()
vectors = MAnalyse(super, isb=true)
MShow(super, vectors)
```

Back to MVTools2