Changes from 3.7.2 to 3.7.3¶
Additions, changes¶
MIPS build support
New: add a sixth array element to
PlaneMinMaxStats
: average. Defines variable "PlaneStats_average" as well if setting variables is required."Text"
halo_color
allows to have both halo and shaded background when halo_color MSB=$FE"Text" (#308) much nicer rendering of subsampled formats
"Text" (#310) Support any width of external bdf fonts (but still of fixed width)
"Text" (#310) Support more from the BDF standard: per-character boundary boxes and shifts
"Text": draw rightmost on-screen character even if only partially visible (was: not drawn at all)
"Text" Halo is not limited to original character matrix boundaries and is rendered on the displayed string as a whole.
"Text" add "left" chroma placement support; new
placement
parameter (left, center, auto), accept frame property_ChromaLocation
hint"TimeStretch" (#278) add TimeStretch overload with rational pair arguments and update SoundTouch library to v2.3.1.
Enhancement (#315): Show exception message as well if a v2.6-style plugin throws AvisynthError in its
AvisynthPluginInit3
instead of only "'xy.dll' cannot be used as a plugin for AviSynth."Fix (#327) Histogram "color2" markers. Fix right shifted 15 degree dots, fix square for bits>8
Feature #337: add more resizers
filters: SinPowerResize, SincLin2Resize, UserDefined2Resize
and their equivalent for the ConvertToXXXX family 'chromaresample': "sinpow", "sinclin2" and "userdefined2"
Feature #337: add "param1", "param2" and "param3" to ConvertToXXXX where 'chromaresample' exists (b,c,s,taps and p parameters can be set, depending on the resizer).
#306: Add ConvertToYUVA420, ConvertToYUVA422 and ConvertToYUVA444
Expr: Add remaining stack element count to "Unbalanced stack..." error message
Add back audio cache from classic Avisynth 2.6. Handle modes and hints on cache audio: CACHE_AUDIO, CACHE_AUDIO_NOTHING, CACHE_AUDIO_AUTO_START_OFF, CACHE_AUDIO_AUTO_START_ON, CACHE_GETCHILD_AUDIO_MODE and CACHE_GETCHILD_AUDIO_SIZE
Set automatic MT mode MT_SERIALIZED to ConvertToMono, EnsureVBRMP3Sync, MergeChannels, GetChannel, Normalize, MixAudio, ResampleAudio
Alter default VfW export (e.g. VirtualDub2) channel layout mask for 3 channels (Surround to 2.1), 4 channels (Quad to 4.0) and 6 channels (6.1(back) to 6.1)
Add audio channel (speaker layout) support
Implemented by using 20 bits from VideoInfo struct image_type flag
Follow layout definition from WAVEFORMATEXTENSIBLE
Add Script functions for audio layout support:
bool IsChannelMaskKnown(clip)
int GetChannelMask(clip)
SetChannelMask(clip, bool known, int dwChannelMask)
SetChannelMask(clip, string ChannelDescriptor)
Add friendly names for the 18 speaker positions (e.g. "FL" for front left)
Add friendly names for their frequently used combinations (e.g. "stereo" for "FL+FR") to be used in SetChannelMask.
GetChannel, GetChannels, MergeChannels: set default channel layout if channel count is 1 to 8
ConvertToMono, GetLeftChannel, GetRightChannel: sets channel layout to "mono"
AudioDub will inherit channel layout setting from the audio clip.
KillAudio calls SetChannelMask(false, 0)
"Info": displays channel mask info in the audio section when exists
#358: add "bold" parameter to "SubTitle" and "Info"
Add "bold", "italic", "noaa" parameters for SubTitle, Info, ShopSMTPE, ShowTime, ShowFrameNumbers, ShowCRC32
Build environment, Interface¶
Feature (#317): (v10) The color format of a
VideoFrame
can now be retrieved with itsGetPixelType()
(CPP) andavs_video_frame_get_pixel_type
(C) function. Before, there was no reliable way of knowing it on a frame frompropGetFrame()
. The internally storedpixel_type
inVideoFrame
is properly converted upon aSubframe
(Y8-32),SubframePlanar
(strip alpha).Feature (#317): (v10) added
VideoFrame::AmendPixelType
andavs_video_frame_amend_pixel_type
. Introduced in order to keepVideoInfo
andVideoFrame
pixel_type
synchronized for special cases: when filter constructor would just changeVideoInfo::pixel_type
, but the frame would be passed w/o any change, like inConvertFromDoubleWidth
orCombinePlanes
.Feature (#314): Added
AVSValue::GetType()
(v10) Returns anAvsValueType
enum directly, one can use it instead of calling all IsXXX functions to establish the type. (Rust use case)Fix in headers (#314): Changed
NewVideoFrameP()
andavs_new_video_frame_p()
property source argument to constEnhancement in headers (#314): Made
VideoFrameBuffer
destructor public like in other classes of the public API to prevent compiler errors downstream when calling non-const member functionsAddress Issue #305: Support for non-decorated
avisynth_c_plugin_init
in C-pluginsFix: C API undefined behavior when upstream throw runtime error
CMakeLists.txt: fix clang-cl/intel with ninja generator
Fix: C interface crash when using avs_new_video_frame_p(_a)
Fix: C interface avs_prop_get_data behave like C++ counterpart. Interface version is dor this fix is 9.2
CMakeLists.txt: add support for Intel C++ Compiler 2022
CMakeLists.txt: add support for Intel C++ Compiler 2023
Bump Interface version. Interface version is 10.0 AVISYNTH_INTERFACE_VERSION = 10, AVISYNTHPLUS_INTERFACE_BUGFIX_VERSION = 0
Address #282: make 32-bit MSVC build to generate both decorated and undecorated export function names for C plugins
(v10) Add audio channel support to C++ interface by using 18+2 VideoInfo.image_type bits
Check for existence: bool VideoInfo::IsChannelMaskKnown()
Setting: void VideoInfo::SetChannelMask(bool isChannelMaskKnown, unsigned int dwChannelMask)
Retrieving: unsigned int VideoInfo::GetChannelMask()
enums AvsChannelMask and AvsImageTypeFlags
(v10) Add audio channel support to C interface
Check for existence: bool avs_is_channel_mask_known(const AVS_VideoInfo * p);
Setting: void avs_set_channel_mask(const AVS_VideoInfo * p, bool isChannelMaskKnown, unsigned int dwChannelMask);
Retrieving: unsigned int avs_get_channel_mask(const AVS_VideoInfo * p);
supporting enums
Bugfixes¶
Fix: "Text" filter negative x or y coordinates (e.g. 0 instead of -1)
Fix: "Text" filter would omit last character when x<0
Fix: "Text"
halo_color
needs only MSB=$FF and not the exact $FF000000 constant for background fadeFix: (#304) "ColorYUV" analyze=true was displaying wrong min-max values for YUY2
Fix: (#293) "Text" to throw proper error message if the specified font name (e.g. Arial) is not found among internal bitmap fonts.
Fix: (#293) "Subtitle" and "Text" filter to respect the explicitely given coorditanes for y=-1 or x=-1, instead of applying vertical/horizontal center alignment.
Fix (#283): broken runtime functions Min/Max/MinMaxDifference when threshold is not 0 (returned -1). Regression in 3.7.2
Fix (#282): ConvertToRGB - do check for exact 8 or 16 bit input, because packed RGB formats exist only for 8 and 16 bits - keep alpha for RGBA planar - convert RGBAP8/16 to RGB32/64, while RGBP8/16 is still RGB24/48
Fix crash when outputting VfW (e.g. VirtualDub) for YUV422P16, or P10 in Intel SSE2 clang builds
Fix Clang build AviSource crash on yuv422p10le UTVideo at specific widths (SSE2 or SSE4.1)
Fix: (#340): stop memory leak on propSet / MakePropertyWritable
Fix: (#347): possible crash of LLVM builds (clang-cl, Intel NextGen) on pre-AVX (SSE4-only) CPUs.
Fix: (#348): bitrol/bitror script functions return incorrect results when argument is negative (regression since ported from Avisynth 2.6 to plus)
Fix: (#350): ConvertXXX to accept YV411 clip's frame property _ChromaLocation set to 'left','topleft' and 'bottomleft' instead of giving an error message.
Fix: (#360): plane filler wrongly assumed that pitch is rowsize, would crash when aligned Crop was immediately followed by a GreyScale.
Optimizations¶
Enhanced performance in ConvertBits Floyd dither (dither=1) for 10->8, 16->8 and 16->10
Added AVX2 code path for YV24 to RGB24/32 conversions (+50% fps)
Documentation¶
Internal plugins, syntax, ...: almost fully revised and made up-to-date. Big thanks to Reel-Deal!
Update build documentation with 2023 Intel C++ tools. See Compiling Avisynth+
Please report bugs at github AviSynthPlus page - or - Doom9's AviSynth+ forum
$Date: 2023/06/08 11:02:00 $