Files
oak-editor/docs/zh
Mike-Solar fec6e9dba7 render: the M3 OFX host — one oak-worker --ofx-host process for every plugin job
docs/zh/plans/render-pipeline-threads.md M3 (design 3.2): OpenFX crash
isolation moves from "every worker hosts plugins" to a single dedicated
host process, served over NDJSON + shared memory.

- oak-worker --ofx-host mode (src/ofx_host.rs): loads every plugin once,
  resolves jobs by the cross-process-stable OFX identifier, and renders
  through the same in-process executor the workers used to install.
- oak-render/ofxhost.rs: the single-host client. The render manager
  creates and installs it for the Pipeline backend (lazy spawn on the
  first plugin job); eval::process_plugin_job prefers it and falls back
  to the in-process executor otherwise, so the process backend keeps its
  current behavior until M4.
- Data plane: input/output FrameSlotPool pairs (the handshake's input_*
  fields are used for the first time). Named clips and the source frame
  are written to input slots after the explicit CPU readback; the plugin
  output returns through an output slot. Pool size/capacity grow by a
  host restart when a job needs more (safe: submissions are serialized
  and one job is in flight).
- Crash loop: reader EOF fails the in-flight submit, which respawns the
  host and re-posts the same job (frames are read back once); after three
  consecutive crashes the client is permanently dead and the evaluator
  falls back to a purple frame. The dead child is reaped immediately, and
  a submit mutex enforces the one-job-in-flight contract.
- Progress/cancel: the host flushes plugin_progress immediately (live
  progress), and reads stdin on its own thread so plugin_cancel takes
  effect mid-render at the plugin's next progressUpdate; the sticky flag
  resets at progressStart and request_plugin_cancel_all broadcasts to
  both the worker pool and the host.
- JobSpec::Plugin / PluginJobPayload carry the plugin type_id (stable
  across processes); `--ofx-crash-once` / `--ofx-crash-always` are the
  deterministic crash hooks, matching the worker's env hooks.
- Tests: wire round-trips; host unit tests (crash budget, cancel-flag
  reset through the factory, source mapping); oak-worker integration
  tests against the real host + bundled test plugin (render + progress,
  crash respawn and re-post, three-crash give-up, mid-render cancel on
  the new slow variant, concurrent submits); eval's purple fallback.
2026-09-12 23:10:43 +08:00
..
2026-01-05 16:22:26 +08:00

home, title, heroImage, heroText, heroFullScreen, tagline, actions, features, footer
home title heroImage heroText heroFullScreen tagline actions features footer
true Oak 视频编辑器 /images/oak-icon.png Oak 视频编辑器 false 现代开源的非线性剪辑器,强调速度与清晰度。
text link type
阅读文档 /zh/build.html primary
text link type
查看工程文件 /zh/project-file-reference.html secondary
title details
快速剪辑 响应式时间线、智能缓存与高效媒体管理。
title details
面向创作者 简洁界面、可配置快捷键与清晰的工程结构。
title details
开源透明 公开开发流程,欢迎社区参与。
Copyright © Oak Video Editor

关于 Oak

Oak 视频编辑器是 Olive 的重命名分支,目标是打造更完善、更友好的剪辑体验。本网站提供构建说明、工程文件参考与测试计划等贡献者文档。

快速开始

  • 按《构建指南》在 Windows/macOS/Linux 上从源码构建。
  • 在《工程文件参考》了解项目数据结构。
  • 在《工程存储架构》了解数据库写穿持久化与持久撤销历史。
  • 按《测试计划》确保发布质量。

下载

v0.4.0

路线图

版本 主题 核心交付物 边界说明
0.3(当前) 插件架构里程碑 OpenFX 宿主支持完整可用 不追求插件数量,追求"任意 OFX 插件加载不崩溃"
0.4 调色、音频与性能 .cube/.3dl 支持、示波器(波形/矢量/直方图)、三向色轮面板、波形自动同步(双系统录音对齐)、BWF 时间码同步、音频表(LUFS/VU)、代理媒体工作流、硬件加速导出(NVENC/VideoToolbox)、批量渲染队列 合并原 0.4-0.6 范围,集中解决调色工作流、音频同步和 4K/8K 可用性
0.5 动画、跟踪与协作 贝塞尔关键帧曲线编辑器、基础点跟踪、画面稳定器、完整 Multicam 角度切换、OpenTimelineIO、EDL/XML 导入导出 合并原 0.7-0.8 范围,集中处理时间线高级能力和外部工具交接
0.6 稳定性里程碑 项目文件格式冻结(向后兼容承诺)、崩溃恢复、Autosave、内存优化 1.0 前的"封版"测试期
1.0 生产就绪 文档完整、安装包、已知问题清单、社区支持渠道 宣告"可用于严肃项目"