Skip navigation
Currently Being Moderated

CS5 SDK + AME CS4 = Crash from bad memorySuite

Feb 25, 2011 9:54 AM

Hi all,

I compiled the CS5 SDK_Exporter example and only changed one thing:

     1:     the build from x64 to x86     (because I'm on Win7 32bit with CS4 Production Premium)

 

     BTW the enviroment variable $(PREMSDKBUILDPATH) is set to points to

          C:\Program Files\Adobe\Adobe Premiere Pro CS4\Plug-ins\Common\SDK

 

Then I started to debug the debug|x86 build and invoked it by running AME by setting the Debugging->Command argument to

 

          C:\Program Files\Adobe\Adobe Media Encoder CS4\Adobe Media Encoder.exe

 

When I run it, add a video and then change the exporter to "SDK File" it then calls the exSDKBeginInstance( )

 

prMALError exSDKBeginInstance (

exportStdParms *stdParmsP,

exExporterInstanceRec *instanceRecP)

{

prMALError result = malNoError;

SPErr spError = kSPNoError;

ExportSettings *mySettings;

PrSDKMemoryManagerSuite *memorySuite;

 

int exportSettingsSize = sizeof(ExportSettings);

SPBasicSuite *spBasic = stdParmsP->getSPBasicSuite();

if (spBasic != NULL)

{

spError = spBasic->AcquireSuite(

kPrSDKMemoryManagerSuite,

kPrSDKMemoryManagerSuiteVersion,

const_cast<const void**>(reinterpret_cast<void**>(&memorySuite)));         <<<<<<------ THIS memoryStuite isn't set

 

>>>>> THUS THE NEXT LINE CRASHES BECAUSE memorySuite==0

 

mySettings = reinterpret_cast<ExportSettings *>(memorySuite->NewPtrClear(exportSettingsSize));

 

Why is using the CS5 headers breaking the CS4 applications?

 
Replies
  • Currently Being Moderated
    Feb 28, 2011 4:49 PM   in reply to Rallymax

    Hi there,

     

    In this case, the Memory Manager Suite was revised for CS5, and the version number was bumped to 3.  kPrSDKMemoryManagerSuiteVersion is defined as 3, so when you try to acquire the suite using that version, it will succeed in CS5, but fail in CS4 because it didn't exist yet.  Version 2 should still be supported, so and exporter running in either CS4 or CS5 can acquire version 2, and use the PrSDKMemoryManagerSuiteV2 struct definitions instead.

     

    Regards,

     

    Zac

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2011 12:19 PM   in reply to Rallymax

    Hi E,

     

    I'll add some notes to the documentation to explain more about suite versioning.

     

    The checkbox issue is fixed in CS5.  My suggestion was to try creating the presets in CS5, and use them in CS4, to see if that by any chance helps in CS4.  But looking at the code, I don't think that will work for CS4.  Sorry.

     

    Regards,

     

    Zac

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 24, 2011 11:08 AM   in reply to Rallymax

    I just tried this using the SDK exporter sample from the CS5 SDK with AME CS4.  v2 works for me.  Here's the code:

     

    PrSDKMemoryManagerSuiteV2    *memorySuite;

    SPBasicSuite            *spBasic            = stdParmsP->getSPBasicSuite();
    if (spBasic != NULL)
    {
        spError = spBasic->AcquireSuite(
            kPrSDKMemoryManagerSuite,
            kPrSDKMemoryManagerSuiteVersion2,
            const_cast<const void**>(reinterpret_cast<void**>(&memorySuite)));

    }

     

    As mentioned before, v3 isn't going to work because it didn't exist yet in CS4.  I'm curious why v2 isn't working for you though.  But it doesn't seem to be a problem with the CS5 SDK itself.  What exact version of AME CS4 do you happen to be testing with?

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points