Lightworks for Linux: The Developer's Story

Written by Rob Fearnside

EditshareLucy, the Lightworks Shark

Lightworks for Linux is approaching its public testing phase. Lead Developer Rob Fearnside answers our questions about how it got to this stage


When did you decide to make the majority of Lightworks' code OS
 independent and what was your approach to doing this?

The Lightworks codebase is quite large - close to a million lines of code altogether - and some of it has been in existence for nearly twenty years.  When we started the move to make it cross-platform eighteen months ago, we were faced with a number of challenges : How do you rewrite that much code in a sensible timeframe? How do you keep shipping Windows builds whilst the work is underway? Our solution was to avoid rewriting the Windows-specific code at all (it was, after all, tried, tested and optimized). Instead, we decided to move it to a new operating-system dependent layer which we engineered to have an OS independent interface.  Once this was complete, we were then able to begin work on a Linux implementation of that same layer.  In essence, the Lightworks code is now split in two - the OS-independent code (eg. editing, play-engine, etc) which uses the OS-dependent code (eg. file access, threading, etc).

What percentage of the code is now OS independent?

The OS independent code accounts for about 97% of the total codebase.  The bulk of the work in porting to Linux was actually in re-engineering the existing code, not in writing the Linux-specific layer.

What was the hardest thing about porting to Linux?

In order to get the very best performance, Lightworks' Windows layer uses Direct3D for all the video scaling, effects and colour-space conversion.  Linux of course doesn't have Direct3D, so we had to reimplement all the Linux GPU specific code using OpenGL.  The multi-threaded nature of the Lightworks software made some of the OpenGL support difficult to write.  In particular, updating video/playback images from a non-ui thread was a real challenge, and for a while I wasn't sure it was even possible, but after much head scratching, we found a solution that worked.

How happy are you now with the results?

The initial goal with the Linux version was to try to make it as similar to the Windows version as possible. Now, if you run the two versions side by side, it's extremely difficult to tell them apart, so in that sense, I'm very pleased with the results.  Additionally, because we went through the process of splitting the code into OS dependent and independent pieces, we've ended up with a cleaner, more maintainable codebase which will benefit all of our future development across all platforms
.

Tags: Technology

Comments

Related Articles

27 April, 2020

Maxon Cinema 4D S22 first release from the new subscription model

Maxon has updated Cinema 4D, the company's acclaimed VFX, 3D modelling, animation and rendering software, to version S22. This is the first release...

Read Story

27 April, 2020

LaCie Rugged drives are the perfect storage you need when going gets really tough [Sponsored]

There can't be many more extreme environments to be in than the Arctic tundra during a full white out blizzard. This is the sort of environment that...

Read Story

16 April, 2020

Mac Pro Gains Radeon Pro W5700X Graphics Card Option

Apple has finally added a more affordable and powerful GPU option... the AMD Radeon Pro W5700X

Read Story