Advanced Authoring Format

Plugin Interfaces and Methods Reference

This section is intended developers writing codecs and other plugins. Developers who are writing AAF client applications do not need to read this section.

Copyright © 1999 Avid Technology, Inc.


Return to AAF API Reference

IAAFEssenceCodec Interface
IAAFEssenceContainer Interface
IAAFEssenceDataStream Interface
IAAFEssenceStream Interface
IAAFInterpolator Interface
IAAFPlugin Interface

IAAFEssenceCodec Interface


In addition to the methods inherited from IUnknown, the IAAFEssenceCodec interface exposes the following methods.
AddSampleIndexEntry
CompleteWrite
Create
CreateDescriptorFromStream
GetCodecDisplayName
GetCurrentEssenceStream
GetDataDefinitionCount
GetDefaultEssenceFormat
GetEssenceDataID
GetEssenceDescriptorID
GetEssenceFormat
GetFlavourCount
GetIndexedDataDefinition
GetIndexedFlavourID
GetIndexedSampleSize
GetLargestSampleSize
GetMaxCodecDisplayNameLength
GetNumChannels
GetNumSamples
GetSelectInfo
Open
PutEssenceFormat
ReadBlocks
ReadFractionalSample
ReadRawData
Seek
SetCompressionEnabled
SetEssenceAccess
ValidateEssence
WriteBlocks
WriteFractionalSample
WriteRawData



IAAFEssenceCodec::AddSampleIndexEntry


The AddSampleIndexEntry method addSampleIndexEntry() Adds the byte offset to the end of the sample index table (if any).
Syntax
HRESULT AddSampleIndexEntry(
  aafPosition_t  offset
);

Parameters
  [in]  offset
  Specifies offset.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
AddSampleIndexEntry() Adds the byte offset to the end of the
sample index table (if any). For formats with fixed sample sizes
(without a sample offset table), this method should return AAFRESULT_SUCCESS.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.)
offset: The byte offset of the sample.
See Also


IAAFEssenceCodec::CompleteWrite


The CompleteWrite method completeWrite() Close the essence stream, ready to open another or Finish.
Syntax
HRESULT CompleteWrite(
  IAAFSourceMob*  pFileMob
);

Parameters
  [in]  pFileMob
  Pointer to a file mob object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
CompleteWrite() Close the essence stream, ready to open another
or Finish. In the case where the client has created essence in
an external AAF file, two essence descriptors will need to be
updated. After updating the essence descriptor for the file which
you are writing (like updating the number of samples), find the
essence descriptor associated with pFileMob, and make the same
changes to that essence desriptor. NOTE that pFileMob may be
NULL in all cases except writing essence to an external AAF file.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pDescriptor is null. AAFRESULT_STREAM_FULL - The essence can
not be written because of a fault such as a disk full error in
the underlying operating system.
pFileMob: Optional second essence descriptor to also update.

See Also


IAAFEssenceCodec::Create


The Create method .
Syntax
HRESULT Create(
  IAAFSourceMob*  fileMob,
  aafUID_t  variant,
  IAAFEssenceStream*  stream,
  aafInt32  numParms,
  aafmMultiCreate_t*  createParms
);

Parameters
  [in]  fileMob
  Specifies filemob.
  [in]  variant
  Specifies variant.
  [in]  stream
  Specifies stream.
  [in]  numParms
  Specifies numparms.
  [in]  createParms
  Specifies createparms.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Create() Initalize the stream to be of the correct format with
no data and default metadata, attach the correct type of EssenceDescriptor
to the fileMob, and file in the default metadata on the descriptor
also. Prepare the stream for writing the first sample of data.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pEssenceAccess is null. AAFRESULT_STREAM_FULL - The essence
can not be written because of a fault such as a disk full error
in the underlying operating system.
fileMob: which variant of the codec to use.
variant: Here is an essence stream with the data.
stream: Here are the number of create parameters.
numParms: Here are the create parameters.
See Also


IAAFEssenceCodec::CreateDescriptorFromStream


The CreateDescriptorFromStream method .
Syntax
HRESULT CreateDescriptorFromStream(
  IAAFEssenceStream*  pStream,
  IAAFSourceMob*  pSourceMob
);

Parameters
  [in]  pStream
  Pointer to a stream object.
  [in]  pSourceMob
  Pointer to a source mob object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Misc. Functions CreateDescriptorFromStream() Given some raw essence
(like a WAVE file), create an AAFEssenceDescriptor to match,
with all fields filled in. This method should return only the
following codes. If more than one of the listed errors is in
effect, it should return the first one encountered in the order
given below: AAFRESULT_SUCCESS - succeeded. (This is the only
code indicating success.) AAFRESULT_NULL_PARAM - pStream or pSourceMob
is null.
pStream: Put the finished descriptor on this source mob.
See Also


IAAFEssenceCodec::GetCodecDisplayName


The GetCodecDisplayName method getCodecDisplayName() Given a flavour ID, return the human readable name This method should return only the following codes.
Syntax
HRESULT GetCodecDisplayName(
  aafUID_t  variant,
  aafCharacter*  pName,
  aafInt32  bufSize
);

Parameters
  [in]  variant
  Specifies variant.
  [in]  pName
  Pointer to a name object.
  [in]  bufSize
  Specifies bufsize.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetCodecDisplayName() Given a flavour ID, return the human readable
name This method should return only the following codes. If more
than one of the listed errors is in effect, it should return
the first one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pName is null.
variant: Human-readable name of the flavour.
pName: length of the buffer to hold flavour Name.
See Also


IAAFEssenceCodec::GetCurrentEssenceStream


The GetCurrentEssenceStream method getCurrentEssenceStream() Return the current essence stream.
Syntax
HRESULT GetCurrentEssenceStream(
  IAAFEssenceStream**  ppStream
);

Parameters
  [out]  ppStream
  If the method succeeds, specifies a pointer to a variable containing a pointer to a stream object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetCurrentEssenceStream() Return the current essence stream.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- ppStream is null.
ppStream: The current essence stream.
See Also


IAAFEssenceCodec::GetDataDefinitionCount


The GetDataDefinitionCount method getDataDefinitionCount() Some codecs support formats which can encode multiple types of essence.
Syntax
HRESULT GetDataDefinitionCount(
  aafInt32*  pCount
);

Parameters
  [out]  pCount
  If the method succeeds, specifies a pointer to a count object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetDataDefinitionCount() Some codecs support formats which can
encode multiple types of essence. For example, interleaved video
and audio. This call returns the number of essence data definitions
(usually one) supported by this codec. This method should return
only the following codes. If more than one of the listed errors
is in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - pCount
is null.
pCount: Number of essence data definitions supported.
See Also


IAAFEssenceCodec::GetDefaultEssenceFormat


The GetDefaultEssenceFormat method getDefaultEssenceFormat() Returns an essence format object specifying which contains the complete list of essence formats supported by this codec, along with the default values.
Syntax
HRESULT GetDefaultEssenceFormat(
  IAAFEssenceFormat**  ppNewFormat
);

Parameters
  [out]  ppNewFormat
  If the method succeeds, specifies a pointer to a variable containing a pointer to a new format object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetDefaultEssenceFormat() Returns an essence format object specifying
which contains the complete list of essence formats supported
by this codec, along with the default values. Previous systems
required you to "know" what parameters a given codec could support.
With this function, a client application can check what the default
parameter would be, and change only those which are required.
It differs from GetEssenceFormat() in that it GetEssenceFormat()
returns the current client-set settings. This method should return
only the following codes. If more than one of the listed errors
is in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - ppNewFormat
is null.
ppNewFormat: An essence format with all valid parameter names
and values filled in.
See Also


IAAFEssenceCodec::GetEssenceDataID


The GetEssenceDataID method getEssenceDataID() Returns the stored object AUID of the essence data class associated with this codec.
Syntax
HRESULT GetEssenceDataID(
  aafUID_t*  pEssenceDataID
);

Parameters
  [out]  pEssenceDataID
  If the method succeeds, specifies a pointer to an essence dataID object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetEssenceDataID() Returns the stored object AUID of the essence
data class associated with this codec. This method should return
only the following codes. If more than one of the listed errors
is in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - pEssenceDataID
is null.
pEssenceDataID: The stored object AUID of the essence data class.

See Also


IAAFEssenceCodec::GetEssenceDescriptorID


The GetEssenceDescriptorID method getEssenceDescriptorID() Returns the stored object AUID of the essence descriptor class associated with this codec.
Syntax
HRESULT GetEssenceDescriptorID(
  aafUID_t*  pDescriptorID
);

Parameters
  [out]  pDescriptorID
  If the method succeeds, specifies a pointer to a descriptorID object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetEssenceDescriptorID() Returns the stored object AUID of the
essence descriptor class associated with this codec. This method
should return only the following codes. If more than one of the
listed errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pDescriptorID is null.
pDescriptorID: The stored object AUID of the essence descriptor
class.
See Also


IAAFEssenceCodec::GetEssenceFormat


The GetEssenceFormat method getEssenceFormat() Get the format of the one or more parameters by scanning the list of format codes supplied, and filling in the data values.
Syntax
HRESULT GetEssenceFormat(
  IAAFEssenceFormat*  pFormatTemplate,
  IAAFEssenceFormat**  ppNewFormat
);

Parameters
  [in]  pFormatTemplate
  Pointer to a format template object.
  [out]  ppNewFormat
  If the method succeeds, specifies a pointer to a variable containing a pointer to a new format object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetEssenceFormat() Get the format of the one or more parameters
by scanning the list of format codes supplied, and filling in
the data values. The client should have called GetDefaultEssenceFormat()
in order to find out what format codes are supported, but you
may still get format codes out of range. The expected bevhavior
of this routine is to pre-scan the list for valid format codes
before setting any data, and returning AAFRESULT_INVALID_OP_CODEC.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_ILLEGAL_FILEFMT
- One of the format codes is not supported by this codec. Call
GetDefaultEssenceFormat() in order to find the list of supported
format codes. No data will have been transferred. AAFRESULT_INVALID_PARM_SIZE
- The data supplied with the parameter is not of the correct
size. No data will have been transferred. AAFRESULT_NULL_PARAM
- pFormatTemplate or ppNewFormat is null.
pFormatTemplate: A new essence format object with the data filled
in.
See Also


IAAFEssenceCodec::GetFlavourCount


The GetFlavourCount method getFlavourCount() Some codecs have different variants or flavours of the media handled by a single codec.
Syntax
HRESULT GetFlavourCount(
  aafInt32*  pCount
);

Parameters
  [out]  pCount
  If the method succeeds, specifies a pointer to a count object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetFlavourCount() Some codecs have different variants or flavours
of the media handled by a single codec. (For example, the Avid
AVR codec handles multiple AVRs.) This call returns the number
of flavours (usually one) supported by this codec. This method
should return only the following codes. If more than one of the
listed errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pCount is null.
pCount: Number of flavours supported.
See Also


IAAFEssenceCodec::GetIndexedDataDefinition


The GetIndexedDataDefinition method getIndexedDataDefinition() // All codecs handle at least one kind of media (picture, sound, control) but some handle more than one.
Syntax
HRESULT GetIndexedDataDefinition(
  aafInt32  index,
  aafUID_t*  pVariant
);

Parameters
  [in]  index
  Specifies index.
  [out]  pVariant
  If the method succeeds, specifies a pointer to a variant object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetIndexedDataDefinition() // All codecs handle at least one
kind of media (picture, sound, control) but some handle more
than one. The kind of media is specified by an AAFDataDefinition.
The numnber of data definitions is returned by GetDataDefinitionCount,
and cached by the AAFPluginManager. This method should return
only the following codes. If more than one of the listed errors
is in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - pVariant
is null.
index: The returned dataDefinition.
See Also


IAAFEssenceCodec::GetIndexedFlavourID


The GetIndexedFlavourID method getIndexedFlavourID() Some codecs have flavour handled by a single codec.
Syntax
HRESULT GetIndexedFlavourID(
  aafInt32  index,
  aafUID_t*  pVariant
);

Parameters
  [in]  index
  Specifies index.
  [out]  pVariant
  If the method succeeds, specifies a pointer to a variant object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetIndexedFlavourID() Some codecs have flavour handled by a single
codec. (For example, the Avid AVR codec handles multiple AVRs.)
The number of flavours is returned by GetFlavourCount(), and
cached by the AAFPluginManager. This method should return only
the following codes. If more than one of the listed errors is
in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - pVariant
is null. AAFRESULT_OUT_OF_RANGE - index must be = 0 and the number
of flavours returned in GetFlavourCount().
index: The returned flavour ID.
See Also


IAAFEssenceCodec::GetIndexedSampleSize


The GetIndexedSampleSize method getIndexedSampleSize() Returns the size of the sample at the given offset, and of the given data definition.
Syntax
HRESULT GetIndexedSampleSize(
  aafUID_t  essenceDefID,
  aafPosition_t  sampleOffset,
  aafLength_t*  pLength
);

Parameters
  [in]  essenceDefID
  Specifies essencedefID.
  [in]  sampleOffset
  Specifies sampleoffset.
  [out]  pLength
  If the method succeeds, specifies a pointer to a length object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetIndexedSampleSize() Returns the size of the sample at the
given offset, and of the given data definition. For formats with
fixed sample sizes (without a sample offset table), this method
should return the standard sample size. This method should return
only the following codes. If more than one of the listed errors
is in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - pLength
is null.
essenceDefID: The zero-based offset to get the size of.
sampleOffset: The returned length of the given sample.
See Also


IAAFEssenceCodec::GetLargestSampleSize


The GetLargestSampleSize method getLargestSampleSize() Returns the size of the largest sample, and of the given data definition.
Syntax
HRESULT GetLargestSampleSize(
  aafUID_t  essenceDefID,
  aafLength_t*  pLength
);

Parameters
  [in]  essenceDefID
  Specifies essencedefID.
  [out]  pLength
  If the method succeeds, specifies a pointer to a length object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetLargestSampleSize() Returns the size of the largest sample,
and of the given data definition. For formats with fixed sample
sizes (without a sample offset table), this method should return
the standard sample size. This method should return only the
following codes. If more than one of the listed errors is in
effect, it should return the first one encountered in the order
given below: AAFRESULT_SUCCESS - succeeded. (This is the only
code indicating success.) AAFRESULT_NULL_PARAM - pLength is null.

essenceDefID: The returned length of the largest sample.
See Also


IAAFEssenceCodec::GetMaxCodecDisplayNameLength


The GetMaxCodecDisplayNameLength method getMaxCodecDisplayNameLength() This method should return the buffer size required to hold the largest display name (including flavour).
Syntax
HRESULT GetMaxCodecDisplayNameLength(
  aafInt32*  pBufSize
);

Parameters
  [out]  pBufSize
  If the method succeeds, specifies a pointer to a buf size object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetMaxCodecDisplayNameLength() This method should return the
buffer size required to hold the largest display name (including
flavour). The client code does not expect this to be equal to
any particular display name. This method should return only the
following codes. If more than one of the listed errors is in
effect, it should return the first one encountered in the order
given below: AAFRESULT_SUCCESS - succeeded. (This is the only
code indicating success.) AAFRESULT_NULL_PARAM - pBufSize is
null.
pBufSize: length of the buffer required to hold the longest flavour
Name.
See Also


IAAFEssenceCodec::GetNumChannels


The GetNumChannels method general purpose codec functions, always callable (whether or not Open or Create have been called.
Syntax
HRESULT GetNumChannels(
  IAAFSourceMob*  fileMob,
  aafUID_t  essenceKind,
  IAAFEssenceStream*  stream,
  aafInt16*  pNumChannels
);

Parameters
  [in]  fileMob
  Specifies filemob.
  [in]  essenceKind
  Specifies essencekind.
  [in]  stream
  Specifies stream.
  [out]  pNumChannels
  If the method succeeds, specifies a pointer to a num channels object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
General purpose codec functions, always callable (whether or
not Open or Create have been called.) These are called by AAFEssenceAccess
to before the stream is actually opened, and therefore may not
rely on data which is created during open or create. This is
why they take so many parameters. GetNumChannels() Returns the
number of channels which this codec can handle of the given essence
kind. If the essence kind is not handled by this codec at all,
then return zero channels through pNumChannels, and return AAFRESULT_SUCCESS.
The AAFEssenceStream is owned by IAAFEssenceAccess, and therefore
should not AddRef() it. The codec may seek and read the supplied
open stream as much as required to determine the number of channels,
but should not assume that the Open method on the codec has been
called (ie: it must parse any header itself). This method should
return only the following codes. If more than one of the listed
errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pNumChannels is null.
fileMob: This is the type of essence to open.
essenceKind: Here is an essence stream with the data.
stream: The number of channels present.
See Also


IAAFEssenceCodec::GetNumSamples


The GetNumSamples method essence access codec functions, Open or Create must have been called.
Syntax
HRESULT GetNumSamples(
  aafUID_t  essenceKind,
  aafLength_t*  pNumSamples
);

Parameters
  [in]  essenceKind
  Specifies essencekind.
  [out]  pNumSamples
  If the method succeeds, specifies a pointer to a num samples object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Essence access codec functions, Open or Create must have been
called. GetNumSamples() Return the number of samples present
on a given essenceKind. The assumption is made that all slots
of the same essence kind have the same number of samples. This
method should return only the following codes. If more than one
of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pNumSamples is null.
essenceKind: The number of samples present of the given essence
kind.
See Also


IAAFEssenceCodec::GetSelectInfo


The GetSelectInfo method getSelectInfo() Returns a block of information required to select essence by criteria.
Syntax
HRESULT GetSelectInfo(
  IAAFSourceMob*  fileMob,
  IAAFEssenceStream*  stream,
  aafSelectInfo_t*  pSelectInfo
);

Parameters
  [in]  fileMob
  Specifies filemob.
  [in]  stream
  Specifies stream.
  [out]  pSelectInfo
  If the method succeeds, specifies a pointer to a select info object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetSelectInfo() Returns a block of information required to select
essence by criteria. The SDK will use this criteria to find the
best essence to fit requirements of size or speed. The AAFEssenceStream
is owned by IAAFEssenceAccess, and therefore should not AddRef()
it. The codec may seek and read the supplied open stream as much
as required to determine the number of channels, but should not
assume that the Open method on the codec has been called (ie:
it must parse any header itself). This method should return only
the following codes. If more than one of the listed errors is
in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - pSelectInfo
is null.
fileMob: Here is an essence stream with the data.
stream: Information required to select by media criteria.
See Also


IAAFEssenceCodec::Open


The Open method open() Read the metadata from the essence descriptor and/or the formatted data, and prepare the stream for reading the first sample of data.
Syntax
HRESULT Open(
  IAAFSourceMob*  fileMob,
  aafSlotID_t  slotID,
  aafMediaOpenMode_t  openMode,
  IAAFEssenceStream*  stream
);

Parameters
  [in]  fileMob
  Specifies filemob.
  [in]  slotID
  Specifies slotID.
  [in]  openMode
  Specifies openmode.
  [in]  stream
  Specifies stream.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Open() Read the metadata from the essence descriptor and/or the
formatted data, and prepare the stream for reading the first
sample of data. This method should return only the following
codes. If more than one of the listed errors is in effect, it
should return the first one encountered in the order given below:
AAFRESULT_SUCCESS - succeeded. (This is the only code indicating
success.) AAFRESULT_NULL_PARAM - pEssenceAccess is null. AAFRESULT_ESSENCE_NOT_FOUND
- The essence could not be located inside of the current file,
or by following any of the locators.
fileMob: The essence is on this slotID.
slotID: In this mode.
openMode: Here is an essence stream with the raw data.
See Also


IAAFEssenceCodec::PutEssenceFormat


The PutEssenceFormat method putEssenceFormat() Set the format of the one or more parameters.
Syntax
HRESULT PutEssenceFormat(
  IAAFEssenceFormat*  pFormat
);

Parameters
  [in]  pFormat
  Pointer to a format object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
PutEssenceFormat() Set the format of the one or more parameters.
The client should have called GetDefaultEssenceFormat() in order
to find out what format codes are supported, but you may still
get format codes out of range. The expected bevhavior of this
routine is to pre-scan the list for valid format codes and lengths
before setting any data, and returning AAFRESULT_INVALID_OP_CODEC.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_ILLEGAL_FILEFMT
- One of the format codes is not supported by this codec. Call
GetDefaultEssenceFormat() in order to find the list of supported
format codes. No data will have been transferred. AAFRESULT_INVALID_PARM_SIZE
- The data supplied with the parameter is not of the correct
size. No data will have been transferred. AAFRESULT_NULL_PARAM
- pFormat is null.
pFormat: An essence format object.
See Also


IAAFEssenceCodec::ReadBlocks


The ReadBlocks method readBlocks() Read blocks into one or more buffers, de-interleaving if needed.
Syntax
HRESULT ReadBlocks(
  aafDeinterleave_t  inter,
  aafInt16  xferBlockCount,
  aafmMultiXfer_t*  pTransferParm,
  aafmMultiResult_t*  pResultParm
);

Parameters
  [in]  inter
  Specifies inter.
  [in]  xferBlockCount
  Specifies xferblock count.
  [out]  pTransferParm
  If the method succeeds, specifies a pointer to a transfer parm object.
  [out]  pResultParm
  If the method succeeds, specifies a pointer to a result parm object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
ReadBlocks() Read blocks into one or more buffers, de-interleaving
if needed. This method should return only the following codes.
If more than one of the listed errors is in effect, it should
return the first one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pTransferParm is null. AAFRESULT_SMALLBUF - The buffer is not
large enough to hold the data AAFRESULT_CODEC_CHANNELS - SPecified
channel numbers are out of range AAFRESULT_XFER_DUPCH - The SDK
passed in the same channel number on two blocks AAFRESULT_END_OF_DATA
- Hit either the end-of-file on a raw essence file, or the end
of the essence property. The bytesRead fields inside of pTransferParm
correctly reflect the number of bytes and complete samples on
each track.
inter: How many aafmMultiXfer blocks follow.
xferBlockCount: One or more blocks containing buffer pointer
and length.
pTransferParm: One or more blocks containing results.
See Also


IAAFEssenceCodec::ReadFractionalSample


The ReadFractionalSample method readFractionalSample() Read some number of bytes to the stream, removing any formatting.
Syntax
HRESULT ReadFractionalSample(
  aafUInt32  buflen,
  aafDataBuffer_t  pBuffer,
  aafUInt32*  pBytesRead
);

Parameters
  [in]  buflen
  Specifies buflen.
  [out]  pBuffer
  If the method succeeds, specifies a pointer to a buffer object.
  [out]  pBytesRead
  If the method succeeds, specifies a pointer to a bytes read object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
ReadFractionalSample() Read some number of bytes to the stream,
removing any formatting. This method should return only the following
codes. If more than one of the listed errors is in effect, it
should return the first one encountered in the order given below:
AAFRESULT_SUCCESS - succeeded. (This is the only code indicating
success.) AAFRESULT_NULL_PARAM - pBuffer or pBytesRead is null.
AAFRESULT_END_OF_ESSENCE - Hit either the end-of-file on a raw
essence file, or the end of the essence property. The pBytesRead
parameter correctly reflects the number of bytes actually read.

buflen: here is the buffer.
pBuffer: Return bytes actually read.
See Also


IAAFEssenceCodec::ReadRawData


The ReadRawData method readRawData() Read some number of bytes from the stream exactly and with no formatting or compression.
Syntax
HRESULT ReadRawData(
  aafUInt32  nSamples,
  aafUInt32  buflen,
  aafDataBuffer_t  pBuffer,
  aafUInt32*  pBytesRead,
  aafUInt32*  pSamplesRead
);

Parameters
  [in]  nSamples
  Integer containing the samples.
  [in]  buflen
  Specifies buflen.
  [out]  pBuffer
  If the method succeeds, specifies a pointer to a buffer object.
  [out]  pBytesRead
  If the method succeeds, specifies a pointer to a bytes read object.
  [out]  pSamplesRead
  If the method succeeds, specifies a pointer to a samples read object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
ReadRawData() Read some number of bytes from the stream exactly
and with no formatting or compression. The size of the data is
constrained by the number of samples, in order to support variable
frame sizes. The client should have called AAFEssenceAccess::GetLargestSampleSize()
in order to make the buffer large enough. If the buffer is not
large enough to hold that many samples, then return AAFRESULT_SMALLBUF.
The buffer IS allowed to be larger than required to hold the
samples, although this may affect performance on remote proedure
calls due to marshalling. The pBytesRead parameter is intended
for systems with a variable sample size (like JPEG). This method
should return only the following codes. If more than one of the
listed errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pBuffer, pBytesRead, or pSamplesRead is null. AAFRESULT_SMALLBUF
- The buffer is not large enough to hold the data AAFRESULT_END_OF_ESSENCE
- Hit either the end-of-file on a raw essence file, or the end
of the essence property. The pBytesRead parameter correctly reflects
the number of bytes actually read.
nSamples: read into a buffer of this size.
buflen: here is the buffer.
pBuffer: Return bytes actually read.
pBytesRead: Return samples actually read.
See Also


IAAFEssenceCodec::Seek


The Seek method seek() Seek to a particular sample frame on the media.
Syntax
HRESULT Seek(
  aafPosition_t  sampleFrame
);

Parameters
  [in]  sampleFrame
  Specifies sampleframe.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Seek() Seek to a particular sample frame on the media. The sample
frame is one frame for picture, and one sample times the number
of interleaved channels for audio or other interleaved formats.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_BADSAMPLEOFFSET
- The supplied sample offset is out of range AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.)
sampleFrame: The sample frame to seek to..
See Also


IAAFEssenceCodec::SetCompressionEnabled


The SetCompressionEnabled method setCompressionEnabled() Sets a value indicating whether the codec is handling compression.
Syntax
HRESULT SetCompressionEnabled(
  aafBool  enableCompression
);

Parameters
  [in]  enableCompression
  Specifies enablecompression.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
SetCompressionEnabled() Sets a value indicating whether the codec
is handling compression. A value of AAFTrue indicates that the
codec should deliver and expect uncompressed samples. A value
of AAFFalse means that the client will see the uncompressed data
directly, for decompression/compression on client hardware.
Formats which do not deal with compression should just return
AAFRESULT_SUCCESS; This method should return only the following
codes. If more than one of the listed errors is in effect, it
should return the first one encountered in the order given below:
AAFRESULT_SUCCESS - succeeded. (This is the only code indicating
success.)
enableCompression: isCompressionEnabled.
See Also


IAAFEssenceCodec::SetEssenceAccess


The SetEssenceAccess method .
Syntax
HRESULT SetEssenceAccess(
  IAAFEssenceAccess*  pEssenceAccess
);

Parameters
  [in]  pEssenceAccess
  Pointer to an essence access object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
************************ Interface IAAFEssenceCodec ************************
The AAFEssenceCodec interface describes the calls of a plugin
which handles encoding media in a particular file format, with
optional compression. These methods are used internally by the
SDK, and are not exported through the client interface. The AAFPluginManager
keeps a copy of each codec in a table, along with cached copies
of pertinant metadata about the codec, and instantiates a copy
of the codec for each media stream. In addition to the specific
error results listed for each method, all methods in this interface
may also return one of the following values: AAFRESULT_NULL_PARAM
- One of the passed in pointers is NULL. AAFRESULT_NOMEMORY
- insufficient system memory is available to perform the operation.
1-11d2-8088-006008143e6f Meta codec functions. Called to plug
a codec into the SDK, but NOT for each instance of a codec. SetEssenceAccess()
Set the essence access associated with the codec. This routine
is called by the SDK when creating or opening an essence stream,
in order to give the codec access to the AAFEssenceAccess object,
because this is the factory object for creating AAFEssenceFormats.
It would be best to store away this pointer inside of the codec.
Remember to do an AddRef(), and release the reference when the
codec is disposed. This method is currently called only once,
but for future compatability is would be best to release any
previously help essence access pointer before setting the new
value. This method should return only the following codes. If
more than one of the listed errors is in effect, it should return
the first one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pEssenceAccess is null.
pEssenceAccess: The associated IAAFEssenceAccess.
See Also


IAAFEssenceCodec::ValidateEssence


The ValidateEssence method validateEssence() This method validates the metadata associated with the essence data.
Syntax
HRESULT ValidateEssence(
  IAAFSourceMob*  fileMob,
  IAAFEssenceStream*  stream,
  aafCheckVerbose_t  verbose,
  aafCheckWarnings_t  outputWarnings,
  aafInt32  bufSize,
  aafCharacter*  pErrorText,
  aafInt32*  pBytesRead
);

Parameters
  [in]  fileMob
  Specifies filemob.
  [in]  stream
  Specifies stream.
  [in]  verbose
  Specifies verbose.
  [in]  outputWarnings
  Specifies outputwarnings.
  [in]  bufSize
  Specifies bufsize.
  [out]  pErrorText
  If the method succeeds, specifies a pointer to an error text object.
  [out]  pBytesRead
  If the method succeeds, specifies a pointer to a bytes read object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
ValidateEssence() This method validates the metadata associated
with the essence data. It may compare fields within the data,
and also compare essence data against values in the IAAFFileDescriptor.
The fields bufSize, pErrorText, and pBytes read are used to return
a textual description of any problems encountered. If no problems
were encountered, pBytesRead should be zero. This method is used
during client and SDK validation, and is not intended for general
use. This method should return only the following codes. If more
than one of the listed errors is in effect, it should return
the first one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pErrorText is null.
fileMob: and this essence data stream.
stream: This is the verbosity level of the output.
verbose: This determines whether the output contains warnings.

outputWarnings: length of the buffer to hold the error result.

bufSize: Human-readable text describing problems (or lack therof)
with the essence.
pErrorText: The number of result bytes returned.
See Also


IAAFEssenceCodec::WriteBlocks


The WriteBlocks method writeBlocks() Write blocks from one or more buffers, interleaving if needed.
Syntax
HRESULT WriteBlocks(
  aafDeinterleave_t  inter,
  aafInt16  xferBlockCount,
  aafmMultiXfer_t*  pTransferParm,
  aafmMultiResult_t*  pResultParm
);

Parameters
  [in]  inter
  Specifies inter.
  [in]  xferBlockCount
  Specifies xferblock count.
  [in]  pTransferParm
  Pointer to a transfer parm object.
  [out]  pResultParm
  If the method succeeds, specifies a pointer to a result parm object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
WriteBlocks() Write blocks from one or more buffers, interleaving
if needed. The pTransferParm This method should return only the
following codes. If more than one of the listed errors is in
effect, it should return the first one encountered in the order
given below: AAFRESULT_SUCCESS - succeeded. (This is the only
code indicating success.) AAFRESULT_ZERO_SAMPLESIZE - The sample
size of the stream has not been set. AAFRESULT_NULL_PARAM - pTransferParm
or pResultParm is null. AAFRESULT_SMALLBUF - One of the supplied
buffers is not large enough to hold the given number of samples.
AAFRESULT_CODEC_CHANNELS - SPecified channel numbers are out
of range AAFRESULT_XFER_DUPCH - The SDK passed in the same channel
number on two blocks AAFRESULT_MULTI_WRITELEN - The length fields
of the channels must specify an identical length of clock time.
AAFRESULT_CONTAINERWRITE - The essence can not be written because
of a fault such as a disk full error in the underlying operating
system.
inter: How many aafMultiXfer blocks follow.
xferBlockCount: One or more blocks containing buffer pointer
and length.
pTransferParm: One or more blocks containing results.
See Also


IAAFEssenceCodec::WriteFractionalSample


The WriteFractionalSample method old video write/read lines become fractional samples WriteFractionalSample() Write some number of bytes to the stream, formatting it as usual.
Syntax
HRESULT WriteFractionalSample(
  aafDataBuffer_t  pBuffer,
  aafInt32  buflen
);

Parameters
  [in]  pBuffer
  Pointer to a buffer object.
  [in]  buflen
  Specifies buflen.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Old video write/read lines become fractional samples WriteFractionalSample()
Write some number of bytes to the stream, formatting it as usual.
When the number of bytes passes size of a sample frame, then
the number of sample frames is bumped by one. This method should
return only the following codes. If more than one of the listed
errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pBuffer is null. AAFRESULT_STREAM_FULL - The essence can not
be written because of a fault such as a disk full error in the
underlying operating system.
pBuffer: of this size.
See Also


IAAFEssenceCodec::WriteRawData


The WriteRawData method writeRawData() Write some number of bytes to the stream exactly and with no formatting or compression.
Syntax
HRESULT WriteRawData(
  aafUInt32  nSamples,
  aafDataBuffer_t  pBuffer,
  aafUInt32  buflen
);

Parameters
  [in]  nSamples
  Integer containing the samples.
  [in]  pBuffer
  Pointer to a buffer object.
  [in]  buflen
  Specifies buflen.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
WriteRawData() Write some number of bytes to the stream exactly
and with no formatting or compression. The size of the data is
constrained by the number of samples, in order to support variable
frame sizes. The client should have called AAFEssenceAccess::GetLargestSampleSize()
in order to make the buffer large enough. If the buffer is not
large enough to send that many samples, then return AAFRESULT_SMALLBUF.
The buffer IS allowed to be larger than required to hold the
samples, although this may affect performance on remote proedure
calls due to marshalling. This method should return only the
following codes. If more than one of the listed errors is in
effect, it should return the first one encountered in the order
given below: AAFRESULT_SUCCESS - succeeded. (This is the only
code indicating success.) AAFRESULT_NULL_PARAM - pBuffer is null.
AAFRESULT_SMALLBUF - The buffer does not have enough data to
satisfy the request AAFRESULT_STREAM_FULL - The essence can not
be written because of a fault such as a disk full error in the
underlying operating system.
nSamples: from a buffer.
pBuffer: of this size.
See Also


IAAFEssenceContainer Interface


In addition to the methods inherited from IUnknown, the IAAFEssenceContainer interface exposes the following methods.
CreateEssenceStream
CreateEssenceStreamWriteOnly
OpenEssenceStreamAppend
OpenEssenceStreamReadOnly



IAAFEssenceContainer::CreateEssenceStream


The CreateEssenceStream method ************************ Interface IAAFEssenceContainer ************************ This interface is used to access essence data in an external data file.
Syntax
HRESULT CreateEssenceStream(
  aafCharacter*  pName,
  aafUID_t*  pMobID,
  IAAFEssenceStream**  ppEssenceStream
);

Parameters
  [in]  pName
  Pointer to a name object.
  [in]  pMobID
  Pointer to a mobID object.
  [out]  ppEssenceStream
  If the method succeeds, specifies a pointer to a variable containing a pointer to an essence stream object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
************************ Interface IAAFEssenceContainer ************************
This interface is used to access essence data in an external
data file. In addition to the specific error results listed for
each method, all methods in this interface may also return one
of the following values: AAFRESULT_NOMEMORY - insufficient system
memory is available to perform the operation. 3-11d2-808a-006008143e6f
CreateEssenceStream() Attempt to create an essence stream in
the container for reading and writing. Returns one of the following:
AAFRESULT_SUCCESS - succeeded. (This is the only code indicating
success.) AAFRESULT_NULL_PARAM - both pName and pMobID cannot
be NULL. AAFRESULT_ILLEGAL_VALUE - pName or pMobID (or both)
are invalid AAFRESULT_FILE_EXISTS - the given path and or mobID
already points to an existing stream within the container.
pName: Optional mobID identifying the essence.
pMobID: address of local variable to contain the essence stream
pointer..
See Also


IAAFEssenceContainer::CreateEssenceStreamWriteOnly


The CreateEssenceStreamWriteOnly method createEssenceStreamWriteOnly() Attempt to create an essence stream in the container for writing.
Syntax
HRESULT CreateEssenceStreamWriteOnly(
  aafCharacter*  pPath,
  aafUID_t*  pMobID,
  IAAFEssenceStream**  ppEssenceStream
);

Parameters
  [in]  pPath
  Pointer to a path object.
  [in]  pMobID
  Pointer to a mobID object.
  [out]  ppEssenceStream
  If the method succeeds, specifies a pointer to a variable containing a pointer to an essence stream object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
CreateEssenceStreamWriteOnly() Attempt to create an essence stream
in the container for writing. Returns one of the following: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- both pName and pMobID cannot be NULL. AAFRESULT_ILLEGAL_VALUE
- pName or pMobID (or both) are invalid AAFRESULT_FILE_EXISTS
- the given path and or mobID already points to an existing stream
within the container.
pPath: Optional mobID identifying the essence.
pMobID: address of local variable to contain the essence stream
pointer..
See Also


IAAFEssenceContainer::OpenEssenceStreamAppend


The OpenEssenceStreamAppend method openEssenceStreamAppend() Attempt to open an essence stream for appending.
Syntax
HRESULT OpenEssenceStreamAppend(
  aafCharacter*  pFilePath,
  aafUID_t*  pMobID,
  IAAFEssenceStream**  ppEssenceStream
);

Parameters
  [in]  pFilePath
  Pointer to a file path object.
  [in]  pMobID
  Pointer to a mobID object.
  [out]  ppEssenceStream
  If the method succeeds, specifies a pointer to a variable containing a pointer to an essence stream object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
OpenEssenceStreamAppend() Attempt to open an essence stream for
appending. Returns one of the following: AAFRESULT_SUCCESS -
succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- both pName and pMobID cannot be NULL. AAFRESULT_ILLEGAL_VALUE
- pName or pMobID (or both) are invalid AAFRESULT_MEDIA_NOT_FOUND
- the given path does not point to an existing stream within
the container. AAFRESULT_NOT_WRITEABLE - stream is read-only,
cannot be opened for writing.
pFilePath: Optional mobID identifying the essence.
pMobID: address of local variable to contain the essence stream
pointer..
See Also


IAAFEssenceContainer::OpenEssenceStreamReadOnly


The OpenEssenceStreamReadOnly method openEssenceStreamReadOnly() Attempt to open an essence stream for reading.
Syntax
HRESULT OpenEssenceStreamReadOnly(
  aafCharacter*  pFilePath,
  aafUID_t*  pMobID,
  IAAFEssenceStream**  ppEssenceStream
);

Parameters
  [in]  pFilePath
  Pointer to a file path object.
  [in]  pMobID
  Pointer to a mobID object.
  [out]  ppEssenceStream
  If the method succeeds, specifies a pointer to a variable containing a pointer to an essence stream object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
OpenEssenceStreamReadOnly() Attempt to open an essence stream
for reading. Returns one of the following: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- both pName and pMobID cannot be NULL. AAFRESULT_ILLEGAL_VALUE
- pName or pMobID (or both) are invalid AAFRESULT_MEDIA_NOT_FOUND
- the given path does not point to an existing stream within
the container. AAFRESULT_NOT_READABLE - stream is write-only,
cannot be opened for reading.
pFilePath: Optional mobID identifying the essence.
pMobID: address of local variable to contain the essence stream
pointer..
See Also


IAAFEssenceDataStream Interface


In addition to the methods inherited from IUnknown, the IAAFEssenceDataStream interface exposes the following methods.
Init



IAAFEssenceDataStream::Init


The Init method .
Syntax
HRESULT Init(
  IUnknown*  essenceData
);

Parameters
  [in]  essenceData
  Specifies essencedata.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
************************ Interface IAAFEssenceDataStream ************************
The IAAFEssenceDataStream interface is an additional interface
implemented by objects which stream over AAF files, and were
therefore created by the AAFContainerDef for AAF files. This
interface allows the setting of one additional parameter (a pointer
to the AAFEssenceData object to stream over) which was not general-purpose
enough to be in the IAAFEssenceStream interface. Objects which
support this interface must be created by methods in IAAFContainerDef,
since the container definition is what is used to differentiate
between the different streams. If the stream needs a reference
to data other than a file pointer (ex. the AAFContainer makes
a stream which needs a reference to a structureed storage stream)
will have another interface to support the additional behaviour.
For an AAF container, the additional interface is IAAFEssenceDataStream.
The following has been copied from the IAAFEssenceStream interface:
The IAAFEssenceStream interface is an internal interface used
by AAFEssenceAccess and essence codecs to read the low-level
representation of the essence. There are multiple classes implementing
this interface, each representing a different underlying container
holding the essence data. The idea of "container" is separate
from any formatting such as WAVE or JPEG. Examples of containers
(and therefore streams), are essence embedded in AAF files, and
essence in a file all by itself (ex. a WAVE file). C-11d2-808a-006008143e6f
Init() Init the stream over a particular EssenceData.
essenceData: The EssenceData to stream over.
See Also


IAAFEssenceStream Interface


In addition to the methods inherited from IUnknown, the IAAFEssenceStream interface exposes the following methods.
FlushCache
GetLength
GetPosition
Read
Seek
SeekRelative
SetCacheSize
Write



IAAFEssenceStream::FlushCache


The FlushCache method nOTE: Methods which help support optional buffering or caching of the essence data.
Syntax
HRESULT FlushCache();
Parameters
This method takes no parameters.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
NOTE: Methods which help support optional buffering or caching
of the essence data. Caching is not required to be supported,
and may actually reduce performance. on some platforms. If your
stream does not support caching, then return AAFRESULT_SUCCESS
for these calls. FlushCache() Ensure that all bits are written.
The caller of this interface is required to call FlushCache before
releasing the stream. This method should return only the following
codes. If more than one of the listed errors is in effect, it
should return the first one encountered in the order given below:
AAFRESULT_SUCCESS - succeeded. (This is the only code indicating
success.) AAFRESULT_STREAM_FULL - The essence can not be written
because of a fault such as a disk full error in the underlying
operating system.
See Also


IAAFEssenceStream::GetLength


The GetLength method getLength() Returns the length of the stream.
Syntax
HRESULT GetLength(
  aafInt64*  pLength
);

Parameters
  [out]  pLength
  If the method succeeds, specifies a pointer to a length object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetLength() Returns the length of the stream. This method should
return only the following codes. If more than one of the listed
errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pLength is null.
pLength: The length of the stream..
See Also


IAAFEssenceStream::GetPosition


The GetPosition method getPosition() Returns the position within the stream.
Syntax
HRESULT GetPosition(
  aafInt64*  pPosition
);

Parameters
  [out]  pPosition
  If the method succeeds, specifies a pointer to a position object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetPosition() Returns the position within the stream. This method
should return only the following codes. If more than one of the
listed errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pPosition is null.
pPosition: The position within the stream..
See Also


IAAFEssenceStream::Read


The Read method read() Read some number of bytes from the stream exactly and with no formatting or compression.
Syntax
HRESULT Read(
  aafUInt32  buflen,
  aafDataBuffer_t  pBuffer,
  aafUInt32*  pBytesRead
);

Parameters
  [in]  buflen
  Specifies buflen.
  [out]  pBuffer
  If the method succeeds, specifies a pointer to a buffer object.
  [out]  pBytesRead
  If the method succeeds, specifies a pointer to a bytes read object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Read() Read some number of bytes from the stream exactly and
with no formatting or compression. This method should return
only the following codes. If more than one of the listed errors
is in effect, it should return the first one encountered in the
order given below: AAFRESULT_SUCCESS - succeeded. (This is the
only code indicating success.) AAFRESULT_NULL_PARAM - pBuffer
or pBytesRead is null. AAFRESULT_END_OF_ESSENCE - Hit either
the end-of-file on a raw essence file, or the end of the essence
property. The pBytesRead parameter correctly reflects the number
of bytes actually read.
buflen: here is the buffer.
pBuffer: Return bytes actually read.
See Also


IAAFEssenceStream::Seek


The Seek method seek() Seek to the absolute byte offset into the stream.
Syntax
HRESULT Seek(
  aafInt64  byteOffset
);

Parameters
  [in]  byteOffset
  Specifies byteoffset.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Seek() Seek to the absolute byte offset into the stream.
byteOffset: The absolute byte offset into the stream..
See Also


IAAFEssenceStream::SeekRelative


The SeekRelative method This method should return only the following codes.
Syntax
HRESULT SeekRelative(
  aafInt32  byteOffset
);

Parameters
  [in]  byteOffset
  Specifies byteoffset.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
This method should return only the following codes. If more
than one of the listed errors is in effect, it should return
the first one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_STREAM_BOUNDS
- The new position would be outside of the bounds of the stream.)
SeekRelative() Seek forward or backward the given byte count.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_STREAM_BOUNDS
- The new position would be outside of the bounds of the stream.

byteOffset: The relative byte offset into the stream..
See Also


IAAFEssenceStream::SetCacheSize


The SetCacheSize method setCacheSize() Sets the size of the cache buffer used for further operations.
Syntax
HRESULT SetCacheSize(
  aafInt32  itsSize
);

Parameters
  [in]  itsSize
  Specifies itssize.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
SetCacheSize() Sets the size of the cache buffer used for further
operations. Destroys the current contents of the cache. This
method should return only the following codes. If more than one
of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.)
itsSize: The size of the cache buffer. Zero is a valid size,
and means to turn caching off.
See Also


IAAFEssenceStream::Write


The Write method .
Syntax
HRESULT Write(
  aafDataBuffer_t  buffer,
  aafInt32  buflen
);

Parameters
  [in]  buffer
  Specifies buffer.
  [in]  buflen
  Specifies buflen.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
************************ Interface IAAFEssenceStream ************************
The IAAFEssenceStream interface is an internal interface used
by AAFEssenceAccess and essence codecs to read the low-level
representation of the essence. There are multiple classes implementing
this interface, each representing a different underlying container
holding the essence data. The idea of "container" is separate
from any formatting such as WAVE or JPEG. Examples of containers
(and therefore streams), are essence embedded in AAF files, and
essence in a file all by itself (ex. a WAVE file). Objects which
support this interface must be created by methods in IAAFContainerDef,
since the container definition is what is used to differentiate
between the different streams. If the stream needs a reference
to data other than a file pointer (ex. the AAFContainer makes
a stream which needs a reference to a structureed storage stream)
will have another interface to support the additional behaviour.
For an AAF container, the additional interface is IAAFEssenceDataStream.
NOTE: The SDK will init the representation of this object with
the correct path and open the underlying file before handing
out an interface pointer. Hence, there is no Open method on the
stream. 6-11d2-8088-006008143e6f Write() Write some number of
bytes to the stream exactly and with no formatting or compression.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pBuffer or pBytesRead is null. AAFRESULT_STREAM_FULL - The
essence can not be written because of a fault such as a disk
full error in the underlying operating system.
buffer: of this size.
See Also


IAAFInterpolator Interface


In addition to the methods inherited from IUnknown, the IAAFInterpolator interface exposes the following methods.
GetIndexedSupportedType
GetNumTypesSupported
GetParameter
GetTypeDefinition
InterpolateMany
InterpolateOne
SetParameter
SetTypeDefinition



IAAFInterpolator::GetIndexedSupportedType


The GetIndexedSupportedType method getIndexedSupportedType() Each interpolator plugin will support a given number of interpolator types for a given number of data types.
Syntax
HRESULT GetIndexedSupportedType(
  aafInt32  index,
  IAAFTypeDef**  ppType
);

Parameters
  [in]  index
  Specifies index.
  [out]  ppType
  If the method succeeds, specifies a pointer to a variable containing a pointer to a type object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetIndexedSupportedType() Each interpolator plugin will support
a given number of interpolator types for a given number of data
types. This call returns one of the data types supported using
an index. The index value should be between 0 and one less than
the value returned by GetNumTypesSupported(). The number of flavours
is returned by GetNumTypesSupported(), and cached by the AAFPluginManager.
An interpolator is expected to support all data types for each
interpolation method which the interpolator supports. This method
should return only the following codes. If more than one of the
listed errors is in effect, it should return the first one encountered
in the order given below: AAFRESULT_SUCCESS - succeeded. (This
is the only code indicating success.) AAFRESULT_NULL_PARAM -
pVariant is null. AAFRESULT_OUT_OF_RANGE - index must be = 0
and the number of flavours returned in GetNumTypesSupported().

index: The returned type definition.
See Also


IAAFInterpolator::GetNumTypesSupported


The GetNumTypesSupported method .
Syntax
HRESULT GetNumTypesSupported(
  aafInt32*  pCount
);

Parameters
  [out]  pCount
  If the method succeeds, specifies a pointer to a count object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
************************ Interface IAAFInterpolator ************************
The AAFInterpolator interface describes the calls of a plugin
which handles interpolating between two IAAFControlPoints in
an IAAFVaryingValue. There will be one InterpolatorDefinition
for each method of interpolation (ex: Step, Linear, Log) supported,
so that the SDK can call GetIndexedSupportedType() repeatedly
in order to find out what types this interpolator suppports.
The AAFPluginManager keeps a copy of each interpolator in a table,
along with cached copies of pertinant metadata about the interpolator.
In addition to the specific error results listed for each method,
all methods in this interface may also return one of the following
values: AAFRESULT_NOMEMORY - insufficient system memory is available
to perform the operation. 7-11d3-80A9-006008143e6f Meta codec
functions. Called to plug a codec into the SDK, but NOT for each
instance of a codec. GetNumTypesSupported() Each interpolator
plugin will support a given number of interpolator types for
a given number of data types. This call returns the number of
data types supported, so that the SDK can call GetIndexedSupportedType()
repeatedly in order to find out what types this interpolator
suppports. An interpolator is expected to support all data types
for each interpolation method which the interpolator supports.
This method should return only the following codes. If more than
one of the listed errors is in effect, it should return the first
one encountered in the order given below: AAFRESULT_SUCCESS
- succeeded. (This is the only code indicating success.) AAFRESULT_NULL_PARAM
- pCount is null.
pCount: Number of data types supported.
See Also


IAAFInterpolator::GetParameter


The GetParameter method getParameter() Places the parameter object attached to this interpolator into the *ppParameter argument.
Syntax
HRESULT GetParameter(
  IAAFParameter**  ppParameter
);

Parameters
  [out]  ppParameter
  If the method succeeds, specifies a pointer to a variable containing a pointer to a parameter object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetParameter() Places the parameter object attached to this interpolator
into the *ppParameter argument. If none exists yet, NULL is placed
into the *ppParameter argument. The returned parameter object,
if it exists, is AddRef()ed before it is returned. Succeeds if
all of the following are true: - the ppParameter pointer is valid.
- A valid data definition exists. 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 - ppParameter
is null.
ppParameter: Returned data definition object.
See Also


IAAFInterpolator::GetTypeDefinition


The GetTypeDefinition method getTypeDefinition() Places the data definition object attached to this interpolator into the *ppTypeDef argument.
Syntax
HRESULT GetTypeDefinition(
  IAAFTypeDef**  ppTypeDef
);

Parameters
  [out]  ppTypeDef
  If the method succeeds, specifies a pointer to a variable containing a pointer to a type def object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetTypeDefinition() Places the data definition object attached
to this interpolator into the *ppTypeDef argument. If none exists
yet, NULL is placed into the *ppTypeDef argument. The returned
data definition object, if it exists, is AddRef()ed before it
is returned. Succeeds if all of the following are true: - the
ppTypeDef pointer is valid. - A valid data definition exists.
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
- ppTypeDef is null.
ppTypeDef: Returned data definition object.
See Also


IAAFInterpolator::InterpolateMany


The InterpolateMany method interpolateMany() Interpolates between known control points on the value, and creates an array of new AAFControlPoint which which can be imagined to exist at the given inputValue.
Syntax
HRESULT InterpolateMany(
  aafRational_t*  pStartInputValue,
  aafRational_t*  pInputStep,
  aafInt32  pGenerateCount,
  aafMemPtr_t  pOutputValue,
  aafUInt32*  ppResultCount
);

Parameters
  [in]  pStartInputValue
  Pointer to a start input value object.
  [in]  pInputStep
  Pointer to an input step object.
  [in]  pGenerateCount
  Pointer to a generate count object.
  [out]  pOutputValue
  If the method succeeds, specifies a pointer to an output value object.
  [out]  ppResultCount
  If the method succeeds, specifies a pointer to a variable containing a pointer to a result count object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
InterpolateMany() Interpolates between known control points on
the value, and creates an array of new AAFControlPoint which
which can be imagined to exist at the given inputValue. While
InterpolateOne() generates a single point, this function starts
at a given offset and generates interpolations until either pGenerateCount
is reached, or the next result would have an input value of greater
than one. Succeeds if all of the following are true: - the pInputValue
pointer is valid. - the pInputStep pointer is valid. - the ppOutputValue
pointer is valid. - the ppResultCount pointer is valid. - The
input value is between 0 (effect start), to 1 (effect end) inclusive.
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_INPUT_RANGE
- The input value must be between 0 and 1, inclusive. AAFRESULT_NULL_PARAM
- pInputValue or ppOutputValue or pInputStep or ppResultCount
is null.
pStartInputValue: Amount to add to *pStartInputValue to get the
next point to interpolate.
pInputStep: The number of points to interpolate.
pGenerateCount: an array of generated control points.
pOutputValue: The number of points actually generated.
See Also


IAAFInterpolator::InterpolateOne


The InterpolateOne method interpolateOne() Interpolates between known control points on the value, and creates a new AAFControlPoint which which can be imagined to exist at the given inputValue.
Syntax
HRESULT InterpolateOne(
  aafRational_t*  pInputValue,
  aafUInt32  valueSize,
  aafDataBuffer_t  pValue,
  aafUInt32*  bytesRead
);

Parameters
  [in]  pInputValue
  Pointer to an input value object.
  [in]  valueSize
  Specifies valuesize.
  [out]  pValue
  If the method succeeds, specifies a pointer to a value object.
  [out]  bytesRead
  Specifies bytesread.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
InterpolateOne() Interpolates between known control points on
the value, and creates a new AAFControlPoint which which can
be imagined to exist at the given inputValue. Succeeds if all
of the following are true: - the pInputValue pointer is valid.
- the ppOutputValue pointer is valid. - The input value is between
0 (effect start), to 1 (effect end) inclusive. 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_INPUT_RANGE - The input
value must be between 0 and 1, inclusive. AAFRESULT_NULL_PARAM
- pInputValue or ppOutputValue is null.
pInputValue: Size of preallocated buffer.
valueSize: A generated control point.
pValue: The number of bytes actually transferred.
See Also


IAAFInterpolator::SetParameter


The SetParameter method setParameter() Sets the parmeter of this interpolator to be the given one.
Syntax
HRESULT SetParameter(
  IAAFParameter*  pParameter
);

Parameters
  [in]  pParameter
  Pointer to a parameter object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
SetParameter() Sets the parmeter of this interpolator to be the
given one. Succeeds if all of the following are true: - the pParameter
pointer is valid. 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
- pParameter is null.
pParameter: Parameter object.
See Also


IAAFInterpolator::SetTypeDefinition


The SetTypeDefinition method setTypeDefinition() Sets the data definition of this interpolator to be the given one.
Syntax
HRESULT SetTypeDefinition(
  IAAFTypeDef*  pTypeDef
);

Parameters
  [in]  pTypeDef
  Pointer to a type def object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
SetTypeDefinition() Sets the data definition of this interpolator
to be the given one. Succeeds if all of the following are true:
- the pTypeDef pointer is valid. 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 - pTypeDef is
null.
pTypeDef: Data definition object.
See Also


IAAFPlugin Interface


In addition to the methods inherited from IUnknown, the IAAFPlugin interface exposes the following methods.
CreateDescriptor
Finish
GetIndexedDefinitionID
GetIndexedDefinitionObject
GetNumDefinitions
GetPluginDescriptorID
Start



IAAFPlugin::CreateDescriptor


The CreateDescriptor method createDescriptor() This method manufactures a plugin descriptor of the correct class for this plugin, and fills in the values.
Syntax
HRESULT CreateDescriptor(
  IAAFDictionary*  pDictionary,
  IAAFPluginDescriptor**  pPluginDesc
);

Parameters
  [in]  pDictionary
  Pointer to a dictionary object.
  [out]  pPluginDesc
  If the method succeeds, specifies a pointer to a plugin desc object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
CreateDescriptor() 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 pPluginDesc pointer is valid. If this method
fails nothing will be written to *pPluginDesc. 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 - pPluginDesc
arg is NULL.
pDictionary: The interface of the pluggable definition.
See Also


IAAFPlugin::Finish


The Finish method finish() Tear down a codec.
Syntax
HRESULT Finish();
Parameters
This method takes no parameters.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
Finish() Tear down a codec.
See Also


IAAFPlugin::GetIndexedDefinitionID


The GetIndexedDefinitionID method getIndexedDefinitionID() This method returns the unique ID of the AAFDefObject associated with this Plugin.
Syntax
HRESULT GetIndexedDefinitionID(
  aafInt32  index,
  aafUID_t*  pPluginID
);

Parameters
  [in]  index
  Specifies index.
  [out]  pPluginID
  If the method succeeds, specifies a pointer to a pluginID object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetIndexedDefinitionID() 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
index: The unique media object id.
See Also


IAAFPlugin::GetIndexedDefinitionObject


The GetIndexedDefinitionObject method getIndexedDefinitionObject() This method manufactures a definition object of the correct class for this plugin, and fills in the values.
Syntax
HRESULT GetIndexedDefinitionObject(
  aafInt32  index,
  IAAFDictionary*  pDictionary,
  IAAFDefObject**  pDefObject
);

Parameters
  [in]  index
  Specifies index.
  [in]  pDictionary
  Pointer to a dictionary object.
  [out]  pDefObject
  If the method succeeds, specifies a pointer to a def object object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetIndexedDefinitionObject() 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.
index: The dictionary to use when creating the definition.
pDictionary: The interface of the pluggable definition.
See Also


IAAFPlugin::GetNumDefinitions


The GetNumDefinitions method getNumDefinitions() This method returns the number of subclasses of AAFDefObject associated with this plugin, and will be called once at startup by the plugin manager.
Syntax
HRESULT GetNumDefinitions(
  aafInt32*  pDefCount
);

Parameters
  [out]  pDefCount
  If the method succeeds, specifies a pointer to a def count object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetNumDefinitions() 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.
pDefCount: The number of definitions associated with this plugin.

See Also


IAAFPlugin::GetPluginDescriptorID


The GetPluginDescriptorID method getPluginDescriptorID() This method returns the unique ID of the AAFPluginDescriptor associated with this Plugin.
Syntax
HRESULT GetPluginDescriptorID(
  aafUID_t*  pPluginID
);

Parameters
  [out]  pPluginID
  If the method succeeds, specifies a pointer to a pluginID object.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
GetPluginDescriptorID() 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.
pPluginID: The unique media object id.
See Also


IAAFPlugin::Start


The Start method ************************ Interface IAAFPlugin ************************ The AAFPlugin interface describes the calls of a plugin.
Syntax
HRESULT Start();
Parameters
This method takes no parameters.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
************************ Interface IAAFPlugin ************************
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. 1-11d2-8088-006008143e6f Start()
Set up a codec.
See Also