Skip to main content
Inspiring
October 21, 2010
Answered

AfterEffects multiprocessor problems

  • October 21, 2010
  • 1 reply
  • 1741 views

My effect works in two passes and uses an averaging technique over a large number of frames in a composition. It stores the results of the first pass (preview) in the sequence data for use in the second (render) pass. There are a few other effects that work this way, such as a motion stablilizer.

This works fine on a single processsor system or when render multiple frames simultaneously is turned off. It seems to work fine in Premiere Pro since I use the flag PF_OutFlag2_PPRO_DO_NOT_CLONE_SEQUENCE_DATA_FOR_RENDER.

Is there a similar flag or method for After Effects?

When I debug my effect on an eight cpu machine, I can see that one thread is used for my effect user interface while the other seven threads are being used for rendering. The other seven seem to have different sequence data (In fact all have different global data), so they cannot use the sequence data that was prepared while previewing.

Is there another way around this problem?

Thanks,

Mike

This topic has been closed for replies.
Correct answer Zac Lam

Zac,

Here's the code I put in my globalSetup...

if ((in_data->appl_id == 'FXTC') && (in_data->version.major == PF_AE90_PLUG_IN_VERSION) && (in_data->version.minor== PF_AE90_PLUG_IN_SUBVERS))

{

// 12.14 means we are running AE CS4

AEGP_PersistentBlobH prefsH;

error = suites.PersistentDataSuite1()->AEGP_GetApplicationBlob(&prefsH);

error = suites.PersistentDataSuite1()->AEGP_SetLong(prefsH, "EffectsCompatability -- Effect MP Compatible 4", "my match name", (A_long)0);

}

It excutes with no errors, but doesn't seem to work. When I do a render on a multi-core machine, I can watch as globalSetup is called again on another thread. I have used AEBP_GetLong to double check and have verified that it is getting set correctly.

Incidentally, I found some strange behavior on startup...

1) Launch AECS4

2) During the AECS4 slash screen, globalSetup is called (strangely) with in_data->appl_id = "PrMr",   what is this all about???

3) AECS4 continues on and displays the recent projects list

4) I click on a project that uses my effect and globalSetup is called again, but this time (correctly) with  in_data->appl_id = "FXTC"

Why does AE call globalSetup with a premiere code? Why does it call globalSetup so early?

Thanks,

Mike


Hi Mike,

If the string "EffectsCompatability -- Effect MP Compatible 4" isn't working, then it's probably just off by a version number.  Have you tried 3 or 5?

After Effects CS4 calls PF_Cmd_GLOBAL_SETUP with appl_id == 'PrMr' because AE loads the MediaCore library, which happens to provide AE plug-in hosting for Premiere Pro/Elements.  If you don't need to know which app you're running it during GLOBAL_SETUP, you can ignore this spurious call.  This was fixed in CS5 so that AE's MediaCore no longer attempts to load AE plug-ins, since those are handled by AE itself.

Regards,

Zac

1 reply

Inspiring
October 21, 2010

Hi Mike,

You’d need to use AEGP calls on PF_Cmd_GLOBAL_SETUP to add a preference. To change it for CS5, you'd do something like this:

AEGP_PersistentBlobH prefsH;
persistentDataSuite->AEGP_GetApplicationBlob(&prefsH);
persistentDataSuite->AEGP_SetLong(prefsH, "EffectsCompatability -- Effect MP Compatible 6", “Your Plugin MatchName”, 0);

This will create something like this in the AE prefs file:

["EffectsCompatability -- Effect MP Compatible 6"]
                 "0-Default For New Entries" = "1"
                 "Your plugin match name" = "0"

This key has been known to change.  For example, in CS4, it was "EffectsCompatability -- Effect MP Compatible 4".  In CS3, I believe it was just "EffectsCompatability -- Effect MP Compatible"

Regards,

Zac

tlapseAuthor
Inspiring
October 26, 2010

Zac,

Thanks for the tip, it worked like a charm in CS5.

But, it's not working for me in CS4. Are those keys documented anywhere?

-Mike

Inspiring
October 26, 2010

Hi Mike,

No, their not currently documented.  Did you try the "EffectsCompatability -- Effect MP Compatible 4" string for CS4?

Regards,

Zac