TMM2
From Avisynth wiki
(Difference between revisions)
(TMM2: add documentation) |
(v0.1.3) |
||
Line 2: | Line 2: | ||
{{Filter3 | {{Filter3 | ||
| {{Author/Chikuzen}} | | {{Author/Chikuzen}} | ||
− | | v0.1. | + | | v0.1.3 |
− | |[https://github.com/ | + | |[https://github.com/Asd-g/TMM2/releases TMM2-0.1.3.7z] |
| Masking | | Masking | ||
| [http://www.gnu.org/licenses/gpl-2.0.txt GPLv2] | | [http://www.gnu.org/licenses/gpl-2.0.txt GPLv2] | ||
Line 19: | Line 19: | ||
* [x64]: [[AviSynth+]] | * [x64]: [[AviSynth+]] | ||
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]] | * Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]] | ||
− | * Microsoft Visual C++ 2015 Redistributable | + | * [https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads Microsoft Visual C++ 2015 Redistributable Package (x86 / x64)] |
+ | :<span style="color:red">***</span> <tt>vcredist_x86.exe</tt> is required for <tt>TMM2-x86</tt> | ||
+ | :<span style="color:red">***</span> <tt>vcredist_x64.exe</tt> is required for <tt>TMM2-x64</tt> | ||
<br> | <br> | ||
Line 101: | Line 103: | ||
== Notes == | == Notes == | ||
− | * TMM2_avx2.dll is compiled with /arch:AVX2. | + | * TMM2_avx2.dll is compiled with /arch:AVX2. (only applicable to v0.1.1) |
− | * On AviSynth 2.6, AVX2 is always disabled even if you use TMM2_avx2.dll. | + | * On AviSynth 2.6, AVX2 is always disabled even if you use TMM2_avx2.dll. (only applicable to v0.1.1) |
− | * On AviSynth+, TMM2 is set as MT_NICE_FILTER automatically. You don't have to set <code>SetFilterMTMode()</code> yourself for this filter. | + | * On AviSynth+, TMM2 is set as [[MT_NICE_FILTER]] automatically. You don't have to set <code>SetFilterMTMode()</code> yourself for this filter. |
− | * This filter requires appropriate memory alignments. Thus, if you want to crop the left side of your source clip before this filter, you have to set <code>[[Crop|crop(align=true)]]</code>. | + | * This filter requires appropriate memory alignments. Thus, if you want to crop the left side of your source clip before this filter, you have to set <code>[[Crop|crop(align=true)]]</code> (default behaviour in AviSynth+). |
<br> | <br> | ||
== Changelog == | == Changelog == | ||
Version Date Changes<br> | Version Date Changes<br> | ||
+ | v0.1.3 2020/05/13 - Changes by asd-g | ||
+ | - Update to AviSynth+'s v8 interface | ||
v0.1.1 2016/07/05 - Update avisynth.h to Avisynth+MT r2005 | v0.1.1 2016/07/05 - Update avisynth.h to Avisynth+MT r2005 | ||
- CreateMM: allocate temporal buffer at constructor unless the enviroment is not avs+MT. | - CreateMM: allocate temporal buffer at constructor unless the enviroment is not avs+MT. | ||
Line 116: | Line 120: | ||
== External Links == | == External Links == | ||
*[https://github.com/chikuzen/TMM2 GitHub] - Source code repository. | *[https://github.com/chikuzen/TMM2 GitHub] - Source code repository. | ||
+ | *[https://github.com/Asd-g/TMM2 GitHub] - Source code repository (update). | ||
<br> | <br> | ||
<br> | <br> | ||
----------------------------------------------- | ----------------------------------------------- | ||
'''Back to [[External_filters#Averaging.2FLayering.2FMasking|External Filters]] ←''' | '''Back to [[External_filters#Averaging.2FLayering.2FMasking|External Filters]] ←''' |
Revision as of 16:41, 14 May 2020
Abstract | |
---|---|
Author | Chikuzen |
Version | v0.1.3 |
Download | TMM2-0.1.3.7z |
Category | Masking |
License | GPLv2 |
Discussion |
Contents |
Description
TMM2 is a rewrite of TMM for AviSynth2.6/AviSynth+ which written by Kevin Stone (aka tritical).
TMM2 builds a motion-mask for TDeint, which TDeint uses via its 'emask'
parameter. TMM2 can use fixed or per-pixel adaptive motion thresholds, as well as any length static period greater than or equal to six fields. It checks backwards, across, and forwards when looking for motion.
Requirements
- [x86]: AviSynth+ or AviSynth 2.6
- [x64]: AviSynth+
- Supported color formats: Y8, YV12, YV16, YV24
- Microsoft Visual C++ 2015 Redistributable Package (x86 / x64)
- *** vcredist_x86.exe is required for TMM2-x86
- *** vcredist_x64.exe is required for TMM2-x64
Syntax and Parameters
- TMM2 (clip, int "mode", int "order", int "field", int "length", int "mtype", int "ttype", int "mtqL", int "mthL", int "mtqC", int "mthC", int "nt", int "minthresh", int "maxthresh", int "cstr", int "opt")
- clip =
- Input clip.
- clip =
- int mode = 0
- Same as the 'mode' parameter of TDeint. This should be set equal to the value of 'mode' given to TDeint. If using mode=2 in TDeint use mode=1 in TMM2.
- 0 - same rate output
- 1 - double rate output
- Same as the 'mode' parameter of TDeint. This should be set equal to the value of 'mode' given to TDeint. If using mode=2 in TDeint use mode=1 in TMM2.
- int mode = 0
- int order = -1
- Same as the 'order' parameter of TDeint. This should be set equal to the value of 'order' given to TDeint.
- -1 - use order from AviSynth
- 0 - bff
- 1 - tff
- Same as the 'order' parameter of TDeint. This should be set equal to the value of 'order' given to TDeint.
- int order = -1
- int field = -1
- Same as the 'field' parameter of TDeint. This should be set equal to the value of 'field' given to TDeint. If using mode=1 (double rate output) then this setting does nothing.
- int field = -1
- -1 - set field equal to order
- 0 - keep bottom field
- 1 - keep top field
- int length = 10
- Sets the number of fields required for declaring pixels as stationary. length=6 means six fields (3 top/3 bottom), length=8 means 8 fields (4 top/4 bottom), etc...
- This can be any value greater than or equal to 6 (can be even or odd). A larger value for length will prevent more motion-adaptive related artifacts, but will result in fewer pixels being weaved.
- int length = 10
- int mtype = 1
- Sets whether or not both vertical neighboring lines in the current field of the line in the opposite parity field attempting to be weaved have to agree on both stationarity and direction. Possible values:
- int mtype = 1
- 0 - no
- 1 - no for across, but yes for backwards/forwards
- 2 - yes
- 0 will result in the most pixels being weaved, while 2 will have the least artifacts.
- int ttype = 1
- Sets how to determine the per-pixel adaptive (quarter pel/half pel) motion thresholds. Possible values:
- int ttype = 1
- 0 - 4 neighbors, diff to center pixel, compensated
- 1 - 8 neighbors, diff to center pixel, compensated
- 2 - 4 neighbors, diff to center pixel, uncompensated
- 3 - 8 neighbors, diff to center pixel, uncompensated
- 4 - 4 neighbors, range (max-min) of neighborhood
- 5 - 8 neighbors, range (max-min) of neighborhood
- Compensated means adjusted for distance differences due to field vs frames and chroma downsampling. The compensated versions will always result in thresholds <= to the uncompensated versions.
- int mtqL = -1
- int mthL = -1
- int mtqC = -1
- int mthC = -1
- These parameters allow the specification of hard thresholds instead of using per-pixel adaptive motion thresholds. mtqL sets the quarter pel threshold for luma, mthL sets the half pel threshold for luma, mtqC/mthC are the same but for chroma. If these parameters are set to -1 then an adaptive threshold is used. Otherwise, if they are between 0 and 255 (inclusive) then the value of the parameter is used as the threshold for every pixel.
- int mtqL = -1
- int nt = 2
- int minthresh = 4
- int maxthresh = 75
- nt sets the noise threshold, which will be added to the value of each per-pixel threshold when determining if a pixel is stationary or not. After the addition of 'nt', any threshold less than minthresh will be increased to minthresh and any threshold greater than maxthresh will be decreased to maxthresh.
- int nt = 2
- int cstr = 4
- Sets the number of required neighbor pixels (3x3 neighborhood) in the quarter pel mask, of a pixel marked as moving in the quarter pel mask, but stationary in the half pel mask, marked as stationary for the pixel to be marked as stationary in the combined mask.
- int cstr = 4
- int opt = -1
- Controls which cpu optimizations are used for create motion masks.
- 0 - Use C++ routine.
- 1 - Use SSE2 routine if possible. When SSE2 can't be used, fallback to 0.
- others - Use AVX2 routine if possible. When AVX2 can't be used, fallback to 1.
- Controls which cpu optimizations are used for create motion masks.
- int opt = -1
Examples
MPEG2Source("source.d2v") // assume tff source that we want to bob TDeint(order=1, mode=1, emask=TMM2(order=1, mode=1))
MPEG2Source("source.d2v") // assume bff source, keep top field, same rate TDeint(order=0, field=1 ,emask=TMM2(order=0, field=1)
Notes
- TMM2_avx2.dll is compiled with /arch:AVX2. (only applicable to v0.1.1)
- On AviSynth 2.6, AVX2 is always disabled even if you use TMM2_avx2.dll. (only applicable to v0.1.1)
- On AviSynth+, TMM2 is set as MT_NICE_FILTER automatically. You don't have to set
SetFilterMTMode()
yourself for this filter. - This filter requires appropriate memory alignments. Thus, if you want to crop the left side of your source clip before this filter, you have to set
crop(align=true)
(default behaviour in AviSynth+).
Changelog
Version Date Changes
v0.1.3 2020/05/13 - Changes by asd-g - Update to AviSynth+'s v8 interface v0.1.1 2016/07/05 - Update avisynth.h to Avisynth+MT r2005 - CreateMM: allocate temporal buffer at constructor unless the enviroment is not avs+MT. v0.1 2016/05/25 - Use buffer pool on avs+ MT. - Disable AVX2 always on Avisynth2.6. v0.0 2016/05/20 - Initial release
External Links
Back to External Filters ←