engine: complete C ABI facade (liboakengine oakengine_* surface)

The full pure-C facade used by the app: node/project/timeline/viewer/
undo/task/events/serializer/playback/preview/renderer/gizmo/color/
audio/footage/proxy/encoding/exporter/config/disk/ipc/plugin/worker
families, plus undo-group semantics, display renderer handles,
NodeFactory accessors, and per-family pure-C engine tests.
This commit is contained in:
2026-07-26 22:43:00 +08:00
parent c486c853ff
commit e9f173916f
80 changed files with 28715 additions and 126 deletions
+39
View File
@@ -87,6 +87,45 @@ typedef struct OakEngineFrame OakEngineFrame;
*/
typedef struct OakEngineAudioBuffer OakEngineAudioBuffer;
/**
* @brief Set aggressive garbage collection on the render manager
* (RenderManager::set_aggressive_garbage_collection()). Returns
* OAKENGINE_E_STATE when the render manager is not available.
*/
OAKENGINE_API int
oakengine_render_manager_set_aggressive_garbage_collection(int aggressive);
/**
* @brief The render backend that was requested (RenderManager::requested_backend()).
* Returns 0 (k_open_gl) when the render manager is not available.
*/
OAKENGINE_API int oakengine_render_manager_requested_backend(void);
/**
* @brief Convert a render backend enum value to a human-readable string
* (RenderManager::backend_to_string()). buf/size convention. Returns the
* would-be length or a negative error code.
*/
OAKENGINE_API int oakengine_render_manager_backend_to_string(int backend,
char *buf,
int buf_size);
/**
* @brief Set the display color processor on the render manager's cacher.
* `processor` is a borrowed OakEngineColorProcessor handle (NULL to clear).
* Returns OAKENGINE_OK or OAKENGINE_E_STATE.
*/
OAKENGINE_API int oakengine_render_cache_set_display_color_processor(
void *processor);
/**
* @brief Set the multicam node on the render manager's cacher.
* `node` is a borrowed OakEngineNode handle (NULL to clear).
* Returns OAKENGINE_OK or OAKENGINE_E_STATE.
*/
OAKENGINE_API int oakengine_render_cache_set_multicam_node(
OakEngineNode *node);
/**
* @brief Create a renderer for `seq` producing `width`x`height` frames of
* `pixel_format` at the given frame rate.