videoeditorengine/vedengine/videoprocessor/inc/videoprocessor.h
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 7 4c409de21d23
--- a/videoeditorengine/vedengine/videoprocessor/inc/videoprocessor.h	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1003 +0,0 @@
-/*
-* 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:  
-* Header file for video processor.
-*
-*/
-
-
-#ifndef     __VIDEOPROCESSOR_H__
-#define     __VIDEOPROCESSOR_H__
-
-//  INCLUDES
-#ifndef _H263DAPI_H_
-#include "h263dapi.h"
-#endif
-
-#include "videodecoder.h"
-#include "vedVideoclip.h"
-
-
-//  FORWARD DECLARATIONS
-class CActiveQueue;
-class CStatusMonitor;
-class CMovieProcessorImpl;
-class CVideoEncoder;
-class CVedH263Dec;
-class CMPEG4Timer;
-class CVedAVCEdit;
-
-#include "CTRTranscoderObserver.h"
-#include "CTRTranscoder.h"
-#include "CTRCommon.h"
-#include <CCMRMediaSink.h>
-#include "CTRVideoPictureSink.h"
-
-enum TTransitionColor
-{
-	EColorNone = 0,
-	EColorBlack,
-	EColorWhite,
-	EColorTransition
-};
-
-enum TTransitionPosition
-{
-    EPositionNone = 0,
-    EPositionStartOfClip,
-    EPositionEndOfClip
-};
-
-
-// Threshold for using postfilter. Assumption is that CIF is encoded with high bitrate => no need for postfilter
-const TInt KThrWidthForPostFilter = 176;
-
-//  CLASS DEFINITIONS
-
-
-// Observer class for thumbnail generation
-class MThumbnailObserver
-{
-public:
-    void NotifyThumbnailReady(TInt aError);
-};
-
-class MTimerObserver
-{
-public:
-    virtual void MtoTimerElapsed(TInt aError) = 0;
-    
-};
-
-
-// Timer class to use when waiting for encoding to complete
-class CCallbackTimer : public CActive
-{
- 
-public:
-
-    /**
-    * Two-phased constructor.
-    */
-    static CCallbackTimer* NewL(MTimerObserver& aObserver);
-    
-    /**
-    * Destructor.
-    */
-    ~CCallbackTimer();
-    
-public:
-    
-    /**
-    * Set timer
-    *
-    * @param aDuration Duration
-    */
-    void SetTimer(TTimeIntervalMicroSeconds32 aDuration);
-    
-     
-    /**
-    * Query whether timer is active
-    *
-    * @return TRUE if timer is pending
-    */
-    inline TBool IsPending() { return iTimerRequestPending; }
-    
-    /**
-    * Cancel timer    
-    */
-    void CancelTimer();
-    
-private:
-
-    /**
-    * C++ default constructor.
-    */
-    CCallbackTimer(MTimerObserver& aObserver);
-
-    /**
-    * Symbian 2nd phase constructor 
-    */
-    void ConstructL();
-    
-protected:
-
-    /**
-    * From CActive. 
-    * @param 
-    * @return void
-    */
-    void RunL();
-
-    /**
-    * From CActive. 
-    * @param 
-    * @return void
-    */
-    void DoCancel();
-
-    /**
-    * From CActive. 
-    * @param 
-    * @return void
-    */
-    TInt RunError(TInt aError);
-
- 
-private:   // Data
- 
-    MTimerObserver& iObserver;
-    
-    RTimer iTimer;
-    
-    TBool iTimerCreated;    
-    TBool iTimerRequestPending;
-};
-
-
-
-class CVideoProcessor : public CVideoDecoder, public MVideoRenderer, 
-                        public MTRTranscoderObserver, public MTRVideoPictureSink,
-                        public MCMRMediaSink, public MTimerObserver
-
-{
-public: // constants
-    enum TErrorCode
-    {
-        EInternalAssertionFailure = -1400,
-        EDecoderFailure = -1401
-    };
-
-    enum TTimingSource
-    {
-        ETemporalReference = 0,
-        ETimeStamp
-    };
-
-    enum TDecoderFrameOperation
-    {
-        EDecodeAndWrite = 1,
-        EDecodeNoWrite,
-        EWriteNoDecode,
-        ENoDecodeNoWrite
-    }; 
-    
-    enum TTranscoderMode
-    {
-        EDecodeOnly = 1,
-        EFull,
-        EFullWithIM,
-        EUndefined
-    };
-	
-public: // Data structures
-    struct TStreamParameters
-    {
-        TUint iWidth;
-        TUint iHeight;
-        TInt64 iPicturePeriodNsec;
-        TUint iIntraFrequency;
-        TUint iReferencePicturesNeeded; // 0 = disable RPS
-        TUint iNumScalabilityLayers;
-        TUint iLayerFrameRates[8]; // frames per 256 sec
-        TTimingSource iTiming;
-    };
-    
-   
-private: // Data structures
-
-    // structure to store information about frames
-    // in decoding/transcoding progress 
-    struct TFrameInformation
-    {
-        TTranscoderMode iTranscoderMode;
-                
-        TInt iFrameNumber;
-        TInt64 iTimeStamp;  // timestamp in ticks        
-        TBool iEncodeFrame; // ETrue if frame will be encoded        
-        TBool iKeyFrame;  
-        
-        // transition frame info
-        TBool iTransitionFrame;  // is this a transition frame?
-        TBool iFirstTransitionFrame;  // is this the first transition frame in this instance?
-        TTransitionPosition iTransitionPosition;
-        TTransitionColor iTransitionColor;        
-        TInt iTransitionFrameNumber;
-        
-        TBool iModificationApplied; // has intermediate modification been done ?
-        TBool iRepeatFrame; // ETrue for second instance of a color transition frame
-    
-    };
-    
-public: // New functions
-    
-    /**
-    * Two-phased constructor.
-    *
-    * @param anInputQueue Input active queue
-    * @param aStreamParameters Stream parameters
-    * @param aProcessor Video processor object
-    * @param aStatusMonitor Status monitor object
-    * @param aEncoder Video encoder object
-    * @param aPriority Active object priority
-    */
-
-    static CVideoProcessor* NewL(CActiveQueue *anInputQueue,
-                                 CVideoProcessor::TStreamParameters *aStreamParameters,
-                                 CMovieProcessorImpl* aProcessor,
-                                 CStatusMonitor *aStatusMonitor,   
-                                 CVedAVCEdit *aAvcEdit,
-                                 TBool aThumbnailMode,
-                                 TInt aPriority=EPriorityStandard);
-
-
-    /**
-    * Destructor.
-    */
-    ~CVideoProcessor();
-    
-public:  // Functions from base classes
-
-    /**
-    * From CActive Active object running method
-    */
-    void RunL();
-
-    /**
-    * From CActive Active object cancelling method
-    */
-    void DoCancel();  
-
-    /**
-    * From CActive Active object error handling method
-    */
-    TInt RunError(TInt aError);
-    
-    /**
-    * From CDecoder Start video decoding
-    */    
-    void Start();
-
-    /**
-    * From CDecoder Stop video decoding
-    */    
-    void Stop();    
-
-    /**
-    * From CDataProcessor Notifies that input stream has ended
-    */
-    void StreamEndReached(TAny *aUserPointer);
-
-    /**
-    * From CDataProcessor Notifies that new input queue blocks are available
-    */
-    void InputDataAvailable(TAny *aUserPointer);
-
-	/**
-    * From MVideoRenderer Renders a decoded frame
-    */
-	TInt RenderFrame(TAny* aFrame);
-	
-    /**
-    * From MTRTranscoderObserver
-    */
-    void MtroInitializeComplete(TInt aError);
-    
-    /**
-    * From MTRTranscoderObserver
-    */
-    void MtroFatalError(TInt aError);
-    
-    /**
-    * From MTRTranscoderObserver
-    */
-    void MtroReturnCodedBuffer(CCMRMediaBuffer* aBuffer);
-        
-    /**
-    * From MTRTranscoderObserver
-    */
-    void MtroSetInputFrameRate(TReal& aRate);
-        
-    /**
-    * From MTRTranscoderObserver
-    */
-    void MtroAsyncStopComplete();
-    
-    /**
-    * From MTRTranscoderObserver
-    */
-    void MtroSuspend();
-    
-    /**
-    * From MTRTranscoderObserver
-    */
-    void MtroResume();
-    
-    /**	
-    * From MTRVideoPictureSink
-    */  
-    void MtroPictureFromTranscoder(TTRVideoPicture* aPicture);
-    
-     /**	
-     * From MCMRMediaSink
-     */        
-     void WriteBufferL(CCMRMediaBuffer* aBuffer);
-        
-     /**	
-     * From MCMRMediaSink
-     */  
-     TInt SetVideoFrameSize(TSize aSize);
-        
-     /**	
-     * From MCMRMediaSink
-     */  
-     TInt SetAverageVideoBitRate(TInt aBitRate);
-        
-     /**	
-     * From MCMRMediaSink
-     */  
-     TInt SetMaxVideoBitRate(TInt aBitRate);
-        
-     /**	
-     * From MCMRMediaSink
-     */  
-     TInt SetAverageAudioBitRate(TInt aBitRate);
-     
-     /**
-     * From MTimerObserver
-     */
-     void MtoTimerElapsed(TInt aError);
-    
-public:  // New functions
-    
-    /**
-    * Generates a thumbnail image
-    *
-    * @param aYUVDataPtr For returning the thumbnail
-    * @param aFrameIndex Frame index of the thumbnail image
-    *                   -1 means best thumbnail is generated
-    * @param aStartFrameIndex Frame index of the start frame (last intra before thumbnail)    
-    *
-    * @return Error code
-    */
-    
-    /**
-    * Starts generating a thumbnail image
-    *
-    * @param aThumbObserver Observer class
-    * @param aFrameIndex Frame index of the thumbnail image
-    *                   -1 means best thumbnail is generated
-    * @param aStartFrameIndex Frame index of the start frame (last intra before thumbnail)    
-    * @param aFactor Pointer to transcode factor structure
-    *
-    * @return Error code
-    */
-    TInt ProcessThumb(MThumbnailObserver* aThumbObserver, TInt aFrameIndex, 
-                      TInt aStartFrameIndex, TVedTranscodeFactor* aFactor);       
-		          
-    TInt FetchThumb(TUint8** aYUVDataPtr);
-	
-	/**
-	*	Gets the frame number of the current frame 
-	*	
-	*/
-	TInt GetFrameNumber() { return iFrameNumber; };
-
-	/**
-    * Keeps track whether the clip was resolution transcoded 
-	*
-	*/	
-	inline TInt GetChangeResolution() const { return iFullTranscoding; };
-
-	/*	
-	* Checks whether the resynch bit is set if set then resets to zero
-	* 
-	* @return TBool 
-	*/	
-	TBool CheckVosHeaderL(TPtrC8& aBuf);
-	
-	/**
-	 * Gets the transcode factor from the current clip
-	 * @param aFactor For returning the transcode factor
-	 * @return error code
-	 */
-	TInt GetTranscodeFactorL(TVedTranscodeFactor& aFactor);		    
-	
-    /*	
-	* Writes a delayed frame, i.e. a frame which has been buffered
-	* since transcoder has unprocesessed frames that must be written
-	* before this frame		
-	*/	
-	void WriteDelayedFrameL();
-	
-	/*	
-	* Checks if there are any frames waiting to be encoded inside transcoder
-	* @return TBool 
-	*/	
-	TBool IsEncodeQueueEmpty();
-	
-	/* 
-	* Calculates encoding delay based on what kind of frame is 
-	* next in the encoding queue
-	*
-	* @return Delay in microseconds
-	*/
-	TInt GetEncodingDelay();	
-	
-	/* 
-	* Checks if the next frame in processing queue
-	* is being encoded
-	*
-	* @return TBool result
-	*/
-	TBool IsNextFrameBeingEncoded();
-	
-    /* 
-	* Gets MPEG-4 VOS header size in bytes (from encoder)	
-	*
-	* @return TInt VOS size
-	*/
-	TInt GetVosHeaderSize();
-
-private: // internal methods
-
-    /**
-    * C++ default constructor.
-    *
-    * @param anInputQueue Input active queue
-    * @param aStreamParameters Stream parameters
-    * @param aProcessor Video processor object
-    * @param aStatusMonitor Status monitor object
-    * @param aEncoder Video encoder object
-    * @param aPriority Active object priority
-    */
-    CVideoProcessor(CActiveQueue *anInputQueue,
-                    TStreamParameters *aStreamParameters,
-                    CMovieProcessorImpl* aProcessor,
-                    CStatusMonitor *aStatusMonitor,
-                    CVedAVCEdit *aAvcEdit,
-                    TBool aThumbnailMode,
-                    TInt aPriority);
-    
-
-    /** 
-    * Symbian 2nd phase constructor 
-    */
-    void ConstructL();
-
-    /**
-    * Processes one input video frame
-    *
-    * @return ETrue If the current clip has been 
-    *         processed entirely, EFalse if not
-    */
-    TBool ProcessFrameL();
-    
-    /** 
-    * Processes the second frame of a color transition double frame
-    */
-    TBool Process2ndColorTransitionFrameL();
-
-    /**
-    * Read one frame from input queue to internal buffer
-    *
-    * @return ETrue if a complete frame was read, EFalse otherwise.
-    */
-    TInt ReadFrame();
-
-    /**
-    * Reads a H.263 frame from input queue to internal buffer
-    *
-    * @return ETrue if a complete frame was read, EFalse otherwise.
-    */    
-    TBool ReadH263Frame();
-    
-    /**
-    * Reads a MPEG-4 frame from input queue to internal buffer
-    *
-    * @return ETrue if a complete frame was read, EFalse otherwise.
-    */
-    TBool ReadMPEG4Frame();
-    
-    /**
-    * Reads an AVC frame from input queue to internal buffer
-    *
-    * @return ETrue if a complete frame was read, EFalse otherwise.
-    */
-    TBool ReadAVCFrame();
-
-    /**
-    * Checks if a frame has "good" or "legible" quality
-    *
-    * @param aYUVDataPtr Pointer to the frame to be checked
-    *
-    * @return 1 if frame quality is OK, 0 otherwise
-    */
-    TInt CheckFrameQuality(TUint8* aYUVDataPtr);
-
-    /**
-    * Apply color effect on a frame
-    *
-    * @param aColorEffect Effect to be used
-    * @param aYUVDataPtr Pointer to the frame
-    * @param aColorToneYUV for extracting the UV values
-    * @return void
-    */
-    void ApplySpecialEffect(TInt aColorEffect, TUint8* aYUVDataPtr,
-      TInt aColorToneU, TInt aColorToneV);    
-
-    /**
-    * Convert frame operation enumeration to TInt
-    *
-    * @param aFrameOperation Frame operation     
-    *
-    * @return Frame operation as TInt
-    */
-    TInt TFrameOperation2TInt(TDecoderFrameOperation aFrameOperation); 
-
-    /**
-    * Convert color effect enumeration to TInt
-    *
-    * @param aColorEffect Color effect
-    *
-    * @return Color effect as TInt
-    */
-    TInt TColorEffect2TInt(TVedColorEffect aColorEffect);
-
-    /**
-    * Determines transition effect parameters
-    *
-    * @param aTransitionEffect Output: ETrue if transition effect is to be applied
-    * @param aStartOfClipTransition ETrue if starting transition is to be applied
-    * @param aEndOfClipTransition ETrue if ending transition is to be applied
-    * @param aStartTransitionColor Color for starting transition
-    * @param aEndTransitionColor Color for ending transition
-    *
-    * @return Error code
-    */
-    TInt DetermineClipTransitionParameters(TInt& aTransitionEffect,TInt& aStartOfClipTransition,
-			TInt& aEndOfClipTransition,TTransitionColor& aStartTransitionColor,TTransitionColor& aEndTransitionColor);
-
-    
-    /**
-    * Applies fading transition effect to YUV frame
-    *
-    * @param aYUVPtr Pointer to the frame
-    * @param aTransitionPosition 1 = start transition, 2 = end transition
-    * @param aTransitionColor Transition color to be used (EColorWhite/EColorBlack/EColorTransition)
-    * @param aTransitionFrameNumber ordinal number of transition frame (0 - (number of transition frames - 1))
-    *
-    * @return void
-    */
-    void ApplyFadingTransitionEffect(TUint8* aYUVPtr, TTransitionPosition aTransitionPosition,
-                                     TTransitionColor aTransitionColor, TInt aTransitionFrameNumber);
-
-	/**
-    * Applies blending transition effect between YUV frames
-    *
-    * @param aYUVPtr1 Pointer to the frame 1
-    * @param aYUVPtr2 Pointer to the frame 2
-    * @param aRepeatFrame True for the second instance of two frames to be blended
-    * @param aTransitionFrameNumber ordinal number of transition frame (0 - (number of transition frames - 1))
-    *
-    * @return void
-    */
-    void ApplyBlendingTransitionEffect(TUint8* aYUVPtr1,TUint8* aYUVPtr2, TInt aRepeatFrame, 
-                                       TInt aTransitionFrameNumber);
-    
-		
-    /**
-    * Applies sliding transition effect between YUV frames
-    *
-    * @param aYUVPtr1 Pointer to the frame 1
-    * @param aYUVPtr2 Pointer to the frame 2
-    * @param aRepeatFrame True for the second instance of two frames to be blended
-    * @param aTransitionFrameNumber ordinal number of transition frame (0 - (number of transition frames - 1))
-    *
-    * @return void
-    */
-    void ApplySlidingTransitionEffect(TUint8* aYUVPtr1,TUint8* aYUVPtr2, TVedMiddleTransitionEffect aVedMiddleTransitionEffect, 
-                                      TInt aRepeatFrame, TInt aTransitionFrameNumber);
-		
-    /**
-    * Get the start transition info of the next clip
-    *
-    * @return void
-    */
-    void GetNextClipTransitionInfo();
-
-	/*
-	* Resolution Transcoder
-	* Determine if the resolution transcoding will apply to the current clip
-	* 
-	*/
-	TBool DetermineResolutionChange();
-
-    /*
-	* 
-	* Determine if frame rate needs to be changed for the current clip
-	* 
-	*/
-    TBool DetermineFrameRateChange();
-
-    /*
-	* 
-	* Determine if bitrate needs to be changed for the current clip
-	* 
-	*/
-    TBool DetermineBitRateChange();
-    
-    /*	
-	* Calculate the duration of current frame
-	*	
-	* @param aFrameNumber frame number 
-	*
-	* @return Frame duration in ticks
-	*/    
-    TInt GetFrameDuration(TInt aFrameNumber);
-    
-    /*	
-	* Decode frame using vedh263decoder
-	* 
-	* @param aOperation Operation 
-	* @param aModeChanged ETrue if compressed domain transcoding is neede
-	* @param aFrameSizeInBytes Return value, coded output frame size in bytes
-	* @param aVosHeaderSize Return value, size of VOS header in bytes
-	*/  
-    void DecodeFrameL(TInt aOperation, TBool aModeChanged, TInt& aFrameSizeInBytes);        
-    
-    /*
-    * Create and initialize transcoder
-    *
-    * @param aInputType Input video type 
-    * @param aMode Transcoder operational mode to be used
-    *    
-    */
-    void CreateAndInitializeTranscoderL(TVedVideoType aInputType, CTRTranscoder::TTROperationalMode aMode);
-    
-    /*
-    * Determines if compressed domain transcoding is needed
-    *
-    */
-    TBool GetModeChangeL();
-    
-    /*
-    * Processes a thumbnail frame
-    *
-    * @param aFirstFrame ETrue if the first thumbnail frame is being processed
-    */
-    void ProcessThumb(TBool aFirstFrame);
-    
-    /*
-    * Calculate the number of transition frames
-    *
-    * @param aStartCutTime Start cut time
-    * @param aEndCutTime End cut time
-    */
-    void GetNumberOfTransitionFrames(TTimeIntervalMicroSeconds aStartCutTime, 
-                                     TTimeIntervalMicroSeconds aEndCutTime);
-      
-    /*
-    * Set parameters needed to process a transition frame
-    *
-    * @param aIncludedFrameNumber Ordinal counting from the first included frame number
-    * @param aDecodeFrame ETrue if this frame must be decoded in order to apply end transition
-    */                               
-    void SetTransitionFrameParams(TInt aIncludedFrameNumber, TBool& aDecodeFrame);
-    
-    /*
-    * Sets output codec parameters
-    * 
-    * aMimeType Output mime type
-    */
-    void SetOutputVideoCodecL(const TPtrC8& aMimeType);
-    
-    /*
-    * Generates bitstream for a not coded frame
-    * to be used in color transitions
-    */
-    void GenerateNotCodedFrameL();
-    
-    /*
-    * Reads a frame from input queue and writes it to transcoder
-    *
-    */
-	void ReadAndWriteThumbFrame();	
-	
-	/*
-    * Does thumbnail finalization, stops processing and informs observer
-    *
-    * aError Error code for observer
-    */
-	void FinalizeThumb(TInt aError);
-	
-	/*
-    * Writes a frame to output file
-    *  
-    * @param aBuf Buffer containing the frame
-    * @param aDurationInTicks Frame duration in ticks
-    * @param aFrameNumber Frame number
-    * @return ETrue if clip end was written
-    */
-	TBool WriteFrameToFileL(TPtr8& aBuf, TInt aDurationInTicks, TInt aFrameNumber);
-	
-	/*
-    * Writes a frame to transcoder
-    *      
-    * @param aFrameNumber Frame number
-    * @param aKeyFrame ETrue for a keyframe
-    * @param aVolHeaderInBuffer ETrue if frame buffer contains MPEG-4 VOL header
-    */
-	void WriteFrameToTranscoderL(TInt aFrameNumber, TBool aKeyFrame, TBool aVolHeaderInBuffer);
-	
-    /*
-    * Handles a decoded thumbnail frame received from transcoder
-    *      
-    * @param aPicture Pointer to received picture
-    */
-	void HandleThumbnailFromTranscoder(TTRVideoPicture* aPicture);
-	
-	/*
-    * Handles a decoded "decode-only" frame received from transcoder
-    *      
-    * @param aPicture Pointer to received picture
-    * @param aIndex Index of decoded frame to iFrameInfoArray
-    */
-	void HandleDecodeOnlyFrameFromTranscoder(TTRVideoPicture* aPicture, TInt aIndex);
-	
-	/*
-    * Handles a decoded transition frame (intermediate frame) received from transcoder
-    *      
-    * @param aPicture Pointer to received picture
-    * @param aIndex Index of decoded frame to iFrameInfoArray
-    */
-	void HandleTransitionFrameFromTranscoder(TTRVideoPicture* aPicture, TInt aIndex);
-	
-    /*
-    * Inserts AVC/MPEG-4 decoder specific info data in front of internal coded frame buffer
-    *
-    */
-	void InsertDecoderSpecificInfoL();
-
-private: // internal constants
-    enum TDataFormat
-    {
-        EDataUnknown = 0,
-        EDataH263,
-        EDataMPEG4,
-        EDataAVC
-    };
-
-
-private: // data
-    CActiveQueue *iQueue; // input data queue
-    TBool iReaderSet; // have we been set as reader?
-    CStatusMonitor *iMonitor; // status monitor object
-    CMovieProcessorImpl *iProcessor;
-
-    CVedH263Dec *iDecoder;  // H.263/MPEG-4 decoder    
-
-    TUint iVideoWidth, iVideoHeight; // video picture dimensions
-    TInt64 iPicturePeriodNsec; // one PCF tick period in nanoseconds
-    TDataFormat iDataFormat; // the stream data format
-    TUint iIntraFrequency; // intra picture frequency (intras per 256 sec)
-    TUint iReferencePicturesNeeded; // number of reference pictures needed
-    
-    TBool iFirstFrameFlag; // flag for decoder: is this the first frame?
-
-    TDecoderFrameOperation iFrameOperation; 
-
-    TInt iNumberOfIncludedFrames; 
-
-    TBool iDecoding; // are we decoding?
-    TBool iStreamEnd; // has stream end been reached?    
-    TBool iEncoderResetPending; // is the encoder being reseted
-
-    TPtr8 *iBlock; // queue block
-    TUint iBlockPos; // current block position
-    TUint8 *iDataBuffer; // data buffer for the current compressed frame
-    TUint iBufferLength; // buffer total length
-    TUint iDataLength; // amount of data in buffer
-    TUint iCurrentFrameLength; // the length of the current frame in the buffer
-
-    TUint8 *iFrameBuffer;  // Concatenated YUV data for decoded frame
-
-    TUint8 *iOutVideoFrameBuffer; // data buffer for the output compressed frame    
-    TInt iOutVideoFrameBufferLength; // buffer total length
-    TInt iOutDataLength; // amount of data in buffer
-    TPtr8 iWriteDes;  // writing descriptor for encoding
-    TInt iFrameNumber;  // current frame number
-    TInt iNumberOfFrames;  // no. of frames in current clip
-    TInt iPreviousFrameIncluded;  // ETrue if previous frame was included in output movie
-    TInt  iTrPrevious;
-
-    // transition effects
-    TInt iTransitionEffect;	    // is transition effect to be applied?
-    TInt iStartOfClipTransition;  // is starting transition effect to be applied ?
-    TInt iEndOfClipTransition; // is ending transition effect to be applied ?
-
-	TInt iStartNumberOfTransitionFrames;  // number of frames in transition
-	TInt iEndNumberOfTransitionFrames;  // number of frames in transition
-	TInt iTransitionFrameNumber;
-	TInt iNextTransitionNumber;    
-    
-    TInt iFirstFrameInRange;  // is the current frame the first to be included in output movie
-    TInt iFirstIncludedFrameNumber;  // number of first included frame
-    TTransitionColor iStartTransitionColor;	// color for starting transition
-    TTransitionColor iEndTransitionColor;// color for ending transition
-    
-    // number of preceding I frame (for end-of-clip trans.)this number is relative of start-of-clip
-    TInt iLastIntraFrameBeforeTransition; //The last intra frame before transition effect takes place.       
-
-    TTimingSource iTiming;  
-
-	// for transition effect - blending and sliding
-	TInt    iFrameDuration;
-	TBool   iRepeatFrame;
-	TInt64  iTimeStamp;
-	TUint8 *iOrigPreviousYUVBuffer;
-	TUint8 *iColorTransitionBuffer;
-
-	CMPEG4Timer *iMPEG4Timer;		// Stores MPEG-4 timing information
-	
-	CTRTranscoder *iTransCoder;	
-	CCMRMediaBuffer* iMediaBuffer;	
-	
-	TBool iTranscoderInitPending;  // is transcoder init in progress ?
-	TBool iDecodePending;  // is decode in progress ?
-	TBool iTranscoderStarted; // has transcoder been started ?
-	TBool iFrameToEncode;  // should current frame be encoded ? (: could be changed to local for ProcessFrame)	
-	
-	TBool iTransitionFrame;
-	TBool iFirstTransitionFrame;
-	TTransitionPosition iTransitionPosition;
-    TTransitionColor iTransitionColor;	
-    
-    // for color toning
-    TInt   iFirstFrameQp;       // QP for first MPEG4 frame, used for color toning 
-	
-	TBool iFullTranscoding; // Flag to indicate whether current clip needs to be fully
-	                        // transcoded (decode & encode)   
-    
-    TBool iThumbnailMode;   // True if we are generating a thumbnail frame
-    
-    TInt iThumbFrameIndex;  // index of thumbnail to be generated, >= 0 means a specific frame,
-                            // < 0 means the first "good" or "legible" frame
-    TInt iThumbFrameNumber;
-    TInt iFramesToSkip;     // for searching a good thumbnail
-    
-    MThumbnailObserver* iThumbObserver;  // observer for thumbnail operation
-    
-    HBufC8* iDecoderSpecificInfo;  // decoder specific info header read from input stream, to be sent to transcoder
-    TBool iDecoderSpecificInfoSent;  // True if decoder specific info has been sent to transcoder
-    
-    HBufC8* iOutputVolHeader;  // VOL header read from encoder, to be inserted in the first
-                               // encoded frame buffer
-                               
-    TBool iOutputVolHeaderWritten;  // True if VOL/AVC header has been written to output bitstream
-    
-    RArray<TFrameInformation> iFrameInfoArray;  // array for storing info about frames in progress
-    
-    TTranscoderMode iTranscoderMode;  // current transcoder operation mode
-
-    // used & max frame size, and info if size can be arbitrary    
-    TSize iMaxOutputResolution;
-    TBool iArbitrarySizeAllowed;
-
-    // max allowed frame rate
-    TReal32 iMaxOutputFrameRate;           
-
-	// target and max allowed bit rate
-	TInt iOutputBitRate;
-	TInt iMaxOutputBitRate;        
-	
-	// Mime type for encoded data
-    TBuf8<256> iOutputMimeType;
-    
-    TBool iDelayedWrite;  // True if a frame has to be stored for later writing since
-                          // there are frames inside the transcoder that have to be written
-                          // before this frame
-    HBufC8* iDelayedBuffer;  // buffer for storing the frame  
-    TInt64 iDelayedTimeStamp;  // timestamp
-    TBool iDelayedKeyframe;  // is it a keyframe            
-
-    TInt iTimeStampIndex;  // index for reading stored timestamps in case of color transition
-    TBool iFirstColorTransitionFrame;  // True if we are processing the first frame of a
-                                       // 'doubled' frame in color transitions
-    
-    TInt iTimeStampOffset;  // offset to be added to timestamps, got from processor
-    
-    CCallbackTimer* iTimer;  // timer for waiting encoding to complete
-    
-    TBool iStreamEndRead;
-    
-    TBool iProcessingComplete;
-    
-    TInt iInputMPEG4ProfileLevelId;  // profile-level id for MPEG-4 input
-    
-    // Timer timeout, depends on codec and resolution
-    TUint iMaxEncodingDelay;
-    
-    TInt iNumThumbFrameSkips;  // number of frame skip cycles done to get a 
-                               // a good thumbnail
-                               
-    TTimeIntervalMicroSeconds iPreviousTimeStamp; // timestamp of previous frame        
-
-    TInt iSkippedFrameNumber;  // frame number of skipped frame
-    
-    TInt64 iCutInTimeStamp;  // timestamp of cut-in point, needed in color transitions
-    
-    TBool iDecodingSuspended;  // flag for suspended decoding
-    
-    HBufC8* iNotCodedFrame;  // buffer for not coded frame
-    
-    TInt iInputTimeIncrementResolution;  // MPEG-4 time increment resolution from input clip
-    
-    TBool iFirstFrameAfterTransition;  // True for first frame after start transition
-    
-    TBool iFirstRead;  // True for first read frame        
-
-    TBool iThumbDecoded;  // flag for indicating when a thumb has been decoded,
-                          // needed in AVC thumbnail generation
-    
-    TInt iInputAVCLevel;  // level of input AVC clip
-    
-    TInt iFrameLengthBytes;  // number of bytes used for NAL length in input
-    TInt iThumbFramesToWrite;  // number of thumb frames to write to transcoder
-    
-    CVedAVCEdit* iAvcEdit;  // AVC editing instance
-    
-    TBool iEncodeUntilIDR;  // Flag for encoding until IDR  
-
-    TBool iIsThumbFrameBeingCopied;  // True if thumbnail frame has been sent for
-                                     // decoding, but MtroReturnCodedBuffer hasn't been called
-                                     
-    TInt iModifiedFrameNumber;  // frame number modification for AVC decoder, 
-                                // used with color transitions    
-                                
-    TInt iMaxItemsInProcessingQueue;  // Maximum number of frames kept in transcoder
-                                      // processing queue
-                                      
-    TInt iLastWrittenFrameNumber;  // number of last written frame    
-    
-    TInt iDelayedFrameNumber;  // number of delayed frame
-    
-    TBool iInitializing;  // True when initialisation is ongoing
-    TVedVideoBitstreamMode iInputStreamMode;    //MPEG-4 bitstream mode in input clip
-};
-
-#endif      //  __VIDEOPROCESSOR_H__
-            
-// End of File