AAFA Developer Support

Public Member Functions
IAAFMultiEssenceCodec Interface Reference

The AAFMultiEssenceCodec interface describes the calls of a plugin which handles encoding media in a particular file format, with optional compression. More...

List of all members.

Public Member Functions

HRESULT MultiCreate ([in] IAAFSourceMob *fileMob,[in, ref] aafUID_constref flavour,[in] IAAFEssenceStream *stream,[in] aafCompressEnable_t compEnable,[in] aafUInt32 numParms,[in, size_is(numParms)] aafmMultiCreate_t *createParms)
 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.
HRESULT MultiOpen ([in] IAAFSourceMob *fileMob,[in] aafMediaOpenMode_t openMode,[in] IAAFEssenceStream *stream,[in] aafCompressEnable_t compEnable)
 Read the metadata from the essence descriptor and/or the formatted data, and prepare the stream for reading the first sample of data.
HRESULT WriteBlocks ([in] aafDeinterleave_t inter,[in] aafUInt16 xferBlockCount,[in, size_is(xferBlockCount)] aafmMultiXfer_t *pTransferParm,[out, size_is(xferBlockCount)] aafmMultiResult_t *pResultParm)
 Write blocks from one or more buffers, interleaving if needed.
HRESULT ReadBlocks ([in] aafDeinterleave_t inter,[in] aafUInt16 xferBlockCount,[out, size_is(xferBlockCount)] aafmMultiXfer_t *pTransferParm,[out, size_is(xferBlockCount)] aafmMultiResult_t *pResultParm)
 Read blocks into one or more buffers, de-interleaving if needed.

Detailed Description

The AAFMultiEssenceCodec 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

AAFRESULT_NOMEMORY

IAAFPlugin

Definition at line 3861 of file AAFPlugin.idl.


Member Function Documentation

HRESULT IAAFMultiEssenceCodec::MultiCreate ( [in] IAAFSourceMob fileMob,
[in, ref] aafUID_constref  flavour,
[in] IAAFEssenceStream stream,
[in] aafCompressEnable_t  compEnable,
[in] aafUInt32  numParms,
[in, size_is(numParms)] aafmMultiCreate_t *  createParms 
)

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

  • fileMob, stream or createParms 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.
Parameters:
fileMob[in] Create the essence attached to this file mob
flavour[in, ref] which flavour of the codec to use
stream[in] Here is an essence stream with the data
compEnable[in] optionally compressing
numParms[in] Here are the number of create parameters
createParms[in, size_is(numParms)] Here are the create parameters
HRESULT IAAFMultiEssenceCodec::MultiOpen ( [in] IAAFSourceMob fileMob,
[in] aafMediaOpenMode_t  openMode,
[in] IAAFEssenceStream stream,
[in] aafCompressEnable_t  compEnable 
)

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

  • fileMob or stream is null.
Parameters:
fileMob[in] Open the essence attached to this file mob
openMode[in] In this mode
stream[in] Here is an essence stream with the raw data
compEnable[in] optionally decompressing
HRESULT IAAFMultiEssenceCodec::ReadBlocks ( [in] aafDeinterleave_t  inter,
[in] aafUInt16  xferBlockCount,
[out, size_is(xferBlockCount)] aafmMultiXfer_t *  pTransferParm,
[out, size_is(xferBlockCount)] aafmMultiResult_t *  pResultParm 
)

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.
Parameters:
inter[in] Whether the material will be de-interleaved on read
xferBlockCount[in] How many aafmMultiXfer blocks follow
pTransferParm[out, size_is(xferBlockCount)] One or more blocks containing buffer pointer and length
pResultParm[out, size_is(xferBlockCount)] One or more blocks containing results
HRESULT IAAFMultiEssenceCodec::WriteBlocks ( [in] aafDeinterleave_t  inter,
[in] aafUInt16  xferBlockCount,
[in, size_is(xferBlockCount)] aafmMultiXfer_t *  pTransferParm,
[out, size_is(xferBlockCount)] aafmMultiResult_t *  pResultParm 
)

Write blocks from one or more buffers, 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_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.
Parameters:
inter[in] Whether the material will be de-interleaved on read
xferBlockCount[in] How many aafMultiXfer blocks follow
pTransferParm[in, size_is(xferBlockCount)] One or more blocks containing buffer pointer and length
pResultParm[out, size_is(xferBlockCount)] One or more blocks containing results

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