Olive - August 2019 Update

Hey there! It's been too long since the last update, but a lot has happened since then. I know many of you are eagerly awaiting a 0.2.0 release, and it's definitely on the way, but in the mean time I'd love to update you guys on progress so far.

Back in May, I wrote about the major design goals of the next release of Olive. These haven't changed, but have required enormous reworking of the backend to accomplish (which has led to much of the time spent these past few months developing). Despite this, I'm incredibly pleased to say that development has been going really well and all major design goals are being reached. It's so exciting seeing these pieces come together into what will hopefully be an incredible video editor. I'm hesitant to promise an exact timeframe just yet, but I think we may see a solid release as we approach the end of the year.

I'd like to share some new stuff in Olive that's already been developed for the next release. Some of these have been mentioned in the Discord, but here I'll formally introduce them all:

Background Tasks

Yes, Olive ran tasks in the background before, but they weren't always very clear to the user (proxy generation - a later feature in 0.1.x - is a prime example of this). From the next release onwards, Olive has a built-in background task structure and visual task manager to allow for any kind of task written from now on to be both transparent to and controllable by users at all times.

Multiple Decoder/Encoder Support

Something that Olive 0.1.x suffered from was a strong reliance on FFmpeg. FFmpeg is a great library, but its deep integration into the old code made it difficult to do things that FFmpeg didn't support. Olive 0.2.x is written to be far more modular and at its core, allows for other decoders (such as OpenImageIO) to be added to Olive easily.

OpenGL ES 3.2 Core Standardization

Olive's use of hardware acceleration is no secret, and it will continue to do so wherever possible, however the old code used a mishmash of mostly obsolete OpenGL APIs that, while fine on most systems, could sometimes cause issues on others. Olive now standardizes around one specification allowing for cleaner and much more standards-compliant code, as well as what should be better compatibility overall.

Node-based Timeline and Rendering Pipeline

This is the big one, and you may remember it being mentioned in the May update.

Olive 0.1.x has what can essentially be called a "fixed pipeline". There is a hardcoded path for retrieving frames from videos and displaying them onto the screen, with a few hardcoded hooks for running any effects that the user has added. This is okay for basic usage, but essentially the user is only "allowed" to do what's been hardcoded in.

Nodes change all of that. Rather than the pipeline being all hardcoded in C++, it's instead constructed completely within the application and open to modification from the user. Anything can be connected anywhere, giving you complete control over what kind of image gets produced (without having to write a single line of code!)

There have been requests for features like luma/alpha mattes over the past few months. This would have required a fair bit of extra code in the 0.1.x pipeline, since there was no existing way for different clips of different media to communicate with each other. Some kind of extra hook would have been needed somewhere just to "allow" this to work.

With nodes, this is dead simple, as you'd simply connect your matte with the source through a luma/alpha matte node. Since the entire pipeline is now in the nodes, there are no limitations and no hooks that need to be written. Whatever you want to do, you won't have to wait for Olive's developers to write in some kind of functionality that "allows" you to do it; the functionality exists merely by you connecting the nodes together.

While still in extremely early development, Olive's node system already works, and its new and improved timeline has just begun and is rapidly developing too. I truly believe this will be worth the wait.

Future: Caching/Rendering Engine

Another major design goal mentioned back in the May update; the last essential piece of the puzzle is an intelligent and performant background rendering engine. This will ensure that your edits play back in realtime at all times, no matter how complex they are. While Olive's performance is often compared favorably to other editing software, the hope is this will push Olive to the next level, making it fast and performant at all times, not just most or some of the time.

Thank you for being here!

I can't thank you all enough for your patience and for continuing to support Olive. I hope to be back in a month with more progress news. I'm so excited to see this software come to life, and I hope you are too!

Tier Benefits
Recent Posts