Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <SoundDevice.h>
This item is not part of the S60 5th Edition SDK

Class CMMFDevSound

class CMMFDevSound : public CBase;

Description

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:

Derivation

Members

Defined in CMMFDevSound:

Inherited from CBase:


Construction and destruction


NewL()

IMPORT_C static CMMFDevSound* NewL();

Description

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

Leaves on failure.

Return value

CMMFDevSound *


~CMMFDevSound()

IMPORT_C ~CMMFDevSound();

Description

Destructor.

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

[Top]


Member functions


InitializeL(MDevSoundObserver &,TMMFState)

IMPORT_C void InitializeL(MDevSoundObserver &aDevSoundObserver, TMMFState aMode);

Description

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 &aDevSoundObserver

A reference to DevSound Observer instance.

TMMFState aMode

The mode for which this object will be used. Any value other than EMMFStatePlaying, EMMFStateRecording or EMMFStateTonePlaying is unsupported.


InitializeL(MDevSoundObserver &,TUid,TMMFState)

IMPORT_C void InitializeL(MDevSoundObserver &aDevSoundObserver, TUid aHWDev, TMMFState aMode);

Description

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 &aDevSoundObserver

A reference to DevSound Observer instance.

TUid aHWDev

The CMMFHwDevice implementation identifier.

TMMFState aMode

The mode for which this object will be used. Any value other than EMMFStatePlaying, EMMFStateRecording or EMMFStateTonePlaying is unsupported.


InitializeL(MDevSoundObserver &,TFourCC,TMMFState)

IMPORT_C void InitializeL(MDevSoundObserver &aDevSoundObserver, TFourCC aDesiredFourCC, TMMFState aMode);

Description

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 &aDevSoundObserver

A reference to DevSound Observer instance.

TFourCC aDesiredFourCC

The CMMFHwDevice implementation FourCC code.

TMMFState aMode

The mode for which this object will be used. Any value other than EMMFStatePlaying, EMMFStateRecording or EMMFStateTonePlaying is unsupported.


Capabilities()

IMPORT_C TMMFCapabilities Capabilities();

Description

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

Return value

TMMFCapabilities

The device settings.


Config()const

IMPORT_C TMMFCapabilities Config() const;

Description

Returns the current device configuration.

Return value

TMMFCapabilities

The device settings.


SetConfigL(const TMMFCapabilities &)

IMPORT_C void SetConfigL(const TMMFCapabilities &aCaps);

Description

Configure CMMFDevSound object with the settings in aConfig.

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

Parameters

const TMMFCapabilities &aCaps

The attribute values to which CMMFDevSound object will be configured to.


MaxVolume()

IMPORT_C TInt MaxVolume();

Description

Returns an integer representing the maximum volume device supports.

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

Return value

TInt

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


Volume()

IMPORT_C TInt Volume();

Description

Returns an integer representing the current volume.

Return value

TInt

The current volume level.


SetVolume(TInt)

IMPORT_C void SetVolume(TInt aVolume);

Description

Changes the current playback volume to a specified value.

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

Parameters

TInt aVolume

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


MaxGain()

IMPORT_C TInt MaxGain();

Description

Returns an integer representing the maximum gain the device supports.

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

Return value

TInt

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


Gain()

IMPORT_C TInt Gain();

Description

Returns an integer representing the current gain.

Return value

TInt

The current gain level.


SetGain(TInt)

IMPORT_C void SetGain(TInt aGain);

Description

Changes the current recording gain to a specified value.

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

Parameters

TInt aGain

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


GetPlayBalanceL(TInt &,TInt &)

IMPORT_C void GetPlayBalanceL(TInt &aLeftPercentage, TInt &aRightPercentage);

Description

Returns the speaker balance set for playing.

Leaves on failure.

Parameters

TInt &aLeftPercentage

On return contains the left speaker volume percentage.

TInt &aRightPercentage

On return contains the right speaker volume percentage.


SetPlayBalanceL(TInt,TInt)

IMPORT_C void SetPlayBalanceL(TInt aLeftPercentage, TInt aRightPercentage);

Description

Sets the speaker balance for playing.

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

Parameters

TInt aLeftPercentage

On 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 aRightPercentage

On 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.


GetRecordBalanceL(TInt &,TInt &)

IMPORT_C void GetRecordBalanceL(TInt &aLeftPercentage, TInt &aRightPercentage);

Description

Returns the microphone gain balance set for recording.

Leaves on failure.

Parameters

TInt &aLeftPercentage

On return contains the left microphone gain percentage.

TInt &aRightPercentage

On return contains the right microphone gain percentage.


SetRecordBalanceL(TInt,TInt)

IMPORT_C void SetRecordBalanceL(TInt aLeftPercentage, TInt aRightPercentage);

Description

Sets the microphone gain balance for recording.

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

Parameters

TInt aLeftPercentage

The left microphone gain precentage. This can be any value from zero to 100. Setting a zero value mutes the gain on left microphone.

TInt aRightPercentage

The right microphone gain precentage. This can be any value from zero to 100. Setting a zero value mutes the gain on right microphone.


PlayInitL()

IMPORT_C void PlayInitL();

Description

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 CMMFDevSound::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.

See also:


RecordInitL()

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

IMPORT_C void RecordInitL();

Description

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 CMMFDevSound::RecordData() to continue recording process.

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

Leaves on failure.

See also:


PlayData()

IMPORT_C void PlayData();

Description

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.

See also:


RecordData()

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

IMPORT_C void RecordData();

Description

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.


Stop()

IMPORT_C void Stop();

Description

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

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


Pause()

IMPORT_C void Pause();

Description

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

The behaviour of CMMFDevSound::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, CMMFDevSound::Stop() is used instead of the call to CMMFDevSound::Pause(). To resume audio playing after CMMFDevSound::Stop(), call CMMFDevSound::PlayInitL(). Among other things, this will internally reset the CMMFDevSound::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(CMMFBuffer *) passing already recorded buffers. The last buffer flag should be set when all recorded buffers have been flushed.

See also:


SamplesRecorded()

IMPORT_C TInt SamplesRecorded();

Description

Returns the number samples recorded so far.

Return value

TInt

The samples recorded.


SamplesPlayed()

IMPORT_C TInt SamplesPlayed();

Description

Returns the number of samples played so far.

Return value

TInt

The samples played.


PlayToneL(TInt,const TTimeIntervalMicroSeconds &)

IMPORT_C void PlayToneL(TInt aFrequency, const TTimeIntervalMicroSeconds &aDuration);

Description

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

Leaves on failure.

Parameters

TInt aFrequency

The frequency at which the tone will be played.

const TTimeIntervalMicroSeconds &aDuration

The period over which the tone will be played. A zero value causes the no tone to be played.


PlayDualToneL(TInt,TInt,const TTimeIntervalMicroSeconds &)

IMPORT_C void PlayDualToneL(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds &aDuration);

Description

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 aFrequencyOne

The first frequency of dual tone.

TInt aFrequencyTwo

The second frequency of dual tone

const TTimeIntervalMicroSeconds &aDuration

The period over which the tone will be played. A zero value causes the no tone to be played (Verify this with test app).


PlayDTMFStringL(const TDesC &)

IMPORT_C void PlayDTMFStringL(const TDesC &aDTMFString);

Description

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

Leaves on failure.

Parameters

const TDesC &aDTMFString

The DTMF sequence in a descriptor.


PlayToneSequenceL(const TDesC8 &)

IMPORT_C void PlayToneSequenceL(const TDesC8 &aData);

Description

Initializes the audio device and starts playing a tone sequence.

Leaves on failure.

Parameters

const TDesC8 &aData

The tone sequence in a descriptor.


PlayFixedSequenceL(TInt)

IMPORT_C void PlayFixedSequenceL(TInt aSequenceNumber);

Description

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

Leaves on failure.

Parameters

TInt aSequenceNumber

The 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 CMMFDevSound::FixedSequenceCount() - 1. The function raises a panic if the sequence number is not within this range.

See also:


SetToneRepeats(TInt,const TTimeIntervalMicroSeconds &)

IMPORT_C void SetToneRepeats(TInt aRepeatCount, const TTimeIntervalMicroSeconds &aRepeatTrailingSilence);

Description

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 aRepeatCount

The 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 CMMFDevSound::Stop() is called. If this is set to zero, then the tone is not repeated.

const TTimeIntervalMicroSeconds &aRepeatTrailingSilence

An interval of silence which will be played after each tone. Supported only during tone playing.


SetDTMFLengths(TTimeIntervalMicroSeconds32 &,TTimeIntervalMicroSeconds32 &,TTimeIntervalMicroSeconds32 &)

IMPORT_C void SetDTMFLengths(TTimeIntervalMicroSeconds32 &aToneOnLength, TTimeIntervalMicroSeconds32 &aToneOffLength, TTimeIntervalMicroSeconds32 &aPauseLength);

Description

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 &aToneOnLength

The period over which the tone will be played. If this is set to zero, then the tone is not played.

TTimeIntervalMicroSeconds32 &aToneOffLength

The period over which the no tone will be played.

TTimeIntervalMicroSeconds32 &aPauseLength

The period over which the tone playing will be paused.


SetVolumeRamp(const TTimeIntervalMicroSeconds &)

IMPORT_C void SetVolumeRamp(const TTimeIntervalMicroSeconds &aRampDuration);

Description

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 &aRampDuration

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


SetPrioritySettings(const TMMFPrioritySettings &)

IMPORT_C void SetPrioritySettings(const TMMFPrioritySettings &aPrioritySettings);

Description

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

Parameters

const TMMFPrioritySettings &aPrioritySettings

A class type representing the client's priority, priority preference and state.


CustomInterface(TUid)

IMPORT_C TAny* CustomInterface(TUid aInterfaceId);

Description

Retrieves a custom interface to the device.

Parameters

TUid aInterfaceId

The interface UID, defined with the custom interface.

Return value

TAny *

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.


FixedSequenceCount()

IMPORT_C TInt FixedSequenceCount();

Description

Returns the number of available pre-defined tone sequences.

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

Return value

TInt

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(TInt aSequenceNumber);

Description

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.

Parameters

TInt aSequenceNumber

The 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 CMMFDevSound::FixedSequenceCount() - 1. The function raises a panic if sequence number is not within this range.

Return value

const TDesC &

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

See also:


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

IMPORT_C void GetSupportedInputDataTypesL(RArray< TFourCC > &aSupportedDataTypes, const TMMFPrioritySettings &aPrioritySettings) const;

Description

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 > &aSupportedDataTypes

The 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 &aPrioritySettings

The 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 &)const

IMPORT_C void GetSupportedOutputDataTypesL(RArray< TFourCC > &aSupportedDataTypes, const TMMFPrioritySettings &aPrioritySettings) const;

Description

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 > &aSupportedDataTypes

The 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 &aPrioritySettings

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


RegisterAsClient(TUid,const TDesC8 &)

inline TInt RegisterAsClient(TUid aEventType, const TDesC8 &aNotificationRegistrationData=KNullDesC8);

Description

Registers the client for notification of resource avalibility.

Parameters

TUid aEventType

The Notification event type for which the client needs notification.

const TDesC8 &aNotificationRegistrationData

The Notification Registration data has been reserved for future use and its value should be always NULL

Return value

TInt

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.


CancelRegisterAsClient(TUid)

inline TInt CancelRegisterAsClient(TUid aEventType);

Description

Cancels the Registered Notification.

Parameters

TUid aEventType

The Event type need to cancel

Return value

TInt

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.


GetResourceNotificationData(TUid,TDes8 &)

inline TInt GetResourceNotificationData(TUid aEventType, TDes8 &aNotificationData);

Description

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

Parameters

TUid aEventType

The Event type for which to get notification data

TDes8 &aNotificationData

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

Return value

TInt

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


WillResumePlay()

inline TInt WillResumePlay();

Description

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.

Return value

TInt

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.

[Top]


Member data


iBody

protected: CBody * iBody;

Description

DevSound body