Copy link to clipboard
Copied
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
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 long
...Copy link to clipboard
Copied
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
Copy link to clipboard
Copied
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
Copy link to clipboard
Copied
Hi Mike,
No, their not currently documented. Did you try the "EffectsCompatability -- Effect MP Compatible 4" string for CS4?
Regards,
Zac
Copy link to clipboard
Copied
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
Copy link to clipboard
Copied
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
Copy link to clipboard
Copied
Effect MP Compatible 5 worked with CS4
Thanks