Copy link to clipboard
Copied
Hello. I'm working to make an Exporter Plug-In that supports "Pro CS4" and "Elements 8.0" single binary.
Please give me any advices to complete it. I show you the questions as follows:
Details below.
1st:
I tried PrSDKExportParamSuite::AddParam() with exParamFlag_slider and exParamFlag_optional.
Both cases parameter GUI shows slider with checkbox. Please teach me a method to use simple slider (no checkbox) in parameter GUI.
BTW, Standard plugins are seem to use "Premiere Export Private Statndar Param Suite". Are you planning to publish it?
2nd:
The Premiere Elements 8.0 never shows any additional Exporter Plug-in, including SDK sample (ExporterSDK.prm).
Please tell me if I need special installation procedures.
3rd:
I found that the exExporterInfoRec is difference between 4.0 and 4.2. The exExporterInfoRec[ver. 4.2] is defined in CS4SDK_r1. But I can't find any definition of exExporterInfoRec[ver. 4.0] in the SDK.
An Exporter Plug-In is build with CS4SDK_r1 never work on the Premiere Pro CS4 (4.0) / Media Encoder CS4 (4.0). I need definition of exExporterInfoRec[ver. 4.0] to support CS4 (ver. 4.0).
Thanks.
Hi Kazuhiro-san,
1) This particular bug is a known issue (bug 1925419) in CS4 for exporter plug-ins. Stay tuned for progress on this bug in CS5.
2) For a CS4-style exporter to show up in the Premiere Elements 8 UI, you’ll need to provide a special preset:
The final path of the preset file should be something like <Install_
...Copy link to clipboard
Copied
Hi Kazuhiro-san,
1) This particular bug is a known issue (bug 1925419) in CS4 for exporter plug-ins. Stay tuned for progress on this bug in CS5.
2) For a CS4-style exporter to show up in the Premiere Elements 8 UI, you’ll need to provide a special preset:
The final path of the preset file should be something like <Install_Path>/sharingcenter/Presets/pc/OTHERS/MyCompany/MyPreset.epr
The next time you launch Premiere Elements, the preset will be displayed in the Premiere Elements UI.
3) Exporter plug-ins built with the public CS4 SDK will work with 4.0.1 and later. We recommend for anyone who wants to use 3rd party exporters that they update to 4.0.1 and later. The 4.0.1 is marked as a critical update.
The main breaking change for exporters between 4.0 and 4.0.1 is that the Sequence Render Suite was incremented from version 1 to version 2. If you'd like to use version 1 in 4.0, you can use this definition for RenderVideoFrame:
prSuiteError (*RenderVideoFrame)(
long inVideoRenderID,
PrTime inTime,
SequenceRender_ParamsRec* inRenderParams,
PrRenderCacheType inCacheFlags,
int getNativeCompressedFrame,
SequenceRender_GetFrameReturnRec* getFrameReturn
);
Note that getNativeCompressedFrame was removed because it isn't used. You can just set it to 0.
Copy link to clipboard
Copied
Hi Kazuhiro-san,
We currently do not plan to publicize the Premiere Export Private Standard Param Suite. Hopefully the public suite should be sufficient for your needs.
Also, I can confirm that bug 1925419 has been fixed in CS5. So slider parameters defined by your exporter should behave as expected in the upcoming CS5 release.
Copy link to clipboard
Copied
Hi Kazuhiro-san,
one more hint to get an exporter working under Elements 8.
In the exSelStartup handler you have to return 18 instead of exportReturn_IterateExporter. Unless it has been fixed in an update meanwhile.
Regards from Osaka,
Peter
Copy link to clipboard
Copied
Hi Peter-san
When I created my plug-in for Elements8, I had noticed the plug-in didn't operate.
I used returning exportReturn_ErrNone instead of exportReturn_IterateExporter.
Because I thought that Elements8 did not support exportReturn_IterateExporter.
Why did you decide to return 18 (exportReturn_InternalErrorSilent ??) ?
Regards,
Kengo Mikoshiba.
Copy link to clipboard
Copied
Hi Kengo-san,
I was struggling with same problem that the exporter was not recognized.
The Adobe Elements team told me to change the return value to 18 to solve the problem. Somehow they had messed it up in their implementation so that PE is not CS4 API compatible.
An exporter should always return exportReturn_IterateExporter (or 18 for PE) on the first call. Then on the second call, in case it only represents only one exporter, return exportReturn_IterateExporterDone.
Regards,
Peter
Copy link to clipboard
Copied
Hi Peter-san
> An exporter should always return exportReturn_IterateExporter (or 18 for PE) on the first call.
> Then on the second call, in case it only represents only one exporter, return exportReturn_IterateExporterDone.
I think so, I hope so.
The code that I propose is shown below.
#define isElements( fourcc ) (( fourcc == kAppPremiereElements ) ? ( true ) : ( false ))
#define RETVAL_FOR_ELEMENTS8 (18)
/* Function that is called from exSelStartup */
static prMALError Startup( exportStdParms *sp, exExporterInfoRec *ip )
{
SPBasicSuite *basicsuite = sp->getSPBasicSuite();
PrSDKAppInfoSuite *AppInfoSuite;
long appfourcc;
VersionInfo versioninfo;
basicsuite->AcquireSuite( kPrSDKAppInfoSuite, kPrSDKAppInfoSuiteVersion, (const void **)&AppInfoSuite );
AppInfoSuite->GetAppInfo( AppInfoSuite->kAppInfo_AppFourCC, (long *)&appfourcc );
AppInfoSuite->GetAppInfo( AppInfoSuite->kAppInfo_Version, (long *)&versioninfo );
basicsuite->ReleaseSuite( kPrSDKAppInfoSuite, kPrSDKAppInfoSuiteVersion );
/* check host version if needed */
...
/* decides return value */
r = exportReturn_IterateExporter;
if ( isElements( appfourcc ) ) {
r = RETVAL_FOR_ELEMENTS8;
}
.
.
.
}
Regards,
Kengo Mikoshiba
Copy link to clipboard
Copied
Below is the definition of the return values in Premiere Elements 8. The red values are unique to Premiere Elements 8, and shifted the subsequent return values 2 values higher than their definition in the Premiere Pro SDK.
enum
{
exportReturn_ErrNone = 0, // no error
exportReturn_Abort, // User aborted the compile
exportReturn_Done, // Export finished normally
exportReturn_InternalError,
exportReturn_OutputFormatAccept, // The output format is valid
exportReturn_OutputFormatDecline, // The compile module cannot compile to the output format
exportReturn_OutOfDiskSpace, // Out of disk space error
exportReturn_BufferFull, // The offset into the audio buffer would overflow it
exportReturn_ErrOther, //
exportReturn_ErrMemory, // ran out of memory
exportReturn_ErrFileNotFound, // File not found
exportReturn_ErrTooManyOpenFiles, // Too many open files
exportReturn_ErrPermErr, // Permission violation
exportReturn_ErrOpenErr, // Unable to open the file
exportReturn_ErrInvalidDrive, // Drive isn't valid.
exportReturn_ErrDupFile, // Duplicate Filename
exportReturn_ErrIo, // File io error
exportReturn_ErrInUse, // File is in use
exportReturn_IterateExporter, // Return value from exSelStartup to request Exporter iteration
exportReturn_IterateExporterDone, // Return value from exSelStartup to indicate there are no more Exporters
exportReturn_InternalErrorSilent, /* Silent error code; host application will not display an error message on screen.
Exporters can return this error code from compDoCompile if they wish to
put their own customized error message on screen just before returning
control. */
exportReturn_ErrCodecBadInput, // a video codec refused the input format
exportReturn_ErrLastErrorSet, // the Exporter had an error and set a display string for it using the PrSDKErrorSuite.
exportReturn_ErrLastWarningSet, // the Exporter had an warning and set a display string for it using the PrSDKErrorSuite.
exportReturn_ErrLastInfoSet, // the Exporter has an info string to display and set it using the PrSDKErrorSuite.
exportReturn_ErrExceedsMaxFormatDuration, // the Exporter (or the host) has deemed the duration of the compile to be too large
exportReturn_VideoCodecNeedsActivation, // the current video codec is not activated and cannot be used.
exportReturn_AudioCodecNeedsActivation, // the current audio codec is not activated and cannot be used.
exportReturn_IncompatibleAudioChannelType, // the requested audio channels are not compatible with the source audio
exportReturn_Unsupported = -100 // Unsupported selector
};
Obviously, this wasn't the right way to add these new return values.