Effects. Even though C/C++ development is indeed more complex than scripting or writing expressions, we
will learn enough to leverage the sample projects that come with Adobe’s SDKs to create our own vignette
effect. We will delve into 8bit, 16bit and 32bit processing in RGB and YUV color spaces, make our way
through SDK documentation, and even make inroads into GPU processing with CUDA and OpenCL.
Previous C/C++ knowledge is not required, though some experience with any programming or scripting
language will definitely help.
Bart Walczak wears many creative hats - an editor, a vfx artist, a developer. Among other things he's an Adobe Certified Expert in Premiere Pro and an author of a few useful Premiere and After Effects tools that you might already be using without even knowing it. You can find his plug-ins and scripts on his website - www.creativeimpatience.com
Hardware and software requirements for crossplatform development. Installing XCode/ Visual Studio. Downloading Adobe and nVidia SDKs. Setting up testing platform. Compiling a sample plugin to get started, basic debugging. Differences between debug and release versions. A few words about Adobe Technology Program.
C primer: Overall structure of C programs and libraries source code. Compilation, linking and building. Basic syntax. Variable types. Defining and assigning variables. Creating custom types and why it’s important for plugin development. Loops and conditionals. Defining and calling functions. Pointers/references versus values. C memory management.
C++ primer: Difference between C and C++. Classes and objects. Private and public members – methods and properties. Memory management in C++. Macros. Crossplatform development and compiler directives. Modern C++ additions and how using the makes C++ code easier to read and write.
Getting to know Premiere and AE SDKs. What is a plugin anyway? Plugin types. Code organization. Entry function and order of operations. Designing a vignette effect. Understanding and optimizing processing time.
Repurposing template Skeleton project for our vignette plugin. Writing PiPL information. Setting up interface controls. Passing control values to a render function in an optimal manner, rendering the vignette.
Adding a control for vignette centre point, creating transformation matrix and making sure our vignette can be repositioned. Testing our plugin with various aspect ratio and interlaced footage, at various playback resolutions.
Adding 32bit float compatibility for After Effects.
Adding Premiere Pro compatibility for 8bit and 32bit float RGB and YUV processing. Understanding BGRA and VUYA color spaces. Making use of YUV processing to make vignette faster.
Looking into GPU acceleration for Premiere. Limitations of GPU processing and language subset to use. Writing a CUDA core.
Repurposing CUDA core for OpenCL. Finishing touches. Building a release version.
In this course we will tackle the hard core topic of plugin development for Adobe Premiere and Adobe After