--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/thumbnail_engine_api/inc/TNEVideoClipInfo.h Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,212 @@
+/*
+* 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:
+*
+*/
+
+
+#ifndef __TNEVIDEOCLIPINFO_H__
+#define __TNEVIDEOCLIPINFO_H__
+
+#include "TNECommon.h"
+
+#include <gdi.h>
+
+#define KBestThumbIndex (-1) // search for best possible thumbnail from video
+
+/*
+ * Forward declarations.
+ */
+class CFbsBitmap;
+class CTNEVideoClipInfo;
+
+/**
+ * Observer for notifying that video clip info
+ * is ready for reading.
+ *
+ * @see CTNEVideoClipInfo
+ */
+class MTNEVideoClipInfoObserver
+ {
+public:
+ /**
+ * Called to notify that video clip info is ready
+ * for reading.
+ *
+ * Possible error codes:
+ * - <code>KErrNotFound</code> if there is no file with the specified name
+ * in the specified directory (but the directory exists)
+ * - <code>KErrPathNotFound</code> if the specified directory
+ * does not exist
+ * - <code>KErrUnknown</code> if the specified file is of unknown format
+ *
+ * @param aInfo video clip info
+ * @param aError <code>KErrNone</code> if info is ready
+ * for reading; one of the system wide
+ * error codes if reading file failed
+ */
+ virtual void NotifyVideoClipInfoReady(CTNEVideoClipInfo& aInfo,
+ TInt aError) = 0;
+ };
+
+
+/**
+ * Observer for notifying that video clip thumb has been completed.
+ *
+ * @see CTNEVideoClipInfo
+ */
+class MTNEVideoClipThumbObserver
+ {
+public:
+ /**
+ * Called to notify that video clip thumbnail generation
+ * has been completed.
+ *
+ * @param aInfo video clip info
+ * @param aError <code>KErrNone</code> if frame was
+ * completed successfully; one of the system wide
+ * error codes if generating frame failed
+ * @param aThumb pointer to thumb if it was generated successfully;
+ * <code>NULL</code> if generating frame failed
+ */
+ virtual void NotifyVideoClipThumbCompleted(CTNEVideoClipInfo& aInfo,
+ TInt aError,
+ CFbsBitmap* aThumb) = 0;
+ };
+
+/**
+ * Utility class for getting information about video clip.
+ */
+class CTNEVideoClipInfo : public CBase
+ {
+public:
+
+ /* Constructors & destructor. */
+
+ /**
+ * Constructs a new CTNEVideoClipInfo object to get information
+ * about the specified video clip file. The specified observer
+ * is notified when info is ready for reading. This method
+ * may leave if no resources are available to construct
+ * a new object.
+ * The file will be opened in EFileShareReadersOnly mode by default,
+ * and the same mode should be used by the client too if it need to open
+ * the file at the same time.
+ *
+ * Possible leave codes:
+ * - <code>KErrNoMemory</code> if memory allocation fails
+ *
+ * @param aFileName name of video clip file
+ * @param aObserver observer to notify when info is ready for reading
+ *
+ * @return pointer to a new CTNEVideoClipInfo instance
+ */
+ IMPORT_C static CTNEVideoClipInfo* NewL(const TDesC& aFileName,
+ MTNEVideoClipInfoObserver& aObserver);
+
+ IMPORT_C static CTNEVideoClipInfo* NewL(const RFile& aFileName,
+ MTNEVideoClipInfoObserver& aObserver);
+
+ /**
+ * Constructs a new CTNEVideoClipInfo object to get information
+ * about the specified video clip file. The constructed object
+ * is left in the cleanup stack. The specified observer
+ * is notified when info is ready for reading. This method
+ * may leave if no resources are available to construct a new
+ * object.
+ * The file will be opened in EFileShareReadersOnly mode by default,
+ * and the same mode should be used by the client too if it need to open
+ * the file at the same time.
+ *
+ * Possible leave codes:
+ * - <code>KErrNoMemory</code> if memory allocation fails
+ *
+ * @param aFileName name of video clip file
+ * @param aObserver observer to notify when info is ready for reading
+ *
+ * @return pointer to a new CTNEVideoClipInfo instance
+ */
+ IMPORT_C static CTNEVideoClipInfo* NewLC(const TDesC& aFileName,
+ MTNEVideoClipInfoObserver& aObserver);
+
+ IMPORT_C static CTNEVideoClipInfo* NewLC(const RFile& aFileName,
+ MTNEVideoClipInfoObserver& aObserver);
+
+ /* 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
+ */
+ virtual TPtrC FileName() const = 0;
+
+ /* Video frame property 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
+ */
+ virtual TInt VideoFrameCount() const = 0;
+
+ /* 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
+ */
+ virtual void GetThumbL(MTNEVideoClipThumbObserver& aObserver,
+ TInt aIndex = KBestThumbIndex,
+ TSize* const aResolution = 0,
+ TDisplayMode aDisplayMode = ENone,
+ TBool aEnhance = EFalse,
+ TInt aPriority = CActive::EPriorityIdle) = 0;
+
+ /**
+ * Cancels frame generation. If no frame is currently being
+ * generated, the function does nothing.
+ */
+ virtual void CancelThumb() = 0;
+
+ };
+
+
+
+#endif // __TNEVIDEOCLIPINFO_H__
+