mmserv/thumbnailengine/TneAPIInc/HXTNEVideoClipInfoImp.h
changeset 0 71ca22bcf22a
--- /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 <e32base.h>
+#include "HXTneclientservercommon.h"
+#include "DisplayChain.h"
+#include <TNEVideoClipInfo.h>
+
+
+#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:
+     *  - <code>KErrNoMemory</code> if memory allocation fails
+     *  - <code>KErrNotSupported</code>, 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
+     *                     <code>NULL</code> if the frame should be
+     *                     in the original resolution
+     * @param aDisplayMode desired display mode; or <code>ENone</code> 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__
+
+