CMMFDataPath Class Reference

class CMMFDataPath : public CActive

Abstract utility class that moves data from a single data source to a single data sink, via a codec if required.

All functions are exported form the DLL and are virtual to allow plugins to define their own data paths.

Inherits from

Nested Classes and Structures

Public Member Functions
~CMMFDataPath ()
IMPORT_C void AddDataSinkL ( MDataSink *)
IMPORT_C void AddDataSourceL ( MDataSource *)
IMPORT_C void BufferEmptiedL ( CMMFBuffer *)
IMPORT_C void BufferFilledL ( CMMFBuffer *)
IMPORT_C TBool CanCreateSinkBuffer ()
IMPORT_C TBool CanCreateSourceBuffer ()
IMPORT_C void ClearPlayWindowL ()
IMPORT_C CMMFBuffer * CreateSinkBufferL ( TMediaId )
IMPORT_C CMMFBuffer * CreateSinkBufferL ( TMediaId , TBool &)
IMPORT_C CMMFBuffer * CreateSourceBufferL ( TMediaId )
IMPORT_C CMMFBuffer * CreateSourceBufferL ( TMediaId , TBool &)
IMPORT_C void DoCancel ()
IMPORT_C TInt DoSendEventToClient ( TUid , TInt )
IMPORT_C void EmptyBufferL ( CMMFBuffer *, MDataSource *, TMediaId )
IMPORT_C void FillBufferL ( CMMFBuffer *, MDataSink *, TMediaId )
IMPORT_C CMMFDataPath * NewL ( MAsyncEventHandler &)
IMPORT_C CMMFDataPath * NewL ( TMediaId , MAsyncEventHandler &)
IMPORT_C CMMFDataPath * NewL ( TUid , MAsyncEventHandler &)
IMPORT_C CMMFDataPath * NewL ( TUid , TMediaId , MAsyncEventHandler &)
IMPORT_C void Pause ()
IMPORT_C void PlayL ()
IMPORT_C TTimeIntervalMicroSeconds Position ()
IMPORT_C void PrimeL ()
IMPORT_C void ResetL ()
IMPORT_C TInt RunError ( TInt )
IMPORT_C void RunL ()
IMPORT_C TInt SetBlockLength ( TUint )
IMPORT_C void SetPlayWindowL (const TTimeIntervalMicroSeconds &, const TTimeIntervalMicroSeconds &)
IMPORT_C void SetPositionL (const TTimeIntervalMicroSeconds &)
IMPORT_C TFourCC SinkDataTypeCode ( TMediaId )
IMPORT_C TFourCC SourceDataTypeCode ( TMediaId )
IMPORT_C TInt State ()
IMPORT_C void Stop ()
Protected Member Functions
CMMFDataPath ( TMediaId , MAsyncEventHandler &)
TInt AudioSamplesPlayed ()
TInt AudioSamplesRecorded ()
TTimeIntervalMicroSeconds CalculateAudioInputPosition ()
TTimeIntervalMicroSeconds CalculateAudioOutputPosition ()
IMPORT_C void ConstructL ( TUid )
IMPORT_C void ConstructSinkL (const TDesC8 &)
IMPORT_C void ConstructSourceL (const TDesC8 &)
TInt DetermineBuffersToUseL (void)
IMPORT_C void EndOfData ()
TTimeIntervalMicroSeconds InputPosition ()
TTimeIntervalMicroSeconds OutputPosition ()
Private Member Functions
void ChangeDataPathTransferState ( TTransferState )
void CreateDataPathL ( MDataSource *, MDataSink *)
void DoCleanupBuffers ()
void DoEndOfDataL ()
void DoPauseL ()
void DoStopL ()
TTimeIntervalMicroSeconds Duration ()
void EmptySinkBufferL ()
void FillSinkBufferL ()
void FillSourceBufferL ()
void InitializeSinkL ()
void InitializeSourceL ()
void ObtainSyncBuffersL ()
void ResetRefBuffers ()
IMPORT_C TInt SendEventToClient (const TMMFEvent &)
void SetBuffersAvailable ()
Inherited Functions
CActive::CActive(TInt)
CActive::Cancel()
CActive::Deque()
CActive::Extension_(TUint,TAny *&,TAny *)
CActive::IsActive()const
CActive::IsAdded()const
CActive::Priority()const
CActive::SetActive()
CActive::SetPriority(TInt)
CActive::~CActive()
CBase::CBase()
CBase::Delete(CBase *)
CBase::operator new(TUint)
CBase::operator new(TUint,TAny *)
CBase::operator new(TUint,TLeave)
CBase::operator new(TUint,TLeave,TUint)
CBase::operator new(TUint,TUint)
CBase::~CBase()
Public Member Enumerations
enum TDataPathState { EStopped , EPrimed , EPlaying , ERecording , EConverting }
Protected Member Enumerations
enum TNeedBuffer { ENoBuffers  = 0x0, ENeedSinkBuffer  = 0x01, ENeedSourceBuffer  = 0x10 }
enum TTransferState {
EWaitSink , EWaitSource , EInitializeSink , EInitializeSource , ENeedSourceData , ENeedSinkData , ENeedToMatchSourceToSink , ESendDataToSink , EEndOfData
}
Inherited Enumerations
CActive:TPriority
Protected Attributes
TBool iAllDataSentToSink
TInt iBuffersToUse
TTimeIntervalMicroSeconds iCachedSourceDuration
CMMFCodec * iCodec
TCodecProcessResult iCodecProcessResult
CCompleteCallback * iCompleteCallback
TUint iCurrentSinkFrameNumber
TUint iCurrentSourceFrameNumber
TUint iDataPathCompletedErrorCode
TBool iDataPathCreated
MDataSink * iDataSink
MDataSource * iDataSource
MAsyncEventHandler & iEventHandler
TMediaId iMediaId
TBool iNoMoreSourceData
TBool iObtainingAsyncSinkBuffer
TBool iObtainingAsyncSourceBuffer
TBool iPauseCalled
TTimeIntervalMicroSeconds iPlayWindowEndPosition
TTimeIntervalMicroSeconds iPlayWindowStartPosition
TInt iReferenceAudioSamplesPlayed
TInt iReferenceAudioSamplesRecorded
CMMFBuffer * iSinkBuffer
TBool iSinkBufferWithSink
TBool iSinkCanReceive
TFourCC iSinkFourCC
TBool iSnkBufRef
CMMFBuffer * iSourceBuffer
TBool iSourceBufferWithSource
TFourCC iSourceFourCC
TBool iSrcBufRef
TTimeIntervalMicroSeconds iStartPosition
TDataPathState iState
TTransferState iTransferState
TBool iUseSuppliedCodecUid
Inherited Attributes
CActive::iStatus

Constructor & Destructor Documentation

CMMFDataPath(TMediaId, MAsyncEventHandler &)

CMMFDataPath ( TMediaId aMediaId,
MAsyncEventHandler & aEventHandler
) [protected, inline]

Parameters

TMediaId aMediaId
MAsyncEventHandler & aEventHandler

~CMMFDataPath()

IMPORT_C ~CMMFDataPath ( ) [virtual]

Standard destructor.

Member Functions Documentation

AddDataSinkL(MDataSink *)

IMPORT_C void AddDataSinkL ( MDataSink * aSink ) [virtual]

Adds a data sink to the datapath and, if the source already exists, tries to establish a connection between the source and sink.

Parameters

MDataSink * aSink The data sink to add to the data path.

AddDataSourceL(MDataSource *)

IMPORT_C void AddDataSourceL ( MDataSource * aSource ) [virtual]

Adds a data source to the datapath and, if the sink already exists, tries to establish a connection between the source and sink.

Parameters

MDataSource * aSource The data source to add to the data path.

AudioSamplesPlayed()

TInt AudioSamplesPlayed ( ) const [protected]

AudioSamplesRecorded()

TInt AudioSamplesRecorded ( ) const [protected]

BufferEmptiedL(CMMFBuffer *)

IMPORT_C void BufferEmptiedL ( CMMFBuffer * aBuffer ) [virtual]

Indicates the data sink has emptied the buffer.

Called by the CMMFDataPath's MDataSink when it has emptied the buffer

Parameters

CMMFBuffer * aBuffer The emptied buffer.

BufferFilledL(CMMFBuffer *)

IMPORT_C void BufferFilledL ( CMMFBuffer * aBuffer ) [virtual]

Indicates the data source has filled the specified buffer.

Called by the CMMFDataPath's MDataSource when it has filled the buffer.

Parameters

CMMFBuffer * aBuffer A pointer to the filled buffer.

CalculateAudioInputPosition()

TTimeIntervalMicroSeconds CalculateAudioInputPosition ( ) const [protected]

CalculateAudioOutputPosition()

TTimeIntervalMicroSeconds CalculateAudioOutputPosition ( ) const [protected]

CanCreateSinkBuffer()

IMPORT_C TBool CanCreateSinkBuffer ( ) [virtual]

Tests whether the data path can create a sink buffer.

The default implementation returns false.

CanCreateSourceBuffer()

IMPORT_C TBool CanCreateSourceBuffer ( ) [virtual]

Tests whether the data path can create a source buffer.

Would expect datapath to always return NULL, so this is a default implementation of a pure virtual from MDataSink .

The default implementation returns EFalse.

ChangeDataPathTransferState(TTransferState)

void ChangeDataPathTransferState ( TTransferState aNewDataPathTransferState ) [private]

Uses the AO mechanism to drive state changes between sources and sinks.

RunL() moves and assigns buffers between its attached MDataSource/MDataSinks.

Parameters

TTransferState aNewDataPathTransferState

ClearPlayWindowL()

IMPORT_C void ClearPlayWindowL ( ) [virtual]

Sets the play window to the full length of clip.

ConstructL(TUid)

IMPORT_C void ConstructL ( TUid aCodecUid = KNullUid ) [protected]

Takes UID of codec on construction, and if not an NULL codec sets the datapath up for codec instantiation.

Parameters

TUid aCodecUid = KNullUid The UID of the codec.

ConstructSinkL(const TDesC8 &)

IMPORT_C void ConstructSinkL ( const TDesC8 & aInitData ) [protected, virtual]

Constructs a sink.

Overridable constuction specific to this datasource.

The default implementation leaves with KErrNotSupported.

Parameters

const TDesC8 & aInitData The initialisation data.

ConstructSourceL(const TDesC8 &)

IMPORT_C void ConstructSourceL ( const TDesC8 & aInitData ) [protected, virtual]

Constructs a source.

The default implementation leaves with KErrNotSupported.

Parameters

const TDesC8 & aInitData The initialisation data.

CreateDataPathL(MDataSource *, MDataSink *)

void CreateDataPathL ( MDataSource * aSource,
MDataSink * aSink
) [private]

Parameters

MDataSource * aSource
MDataSink * aSink

CreateSinkBufferL(TMediaId)

IMPORT_C CMMFBuffer * CreateSinkBufferL ( TMediaId aMediaId ) [virtual]

Creates a sink buffer according to the specifed media ID.

Intended for synchronous usage (buffers supplied by datapath for an MDataSink ). This method is essentially a dummy implementation of an MDataSink pure virtual.

The default implementation returns NULL.

Parameters

TMediaId aMediaId An optional mediaID parameter when there are multiple buffers arriving of different media types.

CreateSinkBufferL(TMediaId, TBool &)

IMPORT_C CMMFBuffer * CreateSinkBufferL ( TMediaId aMediaId,
TBool & aReference
) [virtual]

Creates a sink buffer according to the specifed media ID and reference.

Intended for asynchronous usage (buffers supplied by Devsound device). This method is essentially a dummy implementation of an MDataSink pure virtual.

The default implementation returns NULL.

Parameters

TMediaId aMediaId An optional mediaID parameter when there are multiple buffers arriving for different media types.
TBool & aReference A boolean indicating buffer ownership.

CreateSourceBufferL(TMediaId)

IMPORT_C CMMFBuffer * CreateSourceBufferL ( TMediaId aMediaId ) [virtual]

Creates a source buffer.

Intended for synchronous usage (buffers supplied by datapath for a MDataSource ) This method is essentially a dummy implementation of an MDataSource pure virtual.

The default implementation leaves with KErrNotSupported and returns NULL.

Parameters

TMediaId aMediaId An optional mediaID parameter when there are multiple buffers arriving of different media types.

CreateSourceBufferL(TMediaId, TBool &)

IMPORT_C CMMFBuffer * CreateSourceBufferL ( TMediaId aMediaId,
TBool & aReference
) [virtual]

Creates a source buffer according to the specifed media ID and reference.

Intended for asynchronous usage (buffers supplied by datapath for a MDataSource ) This method is essentially a dummy implementation of an MDataSource pure virtual.

The default implementation leaves with KErrNotSupported and returns NULL.

Parameters

TMediaId aMediaId An optional mediaID parameter when there are multiple buffers arriving of different media types.
TBool & aReference A boolean indicating buffer ownership. ETrue if the MDataSource owns the buffer, EFalse if the caller owns the buffer.

DetermineBuffersToUseL(void)

TInt DetermineBuffersToUseL ( void ) const [protected]

Parameters

void

DoCancel()

IMPORT_C void DoCancel ( ) [virtual]

Cancels the clip.

The default implementation is empty.

DoCleanupBuffers()

void DoCleanupBuffers ( ) [private]

Delete source and/or sink buffers that are owned by DataPath.

Ownership indicated by iSrcBufRef and iSnkBufRef.

Ownership is assigned during buffer allocation within the datapath PrimeL() .

DoEndOfDataL()

void DoEndOfDataL ( ) [private]

This is a virtual function datapath (or derivations off) that can be implemented or may be left blank for default behaviour.

Additional Pause method specific to this datapath.

DoPauseL()

void DoPauseL ( ) [private]

This is a virtual function datapath (or derivations off) that can be implemented but may be left blank for default behaviour.

Additional Pause method specific to this datapath.

The DataPath implements pause by recording the current position and stopping the source and sink. When Play is called the DataPath uses the stored position as the starting point and resumes playing. The reason for this (rather than using the PauseL() API on sources and sinks) is that some implementations do not support a suitable pause, therefore the DataPath is implemented to support the lowest common denominator.

Note: A suitable pause implementation will retain any buffers in use. There will be no need to call PrimeL() prior to PlayL() .

DoSendEventToClient(TUid, TInt)

IMPORT_C TInt DoSendEventToClient ( TUid aEventType,
TInt aErrorCode
)

Passes error handling and general messages up to clients.

Parameters

TUid aEventType Category code for the event. Category codes can be used as unique identifers.
TInt aErrorCode Standard error code.

DoStopL()

void DoStopL ( ) [private]

This is a virtual function datapath (or derivations off) that can be implemented but may be left blank for default behaviour.

Additional Stop() method specific to this datapath.

Duration()

TTimeIntervalMicroSeconds Duration ( ) const [private]

Returns the duration of the clip.

EmptyBufferL(CMMFBuffer *, MDataSource *, TMediaId)

IMPORT_C void EmptyBufferL ( CMMFBuffer * aBuffer,
MDataSource * aSupplier,
TMediaId aMediaId
) [virtual]

Clears the specified buffer.

Pure virtual dummy implementation, not needed by datapath comes from MDataSink - CMMFData path is a sink to its MDataSource .

This is only required for an active push MDataSource requesting a buffer empty.

Parameters

CMMFBuffer * aBuffer The buffer to empty.
MDataSource * aSupplier The MDataSource supplying this buffer.
TMediaId aMediaId An optional mediaID parameter when there are multiple buffers arriving of different media types.

EmptySinkBufferL()

void EmptySinkBufferL ( ) [private]

EndOfData()

IMPORT_C void EndOfData ( ) [protected, virtual]

Forces and end of data state on the datapath

FillBufferL(CMMFBuffer *, MDataSink *, TMediaId)

IMPORT_C void FillBufferL ( CMMFBuffer * aBuffer,
MDataSink * aConsumer,
TMediaId aMediaId
) [virtual]

Fills the specified buffer.

Pure virtual dummy implementation, not needed by datapath comes from MDataSink - CMMFData path is a source to its MDataSink

Only required for an active pull MDataSink requesting a buffer fill. The default implementation is empty.

Parameters

CMMFBuffer * aBuffer The buffer to fill.
MDataSink * aConsumer The MDataSink supplying this buffer.
TMediaId aMediaId An optional mediaID parameter when there are multiple buffers arriving of different media types

FillSinkBufferL()

void FillSinkBufferL ( ) [private]

FillSourceBufferL()

void FillSourceBufferL ( ) [private]

InitializeSinkL()

void InitializeSinkL ( ) [private]

InitializeSourceL()

void InitializeSourceL ( ) [private]

InputPosition()

TTimeIntervalMicroSeconds InputPosition ( ) const [protected]

NewL(MAsyncEventHandler &)

IMPORT_C CMMFDataPath * NewL ( MAsyncEventHandler & aEventHandler ) [static]

Allocates and constructs a data path.

Use this function if the codec UID is not already known by CMMFController and there is no data path ambiguity - ie only one data path is possible.

Will create codec via fourCC.

Parameters

MAsyncEventHandler & aEventHandler Installs an event handler to provide message passing between clients and sources/sinks.

NewL(TMediaId, MAsyncEventHandler &)

IMPORT_C CMMFDataPath * NewL ( TMediaId aMediaId,
MAsyncEventHandler & aEventHandler
) [static]

Allocates and constructs a data path according to the specified media ID.

Use this function if the codec UID is not already known by CMMFController and there is ambiguity with the data path ie. there is more than one possible data path.

Parameters

TMediaId aMediaId Optional media ID parameter when there are multiple media types.
MAsyncEventHandler & aEventHandler Installs an event handler to provide message passing between clients and sources/sinks.

NewL(TUid, MAsyncEventHandler &)

IMPORT_C CMMFDataPath * NewL ( TUid aCodecUid,
MAsyncEventHandler & aEventHandler
) [static]

Allocates and constructs a data path according to the specified codec UID.

Use this function if the codec UID is already known by CMMFController and there is no data path ambiguity ie. only one data path is possible will create codec explicitly using the supplied codec Uid

Parameters

TUid aCodecUid Optional mediaID parameter when there are multiple media types
MAsyncEventHandler & aEventHandler Installs an event handler to provide message passing between clients and sources/sinks.

NewL(TUid, TMediaId, MAsyncEventHandler &)

IMPORT_C CMMFDataPath * NewL ( TUid aCodecUid,
TMediaId aMediaId,
MAsyncEventHandler & aEventHandler
) [static]

Allocates and constructs a data path according to the specified codec UID.

Use this function if the codec UID is already known by CMMFController and there is ambiguity ie. more than one possible data path. TMediaId used to select the path.

Parameters

TUid aCodecUid The codec UID.
TMediaId aMediaId Optional mediaID parameter when there are multiple media types.
MAsyncEventHandler & aEventHandler Installs an event handler to provide message passing between clients and sources/sinks.

ObtainSyncBuffersL()

void ObtainSyncBuffersL ( ) [private]

Obtain source and/or sink buffer using the synchronous API CreateSourceBufferL() and CreateSinkBufferL() .

OutputPosition()

TTimeIntervalMicroSeconds OutputPosition ( ) const [protected]

Pause()

IMPORT_C void Pause ( ) [virtual]

Pauses playing.

Sends KMMFErrorCategoryDataPathGeneralError to the client if an error occurs.

PlayL()

IMPORT_C void PlayL ( ) [virtual]

Starts an active scheduler 'play' loop.

Can only play from the primed state.

Position()

IMPORT_C TTimeIntervalMicroSeconds Position ( ) const [virtual]

Gets the data path position.

PrimeL()

IMPORT_C void PrimeL ( ) [virtual]

Allocates buffers in preparation to play.

Must be called before calling PlayL() .

iSnkBufRef and iSrcBufRef contain ETrue if these buffers are created and owned by a MDataSource or MDataSink For clean-up purposes, datapath only cleans up buffers allocated directly by PrimeL() .

ResetL()

IMPORT_C void ResetL ( ) [virtual]

Deletes buffers if this datapath's sources and sinks own the buffers returned by PrimeL() . Typically if buffers are created asychronously, the datapath doesn't own the buffer so leaves cleanup handling to the owner sources/sinks.

Called when source and sink needs to be de-referenced. Sets iDataPathCreated, iSinkCanReceive, iSnkBufRef and iSrcBufRef to EFalse; sets iState to EStopped.

ResetRefBuffers()

void ResetRefBuffers ( ) [private]

RunError(TInt)

IMPORT_C TInt RunError ( TInt aError ) [virtual]

Handles errors coming from attached sources and passes them to the clients.

Parameters

TInt aError Standard error code (KErrNone = No Error).

RunL()

IMPORT_C void RunL ( ) [virtual]

Runs the clip depending on the current data path and transfer state.

For example, fills the sink buffer if TDataPathState is EPlaying and TTransferState is ENeedSinkData.

SendEventToClient(const TMMFEvent &)

IMPORT_C TInt SendEventToClient ( const TMMFEvent & aEvent ) [private]

Passes error handling and general messages to clients.

Parameters

const TMMFEvent & aEvent TMMFEvent supplied by callee (typically DoSendEventToClient)

SetBlockLength(TUint)

IMPORT_C TInt SetBlockLength ( TUint aBlockLength )

Parameters

TUint aBlockLength

SetBuffersAvailable()

void SetBuffersAvailable ( ) [private]

SetPlayWindowL(const TTimeIntervalMicroSeconds &, const TTimeIntervalMicroSeconds &)

IMPORT_C void SetPlayWindowL ( const TTimeIntervalMicroSeconds & aStart,
const TTimeIntervalMicroSeconds & aEnd
) [virtual]

Sets the play window absolutely (i.e. the parameters are relative to the start of the entire clip).

Parameters

const TTimeIntervalMicroSeconds & aStart The offset from the start of the Clip
const TTimeIntervalMicroSeconds & aEnd The offset from the end of the clip (if this is less than aStart, then the two will be inverted).

SetPositionL(const TTimeIntervalMicroSeconds &)

IMPORT_C void SetPositionL ( const TTimeIntervalMicroSeconds & aPosition ) [virtual]

Sets the data path position.

Parameters

const TTimeIntervalMicroSeconds & aPosition The data path position.

SinkDataTypeCode(TMediaId)

IMPORT_C TFourCC SinkDataTypeCode ( TMediaId aMediaId ) [virtual]

Gets the sink's data type for the specified media ID.

Parameters

TMediaId aMediaId An optional parameter to specifiy the specific stream when datasource contains more than one stream of data

SourceDataTypeCode(TMediaId)

IMPORT_C TFourCC SourceDataTypeCode ( TMediaId aMediaId ) [virtual]

Gets the source data type for the specified media ID.

Parameters

TMediaId aMediaId An optional parameter to specifiy specific stream when datasource contains more than one stream of data.

State()

IMPORT_C TInt State ( ) [virtual]

Returns the current data path state.

Stop()

IMPORT_C void Stop ( ) [virtual]

Stops playing.

Resets datapath position - currently does not clean up buffers. Sends KMMFErrorCategoryDataPathGeneralError to the client if an error occurs.

Member Enumerations Documentation

Enum TDataPathState

Indicates the state of the data path.

Mimics typical MultiMedia behaviour of stopped, primed and playing

Enumerators

EStopped

Stopped.

EPrimed

Primed.

EPlaying

Playing.

ERecording

Recording.

EConverting

Converting.

Enum TNeedBuffer

This indicates what buffers are required in order to operate. If a real Codec is in use, buffers are required from both source and sink, else only one is required and source is preferred.

Enumerators

ENoBuffers = 0x0

No buffers needed.

ENeedSinkBuffer = 0x01

Sink buffer needed.

ENeedSourceBuffer = 0x10

Source buffer needed.

Enum TTransferState

Indicates the transfer state.

Buffers maybe be filled, emptied, or have "one" shot initialisatings performed upon them.

TTransferState is used within the datapath RunL which drives databuffer exchange.

Enumerators

EWaitSink

Waiting on a BufferEmptied callback from sink

EWaitSource

Waiting on a BufferFilled callback from source

EInitializeSink

Initialize the sink.

EInitializeSource

Initialize the source.

ENeedSourceData

Source buffer does not contain data.

ENeedSinkData

Sink buffer does not contain data.

ENeedToMatchSourceToSink

There is more source data to send to the sink and need to match sink and source.

ESendDataToSink

Outstanding data to send to sink.

EEndOfData

End of data.

Member Data Documentation

TBool iAllDataSentToSink

TBool iAllDataSentToSink [protected]

Indicates that all data has been sent to the sink.

TInt iBuffersToUse

TInt iBuffersToUse [protected]

Holds the outcome of the call to DetermineBuffersToUseL

TTimeIntervalMicroSeconds iCachedSourceDuration

TTimeIntervalMicroSeconds iCachedSourceDuration [protected]

This value can be used to obtain the duration of the source when playing or converting. This is an optimisation as this value will not change if we are playing or converting.

CMMFCodec * iCodec

CMMFCodec * iCodec [protected]

Codec in use. Null Codec is signified by == NULL

TCodecProcessResult iCodecProcessResult

TCodecProcessResult iCodecProcessResult [protected]

Result of processing the codec.

CCompleteCallback * iCompleteCallback

CCompleteCallback * iCompleteCallback [protected]

Pointer to internal callback completion class

TUint iCurrentSinkFrameNumber

TUint iCurrentSinkFrameNumber [protected]

The sink's position in terms of frames or some other time fixed parameter.

TUint iCurrentSourceFrameNumber

TUint iCurrentSourceFrameNumber [protected]

The source's position in terms of frames or some other time fixed parameter.

TUint iDataPathCompletedErrorCode

TUint iDataPathCompletedErrorCode [protected]

Datapath completed because of an error; usually KErrNone.

TBool iDataPathCreated

TBool iDataPathCreated [protected]

Set to ETrue when the data path has a source and a sink and can send data from the source to the sink.

MDataSink * iDataSink

MDataSink * iDataSink [protected]

The sink of data for which the CMMFDataPath is a MDataSource for

MDataSource * iDataSource

MDataSource * iDataSource [protected]

The source of data to which the CMMFDataPath is a MDataSink for.

MAsyncEventHandler & iEventHandler

MAsyncEventHandler & iEventHandler [protected]

Event handler.

TMediaId iMediaId

TMediaId iMediaId [protected]

Identifies which media type and stream within MDataSource .

TBool iNoMoreSourceData

TBool iNoMoreSourceData [protected]

Indicates that all data has been obtained from the source (ETrue if there is no more source data).

TBool iObtainingAsyncSinkBuffer

TBool iObtainingAsyncSinkBuffer [protected]

Indicates asynchrous buffers from AudioOutput.

TBool iObtainingAsyncSourceBuffer

TBool iObtainingAsyncSourceBuffer [protected]

Indicates asynchrous buffers from AudioInput.

TBool iPauseCalled

TBool iPauseCalled [protected]

Indicates DoPauseL() has been called.

TTimeIntervalMicroSeconds iPlayWindowEndPosition

TTimeIntervalMicroSeconds iPlayWindowEndPosition [protected]

End position of the play window.

TTimeIntervalMicroSeconds iPlayWindowStartPosition

TTimeIntervalMicroSeconds iPlayWindowStartPosition [protected]

Start position of the play window.

TInt iReferenceAudioSamplesPlayed

TInt iReferenceAudioSamplesPlayed [protected]

Holds the number of samples played on audio output at a point where we want to reference play duration from.

TInt iReferenceAudioSamplesRecorded

TInt iReferenceAudioSamplesRecorded [protected]

Holds the number of samples recorded from audio input at a point where we want to reference record duration from.

CMMFBuffer * iSinkBuffer

CMMFBuffer * iSinkBuffer [protected]

This is set to point to whichever sink buffer is in use.

TBool iSinkBufferWithSink

TBool iSinkBufferWithSink [protected]

Flag to indicate that a buffer is with the sink.

This are necessary as it is imperrative that when a buffer is with the sink, it must not be referenced in any way. The reason for this is that it is not mandated that sinks maintain buffer references. For example, it is valid for DevSound to request more audio data in a different buffer to the one supplied to it.

TBool iSinkCanReceive

TBool iSinkCanReceive [protected]

Set to true when the sink is able to accept data. EFalse otherwise.

TFourCC iSinkFourCC

TFourCC iSinkFourCC [protected]

The sink's data type. Same as the codec input data type.

TBool iSnkBufRef

TBool iSnkBufRef [protected]

ETrue if sink buffer is reference to object owned by someone else

CMMFBuffer * iSourceBuffer

CMMFBuffer * iSourceBuffer [protected]

This is the pointer to whichever source buffer is in use

TBool iSourceBufferWithSource

TBool iSourceBufferWithSource [protected]

Flag to indicate that a buffer is with the source.

This is necessary as it is imperrative that when a buffer is with the source, it must not be referenced in any way. The reason for this is that it is not mandated that sources maintain buffer references. For example, it is valid for DevSound to return recorded data in a different buffer to the one supplied to it.

TFourCC iSourceFourCC

TFourCC iSourceFourCC [protected]

The source's data type. Same as the codec output data type.

TBool iSrcBufRef

TBool iSrcBufRef [protected]

ETrue if the source buffer is reference to object owned by someone else.

TTimeIntervalMicroSeconds iStartPosition

TTimeIntervalMicroSeconds iStartPosition [protected]

The position audio will start playing from. When stopping, this is set to iPlayWindowStartPosition. When pausing, this is set to the current position.

TDataPathState iState

TDataPathState iState [protected]

Current data path state. TDataPathState

TTransferState iTransferState

TTransferState iTransferState [protected]

Current transfer state. TTransferState

TBool iUseSuppliedCodecUid

TBool iUseSuppliedCodecUid [protected]

Set to true if data path has to use a supplied codec in its construction.