Bigger Picture

So, XCode-related outbursts aside, here’s a high level view of where we are, and where we’re headed.
Our NAB presence will be (unsurprisingly) all about the Production Studio. Adobe likes suites. If you’re a developer who’s exhibiting at NAB, and you haven’t already been contacted by me or Adobe marketing, please send me information about your booth presence, and what Adobe product(s!) you’ll be running.
I plan to release updated SDKs before NAB. The sample projects will have been updated for Microsoft Visual Studio .NET 2005 and XCode 2.2.1. I’ve added a couple suites to AEGP_SuiteHandler, but the AE-related headers will not have changed. The docs will have undergone only minor changes. I’m pressing ahead with my new InDesign-based “tips ‘n’ tricks” document…wish me luck.
For our position and schedule for releasing Intel-compatible Universal Binaries, see:
As always, feel free to ask me AE-(and-hopefully-API-)related questions.
Oh yes, for more (and better) high-level Adobe and After Effects Marketing Vision, see Steve Kilisky’s blog.

( AE 7.0 + debugging) * (XCode / OS X)

Let me know if you’re having problems; debugging seems reliable for me now.
Kelp: It’s what’s for dinner!
Three Mile Beach, Santa Cruz.

More XCode fun

Perhaps those developer shops with > 1 programmer can benefit from our experience using XCode in a source controlled environment.
– When an XCode project is modified by someone else (i.e. file added, etc), you need to (1) quit XCode, (2) run your source control, (3) re-launch XCode. If you simply close the project but keep XCode running, the changes may not get picked up by XCode. It has a very good memory.
– Some project settings that you might not expect are saved *with* the project file. This includes breakpoints. If you’re making changes to a project, before checking it in make sure to clear *all* your breakpoints before checking-in, otherwise everyone will er… benefit from your settings (hint: this is not a good way to make friends).
You can clear breakpoints using the Debug > Breakpoints window. If you have some difficulties clearing a breakpoint by clicking on it, select the Debug > Remove Breakpoint command. However…
– Breakpoints are *per project*. So, if you (or someone else, see above) set a breakpoint, say, in a core library project, you will not be able to clear it while you are in the client project. How can you tell which project you’re in? When you bring the Breakpoints window up, the title bar of the window will start with the name of the project. Note that this is the case even if the project is closed. To clear a breakpoint set in another project, open that project, then with the project window frontmost, select Debug > Breakpoints. You can now remove those breakpoints (select them in the Group and Files column and press the Delete key).
– Finally, since breakpoints are saved with the project, once you’ve added or removed a breakpoint the project file is now dirty. When closing the project you will be asked if you want to save the changes. Say yes.

Wow, comment spam.

Truly, I have arrived.

‘can’t find entry point’ of plug-ins built w/XCode?

If you’ve tried to port an existing effect plug-in to XCode, you’ve no doubt seen the pedantic “main() must return int” warning. I found a couple gotcha’s when changing the name of the entry point function; fixing these 30 or so times really drove the problem home to me.
First, update the name of your entry point function (duh). Then, change the name of the entry point function specified in your plug-in’s PiPL. While I was there, I stripped out the #ifdef __MACH__ business; the current 7.0 SDK will be the last with CFM sample projects.
Everything builds and links correctly, the plug-in loads, but when it’s applied AE can’t find the entry point? Name mangling.
Remember that CodeWarrior exported the entry point based on project settings. For the sample projects, I’ve gone through and made sure the entry point function was exported (declared) using extern “C”:
extern “C” {
DllExport PF_Err
PF_Cmd cmd,
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output,
void *extra );
Presto! Entry point found.

Gratuitous kid photo

Foreground: (our friend) Jonah, 18 months.
Background: (our son) Noel, 7 years.
Beneath: Your Humble Servant.
On whiteboard but obscured by basketball-sized shaved head: “Papa Rocks!”
Gratuitous kid picture

Terror of the blank page…

Well, all the kids are doing it, so I suppose it’s time the After Effects API has a blog.
Having shipped the 7.0 SDK, I’ve taken some time to pause and reflect upon the state of the API, the SDK, and developing for Adobe. As comfortable as it would be to think I’m right about everything, I’d like to work with the developer community to confirm our vision(s). Or something.

Continue reading…