Built-in Modules
Built-in modules are compiled into the host rather than shipped as plugin DLLs/SOs.
They provide the capabilities plugins build on — playback, audio, graphics, the
window, settings — behind the same service interfaces a plugin discovers with
ctx.GetService<T>().
Each has a FRAMELIFT_MODULE_<NAME> CMake option (default from its JSON), so
optional ones can be compiled out; required ones cannot. The authoritative
required/toggleable status for your tree is printed at configure time — see
Lean Builds.
Host modules (modules/host/)
| Module | Purpose |
|---|---|
framelift.module_runtime | Plugin discovery, dependency resolution, the module context, settings bridge. |
framelift.settings | Settings storage, defaults, and mapping helpers. |
framelift.services | Hotkeys, focus management, file dialogs. |
framelift.controls | Host playback/app hotkeys (pause, volume, seek, fullscreen). |
framelift.logging | Host logging sink and in-memory ring buffer backing Log::* and the LogViewer plugin. |
framelift.read_ahead | Memory-bounded read-ahead cache budget and metrics. |
framelift.audio | Qt QAudioSink PCM device + swresample, master clock, volume/mute/ducking, libavfilter normalization. |
framelift.playback | FFmpeg-backed playback and subtitles (libass), hardware-decode helpers. Required. |
framelift.ui | Qt/QML host UI services and theming. Required. |
Graphics modules (modules/gfx/)
| Module | Purpose |
|---|---|
framelift.graphics_core | Graphics API selection and renderer interfaces. Required. |
framelift.graphics_opengl | OpenGL backend and video renderer. Required. |
framelift.graphics_vulkan | Vulkan backend with zero-copy GPU decode support. Optional, enabled by default. |
Platform modules (modules/platform/)
| Module | Purpose |
|---|---|
framelift.window_qt | Qt 6 (Qt Quick) window backend, app event translation, and scene-graph video integration. Required. |
framelift.win_shell | Qt-backed playback error notifications on Windows. |
framelift.dir_watch | Cross-platform directory watching (Win32 + Linux). Required. |
The graphics backend behind the window — OpenGL or Vulkan — is an internal detail;
plugins never see it. The host owns all video and UI rendering. Plugins contribute
UI as embedded Qt Quick (QML) layered over the host video by renderOrder, and
reach media output through the media-output interfaces.