Wednesday, June 11, 2008

OpenVIP: The ace under my sleeve

There's been more than one person who doubts that I can do a video editor alone. The complexities of writing a good Video Editor backend are too great for a "newbie" to try on his own.

And they're right. But I'm not writing a backend. I already have one. See?

From the webpage:

OpenVIP is a free video-processing tool for Linux and Windows. It consists of two parts:
  • OpenVIP core, which can be used for processing multimedia files from command line, or as a C++ library linked to other applications.
  • OpenVIP editor, which provides a user-friendly GUI to the core and is based on the timeline concept - you place multimedia files on the timeline, apply filters, transitions, ...
These are the main features of OpenVIP:
  • Supports AVI, DV, MPEG, MOV, MP3, WMA, and WMV formats (via the FFmpeg libraries) as well as sequences of bitmap files (via the ImageMagick library)
  • A lot of nice plugins including colour transformations, geometric distortions, basic sound processing and transitions between two clips
  • A simple interface for developing your own plugins in C++
OpenVIP was designed by a college group as their graduation project. Unfortunately, they couldn't continue their project. That's where I come in. Or should I say we, since there's already a developing team for Saya.

All we're doing is designing a professional user interface around the OpenVIP Video Editor framework. Because the framework is done in C++, designing the frontend is much simpler than starting a video editor from scratch.

The only problem is that OpenVIP is released as GPLv2, while Saya is GPLv3. I've asked the main developer to release the project as GPLv3 so I can add the framework right away. Perhaps his mail got lost, I guess I'll ask again. (Edit: I just got a mail from Antonin Slavik, the OpenVIP project leader. OpenVIP is now GPLv3 or later with linking permission! Road's clear!)

Still... we can't commit the same mistake other developers have by tying themselves to one framework and later realizing it doesn't do what they need. This is why we're making a whole "interface layer" in Saya, so the video processing and playback frameworks can be inserted as plugins. Some things will need to be implemented on our own (or outright stolen from mature frameworks), like threads, mutexes. There's a 90% chance that I'll borrow SFML's system module to deal with this part.

The rest will be a lot easier to handle.

No comments: