View Single Post
Old 20th August 2005, 23:06   #1  |  Link
Manao
Registered User
 
Join Date: Jan 2002
Location: France
Posts: 2,856
MaskTools 2.0a48

Hi,

As I said in the Avisynth 2.6 thread, I'm working on the MaskTools again. The code has been rewritten from scratch, mainly to make it easily portable to the upcoming Avisynth 3.0.

All inline asm has been ported to nasm. Some filters have disappeared. Some behaviors have changed. All named have changed, to allow you to use both MaskTools v1.5.8 and 2.0a.

Refers to the readme.txt to have a quick summary of the filters and what have changed since the 1.5.8.

This thread is here to collect bug reports and feature requests.

Here is the link to the new version : http://manao4.free.fr/masktools-v2.0a48.zip

Changes from alpha 47 to alpha 48 :
Code:
 * added : signed and unsigned binary shifts to LUTs, ceil/floor/trunc float -> int conversions. @ is now equivalent to °
Changes from alpha 46 to alpha 47 :
Code:
 * added : signed and unsigned binary operators to LUTs
Changes from alpha 45 to alpha 46 :
Code:
 * fixed : with mt_lutf, "std" mode wasn't working. Could also affect "std" with mt_luts and mt_lutsx
Changes from alpha 44 to alpha 45 :
Code:
 * fixed : mt_clamp on sse2 platforms with resolution not multiple of 64
 * added : mode parameter to mt_lutspa, to clean up biased/relative mess
Changes from alpha 43 to alpha 44 :
Code:
 * added  : new very flexible mode to mt_luts and mt_lutsx
Changes from alpha 42 to alpha 43 :
Code:
 * fixed : optimized versions of small horizontal resolutions with mt_edge, mt_xxpand and mt_xxflate
 * fixed : avisynth 2.6 support (likely broken since avisynth 2.6 alpha 2 at least)
 * added : hprewitt mode to mt_edge
 * added : "biased" option to mt_lutspa
 * optimized : prewitt and hprewitt mode for mt_edge
Changes from alpha 41 to alpha 42 :
Code:
 * added : specialized modes for mt_binarize
 * added : specialized modes for mt_logic
Changes from alpha 40 to alpha 41 :
Code:
 * (re)optimized : mt_edge with custom kernels and divisors that are a power of two</li>
 * fixed : mt_edge with custom kernels (has always been broken in C, which became obvious once asm was removed)</li>
 * fixed : no more crashes when an input clip isn't YUV planar
Changes from alpha 37 to alpha 40 :
Code:
 * optimized : mt_xxpand vertical/horizontal/both modes are asmized
 * optimized : mt_xxflate are asmized
 * optimized : mt_motion with sse2
 * potential fix : mt_merge with mod8 width
 * potential : 64 bits build included
Changes from alpha 36 to alpha 37 :
Code:
 * fixed : mt_polish wasn't handling "z", "min", "max", "clip" and "round"
 * added : mt_infix, which convert from polish to infix notation
 * changed : built with MSVC 2008
Changes from alpha 35 to alpha 36 :
Code:
 * fixed : "pi" wasn't properly defined for all luts
Changes from alpha 34 to alpha 35 :
Code:
 * added : mt_lutspa
Changes from alpha 32 to alpha 34:
Code:
 * added : support for interleaved2planar hack, enabling 422 support
 * changed : both avisynth 2.5 and 2.6 version are built
Change from alpha 31 to 32
Code:
 * added : mt_lutxyz
 * added : mt_lutsx
 * fixed : small memory leak in mt_luts
Change from alpha 30 to alpha 31
Code:
 * fixed : mt_hysteresis was randomly crashing.
 * fixed : mt_polish is back.
 * added : round, clip, min, max and = for lut.
 * adapted : to msvc8 / yasm.
Change from alpha 29 to alpha 30
Code:
 * fixed : luts was crashing if some pixels didn't have any neighbours in the pixels list.
 * added : mt_freerectangle, mt_freeellipse and mt_freelosange helpers.
Change from alpha 28 to alpha 29
Code:
 * fixed : intern float to integer conversion that were badly rounding negative
 number. That resulted in -1.0 been rounded into 0 (!). Most notably affected was
 mt_convolution. Thanks redfordxx for pointing that out.
Change from alpha 27 to alpha 28
Code:
 * fixed : asm optimizations for mt_inpand/mt_expand/mt_edge ( mostly )
Changed from alpha 26 to alpha 27 :
Code:
 * fixed : mt_binarize asm optimizations that borked with some thresholds
Changed from alpha 25 to alpha 26 :
Code:
 * fixed : avs closing issue
Changed from alpha 24 to alpha 25 :
Code:
 * added : new html documentation.
 * fixed : wrong frame issue.
 * fixed : mt_merge with luma=true.
Changed from alpha 23 to alpha 24 :
Code:
 * fixed : issues with MT.dll ( thanks tsp, Boulder, vanessam and all those who suffered the bug )
 * fixed : check for YV12 colorspace, and report an error if it isn't ( thanks Boulder )
 * speed up : median mode for luts ( once again, thanks to tsp )
Changelog from alpha 22 to alpha 23:
Code:
 * fix & speed up : median mode, thanks to tsp's insightful remarks. Note to self : think
less like a mathematician, and more like a programmer. Simpler, faster & not bugged.
Changelog from alpha 21 to alpha 22 :
Code:
 * added : "med"/"median" mode to luts/lutf
 * changed : luts doesn't necessarily consider the center pixel
 * changed back : forms helpers prepends (0, 0). 
 * changed : forms helpers now have a bool "zero" parameter, defaulted to true
 * added : bool "luma" parameter to mt_merge, which makes it use the luma mask for
all three planes, and which forces chroma modes to "process" ( u=v=3 )
Changelog from alpha 20 to alpha 21
Code:
 * fixed : some filters were requesting wrong frames, thus creating ghosts
Changelog from alpha 19 to alpha 20 :
Code:
 * bugfix release
Changelog from alpha 18 to alpha 19 :
Code:
 * code refactoring
 * fixed : bug with asm and width lower than 64
 * fixed : doesn't prepend (0, 0) pixel to the forms helpers
 * added : "min/max" mode to mt_edge. The edge value is local max - local min ( taken on a
3x3 square ).
 * added : mt_lutf : a frame lut
 * added : mt_luts : a spatial lut
Changelog from alpha 17 to alpha 18 :
Code:
 * added : mt_makediff, mt_adddiff, mt_average and mt_clamp, ported from mg262's
limitedsupport plugin. The asm code is his, though it has been ported to nasm. They
respectively amount to MakeDiff, AddDiff, SimpleAverage and Clamp.
 * added : mt_edge : "prewitt" kernel, taken from mg262's Prewitt filter. Unlike mg262's filter,
there's no multiplier ( it's always 1 ), but mt_edge's thresholds still apply. Results,
and speed, are identical except for the borders, which are now filtered.
 * added : "chroma" parameter, taken from mg262's excellent idea. It's a string that,
if used, overrides U and V values. It can be either "process", "copy", "copy first",
"copy second" or a number. "copy" and "copy second" work alike.
 * added : vmToon-0.74, adapted to masktools 2.0.
 * added : LimitedSharpenFaster, with LimitedSupport functions imported into the masktools.
Changelog from alpha 16 to alpha 17 :
Code:
 * changed : behavior of mt_edge with a custom kernel : the automatic normalization factor
is now the sum of the absolute value of the coefficients, ceiled to the next power of two 
if that power is <= 128 ( else, it isn't ceiled ).
 * added : cartoon mode for mt_edge
 * added : modified mfToon script, for masktools v2. mfToonLite's speed goes from 30 fps
to 70 fps, mfToon from 4.5 to 6.5.
Changelog from alpha 15 to alpha 16 :
Code:
 * fixed : some asm code used in invert, binarize and memset to a particular value.
Bug made the first 8 pixels of the picture to be incorrect. Also, avoid another nasty issue
that arise when cropping ( not my fault this time, though ).
Changelog from alpha 14 to alpha 15 :
Code:
 * fixed : bugs from inflate & deflate ( thx you know you )
 * reversed : inflate and deflate now match their masktools' v1 counterparts' behavior.
( if anybody used the new buggy one, let him speak quickly )
Changelog from alpha 13 to alpha 14 :
Code:
 * fixed : random crashes with some width and asm functions ( thx Didee )
Changelog from alpha 12 to alpha 13
Code:
 * fixed : mt_merge order swapped for mask operation ( no comment... )
Changelog from alpha 11 to alpha 12
Code:
 * fixed : bug with some width ( mod4 ) for the non processing mode ( != 1 or 3 )
 * changed : mt_merge order swapped for mask operation
Changelog from alpha 10 to alpha 11
Code:
 * fixed : mt_convolution's multiple instanciation bug
Changelog from alpha 9 to alpha 10
Code:
 * fixed : offY was always set to offX
 * fixed : offsets quirk
 * fixed : mt_convolution was crashing with floats
 * changed : luts' equal operator is now equivalent to abs(x - y) < 0.000001
 * added : bool saturate(true) parameter to mt_convolution
 * added : float total(1.0) parameter to mt_convolution
Changelog from alpha 8 to alpha 9
Code:
 * fixed : mt_lut, mt_lutxy : even faster loading
 * fixed : mt_convolution : negative coefficients were offseted by 1
 * fixed : mt_convolution : division by zero if the sum of the coefficients was 0.
Changelog from alpha 7 to alpha 8 :
Code:
 * fixed : mt_edge in custom mode wasn't working properly 
 * fixed : mt_edge in custom mode, optimized wasn't working properly either
 * fixed : mt_lutxy was slow to load, it's better now
Changelog from alpha 6 to alpha 7 :
Code:
 * fixed : forgot to add functions to the parser. Thanks Didee for pointing that out
Changelog from alpha 5 to alpha 6
Code:
 * fixed : mt_polish ( sin(x+y) wasn't properly converted, while sin((x+y)) was)
Changelog from alpha 4 to alpha 5
Code:
 * added : helpers for creating string for inpand / expand custom modes :
   - mt_circle
   - mt_square
   - mt_diamond
   - mt_ellipse
   - mt_rectangle
   - mt_losange
 * added : helper for lut : consersion from infix to reverse polish notation : 
   - mt_polish
Changelog from alpha 3 to alpha 4
Code:
 * Added : custom modes for inpand / expand
Changelog from alpha 2 to alpha 3 :
Code:
 * Fixed : mt_invert, mt_binarize, mt_lutxy, which weren't working properly anymore
 * Fixed : offset created by incorrect rounding in mt_convolution
 * Fixed : mmx version of edges filters ( soft thresholding, and roberts )
 * Fixed : mmx version of motion edge ( soft thresholding )
 * added : mt_mappedblur
Changelog from alpha 1 to alpha 2 :
Code:
 * added functions to luts : sin, abs, cos, tan, exp, log, acos, atan, asin
 * added "vertical", "horizontal" and "both" mode to mt_inpand / mt_expand
 * added mt_convolution
 * fixed mt_merge behavior for y, u, v = 2.
 * added y, u, v = 4, for masked merge : copy the second clip channel. It's worth for any two clips input filters.
 * internal changes ( code reorganization )
Edit : url updated

Last edited by Manao; 31st December 2010 at 18:22.
Manao is offline   Reply With Quote