## 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 here 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 here. 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 here. The discussion takes place at irc.freenode.org#avisynth and here.

`$Date: 2008/12/22 01:26:05 $`