Tuesday, 21 October 2014

An open source movie format for video and film production : a review

An open source movie format for video and film production

San Francisco, California, United States Technology

Let's create a movie format that addresses all the needs of professional users, now and into the future. MOX will use existing open source technology to create a new file format that is:
MOX will store audio and video using lossless and near-lossless compression, allowing users to maintain quality when moving media between applications. It will support high sampling rates, bit depths, and frame sizes, and hold all relevant metadata such as color space and timecode.
MOX will read and play consistently on Mac, Windows, Linux, or any other platform. This is because MOX will be an open format, based on open standards. It will include an open source C++ library, ensuring that any program will be able to easily support MOX files, now and forever.
As a movie format, MOX will store audio and video together. It will leverage technology used in existing audio-only and still-image formats to make the first professional movie format that is open source and patent-free.

The Problem with Existing Formats
There are already movie formats aimed at professional users, but they each fall short in one way or another. Some are not cross-platform, making them difficult to hand off to colleagues. Others do not support key features like higher bit depths and lossless compression. Few have well-designed APIs so that applications can take full advantage of them. Most require developers to pay licensing fees.
The source of these failings is that the formats are not open. Controlled by video software companies, their inner workings are shrouded in mystery. If users need the format to add a new feature or support a different operating system, it is entirely at the company's discretion to do so.
Compare this to an open format like JPEG, which can be read by any program on any device. Or see how OpenEXR has evolved to add features for today's visual effects artists. There's no reason we can't have the same freedom with a movie format.

What We're Planning to Do
Good news! The core technologies we need have already been developed and released as open source. All that's left to do is corral them together into a cohesive format that's easy to use. Specifically, we need to:

Create a specification for MOX

Write an open source software library

Write open source plug-ins for popular video apps

The initial release will require some dedicated programming work, followed by years of part-time developer support and maintenance.

Funding Goals
The MOX software will be free to use, but it will not be free to create. A programmer (me!) will need to work on it full-time for several months. Programmer time will consume 100% of the MOX budget.
The average salary for a software developer in San Francisco is $1,800 per week. Working for half that rate, $20,000 pays for about six months of development time.
The primary $20,000 goal will allow me to create the spec, open source library, and write an Adobe Premiere plug-in. At this point, any application will be able to support MOX easily, and will have working code demonstrating how to do so.
But if we can write more plug-ins, that will only speed up the adoption of MOX. The more money is raised, the more software can be created, so we have some stretch goals:

$20,000: Adobe Premiere plug-in (primary goal, also works in Media Encoder)
$25,000: Adobe After Effects plug-in

$30,000: Nuke plug-in
And should those goals be met, we have no shortage of additional stretch goals ready to be revealed.

Technical Details
MOX is going to use the MXF container (SMPTE 377M) to hold a specific list of open source, patent-free audio and video codecs. Many of the video codecs will actually be embedded frame sequences, allowing frames to be copied in and out of a MOX as if it were a Zip file.
Video formats will be Dirac, OpenEXR, DPX, PNG, and JPEG. The sum total of these codecs means that MOX will be able to store video at 8-, 10-, 12-, and 16-bit integer, as well as 16- and 32-bit floating point. Each bit depth will have both lossless and lossy compression options.
Audio codecs will be FLAC, Opus, and raw PCM to do lossy and lossless audio compression at 8-, 16-, 24-, and 32-bit.
Both audio and video will support any number of channels. Depending on the codec, this means that multiple compressed video streams may be present in a MOX, allowing for alpha channels, Z-depth, stereo views, etc.
MOX will support file-wide and frame-specific metadata. Color space metadata can include ICC profiles, named color spaces like Rec. 709, gamma & chromaticityvalues, OpenColorIO configuration information, and embedded LUTs. MOX will clearly differentiate between importing pixels in their native format and viewingpixels, which may involve a display transform.
The open source library and plug-ins will be programmed in C++, hosted on GitHub, and available under the permissive BSD license, allowing commercial and non-commercial software programs to use them freely.

Other Ways to Help
Spread the word! Send an email to the other video and film professionals you know. This project is for them.
And tell companies that make the software you use that you want them to support MOX! Many programs do not have plug-in architectures so we can't do it for them, even if we had the resources to do so.

About the Author
I got my start in visual effects working for The Orphanage, doing matchmoving on Jeepers Creepers II (23% on Rotten Tomatoes!). While at The O I worked on a number of films and commercials, my personal favorite being Sin City. Somewhere along the way I learned to write plug-ins, one of the first being eLin, a system for doing linear compositing inside 16-bit After Effects.
Since The Orphanage, I've written a number of other plug-ins, many of them offered for free on my website and blog. In 2007 I released the ProEXR package, which provides full OpenEXR support in Photoshop, After Effects, and Premiere. The AE plug-ins have shipped with After Effects since 2008, and the code for them is freely available up on GitHub. I'm even in the AE credits!

Other open source projects include an OpenColorIO plug-in for After Effects, and a tool for DCI color space conversion. More recently I've worked on Theora and WebMplug-ins, which made me realize that all the necessary pieces for MOX were finally in place.

No comments:

Post a Comment