mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp
branchRCL_3
changeset 17 780c925249c1
parent 9 bee149131e4b
child 19 51035f0751c2
equal deleted inserted replaced
15:d240f0a77280 17:780c925249c1
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:  Extracts metadata from a file
    14 * Description:  Extracts metadata from a file
    15 *  Version     : %version: da1mmcf#38.1.4.2.6.1.5 % << Don't touch! Updated by Synergy at check-out.
    15 *  Version     : %version: da1mmcf#38.1.4.2.6.1.7 % << Don't touch! Updated by Synergy at check-out.
    16 *
    16 *
    17 */
    17 */
    18 
    18 
    19 
    19 
    20 #include <e32base.h>
    20 #include <e32base.h>
    49 _LIT( KImageFileType, "image/jpeg" );
    49 _LIT( KImageFileType, "image/jpeg" );
    50 const TInt KMPXTimeoutTimer = 3000000; // 3 seconds
    50 const TInt KMPXTimeoutTimer = 3000000; // 3 seconds
    51 const TInt KMPXMaxThumbnailRequest = 5; 
    51 const TInt KMPXMaxThumbnailRequest = 5; 
    52 #endif //RD_MPX_TNM_INTEGRATION
    52 #endif //RD_MPX_TNM_INTEGRATION
    53 
    53 
       
    54 #ifdef ABSTRACTAUDIOALBUM_INCLUDED
       
    55 _LIT( KNonEmbeddedArtExt, ".alb" );
       
    56 #endif
    54 //Helper functions
    57 //Helper functions
    55 static void FindAndReplaceForbiddenChars(TDes& aString, TInt aLen)
    58 static void FindAndReplaceForbiddenChars(TDes& aString, TInt aLen)
    56     {
    59     {
    57     MPX_ASSERT(aLen == aString.Length());
    60     MPX_ASSERT(aLen == aString.Length());
    58 
    61 
   732         }
   735         }
   733     
   736     
   734     // Get full file name.
   737     // Get full file name.
   735     const TDesC& path = aMedia->ValueText(KMPXMediaGeneralUri);
   738     const TDesC& path = aMedia->ValueText(KMPXMediaGeneralUri);
   736     MPX_DEBUG2("CMPXMetadataExtractor::ExtractAlbumArtL Filename:%S ", &path );
   739     MPX_DEBUG2("CMPXMetadataExtractor::ExtractAlbumArtL Filename:%S ", &path );
   737     
   740 #ifdef ABSTRACTAUDIOALBUM_INCLUDED
       
   741     TParsePtrC parse( path );
       
   742     TPtrC ext( parse.Ext() );
       
   743     if (ext.CompareF(KNonEmbeddedArtExt)== 0)
       
   744         {
       
   745 		#ifdef RD_MPX_TNM_INTEGRATION
       
   746 
       
   747         //check if can send TN request, If thumbnail creation is ongoing, wait til it is done
       
   748         CheckBeforeSendRequest();
       
   749 
       
   750         CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(
       
   751            path, KImageFileType  );
       
   752           
       
   753        
       
   754 
       
   755         iTNManager->CreateThumbnails( *source );
       
   756         
       
   757         iOutstandingThumbnailRequest++;
       
   758         CleanupStack::PopAndDestroy( source );
       
   759 
       
   760         #endif
       
   761         }
       
   762     else
       
   763         {
       
   764 #endif
   738     // create wanted fields array
   765     // create wanted fields array
   739     RArray<TMetaDataFieldId> wantedFields;
   766     RArray<TMetaDataFieldId> wantedFields;
   740     CleanupClosePushL( wantedFields );
   767     CleanupClosePushL( wantedFields );
   741     wantedFields.Append(EMetaDataJpeg);
   768     wantedFields.Append(EMetaDataJpeg);
   742     
   769     
   761         TRAP( err, GetMediaAlbumArtL( *aMedia, path ));
   788         TRAP( err, GetMediaAlbumArtL( *aMedia, path ));
   762         }
   789         }
   763 
   790 
   764     // Reset the utility
   791     // Reset the utility
   765     iMetadataUtility->ResetL();
   792     iMetadataUtility->ResetL();
   766     
   793 #ifdef ABSTRACTAUDIOALBUM_INCLUDED
       
   794       }
       
   795 #endif
   767     return err;
   796     return err;
   768     }
   797     }
   769 
   798 
   770 // ----------------------------------------------------------------------------
   799 // ----------------------------------------------------------------------------
   771 // Set album art.
   800 // Set album art.
   815                                                TDesC8& aValue )
   844                                                TDesC8& aValue )
   816     {
   845     {
   817     MPX_FUNC("CMPXMetadataExtractor::AddMediaAlbumArtL()");
   846     MPX_FUNC("CMPXMetadataExtractor::AddMediaAlbumArtL()");
   818 #ifdef RD_MPX_TNM_INTEGRATION
   847 #ifdef RD_MPX_TNM_INTEGRATION
   819     
   848     
   820     // If thumbnail creation is ongoing, wait til it is done
   849     //check if can send TN request, If thumbnail creation is ongoing, wait til it is done
   821     if ( iOutstandingThumbnailRequest > KMPXMaxThumbnailRequest )
   850     CheckBeforeSendRequest();
   822         {
   851 
   823         MPX_DEBUG1("CMPXMetadataExtractor::AddMediaAlbumArtL(): Thumbnail creation ongoing!");
       
   824         iTNMBlockCount++;
       
   825         // Cancel timer.
       
   826         CancelTimeoutTimer();
       
   827         // Start timer in case there is no callback from ThumbNail Manager. 
       
   828         iTimer->Start(
       
   829             KMPXTimeoutTimer,
       
   830             KMPXTimeoutTimer,
       
   831             TCallBack(TimeoutTimerCallback, this ));
       
   832         
       
   833         // Start wait loop until we get a callback from ThumbNail Manager.
       
   834         if ( !iTNSyncWait->IsStarted() )
       
   835             {
       
   836             iTNSyncWait->Start();
       
   837             }
       
   838         }
       
   839     
       
   840     aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, aFile );
   852     aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, aFile );
   841     
   853     
   842     TBuf<256> mimeType;
   854     TBuf<256> mimeType;
   843     mimeType.Copy( KImageFileType );
   855     mimeType.Copy( KImageFileType );
   844     CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(
   856     CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(
   848     aMedia.SetTextValueL( KMPXMediaMusicOriginalAlbumArtFileName, aFile );
   860     aMedia.SetTextValueL( KMPXMediaMusicOriginalAlbumArtFileName, aFile );
   849     iOutstandingThumbnailRequest++;
   861     iOutstandingThumbnailRequest++;
   850     
   862     
   851 #endif // RD_MPX_TNM_INTEGRATION          
   863 #endif // RD_MPX_TNM_INTEGRATION          
   852     }
   864     }
       
   865 
       
   866 void CMPXMetadataExtractor::CheckBeforeSendRequest()
       
   867      {
       
   868      MPX_FUNC("CMPXMetadataExtractor::CheckBeforeSendRequest()");
       
   869 #ifdef RD_MPX_TNM_INTEGRATION
       
   870 	// If thumbnail creation is ongoing, wait til it is done
       
   871     if ( iOutstandingThumbnailRequest > KMPXMaxThumbnailRequest )
       
   872         {
       
   873         MPX_DEBUG1("CMPXMetadataExtractor::CheckBeforeSendRequest(): Thumbnail creation ongoing!");
       
   874         iTNMBlockCount++;
       
   875         // Cancel timer.
       
   876         CancelTimeoutTimer();
       
   877         // Start timer in case there is no callback from ThumbNail Manager.
       
   878         iTimer->Start(
       
   879             KMPXTimeoutTimer,
       
   880             KMPXTimeoutTimer,
       
   881             TCallBack(TimeoutTimerCallback, this ));
       
   882 
       
   883         // Start wait loop until we get a callback from ThumbNail Manager.
       
   884         if ( !iTNSyncWait->IsStarted() )
       
   885             {
       
   886             iTNSyncWait->Start();
       
   887             }
       
   888         }
       
   889 #endif // RD_MPX_TNM_INTEGRATION
       
   890      }