--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccdtmfpayloadformat/inc/dtmfpayloaddecoder.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,177 @@
+/*
+* Copyright (c) 2006 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: Formatter class for decoding of RTP payload format for named
+* telephone events and tones.
+*
+*/
+
+
+
+
+#ifndef CDTMFPAYLOADDECODER_H
+#define CDTMFPAYLOADDECODER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "dtmfpayloadformatdefs.h"
+#include "dtmfeventpayloadinfo.h"
+#include "dtmftonepayloadinfo.h"
+
+// FORWARD DECLARATIONS
+class CMMFBuffer;
+class CMMFDataBuffer;
+
+
+// CLASS DECLARATION
+/**
+ * Provides functionality to decode Tone and Event Payload according
+ * to RFC 2833. Functionality for decoding redundant event Payload
+ * is also served ( RFC 2198 ).
+ *
+ * @lib mmccdtmfplformat.dll
+ * @since Series 60 3.2
+ */
+class CDTMFPayloadDecoder : public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CDTMFPayloadDecoder* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CDTMFPayloadDecoder();
+
+ public: // New functions
+
+ /**
+ * Decodes DTMF string from Payload Format for Named Events.
+ *
+ * @since Series 60 3.2
+ * @param aSourceBuffer Databuffer containing payload
+ * @param aEventInfos Array where to place decoded information
+ * @return System wide error code
+ */
+ TInt DecodeEventPayload( CMMFBuffer* aSourceBuffer,
+ RArray< TDTMFEventPayloadInfo >& aEventInfos );
+
+ /**
+ * Decodes DTMF from Tone Payload Format packet.
+ *
+ * @since Series 60 3.2
+ * @param aSourceBuffer Databuffer containing payload
+ * @param aToneInfos Array where to place decoded information
+ * @return System wide error code
+ */
+ TInt DecodeTonePayload( CMMFBuffer* aSourceBuffer,
+ RArray<TDTMFTonePayloadInfo>& aToneInfos );
+
+ /**
+ * Returns type of the payload format.
+ *
+ * @since Series 60 3.2
+ * @return Type of the payload
+ */
+ TDTMFPayloadFormat PayloadFormat( ) const;
+
+ /**
+ * Set payload format used.
+ *
+ * @since Series 60 3.2
+ * @param aPayloadFormat Payload format to set.
+ * @return System wide error code
+ */
+ TInt SetPayloadFormat( TDTMFPayloadFormat aPayloadFormat );
+
+ /**
+ * Sets the time stamp of a RTP packet containing payload which is
+ * decoded next.
+ *
+ * @since Series 60 3.2
+ * @param aTimeStamp Time stamp
+ */
+ void SetCurTimeStamp( const TTimeIntervalMicroSeconds32& aTimeStamp );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CDTMFPayloadDecoder();
+
+ /**
+ * Decodes DTMF from Payload Format for Named Events with
+ * redundant events.
+ *
+ * @since Series 60 3.2
+ * @param aSourceBuffer Databuffer containing payload
+ * @param aEventInfos Array where to place decoded information
+ * @return System wide error code
+ */
+ TInt DecodeRedundantEventPayload( CMMFBuffer* aSourceBuffer,
+ RArray<TDTMFEventPayloadInfo>& aEventInfos );
+
+ /**
+ * Converts integer presentation used in a payload format to the
+ * character.
+ *
+ * @since Series 60 3.2
+ * @param aEvent Integer presentation of the event
+ * @param aChar Result character
+ * @return System wide error code
+ */
+ TInt ConvertToChar( TUint aEvent, TChar& aChar ) const;
+
+ private: // Data
+
+ /**
+ * Payload format used for decoding
+ */
+ TDTMFPayloadFormat iPayloadFormat;
+
+ /**
+ * Time stamp of the RTP packet under decoding
+ */
+ TTimeIntervalMicroSeconds32 iCurTimeStamp;
+
+ /**
+ * Array used to recognise redundant events already played out
+ */
+ RArray<TDTMFEventPayloadInfo> iEventArray;
+
+ /**
+ * Used as a temporarily container for the
+ * payload info under decoding
+ */
+ TDTMFEventPayloadInfo iDecodedEventInfo;
+
+ /**
+ * Used as a temporarily container for the
+ * payload info under decoding
+ */
+ TDTMFTonePayloadInfo iDecodedToneInfo;
+
+ private:
+ #ifdef TEST_EUNIT
+ friend class UT_CDTMFPayloadDecoder;
+ #endif
+
+ };
+
+#endif // CDTMFPAYLOADDECODER_H
+
+// End of File