A Plea For Help – Get GPU Acceleration Faster!

campaign_small_2

Update: I lowered the licensing prices in the contribution page, so if the amount was an issue for you, please take another look.

We would all like to have the GPU versions for the plugins as soon as possible. It so happens, that Adobe organizes event for developers in Seattle, right before the After Effects World conference, where the development of these things will be discussed.

Ordinarily I would attempt to reach the event by myself. However, recent circumstances in my life made it financially impossible to do it – my current contract ends in November, and I have no alternative in my sights yet. This is why I am asking for your help.

The event (The Developer’s Kitchen) is going to allow me to learn best practices, and to pick the brains of Adobe Team right at the source. The result will be that I will become more effective at this type of work, and will be able to produce better results more frequently. By helping me to get to Seattle, you will help yourself and others to get the stable GPU-accelerated versions earlier.

I already have a US visa. I need a ticket to Seattle and a bit of change to stay there for two days, and move around. The ticket costs about $1800-$2000, depending on the airline. It would be significantly cheaper (less than $1000) if I could stay for longer than a week, but my present contract does not allow for that. I need to choose the more expensive route.

If the goal is not reached, the money is not wasted, the development will just take longer, and will not be as optimized, as it could be, if I could pick the brains of Adobe team at its core. Depending on the amount collected, the money will either go for hardware updates, so that I can test the software on the latest OS (I’m currently locked in 10.7.5 without ability to upgrade), or supporting the life of me and my family in this tight times. The development will commence regardless, it will just take longer.

Please, help me with this project. If you can’t spare anything, please at least spread the word. The time is very short, and I need to decide fast, if I can go or not. The campaign page is located at the IndieGoGo website – Kickstarter only accepts US, UK, and Canada residents.

The Day I Dreamt About Has Come

dream-fi

My current daily job requires producing about 50-60 minutes of content per month of something that roughly falls into mostly unscripted reality show. Within 30 days we have to prepare the final edit, sound mix, including voice over and music, motion graphics, any potential VFX shots, mostly cleanups, and finally some rudimentary grade and DVD authoring. The time is precious, and short. And sometimes changes have to be introduced a day before, or even on the mastering day.

see more

Adobe Media Encoder Grows Up

ame-fi

Adobe revealed today, that Adobe Media Encoder will receive a few very worthwhile updates, including long awaited GPU acceleration, direct implementation of Premiere Pro engine, and a number of new features. There are two, which are of special interest to me: the so-called mini-pipe – adding new effects such as image overlay, timecode burn-in, or a given SpeedGrade look – and the ability to import FCP XML sequences without the need to pass them through Adobe Premiere. Both have potentially important workflow considerations in the long run.
see more

Exploring Temperature and Tint

temperature-feature

When dealing with footage which was shot at improper white balance, and trying to correct it, I sometimes wished that Premiere had the temperature slider present in Camera Raw or in SpeedGrade. When a friend expressed similar concern, I decided to take my shot at it. After all, it should be relatively simple, right? It’s only moving the pixels towards blue or orange, and in the case of tint, towards magenta or green.

I even found a sample approximate algorithm to calculate the white point at a given temperature, and almost ended up using it. However, after reading on how the proper mixing requires conversion to HSL colorspace due to change in luma value of each pixel, I decided to explore the issue in more detail. It turns out, like with many other issues, that there are differences on what “temperature” exactly means in various software packages. Consider the following images:

original

Original image.

camera-raw-temperature

Camera Raw/Lightroom temperature adjustment set to -100. The image is brighter, and the tint is much stronger, washing out the shadows.

speedgrade-temperature

SpeedGrade’s temperature adjustment at -1.0 (equivalent of -100). The shadows are not washed out, although the image is darker due to clipped blue channel.

Clearly, Camera Raw is brightening the image, and almost looks like it is trying to mix the blue or orange solids with the picture. Perhaps similarly to what Tanner Helland described in the comments to his algorithm, but without the attempt to retain luminance. I find this adjustment not so great, especially for images with rich shadows that get washed out in the process.

On the other hand, the blacks in SpeedGrade are untouched, and it seems that the temperature/tint sliders operate only as gain adjustments, multiplying red and blue (temperature) or all three (tint) channels at the same time by roughly the same amount, and leaving the luma mostly intact except for the places, where the blue channel is clipped.

I even explored playing with gamma on the a and b channels in Photoshop L*ab color space, which directly code the interesting information (a is the tint scale, b is the temperature scale), but these were also not as satisfying as SpeedGrade’s. In the end, I decided to stick with the color correction software.

I experimented for a moment with the formulas and values, but in the end, I turned to Nuke to find how it resolves the issue, because it does provide an immediate numerical output. Finding out the exact adjustments was quite easy. Using grade and expression nodes I was able to mimic what Nuke was doing during temperature or tint adjustments, and came up with very simple formulas.

nuke

A very simple setup in Nuke allows to find the proper formula for handling temperature and tint adjustments to mimic SpeedGrade’s controls.

Implementing them as a plug-in for Premiere was relatively uncomplicated, and took me less time than writing the documentation for it. In fact, I was also able to successfully tackle OpenCL acceleration as well, but this will be incoming in the paid version some time in August.