diff -r 000000000000 -r a4daefaec16c sipvoipprovider/inc/svpaudioutility.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sipvoipprovider/inc/svpaudioutility.h Mon Jan 18 20:12:36 2010 +0200 @@ -0,0 +1,233 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Static audio utility functions for SVP. +* +*/ + + +#ifndef SVPAUDIOUTILITY_H +#define SVPAUDIOUTILITY_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CMceAudioStream; +class CSVPSessionBase; +class CSVPEmergencySession; + +/** + * SVPAudioUtility class contains static audio related utility functions. + * + * @lib svp.dll + * @since S60 v3.2 + */ +class SVPAudioUtility + { +public: // new methods + + /** + * Determines if the given audiostream is downlink (in) stream. + * @since S60 v3.2 + * @param aStream Audiostream whose direction to determine. + * @return TBool ETrue if given stream is downlinkstream, EFalse otherwise. + */ + static TBool IsDownlinkStream( CMceAudioStream& aStream ); + + /** + * Sets MMF priorities to streams + * @since S60 3.2 + * @param aAudioInStream Representation of MCE audio stream + * @param aAudioOutStream Representation of MCE audio stream + * @return TBool ETrue if outband DTMF (tel-event) is used in + * audiostreams. + * EFalse if Inband DTMF is used in audiostreams. + */ + static TBool SetPriorityCodecValuesL( CMceAudioStream& aAudioInStream, + CMceAudioStream& aAudioOutStream ); + + /** + * Sets audio priority values to streams. Note that this does not + * return information about DTMF status. If both streams are not type + * KMceAudioStream, this function leaves with KErrArgument. + * @since S60 v3.2 + * @aMediaStream Representation of MCE media stream + * @aBoundStream Representation of MCE media stream, bound to aMediaStream + * @return void + */ + static void SetAudioStreamPrioritiesL( CMceMediaStream& aMediaStream, + CMceMediaStream& aBoundStream ); + + /** + * Enables speaker sink from aSink array if found. + * @since S60 v3.2 + * @param aSink Array of media sinks. + * @return void + */ + static void EnableSpeakerSinkL( + const RPointerArray< CMceMediaSink >& aSink ); + + /** + * Disables speaker sink from aSink array if found. + * @since S60 v3.2 + * @param aSink Array of media sinks. + * @return void + */ + static void DisableSpeakerSinkL( + const RPointerArray< CMceMediaSink >& aSink ); + + /** + * Enables aMicSource if it's type is KMceMicSource. + * @since S60 v3.2 + * @param aMicSource Media source + * @return void + */ + static void EnableMicSourceL( CMceMediaSource& aMicSource ); + + /** + * Disables aMicSource if it's type is KMceMicSource. + * @since S60 v3.2 + * @param aMicSource + * @return void + */ + static void DisableMicSourceL( CMceMediaSource& aMicSource ); + + /** + * Enables speaker sinks from aStreams array if found and types of media + * streams are KMceAudio. + * @since S60 v3.2 + * @param aStreams Array of media streams. + * @return void + */ + static void EnableSpeakerSinksL( + const RPointerArray< CMceMediaStream >& aStreams ); + + /** + * Disables mic from given media stream or from it's bound stream if + * mic source is found from either of the streams. + * @since S60 v3.2 + * @param aStream Media stream + * @return void + */ + static void DisableMicSourceL( CMceMediaStream& aStream ); + + /** + * Finds a codec of name aCodecname from aAudiostream. Returns NULL if not + * found + * @since S60 v3.2 + * @param aAudiostream Audiostream from where to search the codec. + * @param aCodecname Name of the codec to search + * @return CMceAudioCodec Pointer to the found codec or NULL if not found. + */ + static CMceAudioCodec* FindCodec( + CMceAudioStream& aAudiostream, const TDesC8& aCodecname ); + + /** + * Removes a codec of name aCodecname from aAudiostream if found. + * @since S60 v3.2 + * @param aAudiostream Audiostream from where to remove the codec. + * @param aCodecname Name of the codec to remove + * @return void + */ + static void RemoveCodecL( CMceAudioStream& aAudiostream, + const TDesC8& aCodecname ); + + /** + * Checks the media streams if MMF priority update is needed. Function + * assumes that all media streams are of type KMceAudio and will leave + * with KErrArgument if it encounters other types of media streams. + * @since S60 v3.2 + * @param aStreams Streams to check if the priority update is needed. + * @return TBool ETrue if priority update is needed, EFalse otherwise. + */ + static TBool MmfPriorityUpdateNeededL( + const RPointerArray& aStreams ); + + /** + * Checks whether given SVP session is capable to DTMF action + * (send, stop, etc.). This means that session + * a) does not have HoldController. + * b) has HoldController, but is in 'connected' state. + * @since S60 v3.2 + * @param aSession SVP session to check. + * @return ETrue If DTMF action can be performed. + */ + static TBool DtmfActionCapableSession( + const CSVPSessionBase& aSession ); + + /** + * Checks whether given SVP emergency session is capable to DTMF action + * (send, stop, etc.). This means that session + * a) does not have HoldController. + * b) has HoldController, but is in 'connected' state. + * @since S60 v3.2 + * @param aSession SVP emergency session to be check. + * @return ETrue If DTMF action can be performed. + */ + static TBool DtmfActionCapableSession( + const CSVPEmergencySession& aSession ); + + /** + * Checks whether given MCE stream is capable to DTMF action + * (send, stop, etc.). This means that stream: + * a) Is a MCE audio stream. + * b) It has a source. + * c) It's source is enabled. + * MCE server will handle the rest of the checks and actual DTMF + * action will return a error code. + * @since S60 v3.2 + * @param aStream MCE stream to check. + * @return ETrue If DTMF action can be performed. + */ + static TBool DtmfActionCapableStream( const CMceMediaStream& aStream ); + +private: // new methods + + /** + * C++ default constructor. + */ + SVPAudioUtility(); + + /** + * Method for setting DTMF priority for DTMF codec in aAudioStream if + * found from it. + * @since S60 v3.2 + * @param aAudioStream Representation of Mce audio stream. + * @return TBool ETrue if aAudioStream contained DTMF codec. + */ + static TBool SetDtmfPriorityL( CMceAudioStream& aAudioStream ); + + /** + * Method for setting audio priority and preference for audio codecs. + * @since S60 v3.2 + * @param aAudioStream Representation of Mce audio stream. + * @param aAudioPref Audio preference value to be used for the codecs. + * @return void + */ + static void SetAudioCodecPrioritiesL( CMceAudioStream& aAudioStream, + TUint aAudioPref ); + + /** + * Checks a uplink audiostream whether it needs an MMF priority/preference + * update. + * @since S60 v3.2 + * @param aUplinkStream Uplink stream to check if it needs priority or + * preference update. + * @return TBool ETrue if priority update is needed, EFalse otherwise. + */ + static TBool MmfPriorityUpdateNeededL( CMceAudioStream& aUplinkStream ); + + }; + +#endif // SVPAUDIOUTILITY_H \ No newline at end of file