multimediacommscontroller/mmccdtmfpayloadformat/inc/dtmfpayloaddecoder.h
changeset 0 1bce908db942
--- /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