
Release Notes
=============

AviSynth 2.58
-------------


Summary of changelist (with respect to v2.57)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-   Added Czech doc translation.
-   Added Polish doc translation by Slim, Krismen & Co.
-   Added Japanese doc translation by niiyan.
-   Added Installer standalone option.
-   Added Blankclip audio channels= and sample_type= arguments.
-   ConvertAudio(cii) available to plugins via env->Invoke().
-   Added font aspect, rotation and alpha to text routines.
-   Added ``/* xxx */`` block comments.
-   Added ``[* [* xxx *] *]`` nestable block comments.
-   SetMemoryMax(0) now just returns Memory Max value.
-   Added planar YV12 color format to Compare().
-   ColorKeyMask: Allow independant tolerance levels for each channel.
-   Added Tweak Hue/Saturation range limiting.
-   Added AudioLevels and Color2 modes to Histogram.
-   Added WAVE_FORMAT_EXTENSIBLE audio output.
-   Added ShowTime() script verb, like ShowSMPTE() but with milliseconds.
-   Added BlackmanResize() and Spline64Resize().
-   Modified DeleteFrame()/DuplicateFrame() to process multiple
    arguments.
-   Added Min()/Max() script functions.

-   Fixed ShowFiveVersions() YV12 chroma position in bottom half.
    Regression.
-   Fixed Histogram() Classic mode restore graph brightness. Regression.
-   Fixed Compare() graph pixel values exceeding YUV limits.
-   Fixed AddBorders() args negative value clamping.
-   Fixed AviSource() decoding to RGB24 logic regression.
-   Added workaround for HuffYUV, Xvid reading past end of input buffer.
-   Fixed current_frame value in nested runtime script invocations
    (Gavino).
-   Fixed Dissolve overlap arg range checking (gzarkadas).
-   Fixed OpenDMLSource() multithreading race problem (QuaddiMM).
-   Fixed unsaved variableName string in ConditionalReader.
-   Fixed Parser FunctionTable::TypeMatch() missing compulsory arguments.
    Dissolve bug (Various).
-   Fixed DirectShowSource() convertfps=false logic regression.
-   Fixed DirectShowSource() Flush task interlock race.
-   Fixed DirectShowSource() QueryId() use CoTaskMemAlloc for returned
    value (Dean Pavlekovic).
-   Fixed DirectShowSource() use GraphBuilder object for media control
    (Avery Lee).
-   Fixed DirectShowSource() remove PulseEvent calls (Avery Lee).
-   Fixed DirectShowSource() QueryAccept() modifying VideoInfo in running
    script (Haali).
-   Fixed Blankclip clip= argument parsing.
-   Fixed trashed GPF report, i.e reading 0x0 at 0x0 exception reporting.
-   Fixed and refactored Overlay RGB<->YUV conversion routines.
-   Fixed ImageReader incompletely inited videoInfo.
-   Fixed Layer RGB32 100% alpha implementation, use level=257 (new
    default).
-   Fixed avisynth_c.h avs_is_parity_known().
-   Fixed C++ ConvertAudio::Saturate_int32() rounding.
-   Fixed WriteFile(), Now remebers absolute path to file.
-   Fixed Info() frame pitch, reports pitch of input frame.
-   Fixed Invert() right edge memory overrun/corruption.
-   Fixed Histogram() Classic mode pixel values exceeding YUV limits.
-   Fixed Histogram() chroma plane initialization to 128.
-   Fixed Conditional reader/writer illegally saving IScriptEnvironment
    pointer.
-   Fixed YV12 Blur()/Sharpen() right edge pixel corruption with non-
    writable input frames.
-   Fixed MMX Blur()/Sharpen() code to full 8 bit precision.
-   Fixed IsAudioFloat()/IsAudioInt() script functions.
-   Fixed Cache memory oversubscription of SetMemoryMax() limit.

-   DirectShowSource() convertfps=true add 0.5ms rounding to expected
    sample time. Improves performance with millisecond based DS spliters.
-   DirectShowSource() FPS detection as last attempt try getting the
    duration of 1st frame.
-   DirectShowSource() convertfps=true rely only on sample start time
    values.
-   Cache: Trap returned NULL PVideoFrames, i.e. Don't crash, Winge about
    it!.
-   Refactor horizontal planar resizer, no width restrictions or 2 byte
    overwrite.
-   Provide a simple and fast text writing primatives, see info.h
-   Make audio cache actually functional.
-   Tweak speed improvements.
-   Subtract speed improvements.
-   Tuneup Overlay() ISSE Convert444ChromaToYV12 and also provide MMX
    version.
-   PokeCache interface implemented.
-   Cache and Memory management enhancements.

-   Initial Memory Max value clamped to 512MB.
-   Default Memory Max value restored to quarter of Free memory. Minimum
    16Mb. As per 2.5.7.
-   Test VFB data buffer for NULL malloc's, if so then Throw!
-   Installer Start menu shortcut names translated.
-   Test for UTF-8 and Unicode BOM prefixes and issue a useful warning.
-   Removed useless current_sample from runtime script environment.
-   Added critical section to CAVIFileSynth class.
-   Enable Installer multi language support.
-   FunctionTable::Lookup() now considers named arguments in making its
    selection.
-   ImageWriter supports negative values as -count for End argument.
-   ChangeFPS() use floor instead of round in source frame number
    calculation.
-   Update usage of correct (updated) Rec.709 coefficients.
-   Add TCPDeliver.map and DirectShowSource.map to releases.
-   Convert to 2.6 Dynamic Assembled rgb to yuy2 code.
-   Avisynth_c.h boolean functions return 1 for true instead of arbitrary
    non-zero.
-   Internal RGB2YUV() now copies Alpha top byte through.
-   CoUninitialize() done immediately for S_FALSE CoInitialize() returns.
-   Pfc, Softwire and SoundTouch updated and added as dependency
    projects.
-   UPX updated to version 2.03 (2006-11-07).
-   AVISource/WavSource map WAVEFORMATEXTENSIBLE back to equivalent
    WAVEFORMATEX.
-   DirectShowSource() now recognises incorrect WAVE_FORMAT_EXTENSIBLE
    audio and accepts it.
-   DirectShowSource() now attempts to use partial graph from failing
    RenderFile call.
-   DirectShowSource() now detects and handles non 32 bit aligned picture
    lines from dud codecs.
-   Crop(align=true) tests actual alignment in each GetFrame call.
-   Relax YV12 resizer width restriction, now mod 2 was mod 4.
-   .AVSI failures during env->CreateScriptEnvironment() are now
    available to the GetError() interface.
-   SetCacheHints(CACHE_RANGE, n) will now surrender frames to satisfy
    SetMemoryMax().
-   CoInitialize()/CoUninitialize() now done as part of ScriptEnvironment
    creation/deletion.
-   Much code from 2.6 base included. Typically IsYV12() changed to
    IsPlanar().

A complete list can be found :doc:`here <changelist>` and `there`_.


Known problems and issues
~~~~~~~~~~~~~~~~~~~~~~~~~

-   Rightclick on scripts to open them in VDubMod: When the script is
    messed up in the script editor, the correct error message does not
    appear.
-   Possible other bugs which are reported `sourceforge`_.


Future plans
~~~~~~~~~~~~


AviSynth v2.60
--------------

This version will be the next major version. Plugins for v2.5 will work in
v2.6. Most of the new code will be dormant inside 2.58 and with a minimal
surgical change a parallel 2.60 release will be made. This should allow easy
A-B testing for coding problems versus 2.6 interface problems. Design goals
and proposals can be found `in this thread`_. Proposals include the following:

-   New Y8 (greyscale), YV411(4:1:1 planar), YV16 (4:2:2 planar), YV24
    (4:4:4 planar) formats.
-   All planes are created 16 byte address aligned and have mod 16 pitch.
-   Thread-safe avisynth.h.


AviSynth v2.61
--------------

This version will use the free Microsoft compiler. It will be feature
identical to 2.60 i.e. Source new syntax changes only!


AviSynth v2.6n
--------------

A bit further down the track as time and volunteers permit.

-   Add MaskTools to the core.
-   Official Win64 support.
-   ImageMagick support to import and export pictures (besides DevIL).


AviSynth v3
-----------

AviSynth v3.0 is a powerful frameserver for Windows and Linux, and it is a
complete rewrite of AviSynth v2.5, written from scratch by Bidoche (David
Pierre), Kurosu, Caro and others. v3.0 is not relying on vfw anymore,
although it can be used when possible. It is made in such a way, that new
APIs can be added to the core, like ffmpeg and gstreamer. Also here many new
colorformats will be added: YV24, RGB45 and YV45 which are 15 bits depth
versions of RGB24 and YV24. Direct streaming will be supported, and many
other new things. The progress can be found `on avisynth.nl`_. The
discussion takes place at irc.freenode.org#avisynth and `on Doom9`_.

$Date: 2025-02-25 17:47:02-05:00 $

.. _there: http://avisynth.nl/index.php/Changelist
.. _sourceforge:
    http://sourceforge.net/tracker/?atid=482673&group_id=57023&func=browse
.. _in this thread: http://forum.doom9.org/showthread.php?t=98585
.. _on avisynth.nl: http://avisynth.nl/index.php/AviSynth_v3
.. _on Doom9: http://forum.doom9.org/showthread.php?p=721468
