- de-Qt src/plugin/src (olivehost/oliveplugininstance/oliveclip/
paraminstance/image/pluginprogressreporter); QMessageBox/
QApplication replaced by facade callbacks
- new C ABI in include/plugin/{error,host,instance}.h with
refcounted OakPluginInstance value handle
- paraminstance bridges via oaknode C ABI (OakNodeNode value handle,
oaknode_node_identity registry); undo via oakundo C ABI
- oliveclip textures are OakRenderTexture value handles; oakrender
gains texture/copier/ticket C API additions
- oaknode gains get_input_at_time/set_input_at_time_undoable/
node_identity/sequence_from_node/sequence_set_default_parameters/
find_input_footage
- move avframeptr.h to src/common/src (shared by codec and render)
- node transition pluginSupport stubs bridge the real oakplugin
headers; all oaknode-building standalone trees add src/plugin and
link oakplugin into their test binaries
- plugin tests self-sufficient (ipc shim, OfxHost force_load,
PRE_TEST discovery, OCIO env); timeline standalone gains
render/c_api
- restore ffmpegdecoder.cpp in src/codec/src/ffmpeg/CMakeLists.txt
(dropped in 3d004c081, caused jump-to-0 in decoder/encoder tests)
All six standalone trees green: codec 22, audio 40, task 110,
render 49, timeline 121, plugin 100.
- config moves into oakcommon as ConfigStore + oakcommon_config_* C
API (INI storage, typed entries, error-handler injection); node and
render call sites keep OAK_CONFIG() macro shape via a local shim
that forwards to the C API; transition config stubs removed
- oakaudio: de-Qt all six classes, C ABI in include/audio with
refcounted handles (processor/manager/waveform/levelmeter/sync,
48 functions); PreviewAudioDevice moved in from render; recording
goes through oakcodec encoder; waveform extract uses probe +
ffmpeg_bridge decode (decode_audio needs M8 task system)
- fix re_sum_samples min/max init bug (values clamped to 0 for
same-sign ranges)
- every C API function has positive + error-path tests; suites:
oakcommon 193, oakaudio 36, oaknode 96, oakrender 42, oakcodec 18
- copy engine/render to src/render/src (sunk param types excluded),
de-Qt in five parallel groups: core machinery (tickets/worker pool/
jobs), caches, color/texture, preview/IPC, GPU backends
- replace Qt GL/Vulkan wrappers with native context abstractions
(CGL/EGL/WGL, raw vulkan.h), QProcess with POSIX WorkerProcess,
QJsonObject with a minimal NDJSON-compatible workerjson (wire
protocol unchanged), QDataStream disk state with a byte-compatible
BinaryStream
- signals become single std::function callbacks or facade-triggered
calls per the documented signal/slot strategy
- pure C ABI in include/render + src/render/c_api (renderer/cache/
color/manager families, OAKRENDER_E_* codes), 37 gtest cases
- bridge src/node/transition/render/* stubs to the real oakrender
headers, closing the node<->render cycle: liboaknode links
liboakrender, zero dangling symbols
- docs: M7 implementation status + oakrender semantic-change notes