mmappfw_plat/harvester_metadata_extractor_api/inc/mpxmetadataextractor.h
changeset 0 a2952bb97e68
child 17 780c925249c1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappfw_plat/harvester_metadata_extractor_api/inc/mpxmetadataextractor.h	Thu Dec 17 08:55:47 2009 +0200
@@ -0,0 +1,200 @@
+/*
+* 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:  Extracts metadata from a file
+*
+*/
+
+
+#ifndef CMPXMETADATAEXTRACTOR_H
+#define CMPXMETADATAEXTRACTOR_H
+
+class CMPXMedia;
+class CMPXCollectionPath;
+class CMetaDataUtility;
+class CMPXFileInfoUtility;
+class CMPXDrmMediaUtility;
+#include <thumbnailmanager.h>
+#include <thumbnailmanagerobserver.h>
+
+/**
+ *  Extracts metadata from a file.
+ *
+ *  @lib mpxfilehandler.lib
+ */
+class CMPXMetadataExtractor : public CBase,
+                            public MThumbnailManagerObserver
+    {
+    
+public:
+    /*
+    * Two-Phased Constructor.
+    	*@since 3.2.3
+    */
+    IMPORT_C static CMPXMetadataExtractor* NewL( RFs& aFs, 
+                                                 RApaLsSession& aAppArc,
+                                                 RPointerArray<CMPXCollectionType>& aTypes );
+
+    /*
+    * Virtual Destructor.
+    	*@since 3.2.3
+    */
+    virtual ~CMPXMetadataExtractor();
+
+public: // New Functions
+    
+    /*
+    * Create a media object for a file.
+    * @since 3.2.3
+    * @param aFile a fullpath to the file.
+    * @param aNewProperty on return a new media property will be created.
+    * @param aMetadataOnly extract metadata only or not. Default EFalse
+    */
+    IMPORT_C void CreateMediaL( const TDesC& aFile,
+                                CMPXMedia*& aNewProperty,
+                                TBool aMetadataOnly = EFalse );
+
+    /**
+     * Extract album art from a file and add to thumbnail manager.
+     * @since 5.0
+     * @param aMedia MPX Media object to add album art attribute.
+     * @return error id 
+     */
+    IMPORT_C TInt ExtractAlbumArtL( CMPXMedia* aMedia );
+    
+private: // New Functions:
+    
+    /**
+    * Set default media properties.
+    * @since 3.2.3
+    * @param aMediaProp media properties to update
+    */
+    void SetDefaultL( CMPXMedia& aMediaProp );
+    
+    /**
+    * Function to go through the metadata entries.
+    * @since 3.2.3
+    * @param aProp Media Properties to update.
+    * @param aFile File name
+    */
+    void SetMediaPropertiesL( CMPXMedia& aProp, 
+                              const TDesC& aFile );
+    
+    /**
+    * Sets other media properties not found from metadata util.
+    * @since 3.2.3
+    * @param aProp Media Properties to update.
+    * @param aFile file name.
+    * @param aMetadataOnly extract metadata only or not Default EFalse.
+    * @param aFileHandle file handle to the file. 
+    * @param aFileErr file handle error if file could not be opened
+    */
+    void SetExtMediaPropertiesL( CMPXMedia& aProp, 
+                                 const TDesC& aFile,
+                                 TBool aMetadataOnly,
+                                 RFile& aFileHandle,
+                                 TInt aFileErr  );   
+                                
+    /**
+    * Checks to see if a container type is supported.
+    * @since 3.2.3
+    * @param aFile file path.
+    * @param aIndex index to the supported types array.
+    * @return index to the mimetype
+    */ 
+    TInt SupportedContainerTypeL( const TDesC& aFile, TInt aIndex );
+
+    // From MThumbnailManagerObserver 
+    /**
+    * Preview thumbnail generation or loading is complete.
+     * @since S60 v5.0
+     * @param aThumbnail     An object representing the resulting thumbnail.
+     * @param aId            Request ID for the operation
+    */
+    void ThumbnailPreviewReady(
+        MThumbnailData& aThumbnail, TThumbnailRequestId aId );
+    
+    /**
+     * Final thumbnail bitmap generation or loading is complete.
+     * @since S60 v5.0
+     * @param aError         Error code.
+     * @param aThumbnail     An object representing the resulting thumbnail.
+     * @param aId            Request ID for the operation.
+    */
+    void ThumbnailReady(
+        TInt aError, 
+        MThumbnailData& aThumbnail, TThumbnailRequestId aId );
+
+    /**
+    * Stop the wait loop.
+    */
+    void StopWaitLoop();
+
+    /**
+     * Cancel timer. 
+     */
+    void CancelTimeoutTimer();
+    
+    /**
+    * Callback when the timer times out.
+    */
+    static TInt TimeoutTimerCallback(TAny* aPtr);
+
+    /**
+     * Get album art metadata.
+     * @since 5.0
+     * @param aMedia
+     * @return error ID 
+     */
+    TInt GetMediaAlbumArtL( CMPXMedia& aMedia,
+                            const TDesC& aFile );
+    
+    /**
+     * Add album art to media object.
+     * @since 5.0
+     * @param aMedia
+     */
+    void AddMediaAlbumArtL( CMPXMedia& aMedia,
+                            const TDesC& aFile,
+                            TDesC8& aValue);
+    
+private:
+
+    /**
+    * Private Two-Phased constuctor.
+    * @since 3.2.3
+    * @param aFs file path.
+    * @param aAppArc address for the session application information.
+    * @param array of supported types
+    */ 
+    CMPXMetadataExtractor( RFs& aFs, RApaLsSession& aAppArc,
+                           RPointerArray<CMPXCollectionType>& aTypes );
+
+    void ConstructL();
+
+private: // data
+    CMetaDataUtility*    iMetadataUtility;  // extract metadata from file
+    CMPXDrmMediaUtility* iDrmMediaUtility;  // extra drm data from file
+    CMPXFileInfoUtility* iFileInfoUtil;     // extract duration/bitrate etc from file
+    RFs&                 iFs;
+    RApaLsSession&       iAppArc;
+    RPointerArray<CMPXCollectionType>& iSupportedTypes;  // not owned
+    
+    CThumbnailManager*    iTNManager;
+    CActiveSchedulerWait* iTNSyncWait;  // wait loop use to sync thumbnail
+    CPeriodic*            iTimer; // backup timer to stop wait loop
+    TInt                  iOutstandingThumbnailRequest;
+    TInt                  iTNMBlockCount;
+    };
+
+#endif // CMPXMETADATAEXTRACTOR_H