diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccredpayloadformat/inc/mccredencdecbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccredpayloadformat/inc/mccredencdecbase.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,136 @@ +/* +* Copyright (c) 2005-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: Base functionality common for redundancy RTP payload encoder +* and decoder. +* +*/ + + + +#ifndef MCCREDENCDECBASE_H +#define MCCREDENCDECBASE_H + +// INCLUDES +#include + +// CONSTANTS +const TInt KMaxNumOfEncodings = 3; +const TInt KPayloadNotDefined = 128; + +// DATA TYPES +enum TMccRedEncoding + { + EMccPrimaryEncoding = 0, + EMccSecondaryEncoding, + EMccTertiaryEncoding, + EMccRTPPayload + }; + +// FORWARD DECLARATIONS +class CMMFDataBuffer; + +// CLASS DECLARATION + +/** +* Base class for redundancy RTP payload format encoder/decoder. +* +* @lib mmccredplformat.dll +* @since Series 60 3.0 +*/ +class CMccRedEncDecBase : public CBase + { + public: // Constructors and destructor + + /** + * Destructor. + */ + virtual ~CMccRedEncDecBase(); + + public: // New functions + + /** + * Set encoding, which is wanted to encode/decode. + * @since Series 60 3.0 + * @param aEncoding Identifies, which kind of encoding is set + * @param aEncodingBuf Buffer holding encoding + * @return void + */ + virtual void SetEncodingBlockL( TMccRedEncoding aEncoding, + TDesC8& aEncodingBuf ); + + /** + * Get encoding specified with parameter. + * @since Series 60 3.0 + * @param aEncoding Identifies, which kind of encoding is get + * @param aToBuffer Buffer where to place data + * @return void + */ + virtual void GetEncodingBlockL( TMccRedEncoding aEncoding, + TDes8& aToBuffer ); + + /** + * Initialize after enc/dec parameters are changed or stream is + * started again after pause. + * + * @since Series 60 3.0 + * @param aRedCount Number of redundant blocks to handle + * @param aMaxPayloadSize Maximum size of the pure RTP payload + * @param aNumOfEncodings Number of encodings to handle + * @return void + */ + virtual void InitializeL( TInt aRedCount, TInt aMaxPayloadSize, + TInt aNumOfEncodings ); + + /** + * Set payload types to wait for. + * @since Series 60 3.0 + * @param aPayloadTypes Payload types + * @return System wide error code + */ + virtual TInt SetPayloadTypes( RArray& aPayloadTypes ); + + protected: // New functions + + /** + * C++ default constructor. + */ + CMccRedEncDecBase(); + + private: + + virtual void DoInitializeL( TInt aRedCount, TInt aMaxPayloadSize, + TInt aNumOfEncodings ) = 0; + + protected: // Data + + // Number of redundant data blocks included in one RTP payload + TInt iRedBlockCount; + + // Maximum size of the RTP payload in bytes to handle + TInt iMaxPayloadSize; + + // Buffer where to handle whole RTP payload including redundancy + CMMFDataBuffer* iRTPPayload; + + // Payload types for all encodings + TFixedArray< TUint8, KMaxNumOfEncodings > iPayloadTypes; + + // Encodings, which are included in RTP payload + TFixedArray< CMMFDataBuffer*, KMaxNumOfEncodings > iEncodings; + + }; + +#endif // MCCREDENCDECBASE_H + +// End of File