diff -r 000000000000 -r 71ca22bcf22a mmserv/voipaudioservices/inc/VoIPSharedData.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/voipaudioservices/inc/VoIPSharedData.h Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2007-2008 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: Declares constants, structures and enumerated list of + * commands shared between VoIP client and the server. + * + */ + +#ifndef __VOIPSHAREDDATA_H +#define __VOIPSHAREDDATA_H + +// INCLUDES +#include +#include +#include +#include +#include +#include + +#if defined(__SERIES60_31__) +// s60 3.1 mapping of FourCC values for supported codecs +const TUint32 KMccFourCCIdAMRNB = 0x524d4120; // (' ', 'A', 'M', 'R') +const TUint32 KMccFourCCIdG711 = 0x31313747; // ('G', '7', '1', '1') +const TUint32 KMccFourCCIdG729 = 0x39323747; // ('G', '7', '2', '9') +const TUint32 KMccFourCCIdILBC = 0x43424c49; // ('i', 'L', 'B', 'C') +#else +#include +#endif + +#include "VoIPAudioClientServer.h" + +// CONSTANTS +const TUint KQueueCreateWaitTime = 10; //10ms +const TUint KVoIPG711FrameLen10ms = 82; // 80 + 2 for header +const TUint KVoIPG711FrameLen20ms = 162; // 160 + 2 for header +const TInt KVoIPAMRNBFrameLen = 32; +const TInt KVoIPILBCFrameLen = 52; // 40 in 20ms; 52 in 30ms +const TInt KVoIPG729FrameLen = 24; // 10 octets + 2 for header +const TUint KVoIPPCM16FrameLen = 4096; + +// ENUMERATIONS + +// ITC communication commands between the threads +enum TUserCommand + { + ECmdStartDownlink = 0, + ECmdStartUplink, + ECmdInitDownlink, + ECmdInitUplink, + ECmdStopDownlink, + ECmdStopUplink, + ECmdBufferFilled, + ECmdBufferEmptied, + ECmdGetVolume, + ECmdSetVolume, + ECmdGetGain, + ECmdSetGain, + ECmdSetAudioDevice, + ECmdGetAudioDevice, + ECmdTerminateThread, + + ECmdDnLinkError, + ECmdUpLinkError, + ECmdDnLinkJBError, + + ECmdSetG711CodecMode, + ECmdGetG711CodecMode, + ECmdSetIlbcCodecMode, + ECmdGetIlbcCodecMode, + ECmdGetSupportedBitrates, + ECmdSetBitrate, + ECmdGetBitrate, + ECmdSetFrameMode, + ECmdGetFrameMode, + ECmdFrameModeRqrdForEC, + ECmdConcealErrForNextBuf, + ECmdSetVad, + ECmdGetVad, + ECmdSetCng, + ECmdGetCng, + ECmdSetPlc, + ECmdGetPlc, + ECmdBadLsfNextBuffer, + ECmdVoIPConfigJB, + ECmdVoIPResetJB, + ECmdVoIPJBDelayDown, + ECmdVoIPJBDelayUp, + + // Event returned from the work thread upon async request complete + ECmdGetVolumeComplete, + ECmdGetGainComplete, + ECmdGetAudioDeviceComplete, + ECmdGetG711CodecModeComplete, + ECmdGetIlbcCodecModeComplete, + ECmdGetFrameModeComplete, + ECmdGetFrameModeReqForECComplete, + ECmdGetVadComplete, + ECmdGetCngComplete, + ECmdGetPlcComplete, + ECmdGetSupportedBitratesComplete, + ECmdGetBitrateComplete, + + // Server side events sent to the client + ECmdDownlinkInitComplete, + ECmdUplinkInitComplete, + ECmdFillBuffer, + ECmdEmptyBuffer, + ECmdDTMFOpenDnlinkComplete, + ECmdDTMFOpenUplinkComplete, + ECmdDTMFTonePlayFinished, + ECmdRingToneOpenComplete, + ECmdRingTonePlayComplete, + ECmdDownlinkThreadClosed, + ECmdUplinkThreadClosed + }; + +// ----------------------------------------------------------------------------- +// Class Name: TVoIPCodecSettings +// +// Structure used for setting codec configuration. +// ----------------------------------------------------------------------------- +class TVoIPCodecSettings + { +public: + enum TG711FrameRate + { + E10MS, + E20MS + }; + +public: + CVoIPFormatIntfc::TG711CodecMode iG711CodecMode; + CVoIPFormatIntfc::TILBCCodecMode iILBCCodecMode; + TUint32 iFourCC; + TG711FrameRate iG711FrameRate; + TBool iVad; + TBool iCng; + TBool iPlc; + TBool iFrameMode; + TBool iFrameModeReqForEC; + TUint iBitrate; + RArray iArrBitrates; + }; + +// ----------------------------------------------------------------------------- +// Class Name: TSharedData +// +// Structure used for ITC communication and data transfer. +// ----------------------------------------------------------------------------- +class TSharedData + { +public: + + // Main thread's ID + TThreadId iMainThreadID; + + // For thread end signalling + RMutex iMutex; + + // Request status pointer for signalling thread via A/O + TRequestStatus* iThreadStatus; + TRequestStatus* iMnThreadStatus; + + // Audio configuration settings + TInt iPriority; + TInt iPreference; + TUint iAudioDevice; + TInt iMaxVolume; + TInt iMaxGain; + + // Codec configuration settings + TVoIPCodecSettings iCodecSettings; + + // Jitter Buffer configuration + TVoIPJBConfig iJBConfig; + + // Command parameter for signalling between the threads via A/O + TUserCommand iCmd; + + // Size of the data buffer and frame sequence number + TInt iBufferSize; + TUint iSequenceNum; + + // Any data sent between both threads + TInt iInt; + TUint iUint; + TBool iBool; + + }; + +#endif // __VOIPSHAREDDATA_H + +// End of file