Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
20th August 2005, 23:06 | #1 | Link |
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 ° Code:
* added : signed and unsigned binary operators to LUTs Code:
* fixed : with mt_lutf, "std" mode wasn't working. Could also affect "std" with mt_luts and mt_lutsx 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 Code:
* added : new very flexible mode to mt_luts and mt_lutsx 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 Code:
* added : specialized modes for mt_binarize * added : specialized modes for mt_logic 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 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 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 Code:
* fixed : "pi" wasn't properly defined for all luts Code:
* added : mt_lutspa Code:
* added : support for interleaved2planar hack, enabling 422 support * changed : both avisynth 2.5 and 2.6 version are built Code:
* added : mt_lutxyz * added : mt_lutsx * fixed : small memory leak in mt_luts Code:
* fixed : mt_hysteresis was randomly crashing. * fixed : mt_polish is back. * added : round, clip, min, max and = for lut. * adapted : to msvc8 / yasm. 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. 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. Code:
* fixed : asm optimizations for mt_inpand/mt_expand/mt_edge ( mostly ) Code:
* fixed : mt_binarize asm optimizations that borked with some thresholds Code:
* fixed : avs closing issue Code:
* added : new html documentation. * fixed : wrong frame issue. * fixed : mt_merge with luma=true. 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 ) 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. 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 ) Code:
* fixed : some filters were requesting wrong frames, thus creating ghosts Code:
* bugfix release 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 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. 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. 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 ). 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 ) Code:
* fixed : random crashes with some width and asm functions ( thx Didee ) Code:
* fixed : mt_merge order swapped for mask operation ( no comment... ) Code:
* fixed : bug with some width ( mod4 ) for the non processing mode ( != 1 or 3 ) * changed : mt_merge order swapped for mask operation Code:
* fixed : mt_convolution's multiple instanciation bug 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 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. 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 Code:
* fixed : forgot to add functions to the parser. Thanks Didee for pointing that out Code:
* fixed : mt_polish ( sin(x+y) wasn't properly converted, while sin((x+y)) was) 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 Code:
* Added : custom modes for inpand / expand 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 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 ) Last edited by Manao; 31st December 2010 at 18:22. |
|
|