videoeditorengine/vedengine/videoprocessor/inc/VideoEncoder.h
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 7 4c409de21d23
--- a/videoeditorengine/vedengine/videoprocessor/inc/VideoEncoder.h	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,401 +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 encoder class.
-*
-*/
-
-
-#ifndef VIDEOENCODER_H
-#define VIDEOENCODER_H
-
-// INCLUDES
-
-#include <CCMRMediaSink.h>
-#include "CTRTranscoderObserver.h"
-#include "CTRTranscoder.h"
-#include "CTRCommon.h"
-#include "CTRVideoPictureSink.h"
-#include "Vedcommon.h"
-
-// FORWARD DECLARATIONS
-
-class CStatusMonitor;
-class CVedVolReader;
-class CVedAVCEdit;
-
-class CVideoEncoder : public CActive, public MTRTranscoderObserver, 
-                      public MCMRMediaSink, public MTRVideoPictureSink
-    {
-
-    public:  // Constructors and destructor
-        
-        /**
-        * Two-phased constructor.
-        */
-		static CVideoEncoder* NewL(CStatusMonitor *aMonitor, CVedAVCEdit* aAvcEdit, 
-		                           const TPtrC8& aVideoMimeType);
-        
-        /**
-        * Destructor.
-        */
-        
-        ~CVideoEncoder();               
-
-    public:   // Constants        
-        
-        enum TErrorCode
-            {
-            EInternalAssertionFailure = -10030,
-            };
-            
-    public: // Functions from base classes
-
-        /**
-        * From CActive Active object running method
-        */
-        void RunL();
-        
-        /**
-        * From CActive Active object error method
-        */
-        TInt RunError(TInt aError);
-        
-        /**
-        * From CActive Active object cancelling method
-        */
-        void DoCancel();  
-
-        /**
-        * 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
-        */
-        inline void MtroSuspend() { };
-        
-        /**
-        * From MTRTranscoderObserver
-        */
-        inline void MtroResume() { };
-        
-        /**	
-        * 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 MTRVideoPictureSink
-        */  
-        void MtroPictureFromTranscoder(TTRVideoPicture* aPicture);
-
-    public:  // New functions
-
-        /**
-        * Sets the used frame size
-        * 
-        * @param aSize Frame size 
-        * @return Error codew
-        */
-        void SetFrameSizeL(const TSize& aSize);
-
-        /**
-        * Gets the current frame size
-        * 
-        * @param aSize Frame size 
-        * @return void
-        */
-        void FrameSize(TSize& aSize) const;
-
-        /**
-        * Sets the target frame rate
-        * 
-        * @param aFrameRate frame rate
-        * @return Error code
-        */
-        TInt SetFrameRate(const TReal aFrameRate);
-        
-        /**
-        * Sets the frame rate of input sequence
-        * 
-        * @param aFrameRate frame rate
-        * @return Error code
-        */
-        TInt SetInputFrameRate(const TReal aFrameRate);
-        
-        /**
-        * Sets the target random access rate
-        * 
-        * @param aRate random access rate
-        * @return Error code
-        */
-        TInt SetRandomAccessRate(const TReal aRate);
-
-        /**
-        * Sets the target bitrate
-        * 
-        * @param aBitrate Bitrate 
-        * @return Error code
-        */
-        TInt SetBitrate(const TInt aBitrate);
-        
-        /**
-        * Initializes the encoder
-        * 
-        * @param aStatus Status object for active object
-        * @return void
-        */        
-        void InitializeL(TRequestStatus &aStatus);
-               
-        /**
-        * Encodes a frame
-        * 
-        * @param aYUVFrame Frame to be encoded
-        * @param aStatus Status object for active object
-        * @param Timestamp of the frame
-        * @return void
-        */        
-        void EncodeFrameL(TPtr8 &aYUVFrame, TRequestStatus &aStatus, TTimeIntervalMicroSeconds aTimeStamp);
-        
-        /**
-        * Gets the encoded bitstream
-        *         
-        * @param aKeyFrame Keyframe flag, True if the frame is Intra
-        * @return Descriptor containing the output bitstream
-        */   
-        TPtrC8& GetBufferL(TBool& aKeyFrame);
-
-        /**
-        * Return used bitstream buffer
-        *         
-        * @return void
-        */         
-        void ReturnBuffer();        
-
-        /**
-        * Starts the encoder
-        *         
-        * @return void
-        */ 
-        void Start();
-
-        /**
-        * Stops the encoder
-        *         
-        * @return void
-        */ 
-        void Stop();
-
-        /**
-        * Resets the encoder
-        *         
-        * @param aStatus Status object for active object
-        * @return void
-        */ 
-        void Reset(TRequestStatus &aStatus);
-        
-        /**
-        * Resets the encoder synchronously
-        *        
-        * @return void
-        */ 
-        void Reset();
-
-		/**
-        * Gets status of whether encoding has been started
-        *                 
-        * @return ETrue if encoding has been started
-        */ 
-		inline TBool BeenStarted() const { return iStarted; }
-
-		/**
-        * Gets status of whether encoding request is pending
-        *                 
-        * @return ETrue if encode is pending
-        */ 
-		inline TBool IsEncodePending() const { return iEncodePending; }
-
-        /**
-        * Gets time increment resolution used in MPEG-4 
-        *                 
-        * @return Time increment resolution
-        */ 
-        TInt GetTimeIncrementResolution() const;
-        
-        /**
-        * Forces the next encoded frame to be Intra
-        *
-        */ 
-        void SetRandomAccessPoint();
-            
-    private:
-
-        /**
-        * C++ default constructor.
-        */
-        CVideoEncoder();
-
-        /**
-        * By default EPOC constructor is private.
-        */
-		void ConstructL(CStatusMonitor *aMonitor, CVedAVCEdit* aAvcEdit, 
-		                const TPtrC8& aVideoMimeType);
-
-        /**
-        * Interpret and store video codec MIME-type, used by ConstructL
-        * @return void
-        */
-        void SetVideoCodecL(const TPtrC8& aMimeType);
-        
-        /**
-        * Set encoding options
-        * @return void
-        */
-        void SetupEncoderL();
-        
-        /**
-        * Parses and writes codec specific information, i.e
-        * MPEG-4 VOL header and AVC decoder configuration record
-        * @return void
-        */
-        void HandleCodingStandardSpecificInfoL();
-
-    private:    // Data
-    
-        // Transcoder
-        CTRTranscoder* iTranscoder;
-
-		// is encode pending ?
-		TBool iEncodePending;
-
-		// has encoding been started ?
-		TBool iStarted;
-
-        // used & max frame size, and info if size can be arbitrary
-        TSize iFrameSize;
-        TSize iMaxResolution;
-        TBool iArbitrarySizeAllowed;
-
-        // target and max allowed frame rate
-        TReal32 iFrameRate;        
-        TReal32 iMaxFrameRate;
-        
-        // input frame rate
-        TReal32 iInputFrameRate;
-        
-        // target random access rate
-        TReal iRandomAccessRate;
-
-		// target and max allowed bit rate
-		TInt iBitRate;
-		TInt iMaxBitRate;
-
-        // Mime type for encoded data
-        TBuf8<256> iMimeType;        
-
-        // input picture         
-        TTRVideoPicture* iInputPicture;     
-        
-        // bitstream buffer
-        HBufC8* iDataBuffer;
-        
-        // keyframe flag for bitstream buffer
-        TBool iKeyFrame;
-        
-        TPtrC8 iReturnDes;
-
-        // External status info
-        TRequestStatus *iResetRequestStatus;
-
-		TRequestStatus *iEncodeRequestStatus;
-
-        TTimeIntervalMicroSeconds iPreviousTimeStamp;
-
-        // MPEG-4 time increment resolution
-        TInt iTimeIncrementResolution;        
-
-        // input YUV data
-        TPtr8 iInputBuffer;
-
-        // status monitor object
-        CStatusMonitor *iMonitor;
-        
-        // video object layer reader
-        CVedVolReader *iVolReader;
-
-        RTimer iTimer; // timer object
-        TBool iTimerCreated;
-        TBool iTimerRequestPending;
-        
-        // Timer timeout, depends on codec and resolution
-        TUint iMaxEncodingDelay;
-
-        // flag to check if devvideorec methods can be called or not; they can't be called after a fatal error 
-        TBool iFatalError;
-
-#ifdef _DEBUG
-        TTime iEncodeStartTime;
-#endif
-        
-        // AVC editing module
-        CVedAVCEdit* iAvcEdit;
-        
-    };
-
-
-
-#endif