Lightworks 是一款高端非线性视频编辑器,正接近其 Linux 版本的公开测试阶段。首席开发者 Rob Fearnside 回答了 Red Shark News 关于如何达到这个阶段的问题。
编者注:Lightworks 走向开源的意图 似乎已被放弃。它仍然是跨平台视频编辑的免费选项,但对于开源视频编辑选项,请阅读我们的 视频编辑状态报告。
您是什么时候决定将 Lightworks 的大部分代码设为操作系统独立的?您是如何做到这一点的?
Lightworks 的代码库相当庞大——总共接近一百万行代码——其中一些代码已经存在了近二十年。当我们 18 个月前开始将其迁移到跨平台时,我们面临着许多挑战,包括
- 如何在合理的时间范围内重写如此多的代码
- 在工作进行中,如何继续发布 Windows 版本?
我们的解决方案是完全避免重写特定于 Windows 的代码(毕竟,它是经过尝试、测试和优化的)。相反,我们决定将其移动到一个新的操作系统相关层,我们将其设计为具有操作系统独立的接口。一旦完成,我们就可以开始着手实现该层的 Linux 版本。本质上,Lightworks 代码现在分为两部分——操作系统独立的代码(例如,编辑、播放引擎等),它使用操作系统相关的代码(例如,文件访问、线程等)。
现在有多少百分比的代码是操作系统独立的?
操作系统独立的代码约占总代码库的 97%。移植到 Linux 的大部分工作实际上是在重新设计现有代码,而不是编写特定于 Linux 的层。
移植到 Linux 最困难的事情是什么?
为了获得最佳性能,Lightworks 的 Windows 层对所有视频缩放、效果和色彩空间转换都使用了 Direct3D。Linux 当然没有 Direct3D,因此我们不得不使用 OpenGL 重新实现所有 Linux GPU 特定的代码。Lightworks 软件的多线程特性使一些 OpenGL 支持难以编写。特别是,从非 UI 线程更新视频/播放图像是一个真正的挑战,有一段时间我不确定这是否可能,但在经过多次挠头之后,我们找到了一个有效的解决方案。
您现在对结果感到满意吗?
Linux 版本的最初目标是尝试使其尽可能与 Windows 版本相似。现在,如果您并排运行这两个版本,则非常难以区分它们,因此从这个意义上说,我对结果非常满意。此外,由于我们经历了将代码拆分为操作系统相关和独立部分的流程,我们最终得到了一个更清晰、更易于维护的代码库,这将有利于我们未来在所有平台上的开发。
最初发布于 Red Shark News。经许可转载。
13 条评论