You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expr: allow auto scaling effect on pixels obtained from relative addressing
New array manipulators: ArrayDel, ArrayAdd, ArrayIns, ArraySet with accepting multi dimensional indexes
ExtractY/U/V/R/G/B/A, PlaneToY: delete _ChromaLocation property. Set _ColorRange property to "full" if source is Alpha plane
Add new AEP (Avisynth Environtment Property) constants to directly query Avisynth interface main and bugfix version and system endianness:
AEP_HOST_SYSTEM_ENDIANNESS, AEP_INTERFACE_VERSION, AEP_INTERFACE_BUGFIX (c++)
AVS_AEP_HOST_SYSTEM_ENDIANNESS, AVS_AEP_INTERFACE_VERSION, AVS_AEP_INTERFACE_BUGFIX (c)
New interface functions env->MakePropertyWritable/VideoFrame::IsPropertyWritable.
Expr: allow 'f32' as internal autoscale target (was: i8, i10, i12, i14, i16 were accepted, only integers)
Expr: LUT mode! 'lut'=1 or 2 for 1D (lut_x) and 2D (lux_xy) support
xPlaneMin/Max/Median/MinMaxDifference to accept old packed formats (RGB24/32/48/64 and YUY2) by autoconverting them to Planar RGB or YV16
New runtime function: PlaneMinMaxStats returns an array and/or set global variables.
Language syntax: accept arrays in the place of "val" script function parameter type regardless of being named or unnamed.
Histogram "Levels": more precise drawing when bit depth is different from histogram's resolution bit depth, plus using full/limited flag.
Expr: no more banker's rounding when converting back float result to integer pixels. Using the usual truncate(x+0.5) rounding method
ColorYUV: More consistent and accurate output across different color spaces, match with ConvertBits fulls-fulld conversions
ColorYUV: set _ColorRange frame property
ColorYUV: when no hint is given by parameter "levels" then it can use _ColorRange (limited/full) frame property for establishing source range for gamma
ColorYUV "showyuv_fullrange"=true: fix shown U and V ranges. E.g. for bits=8: 128 +/- 127 (range 1..255 is shown) instead of 0..255
propShow: display _Matrix, _ColorRange and _ChromaLocation constants with friendly names
Expr: new function "sgn". Returns -1 when x is negative; 0 if zero; 1 when x is positive
Expr: add "neg": negates stack top: a = -a
ConvertBits: Support YUY2 (by autoconverting to and from YV16), support YV411
ConvertBits: "bits" parameter is not compulsory, since bit depth can stay as it was before. Call like ConvertBits(fulld=true)
ConvertBits: much nicer output for low bit depth targets such as dither_bits 1 to 7.
ConvertBits: allow dither down from 8 bit sources by giving a lower dither_bits value
ConvertBits: dither=1 (Floyd-S) to support dither_bits = 1 to 16 (similar to ordered dither)
ConvertBits: dither=0 (ordered) to allow odd dither_bits values. Any dither_bits=1 to 16 (was: 2,4,6,8,..)
ConvertBits: dither=0 (ordered) allow larger than 8 bit difference when dither_bits is less than 8.
ConvertBits: Correct conversion of full-range chroma at 8-16 bits. Like 128+/-112 -> 128+/-127 in 8 bits
ConvertBits: allow dither from 32 bits to 8-16 bits
ConvertBits: allow different fulls fulld when converting between integer bit depths (was: they must have been the same)
ConvertBits: allow 32 bit to 32 bit conversion
frame property support: _ChromaLocation in various filters (e.g. ConvertToYUV422)
Support additional chroma locations "top", "bottom_left", "bottom"
New syntax for "matrix" parameters (e.g. in ConvertToYUV444 old:"rec601" new "170m:l") which separate matrix and full/limited marker.
Old syntax is still valid but does not support all new matrix values.
frame propery support: _Matrix and _ColorRange in various filters. New "matrix" string constants
RGB<->YUV (YUY2) conversions: frame property support _Matrix and _ColorRange (_Primaries and _Transfer is not used at all yet)
ConvertBits: use input frame property _ColorRange to detect full/limited range of input clip
ColorBars, ColorBarsHD, BlankClip: set frame properties _ColorRange and _Matrix
New function: propCopy to copy or merge frame properties from one clip to another.
xxxPlaneMin xxxPlaneMax, xxxPlaneMinMaxDifference for 32 bit float formats:
when threshold is 0 then return real values instead of 0..1 (chroma -0.5..0.5) clamped histogram-based result
Allow propGetXXX property getter functions called as normal functions, outside runtime. Frame number offset can be used.
YUY2 RGB conversions now allow matrix "PC.2020" and "Rec2020"
4:2:2 conversions: allow ChromaInPlacement and ChromaOutPlacement:
Valid values: left/mpeg2, center/mpeg1/jpeg
4:2:0 conversions: new ChromaInPlacement and ChromaOutPlacement values:
top_left, left (alias to mpeg2), center (alias to mpeg1), jpeg (alias to mpeg1) (see http://avisynth.nl/index.php/Convert)
Expr: atan2 (SIMD acceleration as well)
Expr: sin and cos SIMD acceleration (SSE2 and AVX2) port from VapourSynth (Akarin et al.)
Expr: x.framePropName syntax for injecting actual frame property values into expression
Script functions to supports arrays with _nz type suffix. (one or more)
Expr: arbitrary variable names (instead of single letters A..Z), up to 128 different one.
Expr: add 'round', 'floor', 'ceil', 'trunc' operators (nearest integer, round down, round up, round to zero)
Acceleration requires at least SSE4.1 capable processor or else the whole expression is running in C mode.
Fix: Overlay "blend" 10+ bit clips and "opacity"<1 would leave rightmost non-mod8 (10-16 bit format) or non-mod4 (32 bit format) pixels unprocessed.
Fix: Overlay "blend" with exactly 16 bit clips and "opacity"<1 would treat large mask values as zero (when proc>=SSE4.1)
Parser: proper error message when a script array is passed to a non-array named function argument
(e.g. foo(sigma=[1.1,1.1]) to [foo]f parameter signature)
Fix: Expr: wrong constant folding optimization when ternary operator and Store-Only (like M^) operator is used together.
ColorBars: fixed studio RGB values for -I and +Q for rgb pixel types
ColorBarsHD: use BT.709-2 for +I (Pattern 2), not BT.601.
Also fixed Pattern 1 Green.Y to conform to SMPTE RP 219-1:2014 (133, not 134).
Overlay mode "multiply": proper rounding in internal calculations
Fix: ConvertAudio integer 32-to-8 bits C code garbage (regression in 3.7)
Fix: ConvertAudio: float to 32 bit integer conversion max value glitch (regression in 3.7)
Fix: Crash in ColorBars very first frame when followed by ResampleAudio
Fix: frame property access from C interface
Fix: StackVertical and packed RGB formats: get audio and parity from the first and not the last clip
Optimizations:
Quicker ClearProperties and CopyProperties filters (by using MakePropertyWritable instead of MakeWritable).
ConvertBits: AVX2 support
ConvertBits: Special case for: 8->16 bit fulls=true, fulld=true
Expr: consume less bytes on stack. 48x Expr call in sequence caused stack overflow
xxxPlaneMin xxxPlaneMax, xxxPlaneMinMaxDifference for threshold 0 became a bit quicker for 8-16 bit formats (~10% on i7-7700)
Speedup: Overlay mode "multiply": overlay clip is not converted to 4:4:4 internally when 420 or 422 subsampled format
(since only Y is used from that clip)
Speedup: Overlay mode "multiply": SSE4.1 and AVX2 code (was: C only)
SSE4.1: ~1.2-2.5X speed, AVX2: ~2-3.5X speed (i7700 x64 single thread, depending on opacity full/not, mask clip yes/no)
ConvertAudio: Add direct Float from/to 8/16 conversions (C,SSE2,AVX2)
Legend: _vcredist = Includes the MSVC 2019 Redistributable _xp = Can be used on Windows XP -filesonly = Only the .dll files themselves, no installer. Includes both normal and -xp variants.
If you're unsure of which to download, pick AviSynthPlus_3.7.1_20211231_vcredist.exe
This discussion was created from the release AviSynth+ 3.7.1.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Additions:
AEP_HOST_SYSTEM_ENDIANNESS, AEP_INTERFACE_VERSION, AEP_INTERFACE_BUGFIX (c++)
AVS_AEP_HOST_SYSTEM_ENDIANNESS, AVS_AEP_INTERFACE_VERSION, AVS_AEP_INTERFACE_BUGFIX (c)
Old syntax is still valid but does not support all new matrix values.
when threshold is 0 then return real values instead of 0..1 (chroma -0.5..0.5) clamped histogram-based result
Valid values: left/mpeg2, center/mpeg1/jpeg
top_left, left (alias to mpeg2), center (alias to mpeg1), jpeg (alias to mpeg1) (see http://avisynth.nl/index.php/Convert)
Acceleration requires at least SSE4.1 capable processor or else the whole expression is running in C mode.
Build environment, Interface:
Add 'MakePropertyWritable' to the IScriptEnvironment (CPP interface), avs_make_property_writable (C interface)
Add 'VideoFrame::IsPropertyWritable' (CPP interface), avs_is_property_writable (C interface)
Fixes:
(e.g. foo(sigma=[1.1,1.1]) to [foo]f parameter signature)
Also fixed Pattern 1 Green.Y to conform to SMPTE RP 219-1:2014 (133, not 134).
Optimizations:
(since only Y is used from that clip)
SSE4.1: ~1.2-2.5X speed, AVX2: ~2-3.5X speed (i7700 x64 single thread, depending on opacity full/not, mask clip yes/no)
Legend:
_vcredist
= Includes the MSVC 2019 Redistributable_xp
= Can be used on Windows XP-filesonly
= Only the .dll files themselves, no installer. Includes both normal and -xp variants.If you're unsure of which to download, pick AviSynthPlus_3.7.1_20211231_vcredist.exe
This discussion was created from the release AviSynth+ 3.7.1.
Beta Was this translation helpful? Give feedback.
All reactions