multimediacommscontroller/mmccavcpayloadformat/inc/rfc3984encode.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccavcpayloadformat/inc/rfc3984encode.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 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:    Class definition for rfc3984encode.h, the payloadization class
+**				 for the AVC codec
+**
+*/
+
+
+
+
+#ifndef RFC3984ENCODE_H
+#define RFC3984ENCODE_H
+
+#include <e32cmn.h>
+#include <e32des8.h>
+#include "rfc3984base.h"
+
+
+class CRFC3984Encode : public CRFC3984Base
+{
+	public:
+	
+		// public functions
+	
+		~CRFC3984Encode();
+		static CRFC3984Encode* NewL();
+		void SetMTUSize(TUint32 aMtuSize);
+		void SetFrameRate(TInt aFrameRate);
+		void PayloadizeFrameL(TDes8 & aBuffer, TUint32 aTimeStamp, TUint32 & aMarkerBit, TInt &aNalCount);	
+		HBufC8 * GetNalUnitsInOrder(TInt & aIndex);
+		void ClearNalBuffers();
+	
+	protected:
+	
+		CRFC3984Encode();
+		void PayloadizeFrameSingleNALModeL(TDes8 & aBuffer, TUint32 aTimeStamp, TUint32 & aMarkerBit, TInt & aNalCount);
+		void PayloadizeFrameNonInterleavedModeL(TDes8 & aBuffer, TUint32 aTimeStamp, TUint32 & aMarkerBit, TInt & aNalCount);
+		void PayloadizeNaluL(TDes8 & aBuffer, TUint32 aTimeStamp, TUint32 & aMarkerBit, TInt & aNalCount);
+		void FragmentNaluL(TDes8 & aBuffer, TUint32 aTimeStamp, TUint32 & aMarkerBit, TInt & aNalCount, TInt aStartIndex, TInt aSize, TUint16 aDON);
+		void AddSnaluPacketL( TPtr8 aStart, TInt aSize );
+		
+	private:
+	
+		// private members
+		TInt iMaxPacketSize;				// MTU Size of the network, Used in Non-Interleaved and Interleaved mode for fragmentation
+	    TInt iFrameRate;					// Frame Rate at which video is being sent, used to calculate timestamping increments
+	    
+	    RPointerArray<HBufC8> iPayloadizedBuffers;  // Array to keep pointers to payloadized buffers
+	    TInt iNalCount;							   // count of packetized NAL units
+	   
+	   	// local processing members
+	   	TInt iBufferIndex;					// Index to browse the buffer data, for finding start codes   
+		
+		RArray<TInt> iToPayloadizeBuffer;
+		RArray<TInt> iToPayloadizeSizeBuffer;
+		TInt		 iToPayloadizeCount;
+	   	
+
+};
+
+#endif
+
+// EOF
\ No newline at end of file