Mike-Solar 7ebfebb29a Fix OFX plugin render failures and stabilize integration tests
This commit resolves several categories of OFX plugin failures that
  manifested as magenta (pink) render output or crashes:

  1. Param default-value initialization
     - IntegerInstance, DoubleInstance, BooleanInstance, ChoiceInstance,
       and StringInstance now read kOfxParamPropDefault from the descriptor
       at construction time. Previously, when no PluginNode was attached
       (integration-test mode), get() returned 0/0.0/false, causing
       generator plugins to receive invalid extent/format/PAR values and
       crash in coordinate assertions.
     - IntegerInstance also fixed uninitialized `id` that caused
       kOfxStatErrBadHandle in CImg plugins.

  2. Clip property initialization
     - newClipInstance() now seeds pixelDepth and components from the
       host VideoParams instead of leaving them as None. This prevents
       Transform3x3Plugin and similar plugins from asserting on
       getPixelComponentCount() during fetchClip inside createInstance.
     - getAspectRatio() and getProjectPixelAspectRatio() now fall back
       to 1.0 when the project's PAR is not yet set, avoiding division-
       by-zero in coordinate conversion.

  3. Frame-rate and time-base preservation
     - setInputTexture() no longer overwrites the clip's frame_rate or
       time_base with the input texture's values. Multi-input plugins
       were crashing because setupClipPreferencesArgs throws when inputs
     have mismatched rates.

  4. Render loop hardening
     - getClipPreferences() is now wrapped in try/catch so that frame-
       rate mismatch exceptions mark render failure instead of aborting
       the render thread.
     - getRegionOfInterestAction() treats kOfxStatErrBadHandle as non-
       fatal and falls back to default RoI.
     - RenderPlugin syncs all clip instances after setVideoParam so that
       getAspectRatio/getFrameRate return valid values before
       createInstanceAction queries them.

  5. Test suite updates
     - All PluginMisc tests now use F32 input to match the host pipeline
       default.
     - CreateGradientTexture fixed to support F32 pixel format.
     - Added CImgBilateral and CImgGuided_MultiInput tests.
     - Secret parameters are now registered as hidden Node inputs so that
       getClipPreferences can read them (fixes generator pink screen).

  6. Debug logging in HostSupport
     - clipGetImage and clipGetRegionOfDefinition now catch exceptions
       and log the failing clip name for easier debugging.
2026-05-15 21:32:28 +08:00
2026-04-12 01:26:41 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-05-14 01:51:14 +08:00
2026-04-12 01:08:22 +08:00
2026-01-10 18:56:58 +08:00
2026-01-16 21:11:24 +08:00
2025-11-23 16:39:30 +08:00
2026-01-16 21:22:05 +08:00
2026-01-05 14:24:28 +08:00
2026-01-05 14:24:28 +08:00
2024-05-13 14:49:53 +02:00
2026-01-05 16:22:26 +08:00
2026-01-05 16:22:26 +08:00
2026-01-17 16:53:54 +08:00
2026-01-17 16:53:54 +08:00
2026-01-05 16:22:26 +08:00
2026-01-05 21:31:35 +08:00

Oak Video EditorBuild status

Oak Video Editor is a free non-linear video editor for Windows, macOS, and Linux.

Unfortunately, the original author has not submitted code updates for over 7 months, and no public contact information (email or otherwise) is available to reach them directly.

This project is a community-maintained fork of Olive Video Editor. screen

NOTE: Oak Video Editor is alpha software and is considered highly unstable. While we highly appreciate users testing and providing usage information, please use at your own risk.

Binaries

The original author compiled following binaries:

OpenFX Support TODO

  • Implement plugin discovery/loading from a given path and populate the cache (currently creates host/cache only). app/pluginSupport/OliveHost.cpp
  • Wire output clip image storage: allocate a backing buffer, set kOfxImagePropData, and update bounds/rowBytes before render. app/pluginSupport/OliveClip.cpp
  • Provide real input clip image fetches (currently returns an empty Image for inputs). app/pluginSupport/OliveClip.cpp
  • Ensure render path sets per-frame output data and handles ROD/bounds correctly. app/render/plugin/pluginrenderer.cpp
  • Add missing param instance types (String, Double3D/Integer3D, Group/Page, Custom/Bytes) and mapping to node inputs. app/pluginSupport/OlivePluginInstance.cpp, app/node/plugins/Plugin.cpp
  • Implement editBegin/editEnd, progress, and timeline hooks instead of stubs. app/pluginSupport/OlivePluginInstance.cpp, app/pluginSupport/OlivePluginInstance.h
  • Integrate persistent message handling with the app UI (currently TODO placeholders). app/pluginSupport/OlivePluginInstance.cpp
  • Decide and enforce project extent/fielding behavior instead of the current placeholder comment. app/pluginSupport/OlivePluginInstance.cpp
  • Add OpenGL texture render suite support or explicitly disable it (currently loadTexture returns null). app/pluginSupport/OliveClip.h
S
Description
No description provided
Readme GPL-3.0
73 MiB
Languages
C++ 87.8%
C 8.2%
CMake 3.3%
GLSL 0.5%