--- 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 <mdenamespacedef.h>
@@ -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 )