mmserv/voipaudioservices/inc/VoIPSharedData.h
changeset 0 71ca22bcf22a
child 53 eabc8c503852
--- /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 <e32std.h>
+#include <sounddevice.h>
+#include <audio.h>
+#include <voipjitterbufferintfc.h>
+#include <voipaudiocommon.h>
+#include <voipformatintfc.h>
+
+#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 <mmcccodecinformation.h>
+#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<TUint> 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