Skip to content
Compare
Choose a tag to compare

Hotfix release

Needed for version checking with external projects when pkg-config cannot be used.

Luckily, we already have version.h for this, so just copy it to the avs subdir on install. This also required copying arch.h as well.

As this is virtually 1:1 identical with 3.7.1 apart from the Histogram Audiolevels fix and some docs changes, there's really no need to run off new builds for Windows or Mac. Distribution managers for Linux, et al., will want to use 3.7.1a.

b61202a
Compare
Choose a tag to compare

Additions:

  • Linux: Show more information when dlopen fails
  • 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)
  • Interface: introduce AVISYNTHPLUS_INTERFACE_BUGFIX_VERSION.
  • 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.
  • Recognize \' and \b and \v in escaped (e"somethg") string literals (see http://avisynth.nl/index.php/The_full_AviSynth_grammar#Literals)
  • Expr: allow TAB, CR and LF characters as whitespace in expression strings
  • Clip types for propSet, propGet, add propSetClip, propGetClip
  • Clip content support for propGetAsArray, propSetArray and propGetAll
  • RGBAdjust: analyse=true 32 bit float support

Build environment, Interface:

  • Added stubs for compiling on RISC-V and SPARC
  • Visual Studio 2022: Add /fp:contract to compilation parameters (addition to /fp:precise)
  • Check Visual Studio 2022, add build examples to documentation. Recognized: it has still an option to use v141_xp toolkit
  • CMake build environment: older GCC can be used which knows only -std=c++-1z instead of c++17
  • AviSynth programming interface V8.1 / V9:
    Add 'MakePropertyWritable' to the IScriptEnvironment (CPP interface), avs_make_property_writable (C interface)
    Add 'VideoFrame::IsPropertyWritable' (CPP interface), avs_is_property_writable (C interface)
  • Info on Windows XP compatibility (must revert to an older Visual C++ Redistributable)
  • CMake/source: Intel C++ Compiler 2021 and Intel C++ Compiler 19.2 support
  • experimental! Fix CUDA plugin support on specific builds, add CMake support for the option.
  • Fixes for building the core as a static library

Fixes:

  • Fix: "Text" filter would crash when y coord is odd and format has vertical subsampling
  • Fix: MinMax runtime filter family: check plane existance (e.g. error when requesting RPlaneMinMaxDifference on YV12)
  • Fix: prevent x64 debug AviSynth builds from crashing in VirtualDub2 (opened through CAVIStreamSynth)
  • Expr: fix conversion factor (+correct chroma scaling) when integer-to-integer full-scale automatic range scaling was required
  • ColorYUV: fix 32 bit float output
  • ColorYUV: fix display when showyuv=true and bits=32
  • ConvertBits: "dither" parameter: type changed to integer. Why was it float? :)
  • ConvertBits: Fix: fulls=true -> fulld=true 16->8 bit missing rounding
  • Fix: Planar RGB 32 bit -> YUV matrix="PC.709"/"PC.601"/"PC.2020" resulted in greyscale image
  • SelectRangeEvery: experimental fix on getting audio part (TomArrow; #232)
  • 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

Compare
Choose a tag to compare
  • Haiku support
  • PowerPC support
  • Support for building the core as a static library (mcmtroffaes)
  • Fixes for MinGW-w64 compilation
  • Shibatch, TimeStretch, and ImageSeq GCC build support
  • Shibatch, TimeStretch, and ImageSeq non-Windows support
  • Fix: AddBorders did not pass frame properties
  • Fix: propSet, propDelete and propClearAll not to ruin visibility of variables
    (property read functions are still kept being runtime only)
  • AviSource: fix test5 regression which refused handling old formats like YV24
  • Resizers: throw error on too small dimensions vs. taps
  • Add ShowCRC32 debug filter. Parameters are the same as in ShowFrameNumber
  • Overlay: allow 4:1:1 input
  • Overlay: fix crash when mask is YUV411 and greymask=false
  • Overlay: may work quicker, most input/overlay/mask/output clip format conversions moved to filter constructor
  • RemoveAlphaPlane: do nothing on YUY2 instead of throwing an error message
  • AviSource: support non-printing characters in fourCC code: allow [number] style, e.g. G3[0][16]
  • AviSource: add Y410 (YUVA444P10) format support. Allow 'Y410' pixel_type hints.
  • AviSource: decode b64a, b48r, v210, P210, P010, P016, P216, v410, Y416, r210, R10k, v308, v408, Y410 fourCCs natively.
  • Fix: Average...: check for valid colorspace (e.g. no AverageB for a YUV clip)
  • Add: AverageA
  • New: Average...: allow YUY2, RGB24/32/48/64 inputs
  • Fix: Overlay: Actual frame of a mask clip would be freed up too early in MT environment
  • Fix: ConvertBits to ignore dither parameter instead of throwing error, in a 8 to 8 bit case
  • Fix: GeneralConvolution missing internal rounding on 8-16 bit formats
  • support for Win10 long file path option
  • project: Improve inclusion of the ghc filesystem helper library
  • project: Add a GitHub action workflow
  • posix: fix crash when autoloading imports
  • internally refactored ConvertAudio
  • ConvertBits(8): fix dither=1 (floyd) for RGB48/RGB64
  • Fix: Blur right side garbage: 16 bit+AVX2+non mod32 width
  • Fix: check fn signature with implicite "last" first (3.6 regression)
  • Fix: function parameters provided as arrays (e.g. GrunT callback of WriteFileIf)
  • Fix: ConvertBits (YUV): proper rounding when bit depth is reduced and origin is 10-16 bits
    (added rounder before bit-shift)
  • New: Histogram("color2") to support 10+ bits.
    Allow bits=x (x=8,9,10,11,12) parameter for this kind of histogram as well.

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.0_20210111_vcredist.exe

Compare
Choose a tag to compare
  • Fix: proper handling of autoload directories precedence:
    PluginDir+ in Software/Avisynth in HKEY_CURRENT_USER (highest priority)
    PluginDir+ in Software/Avisynth in HKEY_LOCAL_MACHINE
    PluginDir2_5 in Software/Avisynth in HKEY_CURRENT_USER
    PluginDir2_5 in Software/Avisynth in HKEY_LOCAL_MACHINE (lowest priority)
    Plugin (dll file name) found in a lower priority folder will not load if a similarly named plugin
    already existed earlier.
  • fix: GeneralConvolution: incorrect parse of negative integer coefficient (added +1)
    Regression since r2772.
  • Fix: GeneralConvolution: possible crash when chroma=true for 420 and 422 formats
  • Fix: ScriptClip + Runtime function object (which are new in 3.6) under heavy multithreading
  • New: Histogram("levels") to allow greyscale
  • Fix 3.6 regressions
    • when explicit "return last" was needed when followed by legacy function definition.
    • Windows XP is supported again (thread local storage workaround)
    • Stabilize CPP 2.5 plugins
    • allow forced named arrays usage again from plugins (MP_PipeLine)
  • Frame property related constants to match existing enum style in avisynth.h.
    Plus they are not colliding now with VapourSynth's definitions.

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.
*_arm64test = Test build for Windows 10 on ARM64 processors.

If you're unsure of which to download, pick AviSynthPlus_3.6.1_20200619_vcredist.exe

Compare
Choose a tag to compare
  • Added predefined macros for ARM processors. Tested on Raspberry Pi 4B.
  • Added support for disabling the Intel SIMD intrinsics. Gets automatically disabled on non-x86 targets.
  • Added submodule to allow macOS 10.13 and 10.14 to build AviSynth+ with the native Clang compiler
  • Fixed some warnings on GCC (wangqr)
  • Implemented GetNumPhysicalCPUs on Linux and macOS (wangqr)
  • New function:
  SetMaxCPU(string feature)

  string "feature"

  "" or "none" for zero SIMD support, no processor flags are reported
  "mmx", "sse", "sse2", "sse3", "ssse3", "sse4" or "sse4.1", "sse4.2", "avx, "avx2"

  parameter is case insensitive.
  Note: "avx2" triggers FMA3 flag as well.

  Processor options w/o any modifier will limit the CPU flag report to at most the processor level.
  When "feature" is ended by '+', relevant processor feature flag will be switched on
  When "feature" is ended by '-', relevant processor feature flag will be removed
  Multiple options can be put in a comma separated list. They will evaluated in that order.

  Examples:
      SetMaxCPU("SSE2") reports at most SSE2 processor (even if AVX2 is available)
      SetMaxCPU("avx,sse4.1-") limits to avx2 but explicitely removes reporting sse4.1 support
      SetMaxCPU("C,avx2+") limits to plain C, then switches on AVX2-only support
  • Script array for NEW_AVSVALUE define are working again. (default in Linux build - experimental)
  • Fix: Mix/Max Runtime function 32bit float chroma: return -0.5..0.5 range (was: 0..1 range)
  • AviSynth+ enhancements by Nekopanda (Neo fork)
  • Allow multiple prefetchers (MT) (mentioned earlier)
  • Multithreading and deadlock fixes for ScriptClip
    (originally I intended to pull only Neo changes which were fixing an old AVS+ bug,
    namely ScriptClip and multithreading. But I was not able to do that without pulling
    nearly everything from Neo)
  • Caching enhancements.
    SetCacheMode(0) or SetCacheMode(CACHE_FAST_START) start up time and size balanced mode
    SetCacheMode(1) or SetCacheMode(CACHE_OPTIMAL_SIZE) slow start up but optimal speed and cache size
    Latter can do wonders especially at really low memory environment
  • ScriptClip and variable stability in multithreading.
  • UseVar, special filter, opens a clean variable environment in which only the
    variables in the parameter list can be seen.
  • "escaped" string constants: with e prefix right before the quotation mask
    n"Hello \n" will store actual LF (10) control character into the string
    \n \r \t \0 \a \f \ and " are converted
  • Introduce function objects into scripts
    Functions can appear as standard Avisynth variables and parameters (AVSValue type='n')
    https://github.com/nekopanda/AviSynthPlus/wiki/Language-New-Features
    Even with variable capture [] (like in GRuntT args)
  • Filter graph. Switch it on by putting SetGraphAnalysis(true) at the beginning of the script.
    Dump to text file with DumpFilterGraph. E.g. DumpFilterGraph("graph.txt", mode=2)
  • Frame properties (still from Neo!)
    (experimental, we have planned it in Avs+, probably we'll try to follow the VapourSynth methods(?))
  • Fix: Multithreading enhancements and fixes (Nekopanda, from Neo fork)
  • Fix old ScriptClip (runtime filters) issue
    In this example "current_frame" variable was not seen by YDifferenceFromPrevious scripted within SubTitle
    resulting in "ERROR: Plane Difference: This filter can only be used within run-time filters" message
    • Now this script finally works:
  SetLogParams("log.txt", LOG_DEBUG)
  ColorBars(width=640, height=480, pixel_type="yv12")
  ScriptClip(last, "Subtitle(String(YDifferenceFromPrevious))")
  Prefetch(4)
  • Fix deadlock of ScriptClip on MT
  • MT improvement
    • Allow multiple Prefetchers

    • Add argument to Prefetch to change # of prefetch frames without changing # of threads
      ex. Prefetch (clip c, int threads, int "frames")

    • In the original Plus, you could use only one Prefetch, but you can use any number of CUDA versions.
      Also, an argument has been added to specify the number of frames to prefetch.
      Prefetch (1,4) # Make 1 thread stand and prefetch 4 frames
      By doing so, flexible parallelization configuration is possible, such as pipeline parallelization.

      threads
      Number of threads. If it is 0, it passes without doing anything.

      frames
      Number of frames to prefetch.
      Again, if it is 0, it passes without doing anything.

  • Fix: BuildPixelType: chroma subsampling of sample clip was ignored.
  • POSIX: better behaviour under non-Windows because of having multiple sized fixed fonts, not only a single size=20 one.
    e.g. MessageClip(), Info(), Version(), ColorYUV "show", internal ApplyMessage
  • Text filter:
    • font types with
    • "Terminus" fixed fonts added (12-14-16-18-20-22-24-28-32, regular + bold)
    • "Info_h" good old 10x20 fixed font kept under this name
    • much more international unicode characters (1354), use utf8=true under Windows
    • use fontname parameter (default "Terminus", other choice is "info_h")
    • use font_filename parameter (accepts BDF fonts at the moment - import is probably not too smart but worked for Terminus)
    • use size parameter (12 to 32, if no size is available, a smaller one is chosen but at least the smallest one)
    • new parameter: bold (default false)
  • Info() filter: when parameter "size" < 0, font is automatically enlarged over 640x480
    (POSIX limit: minimum size is 12, maximum size is 32 - limited by available fixed fonts)")
  • SIL OPEN FONT LICENSE added because of usage of Terminus fonts)
  • able to build w/o GDI and font rendering engine under Windows, so that text-overlay filters
    work like in POSIX version of AviSynth+ (mainly for my development test)
    Use with NO_WIN_GDI define.
  • Fix: ReplaceStr when the pattern string to be replaced is empty
  • New:
    Exist() to have bool utf8 parameter
    This is another function to have utf8 option:
    Usage: b = Exist("Здравствуй.mkv",utf8=true). Avs file is saved as utf8 w/o BOM
  • Fix: broken Exist for directories (regression appeared in 3.5.0)
  • Fix: ColorYUV: really disable variable search when parameter "conditional" is false
  • Development:
    ScriptEnvironment::VSprintf: parameter (void *) is changed back to va_list.
    May affect C interface (avs_vsprintf) and CPP interface (ScriptEnvironment::VSprintf)
  • Enhanced: Planar RGB to YUV 444 10-14 bits: more precision (32 bit float internally)
  • Enhanced: Planar RGB to YUV 444 10-16 bits: AVX2 (speed improvement)
Compare
Choose a tag to compare
  • More compiler coverage on POSIX
    • Native Clang on FreeBSD 12.1
    • Native AppleClang on Catalina
    • general code correctness fixes (-fpermissive is no longer required)
  • AddAutoloadDir now works on macOS and BSD
    • FreeBSD requires mounting procfs first in order for autoload to function
  • Automatic plugin autoloading now enabled on POSIX
  • ConvertStacked now is built and installed on POSIX by default
  • SONAME and SOVERSION defined for POSIX libavisynth.so
  • Fix: BuildPixelType: chroma subsampling of sample clip was ignored.
  • POSIX: better behaviour under non-Windows because of having multiple sized fixed fonts, not only a single size=20 one.
    e.g. MessageClip(), Info(), Version(), ColorYUV "show", internal ApplyMessage
  • Text filter:
    • font types with
      • "Terminus" fixed fonts added (12-14-16-18-20-22-24-28-32, regular + bold)
      • "Info_h" good old 10x20 fixed font kept under this name
    • much more international unicode characters (1354), use utf8=true under Windows
    • use fontname parameter (default "Terminus", other choice is "info_h")
    • use font_filename parameter (accepts BDF fonts at the moment - import is probably not too smart but worked for Terminus)
    • use size parameter (12 to 32, if no size is available, a smaller one is chosen but at least the smallest one)
    • new parameter: bold (default false)
  • Info() filter: when parameter "size" < 0, font is automatically enlarged over 640x480
    (POSIX limit: minimum size is 12, maximum size is 32 - limited by available fixed fonts)")
  • SIL OPEN FONT LICENSE added because of usage of Terminus fonts)
  • able to build w/o GDI and font rendering engine under Windows, so that text-overlay filters
    work like in POSIX version of AviSynth+ (mainly for my development test)
    Use with NO_WIN_GDI define.
  • Fix: ReplaceStr when the pattern string to be replaced is empty
  • New:
    Exist() to have bool utf8 parameter
    This is another function to have utf8 option:
    Usage: b = Exist("Здравствуй.mkv",utf8=true). Avs file is saved as utf8 w/o BOM
  • Fix: broken Exist for directories (regression appeared in 3.5.0)
  • Fix: ColorYUV: really disable variable search when parameter "conditional" is false
  • Development:
    ScriptEnvironment::VSprintf: parameter (void *) is changed back to va_list.
    May affect C interface (avs_vsprintf) and CPP interface (ScriptEnvironment::VSprintf)
  • Enhanced: Planar RGB to YUV 444 10-14 bits: more precision (32 bit float internally)
  • Enhanced: Planar RGB to YUV 444 10-16 bits: AVX2 (speed improvement)
Compare
Choose a tag to compare
  • New:

    • New: Native Linux, macOS, and BSD support.
    • New function:
      bool IsVersionOrGreater(int majorVersion, int minorVersion [,int bugfixVersion]) function
      Returns true if the current version is equal or greater than the required one in the parameters.
      The function is checking the current version against the given parameters (similar to a Windows API function)
      e.g. IsVersionOrGreater(3, 4) or IsVersionOrGreater(3, 5, 8)
    • New: "Expr" helpers:
      • Constants "yrange_min", "yrange_half", "yrange_max"
        Unlike the luma/chroma plane adaptive "range_min", "range_half", "range_max" these constants always report the luma (Y) values
      • new parameter: bool clamp_float_UV (default false)
        this parameter affects clamping of chroma planes: chroma is clamped between 0..1.0 instead of -0.5..0.5s
      • "clamp_float" is not ignored (and set to true) when parameter "scale_inputs" auto-scales 32 bit float type pixels
      • New "yscalef" and "yscaleb" keywords similar to "scalef" and "scaleb" but scaling is forced to use rules for Y (non-UV) planes
      • new allowed value "floatUV" for scale_inputs.
        In short: chroma pre-shift by 0.5 for 32 bit float pixels
        Affects the chroma plane expressions of 32 bit float formats.
        Shifts the input up by 0.5 before processing it in the expression, thus values from -0.5..0.5 (zero centered) range are converted to the 0..1 (0.5 centered) one.
        Since the expression result internally has 0..1.0 range, this then is shifted back to the original -0.5..0.5 range. (since 2.2.20)
        Note: predefined constants such as cmin, cmax, range_min, range_max and range_half will be shifted as well, e.g. the expression will see range_half = 0.5
      • These modifications are similar to Masktools2 2.2.20+
    • New: AddBorders, LetterBox: new color_yuv parameter like in BlankClip
  • Fixes:

    • Fix: ConvertBits 32->8 for extremely out of range float pixel values.
      When pixel value in a 32 bit float format video was way out of range and greater than 128 (e.g. instead of 0 to 1.0 for Y plane) then the ConvertBits(8) had artifacts.
    • Fix potential crash on exit or cache shrink (linux/gcc only?)
    • Layer: support RGB24 and RGB48 (internally processed as Planar RGB - lossless pre and post conversion)
    • Fix: RGBP to 444 8-14bit right side artifacts at specific widths
    • Fix: "scalef" and "scaleb" for 32 bit input, when scale_inputs="floatf" produced wrong result
    • Fix: missing rounder in V channel calculation of PlanarRGB->YUV 8-14bits SSE2 code
    • Overlay: show error when Overlay is fed with clips with different bit depths
    • Fix: TemporalSoften possible access violation after SeparateFields (in general: after filters that only change frame pitch)
    • Fix: Shibatch.DLL Access Violation crash when exit when target rate is the same as vi.audio_samples_per_second or audio_samples_per_second is 0
    • Build system: Cmake: use platform toolset "ClangCL" for using built-in Clang support of Visual Studio.
      Since VS2019 v16.4 there is LLVM 9.0 support.
      Use: Tools|Get Tools and Features|Add Individual Components|Compilers, build tools, and runtimes
      [X] C++ Clang compiler for Windows
      [X] C++ Clang-cl for v142 build tools (x64/x86)
      (for LLVM Clang installed separately, please use llvm or LLVM - no change in its usage)
Compare
Choose a tag to compare
  • Merges in the MT branch, the current state of pinterf/MT, and packaging fixes
  • Bumps version to 3.4
Compare
Choose a tag to compare
Compare
Choose a tag to compare
Merge branch 'innosetup-installer' of https://github.com/line0/avisyn…

…th into wip

Conflicts:
	distrib/WinInstaller/WizardImageBig.bmp
	distrib/WinInstaller/avisynth+.iss