--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videoeditorengine/avcedit/inc/vedavcedit.h Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description:
+* A header file defining the AVC editing API.
+*
+*
+*/
+
+
+
+#ifndef VEDAVCEDIT_H
+#define VEDAVCEDIT_H
+
+#include <e32base.h>
+
+/**
+* CVedAVCEdit abstract base class for AVC editing class
+*
+* @lib vedAVCEdit
+* @since
+*/
+class CVedAVCEdit : public CBase
+ {
+
+ public: // Constants
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ *
+ */
+ IMPORT_C static CVedAVCEdit* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CVedAVCEdit();
+
+ public: // New functions
+
+ /*
+ * Add MDF specific NAL headers to input AVC frame
+ *
+ * @param aBuf Input/output buffer
+ * @param aFrameLen Input/output frame length
+ * @param aDecInfoSize Decoder specific info size
+ * @param aFirstFrame ETrue for first frame in sequence
+ */
+ virtual void ProcessAVCBitStreamL(TDes8& aBuf, TInt& aFrameLen, TInt aDecInfoSize, TBool aFirstFrame) = 0;
+
+ /*
+ * Calculate default value for no. of buffered frames according to
+ * H.264 spec Annex A
+ *
+ * @param aLevel AVC level
+ * @param aResolution Video resolution
+ */
+ virtual TInt GetMaxAVCFrameBuffering(TInt aLevel, TSize aResolution) = 0;
+
+ /*
+ * Get input bitstream level from SPS. Note: SPS Nal unit must be at the
+ * beginning of the input buffer
+ *
+ * @param aBuf Input buffer containing SPS
+ * @param aLevel Output: Baseline profile level
+ */
+ virtual TInt GetLevel(TDesC8& aBuf, TInt& aLevel) = 0;
+
+ /*
+ * Get input bitstream video resolution from SPS. Note: SPS Nal unit must
+ * be at the beginning of the input buffer
+ *
+ * @param aBuf Input buffer containing SPS
+ * @param aResolution Output: Resolution
+ */
+ virtual TInt GetResolution(TDesC8& aBuf, TSize& aResolution) = 0;
+
+#ifdef VIDEOEDITORENGINE_AVC_EDITING
+
+ /*
+ * Convert AVC specific decoder config info to AVCDecoderConfigurationRecord -format
+ *
+ * @param aSrcBuf Source buffer containing SPS/PPS NAL units in AVC MDF buffer format
+ * @param aDstBuf Destination buffer for AVCDecoderConfigurationRecord
+ */
+ virtual void ConvertAVCHeaderL(TDesC8& aSrcBuf, TDes8& aDstBuf ) = 0;
+
+ /*
+ * Save SPS/PPS NAL units from AVCDecoderConfigurationRecord
+ * for later use
+ *
+ * @param aBuf Input buffer containing AVCDecoderConfigurationRecord
+ */
+ virtual void SaveAVCDecoderConfigurationRecordL(TDes8& aBuf, TBool aFromEncoder) = 0;
+
+ /*
+ * Update slice header information: frame number and PPS id
+ *
+ * @param aBuf Buffer containing input frame
+ * @param aContainsDCR ETrue if AVC decoder config. record is included
+ * @param aFromEncoder ETrue if frame comes from the encoder
+ */
+ virtual TInt ParseFrame(HBufC8*& aBuf, TBool aContainsDCR, TBool aFromEncoder) = 0;
+
+ /*
+ * Constructs AVCDecoderConfigurationRecord for the whole sequence, taking
+ * into account all input DCR's
+ *
+ * @param aDstBuf Destination buffer for AVCDecoderConfigurationRecord
+ * @param aLevel Level output sequence
+ */
+ virtual void ConstructAVCDecoderConfigurationRecordL( TDes8& aDstBuf ) = 0;
+
+ /*
+ * Set length of NAL size field of output sequence
+ *
+ * @param aSize Length of size field in bytes
+ */
+ virtual void SetNALLengthSize( TInt aSize ) = 0;
+
+ /*
+ * Set output level for constructing AVCDecoderConfigurationRecord
+ *
+ * @param aLevel Output level
+ */
+ virtual void SetOutputLevel(TInt aLevel) = 0;
+
+ /*
+ * Check if encoding is required until the next IDR unit
+ *
+ */
+ virtual TBool EncodeUntilIDR() = 0;
+
+ /*
+ * Check if NAL unit is an IDR NAL
+ *
+ * @param aNalBuf buffer containing NAL unit
+ */
+ virtual TBool IsNALUnitIDR( TDes8& aNalBuf ) = 0;
+
+ /*
+ * Store PPS id from the current slice
+ *
+ * @param aNalBuf buffer containing NAL unit
+ */
+ virtual void StoreCurrentPPSId( TDes8& aNalBuf ) = 0;
+
+ /*
+ * Generate a not coded frame
+ *
+ * @param aNalBuf buffer containing NAL unit
+ */
+ virtual TInt GenerateNotCodedFrame( TDes8& aNalBuf, TUint aFrameNumber ) = 0;
+
+ /*
+ * Modify the frame number of the NAL unit
+ *
+ * @param aNalBuf buffer containing NAL unit
+ */
+ virtual void ModifyFrameNumber( TDes8& aNalBuf, TUint aFrameNumber ) = 0;
+#endif
+
+};
+
+
+#endif
+
+// End of File