BATS - VapourSynth Plugin for EDIUS 11
Python-based video processing, right on the EDIUS timeline
VapourSynth is a Python-based video processing engine with hundreds of filters – from professional deinterlacing and detail enhancement to audio processing. Using it in EDIUS involves two building blocks: a C++ VapourSynth plugin as the prerequisite, which is what lets EDIUS work with .vpy files at all, and the Vapoursynth Importer from the BAT Server, which appears in EDIUS's Tools menu, wraps a video file into a VapourSynth pipeline, and imports the processed result as a clip into the BIN.
The two building blocks
1. The C++ VapourSynth plugin (prerequisite)
The C++ plugin is the foundation and gets installed once into the EDIUS plugin folder – this creates a mik subfolder (e.g. C:\Program Files\Grass Valley\EDIUS 11\PlugIn\mik\). It contains the EDIUS plugin file vapoursynthR73_mik.tpi plus a complete, bundled VapourSynth/Python environment (its own python.exe, VSEdit, the vsrepo module manager, and more). With this plugin, EDIUS understands .vpy files: it can import them, play the processed result in the preview, and re-open the settings at any time. Without the C++ plugin, the VapourSynth features are not available in EDIUS.
2. The Vapoursynth Importer (BATS extension)
The BAT Server detects the installed plugin (it checks for vapoursynthR73_mik.tpi in the EDIUS plugin folder) and only then registers the "Vapoursynth Importer..." entry in EDIUS's Tools menu. If the plugin is missing, the entry is not (no longer) shown. This menu entry is where you start the whole import and settings workflow – right from inside EDIUS, without having to maintain scripts by hand.
Example: deinterlacing interlaced footage with QTGMC
- In EDIUS, open the Tools menu and choose Vapoursynth Importer...
- In the file dialog, select your source file (e.g.
Football_1080i.mp4). The importer createsFootball_1080i.vpyright next to the video (from the bundled template), imports it as a clip into the BIN under __BAT Server\Vapoursynth, and opens the VapourSynth Script Quick Edit window. - In the EFFECTS section, enable Deinterlace by QTGMC and pick the Preset (e.g. Medium) plus the field order TFF (Top Field First: enable if the source starts with the top field).
- Confirm with Save .vpy and test it: the settings are written into the
.vpyand the pipeline is test-run by the bundled VapourSynth environment – you get a notification with the result (which effects ran, or what failed). If a VapourSynth module is missing (e.g.havsfuncfor QTGMC), the BAT Server offers to download and install it. After such a module installation, restart EDIUS once. - In the EDIUS preview, the clip under __BAT Server\Vapoursynth now plays the deinterlaced result – and it can be dragged onto the timeline like any regular clip.
Changing the settings later: right-click the .vpy clip in the BIN and choose "Open ..." – the Quick Edit window opens again with the settings currently stored in the file. Adjust parameters can be changed there, and Save .vpy and test it makes the new settings visible in the EDIUS clip immediately – no restart needed for that. Open in VSEdit and close instead opens the .vpy in VSEdit (bundled) so you can further work on the script directly in Python.
The "Script-to-GUI" Concept
The core innovation is the ability to read a single .vpy file and transform it into a functional GUI within EDIUS. You don't need to write complex C++ code to add new features; you simply define your filters in Python, and the GUI builds the buttons, sliders, and checkboxes for you. The .vpy is the single source of truth – the GUI and EDIUS read the same configuration, and changes made in the GUI are written straight back into the file.
Key Features
Advanced Video
Access to industry-standard filters like QTGMC (Deinterlacing), ESRGAN (AI Upscaling), and advanced stabilization via MVTools.
Full Audio Support
Apply audio gain, normalization, or complex audio processing alongside video, ensuring perfect synchronization.
Auto-Module Management
Missing a VapourSynth module? It is detected, and the BAT Server offers to download and install it via the bundled VapourSynth repository (vsrepo) or pip – then restart EDIUS.
Dynamic GUI
Every parameter in your script (sliders, dropdowns, checkboxes) is automatically rendered as a UI element in EDIUS.
Configuration Guide
A .vpy file is divided into three main sections: INPUT, EFFECTS, and OUTPUT. Below them comes the pipeline logic – which you leave untouched.
1. INPUT Configuration
Defines the source file and how it is loaded into the pipeline:
INPUT = {
"source": "C:/path/to/video.mp4",
"_label_source_path": "Source File Path",
"_type_source_path": "file_picker",
"_type_source_import": ['Auto', ['Auto', 'No file index', 'Use file index']],
}
The Auto mode (default) picks the suitable importer: files above the size threshold (default 500 MB) go through L-SMASH (with hardware decoding), with FFMS2 and BestSource as fallbacks; smaller files are loaded without a file index. No file index / Use file index force the respective variant.
2. EFFECTS Configuration
The heart of the plugin. A list of filters applied in order. You can use internal presets or dynamic functions:
EFFECTS = [
{
"_label": "Audio Gain",
"cfg": { "Audiogain (dB)": [0.0, [-24, 12]] },
"internal_preset": "audio_gain_filter",
"_enabled": False,
},
{
"_label": "Deinterlace",
"cfg": { "Preset": ['Medium', ['Slower', 'Slow', 'Medium', 'Fast', 'Faster']] },
"namespace": "havsfunc",
"function": "QTGMC",
"_enabled": True,
}
]
The bundled template already ships a range of effects – all disabled by default, simply tick them in the GUI:
| Effect | What it does | Parameters in the GUI |
|---|---|---|
| Audio Gain | Audio volume (internal preset) | Audiogain (dB): −24 to +12 |
| Flip Horizontal / Flip Vertical | Mirror horizontally / vertically | none |
| Deinterlace by QTGMC | Interlaced → progressive (computationally expensive) | Preset: Slower / Slow / Medium / Fast / Faster; TFF (field order) |
| Stabilize | Camera-motion stabilization via MVTools (computationally expensive) | none |
| Motion Blur | Temporal blur via MVTools FlowBlur (computationally expensive) | Blur amount: 0–100 |
| Retinex (MSR) | Detail enhancement: dynamic range compression and local contrast (computationally expensive) | sigma, lower_thr, upper_thr, fulls, fulld |
| RIFE | Frame interpolation: re-calculate or multiply the frame rate (GPU) | model, uhd, gpu_id, gpu_thread, fps_num / fps_den or factor_num / factor_den |
| Convert to RGB24 / RGBS / YUV422P8 | Convert to a specific pixel format | format, matrix, range |
| adopt frame rate | Adopt a frame rate (AssumeFPS) | fpsnum, fpsden |
If a VapourSynth module required by an effect is missing (e.g. havsfunc for QTGMC), the BAT Server automatically offers to install it – effects can be extended freely as long as the module is available.
3. OUTPUT Configuration
Defines the final pixel format and color space for the EDIUS import. If the source format differs from the target, the pipeline converts via the Bicubic resizer:
OUTPUT = {
"_label_pixel_format": "Output Pixel Format",
"_type_pixelFormat": "enum_combo",
"pixel_format": "YUV422P8"
}
Syntax Reference
Use these special keys to control the UI and behavior:
| Key | Description |
|---|---|
_label |
The name displayed in the EDIUS UI. (Must be unique!) |
_description |
Tooltip text for the UI element. |
_type_* |
Determines the UI control for a key (e.g. file_picker → file selection, enum_combo → dropdown). |
_enabled |
Set to True to show/activate the filter. |
cfg |
Dictionary of parameters (sliders, lists, etc.). |
namespace |
The Python module (e.g. std, havsfunc). |
function |
The specific function within that module. |
Technical Details
- Engine: VapourSynth (Python-based), with a bundled Python environment integrated into EDIUS
- Integration: C++ VapourSynth plugin (EDIUS) + BAT Server (Tools-menu entry, module installation)
- Supported Formats: YUV422P8, YUV422P10, RGB24, RGB30, RGB48
- Audio: PCM/WAV via VapourSynth Audio Source
- Module Management: Integrated with BAT Server for seamless dependency installation