videoeditorengine/vedtranscoder/inc/ctrvideoencoderclient.h
changeset 9 d87d32eab1a9
parent 0 951a5db380a0
--- a/videoeditorengine/vedtranscoder/inc/ctrvideoencoderclient.h	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,471 +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:  
-* Video decoder client.
-*
-*/
-
-
-
-#ifndef CTRVIDEOENCODERCLIENT_H
-#define CTRVIDEOENCODERCLIENT_H
-
-
-// INCLUDES
-#include <e32base.h>
-#include <devvideobase.h>   // Common data types
-#include <CCMRMediaSink.h>  // CmmfBuffer
-#include <e32cmn.h>         // TRequestStatus
-#include <devvideorecord.h>
-
-// When the flag SPP_BUFFER_MGMT_CI_HEADER_SYMBIAN is NOT defined,
-// Buffer management interface is specified in Symbian header
-#ifndef SPP_BUFFER_MGMT_CI_HEADER_SYMBIAN
-#include <devvideostandardcustominterfaces.h>
-#else
-#include <devvideostandardcustominterfaces.h>
-#include "buffermanagementci.h"
-#endif
-
-#include "ctrcommon.h"
-#include "ctrsettings.h"
-
-#ifndef SPP_BUFFER_MGMT_CI_HEADER_SYMBIAN
-/** Buffer Management Custom Interface UID */
-const TUid KMmfVideoBuffermanagementUid = { 0x10204bea };
-#endif
-
-// FORWARD DECLARATIONS
-class MTRDevVideoClientObserver;
-
-
-// CONSTANTS
-
-
-/**
-*  Video encoder client
-*  @lib TRANSCODER.LIB
-*  @since 3.1
-*/
-class TUidAndRate
-    {
-    public:
-        // Encoder Uid
-        TUid iUid;
-
-        // Max supported framerate
-        TReal iMaxRate;
-    };
-
-/**
-*  Video encoder client
-*  @lib TRANSCODER.LIB
-*  @since 3.1
-*/
-NONSHARABLE_CLASS(CTRVideoEncoderClient) : public CBase, public MMMFDevVideoRecordObserver, public MMmfVideoBufferManagementObserver,
-                                           public MMmfVideoResourceObserver
-    {
-    public: // Constuctor / destructor
-
-        /**
-        * Two-phased constructor.
-        */
-        static CTRVideoEncoderClient* NewL(MTRDevVideoClientObserver& aObserver);
-
-        /**
-        * Destructor.
-        */
-        ~CTRVideoEncoderClient();
-
-        // Information methods
-        /**
-        * Check codec's support by MIME type
-        * @param aFormat Codec MIME type
-        * @param aShortFormat Codec MIME type (short version)
-        * @param aUid Uid of the codec to check
-        * @param aFallbackUid Fallback Uid incase the first codec is not found
-        * @return TBool: ETrue - supports, EFalse - Does not support
-        */
-        TBool SupportsCodec(const TDesC8& aFormat, const TDesC8& aShortFormat, TInt aUid, TInt aFallbackUid);
-
-        /**
-        * Sets codec parameters
-        * @param aCodecType Codec type
-        * @param aCodecLevel Codec level
-        * @param aInputFormat Input video format
-        * @param aOutputFormat Output video format
-        * @return none
-        */
-        void SetCodecParametersL(TInt aCodecType, TInt aCodecLevel, const TTRVideoFormat& aInputFormat, 
-                                 const TTRVideoFormat& aOutputFormat);
-
-        /**
-        * Sets real-time operation
-        * @param aRealTime Real-time operatiopn
-        * @return none
-        */
-        void SetRealTime(TBool aRealTime);
-
-        /**
-        * From MMMFDevVideoRecordObserver. Returns a used input video picture back to the caller. 
-        * The picture memory can be re-used or freed
-        * @param aPicture Video Picture
-        * @return none
-        */
-        void MdvroReturnPicture(TVideoPicture* aPicture);
-
-        /**
-        * From MMMFDevVideoRecordObserver. Signals that the supplemental info send request has completed
-        * @param none
-        * @return none
-        */
-        void MdvroSupplementalInfoSent();
-
-        /**
-        * From MMMFDevVideoRecordObserver. Notifies the client that one or more new output buffers are available
-        * @param none
-        * @return none
-        */
-        void MdvroNewBuffers();
-
-        /**
-        * From MMMFDevVideoRecordObserver. Reports a fatal encoding or capturing error 
-        * @param aError Run-time error
-        * @return none
-        */
-        void MdvroFatalError(TInt aError);
-
-        /**
-        * From MMMFDevVideoRecordObserver. Reports that DevVideoRecord initialization has completed
-        * @param aError Init error
-        * @return none
-        */
-        void MdvroInitializeComplete(TInt aError);
-
-        /**
-        * From MMMFDevVideoRecordObserver. Reports that the input video data end has been reached and all pictures 
-        * have been processed
-        * @param none
-        * @return none
-        */
-        void MdvroStreamEnd();
-
-        /**
-        * Encode picture
-        * @param aPicture Video picture to encode
-        * @return none
-        */
-        void EncodePictureL(TVideoPicture* aPicture);
-
-        /**
-        * Starts encoding
-        * @param none
-        * @return none
-        */
-        void StartL();
-
-        /**
-        * Stops encoding synchronously
-        * @param none
-        * @return none
-        */
-        void StopL();
-
-        /**
-        * Stops encoding asynchronously
-        * @param none
-        * @return none
-        */
-        void AsyncStopL();
-
-        /**
-        * Sets target bitrate
-        * @param aBitRate bitrate
-        * @return none
-        */
-        void SetBitRate(TUint aBitRate);
-
-        /**
-        * Sets target frame rate 
-        * @param aFrameRate Target frame rate 
-        * @return none
-        */
-        void SetFrameRate(TReal& aFrameRate);
-
-        /**
-        * Sets Channel bit-error rate
-        * @param aErrorRate error rate
-        * @return none
-        */
-        void SetChannelBitErrorRate(TReal aErrorRate);
-
-        /**
-        * Sets Video coding options
-        * @param aOptions Coding options
-        * @return none
-        */
-        void SetVideoCodingOptionsL(TTRVideoCodingOptions& aOptions);
-
-        /**
-        * Gets current video bitrate
-        * @param none
-        * @return Video bitrate
-        */
-        TUint GetVideoBitRateL();
-
-        /**
-        * Gets Current frame rate
-        * @param none
-        * @return Frame rate 
-        */
-        TReal GetFrameRateL();
-
-        /**
-        * Sets Input / source frame rate 
-        * @param aFrameRate Input / Source frame rate 
-        * @return none
-        */
-        void SetInputFrameRate(TReal aFrameRate);
-
-        /**
-        * Initialize encoder
-        * @param none 
-        * @return none
-        */
-        void InitializeL();
-
-        /**
-        * Select encoder
-        * @param none 
-        * @return none 
-        */
-        void SelectEncoderL();
-        
-        /**
-        * Get Coding standard / specific output (VOL / VOS / VO Header)
-        * @param none 
-        * @return Coding standard / specific output (VOL / VOS / VO Header) 
-        */
-        HBufC8* GetCodingStandardSpecificInitOutputLC();
-
-        /**
-        * Select encoder
-        * @param none 
-        * @return none 
-        */
-        void UseDataTransferOptimizationL();
-
-        /**
-        * Informs about new buffers available in DevVideoPlay queue
-        * @param none 
-        * @return none 
-        */
-        void MmvbmoNewBuffers();
-
-        /**
-        * Release buffers request
-        * @param none 
-        * @return none 
-        */
-        void MmvbmoReleaseBuffers();
-        
-        /**
-        * Gets target video picture buffer
-        * @param none 
-        * @return Video picture
-        */
-        TVideoPicture* GetTargetVideoPictureL();
-        
-        /**
-        * Sets Random access point
-        * @param none 
-        * @return none 
-        */
-        void SetRandomAccessPoint();
-        
-        /**
-        * Returns a time estimate on long it takes to encode one frame with the current settings
-        * @param aOutput Output video format
-        * @param aCodecType EH263 or EMpeg4
-        * @return TReal time estimate in seconds
-        */
-        TReal EstimateEncodeFrameTimeL(const TTRVideoFormat& aOutput, TInt aCodecType);
-        
-        /**
-        * Pauses encoding
-        * @param none
-        * @return none
-        */
-        void Pause();
-
-        /**
-        * Resumes encoding
-        * @param none
-        * @return none
-        */
-        void Resume();
-        
-        /**
-        * Enable / Disable resource observer
-        * @param aEnable ETrue: Observer is enabled, EFalse observer is disabled
-        * @return none
-        */
-        void EnableResourceObserver(TBool aEnable);
-        
-        /**
-        * From MMmfVideoResourceObserver. Indicates that a media device has lost its resources
-        * @param aMediaDevice UID for the media device that lost resources
-        * @return none
-        */
-        void MmvroResourcesLost(TUid aMediaDevice);
-        
-        /**
-        * From MMmfVideoResourceObserver. Indicates that a media device has regained its resources
-        * @param aMediaDevice UID for the media device that regained resources
-        * @return none
-        */
-        void MmvroResourcesRestored(TUid aMediaDevice);
-
-    private:
-        /**
-        * C++ default constructor.
-        */
-        CTRVideoEncoderClient(MTRDevVideoClientObserver& aObserver);
-
-        /**
-        * Symbian 2nd phase constructor, can leave
-        */
-        void ConstructL();
-
-        /**
-        * Checks codec info
-        * @param aUid Decoder Uid
-        * @return TBool ETrue - accelerated codec; EFalse - non-accelerated codec
-        */
-        TBool CheckCodecInfoL(TUid aUid);
-        
-    private:
-        // Observer
-        MTRDevVideoClientObserver& iObserver;
-
-        // DevVideoRecord
-        CMMFDevVideoRecord* iDevVideoRecord;
-
-        // Encoder mime type
-        TBuf8<256> iMimeType;
-        
-        // Short version mime type
-        TBuf8<256> iShortMimeType;
-
-        // Uid of the selected codec
-        TUid iUid;
-        
-        // Fallback codec to use if the first codec doesn't work
-        TUid iFallbackUid;
-
-        // Max frame rate 
-        TReal iMaxFrameRate;
-
-        // Uncompressed format
-        TUncompressedVideoFormat iUncompressedFormat;
-
-        // Compressed format
-        CCompressedVideoFormat* iCompresedFormat;
-
-        // Picture size
-        TSize iPictureSize;
-
-        // Rate control options
-        TRateControlOptions iRateControlOptions;
-
-        // Coding options
-        TTRVideoCodingOptions iCodingOptions;
-
-        // HwDevice Uid
-        THwDeviceId iHwDeviceId;
-
-        // MPEG4 VOL header
-        TBufC8<256> iVolHeader;
-
-        // Output buffer type
-        TInt iBufferType;
-
-        // Output media buffer
-        CCMRMediaBuffer* iOutputMediaBuffer;
-
-        // Request status
-        TRequestStatus* iStat;
-
-        // Real-time processing
-        TBool iRealTime;
-
-        // State
-        TInt iState;
-
-        // Src frame rate
-        TReal iSrcRate;
-
-        // Output data type
-        TInt iOutputDataType;
-
-        // Codec level
-        TInt iCodecLevel;
-
-        // Codec type
-        TInt iCodecType;
-
-        // Error rate 
-        TReal iErrorRate;
-
-        // Fatal error code
-        TInt iFatalError;
-        
-        // Vol data sending status
-        TBool iVolHeaderSent;
-        
-        // Vol header status 
-        TBool iRemoveHeader;
-        
-        // Vol header length
-        TUint iVolLength;
-        
-        // Rate control options
-        TRateControlOptions iRateOptions;
-        
-        // Rate setting
-        TBool iBitRateSetting;
-        
-        // Buffer Management CI
-        MMmfVideoBufferManagement* iVideoBufferManagementCI;
-        
-        // Last ts
-        TTimeIntervalMicroSeconds iLastTimestamp;
-        
-        // If selected encoder is accelerated or not
-        TBool iAcceleratedCodecSelected;
-        
-        // ETrue if random access point was requested
-        TBool iSetRandomAccessPoint;
-        
-        // Number of H.264 SPS/PPS NAL units from encoder
-        TInt iNumH264SPSPPS;
-        
-        // Video resource handler custom interface
-        MMmfVideoResourceHandler* iVideoResourceHandlerCI;
-    };
-
-
-
-#endif  // CTRVIDEOENCODERCLIENT_H