General Info about the quartz and Imaging library for RunRev.
Since the release of rev Studio 2.7 we have been using these processes with in runrev. Over the past years we added many newer processes to expand what kind of graphic processes can be done. Many of the additions where for support to allow a certain kind of operation. This Library is used by us for our direct needs. This means not everything may not be supported by it, that one would expect to be.
Many of the additions included stuff that work only as support for an operation we wanted to do.
One such example of support additions to this Library is processing Video with transitions and effect filtering.
When using Core Image, Extreme Quartz and even limited openGL with an video clip the audio of the file is removed in the process. To keep the audio layer of the video it needs to be extracted from the video and stored in temporary data during the graphic processes operation. Afterwards the audio is merged back into the video container after the graphic process is finished.
This made us need to add support for QuickTime and Core Audio necessary in a limited way. While we are not looking to support a full quicktime library one because it off track of what this library is designed for and two Blue Mango has already made a very good QuickTime External for Revolution. We just added the necessary elements of quicktime that support video effect processing. Such QuickTime elements are items like extracting, merging media, flattening and encoding. All necessary when adding and merging core Image, Quartz and openGL effects to video.
While QuickTime is really just a container of layered media. If such media is not flattened specially with use of QuickTime X found in OSX 10.6 or later, the file can appear corrupted when certain media is layered. We had to add a flatten Quicktime media operation to support future media processing.
What this library really designed for is graphic processing. Processing of media in both Imaging and video. But it also can support other things than that, but those where all designed to be support related additions for graphic processing.
This Library started off back a long time ago as an in-house private thing. I can not remember what year, it was when revolution version 2.7 was released when we began it’s use and development. It was all about processing images with Core Image. As newer and easier ways presented it self with the use of quartz and even quartz composer. We moved to using that as it much easier and is also natively and 100% supported by Apple, since 10.5 Leopard. Apple’s own built apps use it (qc), so we can to.
The effects that can be used are default Apple built or custom made either by you or ones we made. We made many of them, for many applications. Here just a few examples of Applications or operations that this library can do.
The library can handle the process of custom additions. There some simple properties that need to be set, but it there for use.
Image Processing , That includes adjustments,color modes, watermarks, toning, effects, transformations and more.
Video Processing , Effects, Transitions, keying, titles, overlays. (think of everything you do with final cut pro besides the actually editing of the film. Like Motion, live type, color and effects. That is all possible to certain level. Much of that will rely on your own custom quartz stuff. We have video keying done, but it not included in this library. Our video keying addition can be had as a paid add on . For revolution or an x-code cocoa based development.)
Slideshows, Take images and make movie slide shows and even add audio and effects. (This really just an combo of a video and image processes.)
Animation and openGL merged to video or as a still image. This is limited as it not 100% supported openGL as one would think of openGL running a game pre say but more of a rendering of openGL processes. Actually Quartz and Core Image is a form of openGL.
We also made image processes that we did all by math, so they can be used with all platforms revolution support. Many of such is limited to a few items. This will included aspect ratios, scaling and some image data operations like black and white, blurring and thresholding. There really many ways these can be done. Chipp Walter’s had some great examples of using matrix mathematics for years, on his web site. Also the Gimp project, Adobe Labs and Mathematica show how this can be done, which is supported in revolution by using math operations. We have some of that built in.
I also added some limited conversion of binary data. That does allow and import to conversion method of formats to and from revolution supported formats. It works pretty good for allowing the end product to support more formats to your user.
Much of the library is management.
These processes can become memory hogs, so garbage collecting and flushing is needed. Over the years we have tried to get this to work as efficient as possible by flushing garbage often.
Things that can be include in management are history, which will work much like adobe photoshop history palette.
Added functions built in to simply return and display an UI layers palette just as the one found in photoshop. This is all 100% rev Talk.
With the addition of Custom Controls and Behaviors in Revolution now it possible to have pre made widgets that do just that (just like how data grids where made).
Most of my library yet includes all these custom controls, but we have started making them for the idea of making them available to the rest of rev developers. Many still need to be 100% tested. But they are coming down the road. And will work with behaviors not from libraries.