diff -r 000000000000 -r 71ca22bcf22a mmserv/thumbnailengine/TneAPIInc/HXTNEVideoClipInfoImp.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/thumbnailengine/TneAPIInc/HXTNEVideoClipInfoImp.h Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,235 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: +* +* Description: TNE Video Clip Info Implementation +* +*/ + + + + +#ifndef __HXTNEVIDEOCLIPINFOIMP_H__ +#define __HXTNEVIDEOCLIPINFOIMP_H__ + + +#include +#include "HXTneclientservercommon.h" +#include "DisplayChain.h" +#include + + +#include "HXTneClientObserver.h" + +class CFbsBitmap; + +class CTNEClientObserver; +class CTNEVideoClipInfo; + +/** + * class for getting information about video clip files and generating thumbnails. + */ + +class CHXTNEVideoClipInfoImp : public CTNEVideoClipInfo + ,public RSessionBase + { + + public: + + static CTNEVideoClipInfo* NewL(const RFile& aFileHandle, + MTNEVideoClipInfoObserver& aObserver); + /** + * Destroys the object and releases all resources. + */ + ~CHXTNEVideoClipInfoImp(); + + + /* General property methods. */ + + /** + * Returns the file name of the clip. Panics if there is no file + * associated with this clip or info is not yet ready for reading. + * + * @return file name of the clip + */ + TPtrC FileName() const; + + /** + * Returns the resolution clip. Panics if the + * info is not yet ready for reading. + * + * @return TSize of the clip + */ + TSize GetResolution() const; + + /* Thumb methods. */ + + /** + * Returns the number of video frames in this clip. Panics if info + * is not yet ready for reading. + * + * @return number of video frames in this clip + */ + TInt VideoFrameCount() const; + + /* Thumbnail methods. */ + + /** + * Generates a bitmap of the given frame from video clip. + * The frame bitmap is scaled to the specified resolution and converted + * to the specified display mode. This method is asynchronous. The frame + * is generated in background and the observer is notified when the frame + * is complete. This method panics if info is not yet ready for reading or + * the resolution is illegal. + * + * Possible leave codes: + * - KErrNoMemory if memory allocation fails + * - KErrNotSupported, if the specified combination of + * parameters is not supported + * + * @param aObserver observer to be notified when the frame is completed + * @param aIndex index of frame, or KFrameIndexBestThumb to look for + * most suitable thumbnail frame. + * @param aResolution resolution of the desired frame bitmap, or + * NULL if the frame should be + * in the original resolution + * @param aDisplayMode desired display mode; or ENone if + * any display mode is acceptable + * @param aEnhance apply image enhancement algorithms to improve + * frame quality; note that this may considerably + * increase the processing time needed to prepare + * the frame + * @param aPriority priority of the frame generation + */ + + void GetThumbL(MTNEVideoClipThumbObserver& aObserver, + TInt aIndex, + TSize* const aResolution, + TDisplayMode aDisplayMode, + TBool aEnhance, + TInt aPriority); + + /** + * Cancels Thumbnail generation. If no thumb is currently being + * generated, the function does nothing. + */ + void CancelThumb(); + + + + +// client state - This will be the client side states for maintaining the signals from clientobserver +enum EThumbnailClientState // this holds + { + EStartGettingMetadata = 0, + EStartGettingThumbNail, + EStartGettingThumbNailWithIndex, + ECancelling + }; + + + +//Client server +TInt CreateServer(); + + + + TVersion Version() const; + + //callback from observer + + void ServiceCompleted(TInt aError); + + + //sendrecieve functions - rest are not implemented for simplicity + + TInt OpenFile(const RFile& aFileHandle, TInt aPosition); + + TInt OpenFile(TInt aPosition); + + private: + CHXTNEVideoClipInfoImp (); + + /** + * Constructor for CHXTNEVideoClipInfoImp using RFile handle. + */ + void ConstructL(const RFile& aFileHandle, + MTNEVideoClipInfoObserver& aObserver); + + /** + * Constructor for CHXTNEVideoClipInfoImp using file name. + */ + void ConstructL(const TDesC& aFileName, + MTNEVideoClipInfoObserver& aObserver); + + + + + void FetchAndSendMetaData(TInt err); // Gets the metadata from the server and sents an event to the App + + void NotifyIfGetThumbPending(TInt aError, CFbsBitmap *&pBitMap); + + void GenerateThumbNail(); + + TBool HandleThumbnailError(TInt aError); + void EnhanceThumbnailL(const CFbsBitmap* aInBitmap, + CFbsBitmap* aTargetBitmap); + + + // Observers MTNEVideoClipInfoObserver and MTNEVideoClipThumbObserver + MTNEVideoClipInfoObserver* iClipInfoObserver; + MTNEVideoClipThumbObserver* iThumbObserver; + + // Storage for metadata between client and server + TNEMetaData iMetaData; + TNEThumbRequest iThumbRequestData; + + //server name variable + HBufC* iServerName; + + //Client state + EThumbnailClientState c_State; + + TInt m_LastError; + TBool iCloseHandle; + RFs* iFs; + RFile iFileHandle; + + + + CFbsBitmap* iOutBitmap; + + TUint8* iRgbBuf; + TFileName iFileName; + //server thread + RThread iServerThread; + TSize iOutputThumbResolution; + // Thumbnail index + TInt iThumbIndex; + // Thumbnail display mode + TDisplayMode iThumbDisplayMode; + TInt iPriority; + // Thumbnail enhance + TBool iThumbEnhance; + // frame enhancement + CDisplayChain* iEnhancer; + + //observer + CTNEClientObserver* iObserver; + friend class CTNEVideoClipInfo; + friend class CTNEClientObserver; + + }; + +#endif // __HXTNEVIDEOCLIPINFOIMP_H__ + +