github pinterf/masktools 2.2.21
Masktools2 2.2.21
on GitHub

**v2.2.21 (20200410)

  • fix mt_hysteresis for 10-32 bits

v2.2.20 (20200303)

  • new “yscalef” and “yscaleb” keywords similar to “scalef” and “scaleb” but scaling is forced to use rules for Y (non-UV) planes
  • mt_lutspa: add parameters “scale_inputs”, “clamp_float” and “clamp_float_UV”
  • new predefined constants in expressions: yrange_min, yrange_half, yrange_max
    Unlike range_min, range_half, range_max the y-prefixed versions do not depend on whether the currently
    processed plane is luma(Y) or chroma(U/V). They are always returning the values of Y plane.
  • new parameter to lut functions: Boolean “clamp_float_UV”: default false, as an addition to clamp_float (since v2.2.20).
  • New: Parameter “scale_inputs” can now be set to “floatUV” (chroma pre-shift by 0.5 for 32 bit float pixels)
  • Fix: mt_motion mask contained out-of range pixels for 10-14 bit inputs
  • Fix: mt_edge convolution mode incorrect result on 10-32 bits when normalizer weight is not power of 2
    e.g. mode = “1 2 1 0 0 0 -1 -2 -1 15.0” (normalizer: 10th parameter or maximum of (sum_positive/sum_negative))
    Note: when processing chroma (u=3,v=3) on 32 bit float clip will result 0..1.0 ranged masks in chroma planes as well.
  • Source:
    • add LLVM-clangCl to VC project configuration (built-in clang support in VS2019)
    • fix LLVM build for VS2019
    • silence many warnings
    • project configurations: use current SDK version 10.0.18362.0

v2.2.19 (20190710 - not released)

  • Fix: mt_infix to recognize scaleb and scalef
  • Fix: mt_infix to recognize ymin, ymax, abs, atan, etc… tokens beginning with ‘a’ and ‘y’ were not converted
  • Move project to VS2019 v142 toolset, xp builds still at v141_xp
  • update current Avisynth+ headers
  • update source to use boost 1.70 lib v142 for non-xp builds

v2.2.18 (20180905)

  • mt_merge: fix right side artifacts for non-mod16 width, AVX2 and luma=false (regression in 2.2.16)
  • mt_adddiff: fix 32 bit chroma (still used 0.5 centered chroma instead of 0.0)

v2.2.17 (20180710)

  • mt_convolution: check plane dimensions to exceed convolution horizontal/vertical size
  • lut functions: plane order to RGBA from BGRA like in Expr.
    expr parameters y-u-v-a naming matches now to r-g-b-a
  • for luts: use_expr=3: always send expression(s) to Expr

v2.2.16 (20180702)

  • mt_merge new parameter hint for chroma placement when luma=true and 4:2:0/4:2:2
    String ‘cplace’: possible values “mpeg1” or “mpeg2” (default)
    Parameter is effective only for 420 and 422 formats, otherwise ignored.
    Default “mpeg1” is using fast 2x2 pixel (1x2 for 4:2:2) averaging when converting a 4:4:4 mask to a 4:2:0 or 4:2:2 format (old behaviour)
    420 schema:
    | 0.25 | 0.25 |
    | 0.25 | 0.25 |

“mpeg2” is using 2x3 (1x3 for 4:2:2) pixel weighted averaging when converting a 4:4:4 mask to a 4:2:0 or 4:2:2 format
420 schema:
0.125 | 0.25 | 0.125 |
0.125 | 0.25 | 0.125 |

  • 32 bit float U and V chroma channels are now zero based (+/-0.5 for full scale). Was: 0..1, same as luma
    Since internal format changed, use Avisynth+ r2724 or newer for this masktools2 2.2.16.
    Affected predefined expression constants when plane is U or V:
    cmin and cmax (limited range (16-128)/255 and (240-128)/255 instead of 16255.0 and 240255.0
    range_max: 0.5 instead of 1.0
    new: introduce range_min: -0.5 for float U/V chroma, 0 otherwise
    range_half (0.0 instead of 0.5)
    (range_size remained 1.0)
  • New expression syntax for Lut expressions: autoscale any input (x,y,z,a) bit depths to 8-16 bits for internal
    expression use. The primary reason of this feature is the “easy” usage of formerly written 8 bit optimized expressions. Parameters for lut functions: scale_inputs, clamp_float (similar to avs+ r2728) and use_expr
  • New parameter: String “scale_inputs”: “all”,“allf”,“int”,“intf”,“float”,“floatf”,“none”, default “none”. See Readme!
  • New parameter: Boolean “clamp_float”: default false, but treated as always true (and thus ignored) when scale_inputs involves a float autoscale.
  • New parameter: Boolean “use_expr”: default 0, calls fast JIT-compiled “Expr” in Avisynth+ for mt_lut, lutxy, lutxyz, lutxyza
    0: no Expr, use slow internal realtime calc if needed (as before)
    1: call Expr for bits>8 or lutxyza
    2: call Expr, when masktools would do its slow realtime calc (see ‘realtime’ column in the table above)
    Extends and replaces experimental clamp_xxxx keywords.

v2.2.15 (skipped, test versions)

v2.2.14 (20180225)

  • Fix: mt_convolution invalid instruction on processors below SSE4.1

v2.2.13 (20180201)

  • Fix: rare crash in multithreading environment at the very first frames
    (keeping XP compatibility with /Z:threadsafeinit- caused troubles!)
  • mt_edge: AVX2 (1.4-1.9x speed) for 8 and 10-16 bits
  • fix: “chroma” parameter with negative (memset) values were not working properly for 10-14 bits and 32bit float

v2.2.12 (20180107)

  • Fix: mt_merge 10-16 bits: right side artifacts when clip is non-mod 8 (non-AVX2) or mod16 (AVX2) widths

Earlier changes
v2.2.11 (20180105)

  • Fix: mt_merge luma=true: broken output when: 8-16 bits AVX2, 32 bit float: SSE2, AVX
  • move project to VS2017, vs141_xp toolset

v2.2.10 (20170612)

  • Fix: luts internal buffer overflow (crash)
  • Speed: mt_inpand/mt_expand: 10-16 bits SSE4 (10-15x speed)
  • Speed: mt_inflate/mt_deflate 10-16 bits SSE4 (4x speed)

v2.2.9 (20170608)

  • Add “none” and “ignore” to valid values for “chroma” and “alpha” parameters.
  • Report error for invalid “chroma” or “alpha” parameter values instead of exception
3 months ago