diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccshared/inc/formatstatemachine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccshared/inc/formatstatemachine.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,317 @@ +/* +* Copyright (c) 2004-2005 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: Provides statemachine definitions for MCC Payload formatters +* +*/ + + + + +#ifndef FORMATSTATEMACHINE_H +#define FORMATSTATEMACHINE_H + +// INCLUDES +#include +#include +#include + +// DATA TYPES +// Payload format encoding states. +enum TFormatEncodeState + { + EEncodeIdle = 0, + EEmptySourceBuffer = 1, + ESourceBufferEmptied = 2 + }; + +// Payload format decoding states +enum TFormatDecodeState + { + EDecodeIdle = 0, + ESourceDataReady = 1, + EEmptyDataToSink = 2 + }; + +// CLASS DECLARATION + +class TRtpRecvHeader; +class CMccRtpMediaClock; + +/** +* Format decode statemachine observer +* +* @lib Mccamrplformat.dll +* @since Series 60 3.0 +*/ +class MPayloadFormatRead + { + public: + + /** + * Fill sinkbuffer state change + * @since Series 60 3.0 + */ + virtual void FillSinkBufferL() = 0; + + /** + * Send data to sink state change + * @since Series 60 3.0 + */ + virtual void SendDataToSinkL() = 0; + + }; + +/** +* Format decode statemachine observer +* +* @lib Mccamrplformat.dll +* @since Series 60 3.0 +*/ +class CPayloadFormatRead: public CMMFFormatDecode + { + public: + + /** + * Called after the data buffer is filled. Update the number of bytes read + * and the current read position for the next read operation. + * + * @param aBuffer data buffer filled + * @param aHeaderInfo RTP packet header information + * @return None + */ + virtual void DataBufferFilledL( CMMFBuffer* aBuffer, + const TRtpRecvHeader& aHeaderInfo ) = 0; + + /** + * Configures payload format with format spesific parameters. + * Leaves with KErrArgument if parameters are invalid. + * @param aConfigParams Configuration parameters + * @return void + */ + virtual void ConfigurePayloadFormatL( const TDesC8& aConfigParams ) = 0; + + /** + * Sets maxpayloadsize + * @param aTimeOut Timeout value to set. + * @return None + */ + virtual void SetPayloadSize( TInt /*aMaxPayloadSize*/ ) + { + } + }; + +/** +* Format encode statemachine observer +* +* @lib Mccamrplformat.dll +* @since Series 60 3.0 +*/ +class MPayloadFormatWrite + { + public: + + /** + * Empty sourcebuffer state change + * @since Series 60 3.0 + */ + virtual void EmptySourceBufferL() = 0; + + /** + * Sourcebuffer emptied state change + * @since Series 60 3.0 + */ + virtual void SourceBufferEmptiedL() = 0; + }; + +/** +* Format encode statemachine observer +* +* @lib Mccamrplformat.dll +* @since Series 60 3.0 +*/ +class CPayloadFormatWrite: public CMMFFormatEncode + { + public: + + /** + * Configures payload format with format spesific parameters. + * Leaves with KErrArgument if parameters are invalid. + * @param aConfigParams Configuration parameters + * @return void + */ + virtual void ConfigurePayloadFormatL( const TDesC8& aConfigParams, + CMccRtpMediaClock& aClock ) = 0; + }; + +/** +* Format encoding state machine +* +* @lib Mccamrplformat.dll +* @since Series 60 3.0 +*/ +class CFormatEncodeStateMachine : public CActive + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CFormatEncodeStateMachine* NewL( MPayloadFormatWrite* aClient ); + + /** + * Destructor. + */ + virtual ~CFormatEncodeStateMachine() ; + + public: // New functions + + /** + * Change state to the new state. + * @since Series 60 3.0 + * @param aNewState State where to proceed to + */ + void ChangeState( enum TFormatEncodeState aNewState ); + + /** + * Returns current state. + * @since Series 60 3.0 + * @return TFormatEncodeState - Current encoding state + */ + TFormatEncodeState CurrentState() const; + + private: // Functions from base classes + + /** + * From CActive Handles an active object’s request completion event. + * @since Series 60 3.0 + */ + void RunL(); + + /** + * From CActive Implements cancellation of an outstanding request. + * @since Series 60 3.0 + */ + void DoCancel(); + + /** + * From CActive Implements RunL leave error handling + * @since Series 60 3.0 + * @param aError The leave error code from RunL() + * @return TInt System wide error code + */ + TInt RunError( TInt aError ); + + private: + + /** + * C++ default constructor. + */ + CFormatEncodeStateMachine( MPayloadFormatWrite* aClient ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // Data + + // Client who uses this state machine + MPayloadFormatWrite* iClient; + + // Current format encoding state + TFormatEncodeState iState; + }; + +/** +* Format decoding state machine +* +* @lib Mccamrplformat.dll +* @since Series 60 3.0 +*/ +class CFormatDecodeStateMachine : public CActive + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CFormatDecodeStateMachine* NewL( MPayloadFormatRead* aClient ); + + /** + * Destructor. + */ + virtual ~CFormatDecodeStateMachine() ; + + public: // New functions + + /** + * Change state to the new state. + * @since Series 60 3.0 + * @param aNewState State where to proceed to + */ + void ChangeState( enum TFormatDecodeState aNewState ); + + /** + * Returns current state. + * @since Series 60 3.0 + * @return TFormatDecodeState - Current decoding state + */ + TFormatDecodeState CurrentState() const; + + private: // Functions from base classes + + /** + * From CActive Handles an active object’s request completion event. + * @since Series 60 3.0 + */ + void RunL(); + + /** + * From CActive Implements cancellation of an outstanding request. + * @since Series 60 3.0 + */ + void DoCancel(); + + /** + * From CActive Implements RunL leave error handling + * @since Series 60 3.0 + * @param aError The leave error code from RunL() + * @return TInt System wide error code + */ + TInt RunError( TInt aError ); + + private: + + /** + * C++ default constructor. + */ + CFormatDecodeStateMachine( MPayloadFormatRead* aClient ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // Data + + // Client who uses this state machine + MPayloadFormatRead* iClient; + + // Current format decoding state + TFormatDecodeState iState; + }; + +#endif /* FORMATSTATEMACHINE_H */ + +