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

  1. In EDIUS, open the Tools menu and choose Vapoursynth Importer...
  2. In the file dialog, select your source file (e.g. Football_1080i.mp4). The importer creates Football_1080i.vpy right 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.
  3. 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).
  4. Confirm with Save .vpy and test it: the settings are written into the .vpy and 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. havsfunc for QTGMC), the BAT Server offers to download and install it. After such a module installation, restart EDIUS once.
  5. 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