diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccdtmfpayloadformat/inc/dtmfpayloaddecoder.h --- /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 +#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& 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& 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 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