Getting Started Version 1.0Updated 27 Sep 2026

Entrypoint and register(api)

The configured plugin entrypoint must expose a callable register(api) function. Registration describes the package's features and should complete quickly.

Implement the entrypoint

Python
from editor.plugin_api import PluginParameterDefinition


def process(frame, parameters, context):
    return frame


def register(api):
    api.register_video_effect(
        effect_id="example",
        name="Example",
        processor=process,
    )

Registration lifecycle

  1. Yrendr reads plugin.json.
  2. Yrendr loads the configured entrypoint from disk.
  3. The host creates a package-scoped PluginAPI facade.
  4. Yrendr calls register(api).
  5. Successful registrations become available through the active plugin registry.

If import or registration raises an exception, Yrendr marks the package as failed and removes partial registrations created by that package.

Caution: Do not start a long-running editor loop or blocking analysis job from register(). Registration should declare features and return.

Effect registration options

register_video_effect(), register_audio_effect() and register_generator() support:

  • parameters=;
  • description=;
  • time_dependent=;
  • presets=;
  • bypass_when=;
  • randomizer=;
  • time_dependent_when=;
  • custom_editor=;
  • window_options=.

Video and audio effects also support clip_types=. Generators are registered for the generator clip type.

Optimize neutral states

Use bypass_when(parameters) only when skipping the processor is exactly equivalent to running it. This allows Yrendr to avoid touching frame/sample buffers for provably neutral states.

Use time_dependent_when(parameters) when one effect can be static in some configurations and animated in others. If that predicate fails, Yrendr falls back to the coarse time_dependent registration value.

Register a timeline processor

register_timeline_processor() accepts native parameters, descriptive capabilities, presets and an optional randomizer.

Note: Timeline processors do not use custom_editor or PluginWindowOptions; their configuration and progress UI remain host-owned.