Skip to content

v0.4.2-alpha

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Jul 14:13
Immutable release. Only release title and notes can be modified.

Oak Video Editor v0.4.2 — Release Notes / 更新说明

主题 / Theme:测试覆盖大扩充与集中 Bug 修复(无 GPU 环境可运行的 gtest)
Test coverage expansion & bug-fix round (headless, GPU-free gtest)


中文版

概览

  • 测试规模:642 → 1,985 个用例(+1,343),新增测试文件 55 个,全部在 offscreen QPA、无 GPU 环境通过,全量 0 失败(56 个为既有 GPU 后端门控跳过)。
  • 修复真实 Bug 70+ 个(其中崩溃/UB 类约 20 个),绝大部分附带锁定回归的测试。
  • 行覆盖率(gcov):音频子系统 64% → 80.3%,节点相关 28% → 69.3%,渲染子系统 23% → 39.9%(剔除 GPU 文件后约 66%),插件 24% → 33.6%

主要 Bug 修复(按类别)

崩溃 / 稳定性

  • AudioPlaybackCache 零填充从未写入(write(const char*) 按 C 字符串截断)且 WriteSilence() 死循环。
  • NodeKeyframe 默认构造函数遗留未初始化指针;Project 在默认 OCIO 配置初始化前构造即段错误;Core::ShowStatusBarMessagePanelManager 单例、ProjectLoadTask、未知图形后端下的 RenderManager 成员、CurveView/SeekableWidget 空解引用等十余处崩溃修复。
  • NodeGroup::GetInputNameDespillNode 无项目上下文、Sequence::GetTrackFromReference、PortAudio 设备索引等空指针/越界防护。

逻辑错误

  • 波形同步:PanNode 关键帧声像被静默忽略、ViewerOutput 音频流 tag 丢失、AudioVisualWaveform 下溢越界读与长度记账错误。
  • 节点:MathNode/TrigonometryNode 组合框与枚举错位、递归移动依赖失效、RemoveAllKeyframes 撤销失效、NodeValueTable::Has 误用位运算、Project::cache_path() 自定义路径分支反转、失败素材探测被永久缓存、富文本半透明色 RGB 丢失、序列预设交错模式丢失、mosaic 单轴匹配失效等。
  • 构建:CMAKE_C_FLAGS 未加引号导致自定义编译标志破坏构建。

资源 / 状态

  • delete_all_keyframes 死循环、TrackList 信号连接泄漏、Renderer::Destroy 颜色缓存资源泄漏、OpacityEffect 内部节点泄漏、磁盘缓存自定义路径失效。

兼容修复

  • 序列化 ID 拼写统一(ChromaKey tolerencetolerance,flip/ripple/swirl/tile/wave 节点 ID 域统一),旧项目文件通过新增的旧 ID 映射钩子照常加载(值与连接均保留)。

CI / 跨平台

  • Windows 路径分隔符导致的测试失败、OCIO 默认配置按需初始化(Windows 套件顺序崩溃)、硬解帧断言按平台区分、图标断言兼容不同 Qt 构建、macOS 上 ViewerSmokeTimer.DifferentTimebases 对调度抖动过敏感。

打包

  • Vulkan 渲染后端现在随所有平台的安装包发布(此前只有 OpenGL 后端 liboakgl):Linux 各包(AppImage/deb/rpm/Arch)启用 Vulkan 构建并随包携带 liboakvulkan(AppImage 同时捆绑 libvulkan,deb/rpm 依赖声明补充 libvulkan1/vulkan-loader);macOS 补充 vulkan-loader 依赖并导出 VULKAN_SDK(此前 Vulkan 后端在 macOS 从未被构建);Windows 原本已包含 oakvulkan.dll
  • libffmpeg_bridge.so 安装位置从非标准的 /usr/ffmpeg_bridge/bin 改为标准的 lib 目录。
  • 构建指南(中英)补充 macOS Vulkan 后端依赖与 VULKAN_SDK 设置。

English Version

Overview

  • Test suite: 642 → 1,985 cases (+1,343) across 55 new test files, all passing headless (offscreen QPA, no GPU) with zero failures (56 pre-existing GPU-gated skips).
  • 70+ real bugs fixed (~20 crash/UB-class), most locked in by regression tests.
  • Line coverage (gcov): audio 64% → 80.3%, node 28% → 69.3%, render 23% → 39.9% (~66% excluding GPU-only files), plugin 24% → 33.6%.

Key Bug Fixes (by category)

Crashes / stability

  • AudioPlaybackCache zero padding never written (write(const char*) truncated at NUL) plus a WriteSilence() infinite loop.
  • Uninitialized NodeKeyframe pointers; Project construction before OCIO default config (segfault); Core::ShowStatusBarMessage, PanelManager singleton, ProjectLoadTask, RenderManager members under unknown backends, CurveView/SeekableWidget derefs — a dozen crash fixes.
  • Null/out-of-range guards for NodeGroup::GetInputName, DespillNode without a project, Sequence::GetTrackFromReference, PortAudio device indices.

Logic errors

  • Sync: PanNode keyframed pan silently dropped, ViewerOutput audio stream tag lost, AudioVisualWaveform unsigned underflow and length bookkeeping.
  • Nodes: MathNode/TrigonometryNode combo/enum misalignment, recursive dependency move, broken RemoveAllKeyframes undo, NodeValueTable::Has bitwise misuse, inverted Project::cache_path() custom branch, failed footage probes cached forever, rich-text alpha color RGB loss, sequence preset interlacing loss, mosaic single-axis skip.
  • Build: unquoted CMAKE_C_FLAGS broke any custom C flags.

Resources / state

  • delete_all_keyframes infinite loop, TrackList signal leak, Renderer::Destroy color-cache leak, OpacityEffect internal node leak, dead custom disk-cache path.

Compatibility

  • Serialized ID typos unified (ChromaKey tolerencetolerance, flip/ripple/swirl/tile/wave node ID domain); old projects keep loading via a new legacy-ID mapping hook (values and connections preserved).

CI / cross-platform

  • Windows path-separator test failure, on-demand OCIO default config (Windows suite-order crash), hardware-decoded frame assertions per platform, icon assertions robust across Qt builds, ViewerSmokeTimer.DifferentTimebases too sensitive to scheduling jitter on macOS.

Packaging

  • The Vulkan render backend now ships in every platform's package (previously only the OpenGL backend liboakgl): Linux packages (AppImage/deb/rpm/Arch) build with Vulkan enabled and bundle liboakvulkan (the AppImage also bundles libvulkan; deb/rpm gain libvulkan1/vulkan-loader dependencies); macOS adds the vulkan-loader dependency and exports VULKAN_SDK (the Vulkan backend was never built on macOS before); Windows already shipped oakvulkan.dll.
  • libffmpeg_bridge.so now installs into the standard lib directory instead of the non-standard /usr/ffmpeg_bridge/bin.
  • Build guides (EN/ZH) document the macOS Vulkan backend dependencies and the VULKAN_SDK variable.