diff -r b73a2e62868f -r 6752808b2036 harvester/harvesterplugins/VideoPlugin/src/harvestervideoplugin.cpp --- a/harvester/harvesterplugins/VideoPlugin/src/harvestervideoplugin.cpp Tue Feb 02 00:24:33 2010 +0200 +++ b/harvester/harvesterplugins/VideoPlugin/src/harvestervideoplugin.cpp Fri Feb 19 23:14:48 2010 +0200 @@ -25,6 +25,7 @@ #include "harvestervideoplugin.h" #include "harvesterlog.h" #include "harvesterblacklist.h" +#include "harvestercommon.h" #include "mdeobjectwrapper.h" #include @@ -47,6 +48,8 @@ _LIT( KMimeTypeAvi, "video/avi"); _LIT( KMimeTypeVideoMatroska, "video/x-matroska"); _LIT( KMimeTypeAudioMatroska, "audio/x-matroska"); +_LIT( KMimeTypeWmv, "video/x-ms-wmv"); +_LIT( KMimeTypeDivx, "video/x-hx-divx"); _LIT( KExtensionMp4, "mp4" ); _LIT( KExtensionMpg4, "mpg4" ); @@ -62,6 +65,8 @@ _LIT( KExtensionAvi, "avi" ); _LIT( KExtensionMkv, "mkv" ); _LIT( KExtensionRa, "ra" ); +_LIT( KExtensionWmv, "wmv" ); +_LIT( KExtensionDivx, "divx" ); _LIT(KVideo, "Video"); _LIT(KAudio, "Audio"); @@ -91,6 +96,7 @@ iSizePropertyDef = &objectDef.GetPropertyDefL( Object::KSizeProperty ); iTimeOffsetPropertyDef = &objectDef.GetPropertyDefL( Object::KTimeOffsetProperty ); iItemTypePropertyDef = &objectDef.GetPropertyDefL( Object::KItemTypeProperty ); + iTitlePropertyDef = &objectDef.GetPropertyDefL( Object::KTitleProperty ); CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MediaObject::KMediaObject ); iReleaseDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KReleaseDateProperty ); @@ -239,12 +245,28 @@ KMimeTypeAvi(), KMimeTypeAvi() ) ), cmp ) ); + // Divx + User::LeaveIfError( iMimeTypeMappings.InsertInOrder( THarvestingHandling( + KExtensionDivx(), KMimeTypeDivx(), + TVideoMetadataHandling( TVideoMetadataHandling::EHexilMetadataHandling, KVideo(), + KMimeTypeDivx(), KMimeTypeDivx() ) ), + cmp ) ); + // Matroska User::LeaveIfError( iMimeTypeMappings.InsertInOrder( THarvestingHandling( KExtensionMkv(), KNullDesC(), TVideoMetadataHandling( TVideoMetadataHandling::EHexilMetadataHandling, KNullDesC(), KMimeTypeVideoMatroska(), KMimeTypeAudioMatroska() ) ), cmp ) ); + + // Wmv + User::LeaveIfError( iMimeTypeMappings.InsertInOrder( THarvestingHandling( + KExtensionWmv(), KMimeTypeWmv(), + TVideoMetadataHandling( TVideoMetadataHandling::EHexilMetadataHandling, KVideo(), + KMimeTypeWmv(), KMimeTypeWmv() ) ), + cmp ) ); + + SetPriority( KHarvesterPriorityHarvestingPlugin + 1 ); } @@ -342,6 +364,25 @@ } // --------------------------------------------------------------------------- +// CHarvesterVideoPlugin::GetMimeType (from CHarvesterPlugin) +// --------------------------------------------------------------------------- +// +void CHarvesterVideoPlugin::GetMimeType( const TDesC& aUri, TDes& aMimeType ) + { + aMimeType.Zero(); + + const THarvestingHandling* mapping = FindHandler( aUri ); + + // no matching extension found + if( !mapping ) + { + return; + } + + aMimeType = mapping->iMimeType; + } + +// --------------------------------------------------------------------------- // GatherDataL // --------------------------------------------------------------------------- // @@ -461,6 +502,11 @@ helixMetadata->GetMetaDataAt( i, metaid, buf ); switch (metaid) { + case HXMetaDataKeys::EHXTitle: + { + aVHD.iTitle = buf->Alloc(); + break; + } case HXMetaDataKeys::EHXVideoBitRate: { WRITELOG( "CHarvesterVideoPlugin - found videobitrate" ); @@ -759,6 +805,19 @@ CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iSizePropertyDef, &aVHD.iFileSize, aIsAdd ); } + // Item Type + if( aVHD.iMimeBuf ) + { + TBool isAdd( EFalse ); + CMdEProperty* prop = NULL; + TInt index = mdeObject.Property( *iPropDefs->iItemTypePropertyDef, prop ); + if( index < 0 ) + { + isAdd = ETrue; + } + CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iItemTypePropertyDef, aVHD.iMimeBuf, isAdd ); + } + // Release date CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iReleaseDatePropertyDef, &localModifiedDate, aIsAdd ); @@ -769,12 +828,6 @@ TInt16 timeOffsetMinutes = timeOffsetSeconds.Int() / 60; CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iTimeOffsetPropertyDef, &timeOffsetMinutes, aIsAdd ); - // Item Type - if( aVHD.iMimeBuf ) - { - CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iItemTypePropertyDef, aVHD.iMimeBuf, aIsAdd ); - } - // Duration if( aVHD.iDuration != 0.0f ) { @@ -862,6 +915,12 @@ { CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iAudioFourCCDef, &aVHD.iCodec, aIsAdd ); } + + // Title + if( aVHD.iTitle ) + { + CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iTitlePropertyDef, aVHD.iTitle, EFalse ); + } } void CHarvesterVideoPlugin::GetMp4Type( RFile64& aFile, TDes& aType )