Skip to content

Releases: AvsPmod/AvsPmod

Version 2.5.1 [2013-06-25]

15 Feb 23:34
Choose a tag to compare


  • Add toggle preview placement menu option - the video preview can be placed now to the right of the script
  • Add open script's directory menu option
  • Add interpret escape sequences and accelerator keys to the find/replace dialog
  • Fixes to the handling of function definitions
  • Other minor changes and fixes

Version 2.5.0 [2013-06-04]

16 Feb 23:14
Choose a tag to compare


  • Tabs can be assigned to groups. Tabs on the same group share the timeline, optionally applying offsets
  • Add enable scroll wheel through tabs on the same group setting
  • Snippets of text can be associated to a tag and inserted in the script
  • Remove customize autocomplete keyword list and add its functionality to the AviSynth function definition dialog
  • Improve autocomplete parameter menu option and add filename string auto-completation
  • Add highlighting styles for unknown functions, parameters and assignments
  • Add setting for highlighting words as functions when in doubt
  • Fix slow typing on very large scripts
  • Scripts can be exported as HTML
  • Add quick save image menu option
  • Add setting for customizing the default filename pattern used for saving images
  • Add setting for not prompting for JPEG quality when saving
  • Allow to save RGB48 data as 16-bit PNG
  • Improve output path options in the Save Image Sequence macro
  • Update the current frame number when switching tabs also when the preview is hidden
  • Check that requesting a frame succeeded before attempting to use it
  • Fix error message appearing on preview refresh for user sliders with a custom modulo on its label
  • Fix empty translation files not being filled on start
  • Other minor changes and fixes

Release notes

  • Tabs can be assigned to groups. Tabs on the same group share the timeline, optionally applying offsets

The offset is the difference between showed frames when the tabs were added to the group, e.g. tab1 (on frame 100) and tab2 (on frame 250) are added to a group -> tab2 is always 150 frames ahead when switching between the two tabs.

  • Remove customize autocomplete keyword list and add its functionality to the AviSynth function definition dialog

Until now there were two ways for excluding a function from the autocomplete list:

  • Unchecking its entry on the AviSynth function definition dialog: this made the function inexistent to AvsP: no highlighting on a script, no calltip, no parameter autocomplete, no sliders.
  • Unchecking it on Customize autocomplete keyword list (program settings): this only excluded the function from autocomplete, and in addition for plugins it could be chosen to only show the short name and not the longer mangled form, or the other way around.

Customize autocomplete keyword list is removed now, and some changes have been made to the AviSynth function definition dialog:

  • Unchecking a function only excludes it from autocomplete.
  • A context menu has been added to the plugins tab, for choosing between showing long, short or both names for each function.
  • Delete button now resets to default edited function definitions (same as clicking reset to default and checking auto-generate preset from within the definition editor) and deletes definitions added by the user. Previously it only unchecked its entry, optionally removing user definitions.

You may need to set again autocomplete exclusions for plugin filters, as this info is stored differently now.

  • Add setting for highlighting words as functions when in doubt

Now by default words are not highlighted as functions if there's a function with the same name. Those of you who like to type functions without parentheses will want to check this setting.

  • Allow to save RGB48 data as 16-bit PNG

As AviSynth doesn't support it, when saving an image as 16-bit each frame of the clip returned by the script is assumed to be RGB48 data with a real height half the reported by AviSynth. This can be achieved with the following (Dither package):

Dither_convert_yuv_to_rgb (lsb_in=true, output="rgb48yv12")
Dither_convey_rgb48_on_yv12 (r, g, b)

As of now it's not possible to show additional options in a save file dialog. So instead of asking if the clip is 16-bit (like for the JPEG quality) the script is parsed for one of the function calls above.

In the case of the Save Image Sequence macro and SaveImage macro function the depth is specified directly.

Version 2.4.2 [2013-03-10]

16 Feb 23:14
Choose a tag to compare


  • Function definitions can be imported now from a new wiki
  • Allow specifying what sources of function definitions to read on start
  • Updates to the filter database
  • Add syntax for function parameters not included by default in autocomplete, [arg info]
  • Add autocomplete parameter menu option, Ctrl+Alt+Space shortcut
  • Add copy image to clipboard menu option
  • Speed-up handling of a large number of bookmarks
  • Fix corruption of the margin of the video preview
  • Fix tab renaming
  • Add a new macro function ClearBookmarks
  • Improve Bookmarks at Intervals macro
  • Other minor changes and fixes

Version 2.4.1 [2012-12-05]

16 Feb 23:14
Choose a tag to compare


  • Add reload script menu option
  • Add use large size video controls setting
  • Add invert scroll wheel direction setting
  • Improve video zooming on Ctrl + mouse wheel
  • Fix the navigate menu options needing to be pressed two times when using a separate window for the video preview
  • Fix the dragging of the handle of the separate window preview's slider
  • Fix ScriptFile and ScriptName being swapped
  • Accept several clip properties on the Pipe macro function's command line
  • Other minor fixes

Version 2.4.0 [2012-11-27]

16 Feb 23:14
Choose a tag to compare


  • Add AvxSynth support. AvsPmod runs now natively on *nix
  • Add script playback (video only)
  • Add keep variables on refreshing menu option, useful for dealing with heavy scripts
  • Detect correctly AviSynth 2.6.0 new color spaces
  • Add temporary support for VapourSynth AVIFile scripts (.vpy)
  • Add option to specify directly the location of avisynth.dll/
  • Add option to change the autoload plugins directory
  • Add option to choose an alternative working directory
  • Accept some variables on program settings paths: %programdir%, %avisynthdir%, %pluginsdir%. Useful for portable use.
  • Add undo close tab:
    • file menu -> undo close tab
    • middle click on empty tab bar space
    • Ctrl+Shift+N default hotkey
  • New find and replace dialogs with added features
  • Add auto-crop option to the crop editor
  • The crop editor can be used now with the video preview zoomed or flipped
  • Add a new variable to the video status bar - bookmark title (%BM)
  • Improve avs and avsi files association option:
    • on Windows, prompt to associate files for all users or only the current one and ask for permissions for the former
    • on *nix, this choice is made by starting AvsPmod as root to associate for all users. The application is also registered on the desktop environment's menu.
    • make the option toggleable
  • Improve default filename on prompts:
    • add two new settings to the options dialog, save/load tab
    • better basename choice on save image dialog and fix last saved image's name still being used when changing tabs
    • add default parameter to several macro functions
  • The mouse wheel can be used now to scroll through tabs
  • Ctrl + mouse wheel can be used to zoom the video preview
  • If enable scroll wheel through similar tabs is off the mouse wheel can be used to scroll vertically the video preview, or horizontally with Shift pressed.
  • The CLI script encoder now checks PATH and the tools subdirectory before asking for the path to the executable
  • Fix opening and saving Unicode scripts
  • Fix decoding of command line arguments
  • Fix ScriptFile, ScriptName and ScriptDir functions not returning the right value [AviSynth 2.6.0]
  • Fix share timeline option being always in effect
  • Fix last scrolled frame menu option for update video while dragging on
  • Fix tabs without filename still being closed when canceling a save dialog
  • Fix stop button of the avs2avi GUI tool
  • Add new macro function Pipe, for sending video frame data to external applications
  • Add propose and only parameters to the GetScriptFilename macro function
  • Add clean parameter to the GetText macro function
  • Improvements on the Import bookmarks from file macro:
    • add timecode format v1 parsing
    • add support for list of frames on TFM log u/b section and optimize its parsing
  • Merge Save bookmarks to images macro into Save Image Sequence
  • Fix Python 2.6 compatibility
  • Other minor changes and fixes

Release notes

Path settings additions

The paths on the settings dialog can be set now using some variables: %programdir%, %avisynthdir%, %pluginsdir%. Also the location of the AviSynth library used by AvsP can be specified. For example you can place avisynth.dll on an AvsP subdirectory and it will be always picked even if the AvsP directory changes location. This can also be useful to alternate between AviSynth 2.5 and 2.6.

The autoload plugins directory can also be changed. However this is a system-wide change as AviSynth doesn't provide a way for applications to specify its own directory (AvxSynth does). A similar effect can be achieved by setting the working directory to the alternative plugin directory and check the for all scripts option.

Of course a script written taken advantage of this setting won't work on external applications if the working directory is not the alternative avisynth.dll/plugins location set on AvsP.

AvsP help directory location

The option to set a custom help directory has been removed from the settings dialog. If someone was using a translated version of these (a bit outdated) files now needs to rename the directory to help_xxx and place it on the main AvsP directory, where xxx is the code of the language used for the program's interface.

Keep variables on refreshing option

What this new option placed on the Video menu actually does is reuse the AviSynth environment when refreshing the preview. It's intended for trying new filters/tweaking parameters. Don't leave it on when not needed.

Additionally, changing a slider now reuses the environment if the script is unchanged, regardless of the preference state.

Advantages of using the same environment:

  • Avoids scanning the autoload directory again after a change in the script. Noticeable speed-up for large directories.
  • Variables are shared between all clips in the same environment. This may be used to avoid processing heavy filters again, e.g:
clip = heavy_filter()

With the new option checked, observing the effect of changing a Tweak parameter can be speed-up by commenting the first lines or creating a tagged section on them and turning it off:

#clip = heavy_filter()


clip = heavy_filter()

The clip variable is still in memory when the preview clip is recreated. Note that the result would be incorrect if the same variable is assigned again in the uncommented lines. For that reason last can't be used as the saved variable.


  • More memory usage
  • Unexpected results if used without care

Pipe macro function

This function can be used to pipe raw video data to external applications. It's described in macros_readme.txt, here are some examples:

avsp.Pipe(ur'x264 - --demuxer y4m -o output.mkv', y4m=True) # x264
avsp.Pipe(ur'x264 - --demuxer y4m -o output.mkv', y4m={'depth':16, 'width':'/2'}) # 420p16 sent as fake YV12, recent x264 revisions
avsp.Pipe(ur'convert -depth 8 -size 1280x720 rgb:- output.png', reorder_rgb=True) # ImageMagick
avsp.Pipe(ur'convert -depth 8 -size 1280x720 -interlace plane -sampling-factor 4:2:0 -colorspace rgb yuv:- output.png')

Remember that a macro can run in a separate thread by adding a # run in new thread line. Example of callback function for Pipe, where progress is a ProgressBox instance:

def pipe_callback(i, frame, total):
    message = 'Processing...' if i == total else 'Piping frame ' + str(frame)
    return avsp.SafeCall(progress.Update, i, message)[0]


AvsP can run now natively on *nix with AvxSynth backend, though certain UI bugs still remain. No build is provided, so grab the source code package, extract it to a directory with write permissions for the user and run You can also get the Windows build, delete all executable files and move the content of the src subdirectory to its parent. The avs file association menu option also registers AvsP on the desktop environment's menu.

Requirements: Python 2.6-2.7, wxPython 2.8-2.9


While AvsP still doesn't support VapourSynth a small tweak has been added to allow writing and previewing scripts. VapourSynth scripts using the AVIFile interface (Windows) will now be opened as regular avs files but previewed by evaluating AviSource("scriptname.vpy"). The syntax highlighting and filter database is still AviSynth's.


  • Refreshing the preview while the video is playing can lead to crashes
  • Invalid vpy scripts tend to crash (UPDATE: not anymore in VapourSynth R19+)
  • Video preview horizontall scrolling: wheel tilt is not supported by the current wxPython 2.8 series but it will be on the next stable series
  • A minor visual glitch when using the crop editor and changing zoom is also fixed on the next wxPython.

Version 2.3.1 [2012-07-22]

16 Feb 23:14
Choose a tag to compare


  • Add detached video preview window visibility options:
    • Always on top of other windows (Options menu)
    • Always on top of the main window (Program Settings dialog, needs restart)
  • Add printing support
  • Disable showing line numbers if line margin width option is 0
  • Don't fail to launch AvsPmod if the option files are damaged
  • Work around event ID overlapping when working with a large number of bookmarks by disabling Go to bookmark submenu for more than 1000
  • Add version info to the macro API
  • Add draw lines option to the GetPixelInfo macro function, and fix marks position
  • Rename the last executed macro return value from last to avsp.Last. The former is still accepted.
  • Add Macros - Extra section to the translation files. Strings that no longer exist are deleted from the translation files when updating to a new version. That means that translation strings added for the user for macros not bundled with AvsPmod are lost. This new section at the end is copied verbatim from the original file.
  • Rename Bookmarks from Chapter macro to Import bookmarks from file and add support for some other file types:
    • TFM log (combed, possible combed and u/v mismatches)
    • x264 QP file
    • XviD and SCXviD log
  • Fix performance issues in the Bookmarks at Intervals macro
  • Other minor changes and fixes

Version 2.3.0 [2012-06-04]

16 Feb 23:14
Choose a tag to compare


  • Add an option to decide based on the video resolution the coefficients used in the conversion to RGB for the video preview
  • Add Run analysis pass to the Video menu (for two-pass filters)
  • Add periodic session backup option
  • Add an option to not prompt to save a script if it doesn't already exist on the filesystem
  • Add original source time (%ST) and encoded frame type (%EFT) to the video status bar options (only works with ffms as source filter and no temporal filters in the script)
  • VirtualDub and VFAPI plugins can be also inserted now with the Insert plugin... menu option and the GetPluginString macro function, and be dropped over a script
  • Fix exception opening the crop editor
  • The default filename in a save script dialog wasn't taken from the first source in the script in some cases
  • Saving an image with an unsaved script not longer causes to include a * in the default output filename
  • Solved single instance + restart AvsPmod + child process still running -> socket error
  • The interface language can be chosen now from the options. Several translations are included.
  • Add macro files to the translations
  • The macro documentation can be checked now with help(avsp.function) or help(avsp) from a macro
  • All included macros and macro functions support unicode strings now
  • Add persistent storage to macros - Options dictionary
  • Macros can run now in its own thread by including a comment line like: # run macro in new thread
  • The macro API functions are now thread-safe
  • Add a new macro function SafeCall for thread-safe calls in separate-thread macros and tools
  • Add a new macro function GetPixelInfo that waits for the user to click on the video preview and returns the coordinates and colour of that point
  • Add a new macro function GetVar to retrieve the contents of a specified Avisynth variable. Some limitations apply.
  • Update GetTextEntry macro function with new types of entry, multiple entries per row and customizable width, backwards compatible
  • Add an optional cancel button to the MsgBox macro function
  • SaveImage macro function also accepts now JPEG quality as a parameter
  • Fix ProgressBox macro function Cancel button
  • Fix SaveScript macro function filename parameter
  • Add new macro ConditionalReader file from bookmarks
  • Update some macros with the improvements in GetTextEntry
  • A number of intervals can be specified directly now in the Bookmarks at Intervals macro
  • Set the Large Address Aware flag
  • Python 2.6-2.7 is required now
  • Other minor changes and fixes

Version 2.2.1 [2012-01-04]

16 Feb 23:14
Choose a tag to compare


  • Pixel info remains in the statusbar while typing
  • Fixed bug in definition of assumefps/changefps/convertfps
  • Fixed bug with preview caching
  • Fixed a bug parsing some avsi files
  • Fixed a bug when removing plugins
  • Fixed a bug related to folding
  • Fixed a bug which caused slowdowns when incomplete string highlighting is enabled
  • Fixed a bug when opening a 2nd instance of avspmod
  • Added Shift bookmarks by frames macro by wOxxOm
  • Other minor bugfixes and tweaks

Version 2.2.0 [2011-06-29]

16 Feb 23:14
Choose a tag to compare


  • Reorganized several menus and changed some default settings to improve usability.
  • Tabs can be repositioned and renamed.
  • Scripts can be encoded without saving.
  • Improvements to macros.
  • When moving cursor on the preview, show pixel information even if the preview isn't focused.
  • Frame number textbox can accept mm:ss format, and you can input -1 to go to the last frame.
  • User sliders can have their values rescaled.
  • MANY minor bugfixes and improvements

Release notes

User slider values rescaling works by adding a + or - character to the sliders label.
Tweak([<"hue +", -180, 180, -180>]) This will rescale the slider to use a value of 0 to 100 rather than -180 to 180.
Tweak([<"hue -", -180, 180, -180>]) This will rescale the slider to use a value of -100 to 100 rather than -180 to 180.
This currently only works for user sliders inserted directly into the script (Edit>Insert>Insert user slider).