MMMFErrorConcealmentIntfc Class Reference

#include <mmf/server/devsoundstandardcustominterfaces.h>

class MMMFErrorConcealmentIntfc
Public Member Functions
pure virtual TInt ConcealErrorForNextBuffer()
pure virtual TInt FrameModeRqrdForEC(TBool &)
pure virtual TInt SetFrameMode(TBool)

Detailed Description

This custom interface can be used to indicate that data has been lost. Typical usage would be during streaming. Lost packets of audio data would not get played, but the video data may still be available for playback. If video playback is synchronized to audio then this API can be used to indicate that audio data is lost so that video playback can continue. It could also be used for an audio-only source to maintain synchronization in time if data is lost.

Member Function Documentation

ConcealErrorForNextBuffer ( )

TInt ConcealErrorForNextBuffer()[pure virtual]

Indicates that next buffer sent to CMMFHwDevice will not contain any valid data, and that a single frame of data has been lost, and that error concealment should be provided for that lost frame. This method will be called after a buffer has been received from the Hardware Device, and before it is returned to the Hardware Device.

Returns: KErrNone if successful. KErrInUse if this method is used out of sequence. KErrNotSupported if this method is not implemented.

FrameModeRqrdForEC ( TBool & )

TInt FrameModeRqrdForEC(TBool &aFrameModeRqrd)[pure virtual]

Queries the CMMFHwDevice to find out if frame mode is required by the implementing CMMFHwDevice in order for it to support error concealment.

This method is allowable when decoding is not active - anytime before the CMMFHwDevice is started, or after it is stopped.

ParameterDescription
aFrameModeRqrdETrue = frame mode required; EFalse = frame mode not required

Returns: KErrNone if successful. KErrInUse if this method is used during decoding. KErrNotSupported if this method is not implemented.

SetFrameMode ( TBool )

TInt SetFrameMode(TBoolaFrameModeOn)[pure virtual]

Puts the CMMFHwDevice into frame-based operation. This may be required in cases where the decoder only supports error concealment in a frame-based mode of operation. Operating in frame-based mode means that the decoder requires that each buffer it receives contains only complete data frames.

Frame mode is limited to a single frame per buffer. The alternative to frame-based mode is buffer-based mode, the default interface for CMMFHwDevices and decoders.

In buffer-based mode, complete data frames are not required to be contained within a single buffer. A data frame may span consecutive data buffers in buffer-based mode.

As it is less efficient than buffer-based mode, Frame-based mode should be used as a less-preferred option where errors are present and the CMMFHwDevice implementation would not be tolerant to buffer-based mode error. This condition would be indicated by FrameModeRqrdForEC resulting in its parameter being set to ETrue.

This method can be called when decoding is not active - anytime before the CMMFHwDevice is started, or after it is stopped.

ParameterDescription
aFrameModeOnETrue = frame mode on; EFalse = frame mode off.

Returns: KErrNone if successful. KErrInUse if this method is used out of sequence. KErrNotSupported if this method is not implemented.