diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/vedtranscoder/inc/ctrvideodecoderclient.h --- a/videoeditorengine/vedtranscoder/inc/ctrvideodecoderclient.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +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 CTRVIDEODECODERCLIENT_H -#define CTRVIDEODECODERCLIENT_H - -// INCLUDES -#include -#include -#include -#include - -#include "ctrcommon.h" - - -// FORWARD DECLARATIONS -class MTRDevVideoClientObserver; -class CCMRMediaBuffer; - - -/** -* Video decoder client -* @lib TRANSCODER.LIB -*/ -NONSHARABLE_CLASS(CTRVideoDecoderClient) : public CBase, public MMMFDevVideoPlayObserver, public MMmfVideoResourceObserver - - { - public: // Constuctor / destructor - - /** - * Two-phased constructor. - */ - static CTRVideoDecoderClient* NewL(MTRDevVideoClientObserver& aObserver); - - /** - * Destructor. - */ - ~CTRVideoDecoderClient(); - - // Information methods - /** - * Checks codec support by MIME type - * @param aFormat MIME type - * @param aShortFormat MIME type (short version) - * @param aUid Uid of the codec to check - * @param aFallbackUid Fallback Uid incase the first one is not found - * @return TBool value: ETrue - givemn MIME type is supported; EFalse - no support; - */ - TBool SupportsCodec(const TDesC8& aFormat, const TDesC8& aShortFormat, TInt aUid, TInt aFallbackUid); - - /** - * Gets codec info - * @param none - * @return none - */ - void GetCodecInfoL(); - - /** - * 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); - - /** - * From MMMFDevVideoPlayObserver. Notifies the client that one or more new empty input buffers are available - * @param none - * @return none - */ - void MdvpoNewBuffers(); - - /** - * From MMMFDevVideoPlayObserver. Returns a used input video picture back to the caller - * @param aPicture Video picture - * @return none - */ - void MdvpoReturnPicture(TVideoPicture *aPicture); - - /** - * From MMMFDevVideoPlayObserver. Delivers supplemental information from a coded data unit - * @param aData Data, aTimestamp TimeStamp info, aPictureId Picture Id - * @return none - */ - void MdvpoSupplementalInformation(const TDesC8 &aData, const TTimeIntervalMicroSeconds &aTimestamp, - const TPictureId &aPictureId); - - /** - * From MMMFDevVideoPlayObserver. Back channel information from the decoder, indicating a picture loss - * without specifying the lost picture - * @param none - * @return none - */ - void MdvpoPictureLoss(); - - /** - * From MMMFDevVideoPlayObserver. Back channel information from the decoder, indicating the pictures that have been lost - * @param aPictures Array with picture Ids - * @return none - */ - void MdvpoPictureLoss(const TArray< TPictureId > &aPictures); - - /** - * From MMMFDevVideoPlayObserver. Back channel information from the decoder, indicating the loss of consecutive - * macroblocks in raster scan order - * @param aFirstMacroblock First macroblock, aNumMacroblocks, Number of macroblocks, aPicture PictureId - * @return none - */ - void MdvpoSliceLoss(TUint aFirstMacroblock, TUint aNumMacroblocks, const TPictureId &aPicture); - - /** - * From MMMFDevVideoPlayObserver. Back channel information from the decoder, indicating a reference picture - * selection request - * @param aSelectionData Selection data - * @return none - */ - void MdvpoReferencePictureSelection(const TDesC8 &aSelectionData); - - /** - * From MMMFDevVideoPlayObserver. Called when a timed snapshot request has been completed - * @param aError Error, aPictureData Picture data, aPresentationTimestamp Presentation timestamp, aPictureId picture Id - * @return - */ - void MdvpoTimedSnapshotComplete(TInt aError, TPictureData *aPictureData, - const TTimeIntervalMicroSeconds &aPresentationTimestamp, const TPictureId &aPictureId); - - /** - * From MMMFDevVideoPlayObserver. Notifies the client that one or more new output pictures are available - * @param none - * @return none - */ - void MdvpoNewPictures(); - - /** - * From MMMFDevVideoPlayObserver. Reports a fatal decoding or playback error - * @param aError Rin-time error - * @return none - */ - void MdvpoFatalError(TInt aError); - - /** - * From MMMFDevVideoPlayObserver. Reports that DevVideoPlay initialization has completed - * @param aError Init error status - * @return none - */ - void MdvpoInitComplete(TInt aError); - - /** - * From MMMFDevVideoPlayObserver. Reports that the input video stream end has been reached and all pictures - * have been processed - * @param none - * @return none - */ - void MdvpoStreamEnd(); - - /** - * Returns used videopicture - * @param aPicture Video picture - * @return none - */ - void ReturnPicture(TVideoPicture* aPicture); - - /** - * Starts decoding - * @param none - * @return none - */ - void StartL(); - - /** - * Stops decoding synchronously - * @param none - * @return none - */ - void StopL(); - - /** - * Stops decoding asynchronously - * @param none - * @return none - */ - void AsyncStopL(); - - /** - * Pauses decoding - * @param none - * @return none - */ - void Pause(); - - /** - * Resumes decoding - * @param none - * @return none - */ - void ResumeL(); - - /** - * Checks codec info - * @param aUid Decoder Uid - * @return TBool ETrue - accelerated codec; EFalse - non-accelerated codec - */ - TBool CheckCodecInfoL(TUid aUid); - - /** - * Initialize decoder client - * @param none - * @return none - */ - void InitializeL(); - - /** - * Select decoder - * @param none - * @return none - */ - void SelectDecoderL(); - - /** - * Send buffer - * @param aBuffer Media buffer - * @return none - */ - void SendBufferL(CCMRMediaBuffer* aBuffer); - - /** - * Write coded buffer - * @param aBuffer Media buffer - * @return none - */ - void WriteCodedBufferL(CCMRMediaBuffer* aBuffer); - - /** - * Returns a time estimate on long it takes to decode one frame with the current settings - * @param aInput Input video format - * @param aCodecType EH263 or EMpeg4 - * @return TReal time estimate in seconds - */ - TReal EstimateDecodeFrameTimeL(const TTRVideoFormat& aInput, TInt aCodecType); - - /** - * Checks if decoder supports scaling and enables scaling if supported. - * Disables scaling if aInputSize is equal to aOutputSize or scaling is not supported. - * @param aInputSize Source picture size - * @param aOutputSize Decoded picture size - * @return TBool ETrue if scaling is supported, EFalse otherwise - */ - TBool SetDecoderScaling(TSize& aInputSize, TSize& aOutputSize); - - /** - * 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. - */ - CTRVideoDecoderClient(MTRDevVideoClientObserver& aObserver); - - /** - * Symbian 2nd phase constructor, can leave - */ - void ConstructL(); - - private: - // Observer - MTRDevVideoClientObserver& iObserver; - - // DevVideoPlay - CMMFDevVideoPlay* iDevVideoPlay; - - // Decoder mime type - TBuf8<256> iMimeType; - - // Short version mime type - TBuf8<256> iShortMimeType; - - // Uncompressed format - TUncompressedVideoFormat iUncompressedFormat; - - // Compressed format - CCompressedVideoFormat* iCompresedFormat; - - // HwDevice Uid - THwDeviceId iHwDeviceId; - - // Video coded input buffer - TVideoInputBuffer* iInputBuffer; - - // Decoded picture - TVideoPicture* iDecodedPicture; - - // Uid of the selected codec - TUid iUid; - - // Fallback codec to use if the first one doesn't work - TUid iFallbackUid; - - // Coded buffer - CCMRMediaBuffer* iCodedBuffer; - - // Codec type - TInt iCodecType; - - // Codec level - TInt iCodecLevel; - - // Buffer options - CMMFDevVideoPlay::TBufferOptions iBufferOptions; - - // Fatal error code - TInt iFatalError; - - // Input format - TTRVideoFormat iInputFormat; - - // Output format - TTRVideoFormat iOutputFormat; - - // Data unit type - TVideoDataUnitType iDataUnitType; - - // Stop - TBool iStop; - - // Pause - TBool iPause; - - // Last ts - TTimeIntervalMicroSeconds iLastTimestamp; - - // If selected decoder is accelerated or not - TBool iAcceleratedCodecSelected; - - // If scaling is used or not - TBool iScalingInUse; - - // Decoded picture size if scaling is used - TSize iScaledOutputSize; - - // If deblocking should be used when scaling - TBool iScalingWithDeblocking; - - // Video resource handler custom interface - MMmfVideoResourceHandler* iVideoResourceHandlerCI; - }; - - - -#endif // CTRVIDEODECODERCLIENT_H