CMMFDevSound Class Reference

class CMMFDevSound : public CBase

This is the interface from Symbian OS to the raw audio functions on the device hardware.

DevSound is currently loaded as a DLL, and implements the VCR-type functions to be expected for such an interface.

The audio functions include the following functionality:
  • Initialisation and configuration of hardware devices, for example, setting microphone gain, setting setero balance and so on.

  • The playing and recording of raw audio data.

  • The playing and dynamic control of tones with user specified frequencies.

  • The playing of DTMF strings.

Inherits from

Public Member Functions
~CMMFDevSound()
TInt CancelInitialize()
TInt CancelRegisterAsClient(TUid)
IMPORT_C TMMFCapabilitiesCapabilities()
IMPORT_C TMMFCapabilitiesConfig()
IMPORT_C TAny *CustomInterface(TUid)
TInt EmptyBuffers()
IMPORT_C TIntFixedSequenceCount()
IMPORT_C const TDesC &FixedSequenceName(TInt)
IMPORT_C TIntGain()
IMPORT_C voidGetPlayBalanceL(TInt &, TInt &)
IMPORT_C voidGetRecordBalanceL(TInt &, TInt &)
TInt GetResourceNotificationData(TUid, TDes8 &)
IMPORT_C voidGetSupportedInputDataTypesL(RArray< TFourCC > &, const TMMFPrioritySettings &)
IMPORT_C voidGetSupportedOutputDataTypesL(RArray< TFourCC > &, const TMMFPrioritySettings &)
TInt GetTimePlayed(TTimeIntervalMicroSeconds &)
IMPORT_C voidInitializeL(MDevSoundObserver &, TMMFState)
IMPORT_C voidInitializeL(MDevSoundObserver &, TUid, TMMFState)
IMPORT_C voidInitializeL(MDevSoundObserver &, TFourCC, TMMFState)
TBool IsGetTimePlayedSupported()
TBool IsResumeSupported()
IMPORT_C TIntMaxGain()
IMPORT_C TIntMaxVolume()
IMPORT_C CMMFDevSound *NewL()
IMPORT_C voidPause()
IMPORT_C voidPlayDTMFStringL(const TDesC &)
IMPORT_C voidPlayData()
IMPORT_C voidPlayDualToneL(TInt, TInt, const TTimeIntervalMicroSeconds &)
IMPORT_C voidPlayFixedSequenceL(TInt)
IMPORT_C voidPlayInitL()
IMPORT_C voidPlayToneL(TInt, const TTimeIntervalMicroSeconds &)
IMPORT_C voidPlayToneSequenceL(const TDesC8 &)
TBool QueryIgnoresUnderflow()
IMPORT_C voidRecordData()
IMPORT_C voidRecordInitL()
TInt RegisterAsClient(TUid, const TDesC8 &)
TInt Resume()
IMPORT_C TIntSamplesPlayed()
IMPORT_C TIntSamplesRecorded()
TInt SetClientThreadInfo(TThreadId)
IMPORT_C voidSetConfigL(const TMMFCapabilities &)
IMPORT_C voidSetDTMFLengths(TTimeIntervalMicroSeconds32 &, TTimeIntervalMicroSeconds32 &, TTimeIntervalMicroSeconds32 &)
IMPORT_C voidSetGain(TInt)
IMPORT_C voidSetPlayBalanceL(TInt, TInt)
IMPORT_C voidSetPrioritySettings(const TMMFPrioritySettings &)
IMPORT_C voidSetRecordBalanceL(TInt, TInt)
IMPORT_C voidSetToneRepeats(TInt, const TTimeIntervalMicroSeconds &)
IMPORT_C voidSetVolume(TInt)
IMPORT_C voidSetVolumeRamp(const TTimeIntervalMicroSeconds &)
IMPORT_C voidStop()
IMPORT_C TIntVolume()
TInt WillResumePlay()
Protected Member Functions
CMMFDevSound()
voidConstructL()
Inherited Functions
CBase::CBase()
CBase::Delete(CBase *)
CBase::Extension_(TUint,TAny *&,TAny *)
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()
Protected Attributes
CBody *iBody

Constructor & Destructor Documentation

CMMFDevSound()

CMMFDevSound()[protected]

Default Constructor.

~CMMFDevSound()

IMPORT_C~CMMFDevSound()

Destructor.

Deletes all objects and releases all resource owned by this instance.

Member Functions Documentation

CancelInitialize()

TInt CancelInitialize()[inline]

Cancels the initialization process of a CMMFDevSound object

An error code indicating if the function call was successful. KErrNone on success, KerrNotReady if this is called before InitializeL() call or after the object has been initialized,

CancelRegisterAsClient(TUid)

TInt CancelRegisterAsClient(TUidaEventType)[inline]

Cancels the Registered Notification.

An error code indicating if the function call was successful. KErrNone on success, KErrNotSupported if the event type is not supported otherwise another of the system-wide error codes.

Parameters

TUid aEventTypeThe Event type need to cancel

Capabilities()

IMPORT_C TMMFCapabilitiesCapabilities()

Returns the supported Audio settings ie. encoding, sample rates, mono/stereo operation, buffer size etc.

The device settings.

Config()

IMPORT_C TMMFCapabilitiesConfig()const

Returns the current device configuration.

The device settings.

ConstructL()

voidConstructL()[protected]

Second phase constructor.

CustomInterface(TUid)

IMPORT_C TAny *CustomInterface(TUidaInterfaceId)

Retrieves a custom interface to the device.

A pointer to the interface implementation, or NULL if the device does not implement the interface requested. The return value must be cast to the correct type by the user.The user should be careful while caching the custom interface pointer, as in some situations the lower level custom interface pointer may become NULL.

Parameters

TUid aInterfaceIdThe interface UID, defined with the custom interface.

EmptyBuffers()

TInt EmptyBuffers()[inline]

Empties the play buffers below DevSound without causing the codec to be deleted.

An error code indicating if the function call was successful. KErrNone on success, KErrNotSupported if called in a mode other than EMMFStatePlaying or if the function is otherwise not supported, KErrNotReady if this is called before playing, otherwise another of the system-wide error codes. If this function is not supported, it is advised to use Stop().

FixedSequenceCount()

IMPORT_C TIntFixedSequenceCount()

Returns the number of available pre-defined tone sequences.

This is the number of fixed sequence supported by DevSound by default.

The fixed sequence count. This value is implementation dependent but is always greater than or equal to zero.

FixedSequenceName(TInt)

IMPORT_C const TDesC &FixedSequenceName(TIntaSequenceNumber)

Returns the name assigned to a specific pre-defined tone sequence.

This is the number of the fixed sequence supported by DevSound by default.

The function raises a panic if sequence number specified is invalid.

A reference to a Descriptor containing the fixed sequence name indexed by aSequenceNumber.

FixedSequenceCount()

Parameters

TInt aSequenceNumberThe index identifying the specific pre-defined tone sequence. Index values are relative to zero. This can be any value from zero to the value returned by a call to FixedSequenceCount() - 1. The function raises a panic if sequence number is not within this range.

Gain()

IMPORT_C TIntGain()

Returns an integer representing the current gain.

The current gain level.

GetPlayBalanceL(TInt &, TInt &)

IMPORT_C voidGetPlayBalanceL(TInt &aLeftPercentage,
TInt &aRightPercentage
)

Returns the speaker balance set for playing.

Leaves on failure.

Parameters

TInt & aLeftPercentageOn return contains the left speaker volume percentage.
TInt & aRightPercentageOn return contains the right speaker volume percentage.

GetRecordBalanceL(TInt &, TInt &)

IMPORT_C voidGetRecordBalanceL(TInt &aLeftPercentage,
TInt &aRightPercentage
)

Returns the microphone gain balance set for recording.

Leaves on failure.

Parameters

TInt & aLeftPercentageOn return contains the left microphone gain percentage.
TInt & aRightPercentageOn return contains the right microphone gain percentage.

GetResourceNotificationData(TUid, TDes8 &)

TInt GetResourceNotificationData(TUidaEventType,
TDes8 &aNotificationData
)[inline]

Returns the Notification data which the client needs to resume playing.

An error code indicating if the function call was successful. KErrNone on success, otherwise another of the system-wide error codes.

Parameters

TUid aEventTypeThe Event type for which to get notification data
TDes8 & aNotificationDataThe reference data for which the client needs to resume the play. The actual data depends on the event type. Note that for the event type 'KMMFEventCategoryAudioResourceAvailable' the package buffer returned is TMMFTimeIntervalMicroSecondsPckg,but the contents should be converted to an integer and interpreted as the data returned is samples played ,but not as a microsecond value.

GetSupportedInputDataTypesL(RArray< TFourCC > &, const TMMFPrioritySettings &)

IMPORT_C voidGetSupportedInputDataTypesL(RArray< TFourCC > &aSupportedDataTypes,
const TMMFPrioritySettings &aPrioritySettings
)const

Returns a list of the supported input datatypes that can be sent to DevSound for playing audio. The datatypes returned are those that the DevSound supports given the priority settings passed in aPrioritySettings.

Note that if no supported data types are found this does not constitute failure, the function will return normally with no entries in aSupportedDataTypes.

Parameters

RArray< TFourCC > & aSupportedDataTypesThe array of supported data types that will be filled in by this function. The supported data types of the DevSound are in the form of an array of TFourCC codes. Any existing entries in the array will be overwritten on calling this function. If no supported data types are found given the priority settings, then the aSupportedDatatypes array will have zero entries.
const TMMFPrioritySettings & aPrioritySettingsThe priority settings used to determine the supported datatypes. Note this does not set the priority settings. For input datatypes the iState member of the priority settings would be expected to be either EMMFStatePlaying or EMMFStatePlayingRecording. The priority settings may effect the supported datatypes depending on the audio routing.

GetSupportedOutputDataTypesL(RArray< TFourCC > &, const TMMFPrioritySettings &)

IMPORT_C voidGetSupportedOutputDataTypesL(RArray< TFourCC > &aSupportedDataTypes,
const TMMFPrioritySettings &aPrioritySettings
)const

Returns a list of the supported output dataypes that can be received from DevSound for recording audio. The datatypes returned are those that the DevSound supports given the priority settings passed in aPrioritySettings.

Note that if no supported data types are found this does not constitute failure, the function will return normally with no entries in aSupportedDataTypes.

Parameters

RArray< TFourCC > & aSupportedDataTypesThe array of supported data types that will be filled in by this function. The supported datatypes of the DevSound are in the form of an array of TFourCC codes. Any existing entries in the array will be overwritten on calling this function. If no supported datatypes are found given the priority settings, then the aSupportedDatatypes array will have zero entries.
const TMMFPrioritySettings & aPrioritySettingsThe priority settings used to determine the supported data types. Note this does not set the priority settings. For output data types the iState member of the priority settings would expected to be either EMMFStateRecording or EMMFStatePlayingRecording. The priority settings may effect the supported datatypes depending on the audio routing.

GetTimePlayed(TTimeIntervalMicroSeconds &)

TInt GetTimePlayed(TTimeIntervalMicroSeconds &aTime)[inline]

Retrieves the current play time from the audio renderer

An error code indicating if the function call was successful. KErrNone on success, KErrNotSupported if the underlying devsound implementation or the HwDevice does not support this API, otherwise any of the system-wide error codes. If this function is not supported, SamplesPlayed() needs to be used instead.

IsGetTimePlayedSupported()

Parameters

TTimeIntervalMicroSeconds & aTimeA reference to TTimeIntervalMicroSeconds object which will be filled with the current play time by this function.

InitializeL(MDevSoundObserver &, TMMFState)

IMPORT_C voidInitializeL(MDevSoundObserver &aDevSoundObserver,
TMMFStateaMode
)

Initializes CMMFDevSound object to play and record PCM16 raw audio data with sampling rate of 8 KHz.

On completion of Initialization, calls InitializeComplete() on aDevSoundObserver.

Leaves on failure.

Parameters

MDevSoundObserver & aDevSoundObserverA reference to DevSound Observer instance.
TMMFState aModeThe mode for which this object will be used. Any value other than EMMFStatePlaying, EMMFStateRecording or EMMFStateTonePlaying is unsupported.

InitializeL(MDevSoundObserver &, TUid, TMMFState)

IMPORT_C voidInitializeL(MDevSoundObserver &aDevSoundObserver,
TUidaHWDev,
TMMFStateaMode
)

Initializes DevSound object for the mode aMode for processing audio data with hardware device aHWDev.

On completion of Initialization, the observer will be notified via call back InitializeComplete().

Leaves on failure.

Parameters

MDevSoundObserver & aDevSoundObserverA reference to DevSound Observer instance.
TUid aHWDevThe CMMFHwDevice implementation identifier.
TMMFState aModeThe mode for which this object will be used. Any value other than EMMFStatePlaying, EMMFStateRecording or EMMFStateTonePlaying is unsupported.

InitializeL(MDevSoundObserver &, TFourCC, TMMFState)

IMPORT_C voidInitializeL(MDevSoundObserver &aDevSoundObserver,
TFourCCaDesiredFourCC,
TMMFStateaMode
)

Initializes DevSound object for the mode aMode for processing audio data with hardware device supporting FourCC aDesiredFourCC.

On completion of Initialization, the observer will be notified via call back InitializeComplete().

Leaves on failure.

Parameters

MDevSoundObserver & aDevSoundObserverA reference to DevSound Observer instance.
TFourCC aDesiredFourCCThe CMMFHwDevice implementation FourCC code.
TMMFState aModeThe mode for which this object will be used. Any value other than EMMFStatePlaying, EMMFStateRecording or EMMFStateTonePlaying is unsupported.

IsGetTimePlayedSupported()

TBool IsGetTimePlayedSupported()[inline]

This method can be used by devsound clients to check if the devsound implementation supports GetTimePlayed API. If this method returns EFalse, SamplesPlayed needs to be used.

ETrue if the underlying devsound implementation supports GetTimePlayed API, EFalse if the the underlying devsound implementation does not support GetTimePlayed API

GetTimePlayed()

IsResumeSupported()

TBool IsResumeSupported()[inline]

This method can be used by devsound clients to check if current configuration supports resume This call is only valid when DevSound is initialized ETrue if current format does supports resume EFalse otherwise

MaxGain()

IMPORT_C TIntMaxGain()

Returns an integer representing the maximum gain the device supports.

This is the maximum value which can be passed to CMMFDevSound::SetGain.

The maximum gain. This value is platform dependent but is always greater than or equal to one.

MaxVolume()

IMPORT_C TIntMaxVolume()

Returns an integer representing the maximum volume device supports.

This is the maximum value which can be passed to CMMFDevSound::SetVolume.

The maximum volume. This value is platform dependent but is always greater than or equal to one.

NewL()

IMPORT_C CMMFDevSound *NewL()[static]

Constructs, and returns a pointer to, a new CMMFDevSound object.

Leaves on failure.

Pause()

IMPORT_C voidPause()

Temporarily Stops the ongoing operation (Play, Record, TonePlay, Convert).

The behaviour of Pause() is currently undefined when the initialisation mode is not EMMFStateRecording, consequently different DevSound implementations exhibit different behaviour for pause during play. For this reason, it is recommended that when pausing of audio during playing is required, Stop() is used instead of the call to Pause(). To resume audio playing after Stop(), call PlayInitL(). Among other things, this will internally reset the SamplesPlayed() result and the calling code may need to remember the previous result to give the correct "samples played from start" value.

In the case of record, Pause is taken to mean halt any further recording but continue to call the MDevSoundObserver::BufferToBeEmptied() passing already recorded buffers. The last buffer flag should be set when all recorded buffers have been flushed.

CMMFDevSound::Stop()

CMMFDevSound::PlayInitL()

CMMFDevSound::SamplesPlayed()

PlayDTMFStringL(const TDesC &)

IMPORT_C voidPlayDTMFStringL(const TDesC &aDTMFString)

Initializes the audio device and starts playing the DTMF string aDTMFString.

Leaves on failure.

Parameters

const TDesC & aDTMFStringThe DTMF sequence in a descriptor.

PlayData()

IMPORT_C voidPlayData()

Plays data in the buffer at the current volume.

The client should fill the buffer with audio data before calling this function. The observer gets a reference to the buffer along with the callback function BufferToBeFilled(). When playing of the audio sample is complete, successfully or otherwise, the function PlayError() on the observer is called.

The last buffer of the audio stream being played should have the last buffer flag set using CMMFBuffer::SetLastBuffer(TBool). If a subsequent attempt to play the clip is made, this flag will need resetting by the client.

MDevSoundObserver::PlayError()

PlayDualToneL(TInt, TInt, const TTimeIntervalMicroSeconds &)

IMPORT_C voidPlayDualToneL(TIntaFrequencyOne,
TIntaFrequencyTwo,
const TTimeIntervalMicroSeconds &aDuration
)

Initializes audio device and starts playing a dual tone.

The generated tone consists of two sine waves of different frequencies summed together.

Dual Tone is played with the specified frequencies and for the specified duration.

Parameters

TInt aFrequencyOneThe first frequency of dual tone.
TInt aFrequencyTwoThe second frequency of dual tone
const TTimeIntervalMicroSeconds & aDurationThe period over which the tone will be played. A zero value causes the no tone to be played (Verify this with test app).

PlayFixedSequenceL(TInt)

IMPORT_C voidPlayFixedSequenceL(TIntaSequenceNumber)

Initializes the audio device and starts playing the specified pre-defined tone sequence.

Leaves on failure.

FixedSequenceCount()

Parameters

TInt aSequenceNumberThe index identifying the specific pre-defined tone sequence. Index values are relative to zero. This can be any value from zero to the value returned by a call to FixedSequenceCount() - 1. The function raises a panic if the sequence number is not within this range.

PlayInitL()

IMPORT_C voidPlayInitL()

Initializes the audio device and starts the play process.

This function queries and acquires the audio policy before initializing audio device. If there was an error during policy initialization, PlayError() function will be called on the observer with error code KErrAccessDenied, otherwise BufferToBeFilled() function will be called with a buffer reference. After reading data into the buffer reference passed, the client should call PlayData() to play data.

The amount of data that can be played is specified in CMMFBuffer::RequestSize(). Any data that is read into buffer beyond this size will be ignored.

Leaves on failure.

MDevSoundObserver::PlayError()

MDevSoundObserver::BufferToBeFilled()

PlayToneL(TInt, const TTimeIntervalMicroSeconds &)

IMPORT_C voidPlayToneL(TIntaFrequency,
const TTimeIntervalMicroSeconds &aDuration
)

Initializes the audio device and starts playing a tone. The tone is played with the frequency and duration specified.

Leaves on failure.

Parameters

TInt aFrequencyThe frequency at which the tone will be played.
const TTimeIntervalMicroSeconds & aDurationThe period over which the tone will be played. A zero value causes the no tone to be played.

PlayToneSequenceL(const TDesC8 &)

IMPORT_C voidPlayToneSequenceL(const TDesC8 &aData)

Initializes the audio device and starts playing a tone sequence.

Leaves on failure.

Parameters

const TDesC8 & aDataThe tone sequence in a descriptor.

QueryIgnoresUnderflow()

TBool QueryIgnoresUnderflow()[inline]

This method can be used by devsound clients to check if the devsound implementation ignores the underflow errors from the sound driver and does not propagate them to its clients.

ETrue if devsound ignores all the underflow errors from the sound driver except for the last buffer That means DevSound propagates the underflow error from sound driver to its clients only when client sets the last buffer flag on the CMMFBuffer type buffer. EFalse if devsound propagates the underflow errors from the sound driver in all the cases

RecordData()

IMPORT_C voidRecordData()

Contine the process of recording.

Once the buffer is filled with recorded data, the Observer gets a reference to the buffer along with the callback function BufferToBeEmptied(). After processing the buffer (copying over to a different buffer or writing to file) the client should call this function to continue the recording process.

capability

UserEnvironment For recording - the requesting client process must have the UserEnvironment capability.

RecordInitL()

IMPORT_C voidRecordInitL()

Initializes audio device and starts the recording process.

This function queries and acquires the audio policy before initializing audio device. If there was an error during policy initialization, RecordError() function will be called on the observer with error code KErrAccessDenied, otherwise BufferToBeEmptied() function will be called with a buffer reference. This buffer contains recorded or encoded data. After processing data in the buffer reference passed, the client should call RecordData() to continue recording process.

The amount of data that is available is specified in CMMFBuffer::RequestSize().

Leaves on failure.

MDevSoundObserver::RecordError()

MDevSoundObserver::BufferToBeEmptied()

capability

UserEnvironment For recording - the requesting client process must have the UserEnvironment capability.

RegisterAsClient(TUid, const TDesC8 &)

TInt RegisterAsClient(TUidaEventType,
const TDesC8 &aNotificationRegistrationData =  KNullDesC8
)[inline]

Registers the client for notification of resource avalibility.

An error code indicating if the function call was successful. KErrNone on success, KErrNotSupported if the event type is not supported, KErrArgument if the notification data is not null otherwise another of the system-wide error codes.

Parameters

TUid aEventTypeThe Notification event type for which the client needs notification.
const TDesC8 & aNotificationRegistrationData =  KNullDesC8 The Notification Registration data has been reserved for future use and its value should be always NULL

Resume()

TInt Resume()[inline]

Resume play back, recording or tone playing after this has been paused An error code indicating if the function call was successful. KErrNone on success, KErrNotSupported if current format configuration does not support this functionality KErrNotReady if DevSound is not paused

SamplesPlayed()

IMPORT_C TIntSamplesPlayed()

Returns the number of samples played so far.

The samples played.

SamplesRecorded()

IMPORT_C TIntSamplesRecorded()

Returns the number samples recorded so far.

The samples recorded.

SetClientThreadInfo(TThreadId)

TInt SetClientThreadInfo(TThreadIdaTid)[inline]

Sets client thread info for devsound to make proper policy and routing decisions

capability

MultimediaDD A process requires MultimediaDD capability to make this call.

Parameters

TThreadId aTidThe thread Id of real client.

SetConfigL(const TMMFCapabilities &)

IMPORT_C voidSetConfigL(const TMMFCapabilities &aCaps)

Configure CMMFDevSound object with the settings in aConfig.

Use this to set sampling rate, encoding and mono/stereo.

Parameters

const TMMFCapabilities & aCapsThe attribute values to which CMMFDevSound object will be configured to.

SetDTMFLengths(TTimeIntervalMicroSeconds32 &, TTimeIntervalMicroSeconds32 &, TTimeIntervalMicroSeconds32 &)

IMPORT_C voidSetDTMFLengths(TTimeIntervalMicroSeconds32 &aToneOnLength,
TTimeIntervalMicroSeconds32 &aToneOffLength,
TTimeIntervalMicroSeconds32 &aPauseLength
)

Defines the duration of tone on, tone off and tone pause to be used during the DTMF tone playback operation.

Supported only during tone playing.

Parameters

TTimeIntervalMicroSeconds32 & aToneOnLengthThe period over which the tone will be played. If this is set to zero, then the tone is not played.
TTimeIntervalMicroSeconds32 & aToneOffLengthThe period over which the no tone will be played.
TTimeIntervalMicroSeconds32 & aPauseLengthThe period over which the tone playing will be paused.

SetGain(TInt)

IMPORT_C voidSetGain(TIntaGain)

Changes the current recording gain to a specified value.

The gain can be changed before or during recording and is effective immediately.

Parameters

TInt aGainThe gain setting. This can be any value from zero to the value returned by a call to CMMFDevSound::MaxGain(). If the volume is not within this range, the gain is automatically set to minimum or maximum value based on the value that is being passed. Setting a zero value mutes the sound. Setting the maximum value results in the loudest possible sound.

SetPlayBalanceL(TInt, TInt)

IMPORT_C voidSetPlayBalanceL(TIntaLeftPercentage,
TIntaRightPercentage
)

Sets the speaker balance for playing.

The speaker balance can be changed before or during playback and is effective immediately.

Parameters

TInt aLeftPercentageOn return contains left speaker volume perecentage. This can be any value from zero to 100. Setting a zero value mutes the sound on left speaker.
TInt aRightPercentageOn return contains right speaker volume perecentage. This can be any value from zero to 100. Setting a zero value mutes the sound on right speaker.

SetPrioritySettings(const TMMFPrioritySettings &)

IMPORT_C voidSetPrioritySettings(const TMMFPrioritySettings &aPrioritySettings)

Defines the priority settings that should be used for this instance.

Parameters

const TMMFPrioritySettings & aPrioritySettingsA class type representing the client's priority, priority preference and state.

SetRecordBalanceL(TInt, TInt)

IMPORT_C voidSetRecordBalanceL(TIntaLeftPercentage,
TIntaRightPercentage
)

Sets the microphone gain balance for recording.

The microphone gain balance can be changed before or during recording and is effective immediately.

Parameters

TInt aLeftPercentageThe left microphone gain precentage. This can be any value from zero to 100. Setting a zero value mutes the gain on left microphone.
TInt aRightPercentageThe right microphone gain precentage. This can be any value from zero to 100. Setting a zero value mutes the gain on right microphone.

SetToneRepeats(TInt, const TTimeIntervalMicroSeconds &)

IMPORT_C voidSetToneRepeats(TIntaRepeatCount,
const TTimeIntervalMicroSeconds &aRepeatTrailingSilence
)

Defines the number of times the audio is to be repeated during the tone playback operation.

A period of silence can follow each playing of a tone. The tone playing can be repeated indefinitely.

Parameters

TInt aRepeatCountThe number of times the tone, together with the trailing silence, is to be repeated. If this is set to KMdaRepeatForever, then the tone, together with the trailing silence, is repeated indefinitely or until Stop() is called. If this is set to zero, then the tone is not repeated.
const TTimeIntervalMicroSeconds & aRepeatTrailingSilenceAn interval of silence which will be played after each tone. Supported only during tone playing.

SetVolume(TInt)

IMPORT_C voidSetVolume(TIntaVolume)

Changes the current playback volume to a specified value.

The volume can be changed before or during playback and is effective immediately.

Parameters

TInt aVolumeThe volume setting. This can be any value from 0 to the value returned by a call to CMMFDevSound::MaxVolume(). If the volume is not within this range, the volume is automatically set to minimum or maximum value based on the value that is being passed. Setting a zero value mutes the sound. Setting the maximum value results in the loudest possible sound.

SetVolumeRamp(const TTimeIntervalMicroSeconds &)

IMPORT_C voidSetVolumeRamp(const TTimeIntervalMicroSeconds &aRampDuration)

Defines the period over which the volume level is to rise smoothly from nothing to the normal volume level.

The function is only available while the tone is playing.

Parameters

const TTimeIntervalMicroSeconds & aRampDurationThe period over which the volume is to rise. A zero value causes the tone sample to be played at the normal level for the full duration of the playback. A value, which is longer than the duration of the tone sample means that the sample never reaches its normal volume level.

Stop()

IMPORT_C voidStop()

Stops the ongoing operation (Play, Record, TonePlay, Convert).

This function should be synchronous and invoke no callbacks through MDevSoundObserver.

Volume()

IMPORT_C TIntVolume()

Returns an integer representing the current volume.

The current volume level.

WillResumePlay()

TInt WillResumePlay()[inline]

Wait for the clients to resume play back even after the default timeout expires. Unless the client cancels the notification request or completes no other client gets notification.

An error code indicating if the function call was successful. KErrNone on success, KErrPermissionDenied if the client does not have MultimediaDD capaility, otherwise another of the system-wide error codes.

Member Data Documentation

CBody * iBody

CBody *iBody[protected]

DevSound body