AAFA Developer Support

Public Member Functions
IAAFPlugin Interface Reference

The AAFPlugin interface describes the calls of a plugin. More...

List of all members.

Public Member Functions

HRESULT CountDefinitions ([out] aafUInt32 *pDefCount)
 This method returns the number of subclasses of AAFDefObject associated with this plugin,.
HRESULT GetIndexedDefinitionID ([in] aafUInt32 index,[out] aafUID_t *pPluginID)
 This method returns the unique ID of the AAFDefObject associated with this Plugin.
HRESULT GetPluginDescriptorID ([out] aafUID_t *pPluginID)
 This method returns the unique ID of the AAFPluginDescriptor associated with this Plugin.
HRESULT GetIndexedDefinitionObject ([in] aafUInt32 index,[in] IAAFDictionary *pDictionary,[out] IAAFDefObject **pDefObject)
 This method manufactures a definition object of the correct class for this plugin, and fills in the values.
HRESULT CreateDescriptor ([in] IAAFDictionary *pDictionary,[out] IAAFPluginDef **pPluginDef)
 This method manufactures a plugin descriptor of the correct class for this plugin, and fills in the values.

Detailed Description

The AAFPlugin interface describes the calls of a plugin.

The AAFPluginManager keeps a copy of each plugin in a table, along with cached copies of pertinant metadata about the plugin, and instantiates a copy of the plugin.

Definition at line 4076 of file AAFPlugin.idl.


Member Function Documentation

HRESULT IAAFPlugin::CountDefinitions ( [out] aafUInt32 *  pDefCount)

This method returns the number of subclasses of AAFDefObject associated with this plugin,.

and will be called once at startup by the plugin manager. A non-zero index is used when a single piece of code implements more than one definition, which is not to be confused with multiple plugin interfaces existing in a single plugin file. An example where an index other than one would be useful is an interpolator which implements multiple types of interpolation (ex. linear, constant, etc...), but has one entry point for all types. Codecs will have only one definition per interface, but may have many interfaces clumped together into a single file. If this method fails nothing will be written to *pDefCount.

This method will return the following codes. If more than one of the listed errors is in effect, it will return the first one encountered in the order given below:

AAFRESULT_SUCCESS

  • succeeded. (This is the only code indicating success.)

AAFRESULT_NULL_PARAM

  • pDefCount arg is NULL.
Parameters:
pDefCount[out] The number of definitions associated with this plugin
HRESULT IAAFPlugin::CreateDescriptor ( [in] IAAFDictionary pDictionary,
[out] IAAFPluginDef **  pPluginDef 
)

This method manufactures a plugin descriptor of the correct class for this plugin, and fills in the values.

You must call QueryInterface on the result in order to find the corret interface. The dictionary supplied should be for the file where the descriptor will go, but the descriptor will not be added to the file by this function. The supplied dictionary also needs no former knowledge of the new descriptor. This function will be called by the plugin manager in order to add the correct plugin descriptors to a file.

Succeeds if all of the following are true:

  • the pPluginDef pointer is valid.

If this method fails nothing will be written to *pPluginDef.

This method will return the following codes. If more than one of the listed errors is in effect, it will return the first one encountered in the order given below:

AAFRESULT_SUCCESS

  • succeeded. (This is the only code indicating success.)

AAFRESULT_NULL_PARAM

  • pPluginDef arg is NULL.
Parameters:
pDictionary[in] The dictionary to use when creating the descriptor
pPluginDef[out] The interface of the pluggable definition
HRESULT IAAFPlugin::GetIndexedDefinitionID ( [in] aafUInt32  index,
[out] aafUID_t *  pPluginID 
)

This method returns the unique ID of the AAFDefObject associated with this Plugin.

This range of indices will be from 0 to one less than the total number of codecs, operation groups, classes, types, containers, etc.. implemented by this plugin. A non-zero index is used when a single piece of code implements more than one definition, which is not to be confused with multiple plugin interfaces existing in a single plugin file. An example where an index other than one would be useful is an interpolator which implements multiple types of interpolation (ex. linear, constant, etc...), but has one entry point for all types. Codecs will have only one definition per interface, but may have many interfaces clumped together into a single file. Succeeds if all of the following are true:

  • the pPluginID pointer is valid.
  • Index is within range.

If this method fails nothing will be written to *pPluginID.

This method will return the following codes. If more than one of the listed errors is in effect, it will return the first one encountered in the order given below:

AAFRESULT_SUCCESS

  • succeeded. (This is the only code indicating success.)

AAFRESULT_NULL_PARAM

  • pPluginID arg is NULL.

AAFRESULT_INDEX_RANGE

  • The index value is out of range
Parameters:
index[in] An index from 0 to the number of definitions - 1
pPluginID[out] The unique media object id
HRESULT IAAFPlugin::GetIndexedDefinitionObject ( [in] aafUInt32  index,
[in] IAAFDictionary pDictionary,
[out] IAAFDefObject **  pDefObject 
)

This method manufactures a definition object of the correct class for this plugin, and fills in the values.

You must call QueryInterface on the result in order to find the correct interface. The dictionary supplied should be for the file where the definition will go, but the definition will not be added to the file by this function. The supplied dictionary also needs no former knowledge of the new definition. This function will be called by the plugin manager in order to add the correct definition objects to a file. A non-zero index is used when a single piece of code implements more than one definition, which is not to be confused with multiple plugin interfaces existing in a single plugin file. An example where an index other than one would be useful is an interpolator which implements multiple types of interpolation (ex. linear, constant, etc...), but has one entry point for all types. Codecs will have only one definition per interface, but may have many interfaces clumped together into a single file. Succeeds if all of the following are true:

  • the pDefObject pointer is valid.

If this method fails nothing will be written to *pDefObject.

This method will return the following codes. If more than one of the listed errors is in effect, it will return the first one encountered in the order given below:

AAFRESULT_SUCCESS

  • succeeded. (This is the only code indicating success.)

AAFRESULT_NULL_PARAM

  • pDefObject arg is NULL.
Parameters:
index[in] An index from 0 to the number of definitions - 1
pDictionary[in] The dictionary to use when creating the definition
pDefObject[out] The interface of the pluggable definition
HRESULT IAAFPlugin::GetPluginDescriptorID ( [out] aafUID_t *  pPluginID)

This method returns the unique ID of the AAFPluginDescriptor associated with this Plugin.

This method is called by the plugin manager to determine if a particular plugin descriptor (indicating a particular plugin) is already in the current file, so that the full create function does not need to be called.

Succeeds if all of the following are true:

  • the pPluginID pointer is valid.

If this method fails nothing will be written to *pPluginID.

This method will return the following codes. If more than one of the listed errors is in effect, it will return the first one encountered in the order given below:

AAFRESULT_SUCCESS

  • succeeded. (This is the only code indicating success.)

AAFRESULT_NULL_PARAM

  • pPluginID arg is NULL.
Parameters:
pPluginID[out] The unique media object id

Generated on Wed Jul 4 2012 22:13:37 for by doxygen 1.7.4