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 |
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 } |