List Info

Thread: CR: metadata engine




CR: metadata engine
user name
2006-09-18 21:03:46

Note: diffs and news files are sent as several parts due to email size limitation.

Metadata engine based on dtdriver

"Nokia submits this code under the terms of a commercial contribution agreement
with RealNetworks, and I am authorized to contribute this code under said agreement."

Modified by: ashish.as.guptanokia.com

Reviewed by:

Date: 09-13-2006.

Error ID: Req Id: 102-4619

Project: Helix plugin for Symbian

Synopsis: Metadata engine based on dtdriver

This CR includes following components/modules

CHXMetadatautility: A simple utility to open a datasource (file name, descriptor, RFile). API is defined in
hxmetadatautil.h. It provides the simple API to read the metadata. It is delivered as part of hxmetadatautil.lib.
CHXMetaDatautility is the only component that is exported from the Helix.

CHXMetaDataEngBase:: Base class for metadata engine. It interfaces with DTDRiver and implements IHXSourceHandler interface.

CHXMetaDataEng:: Derived from CHXMetaDataEngBase, generic (non-symbian specific) metadata engine.

CHXSymbianMetaDataEng:: Derived from CHXMetaDataEngBase, symbian specific metadata engine.

Changes to DTDriver:
----------------------------

1. Use of recognizer for the determining the mime type. ; Following new states are added.
    State_RecognizeFormat,
    State_RecognizeFormatDone,
    State_RecognizeFormatPending,

2. non const data removed from the dll.

3. All the calls to logging functions (e.g. ReportError) are replaced with the corresponding newly added macros (e.g. DT_REPORTERROR). A new config is added

HELIX_CONFIG_DTDR_DISABLE_LOGGING. This compiles out all the logging. Saves about 5KB image size.

4. An option FILERECOGNITION_OPTION_NAME is added. This triggers the call to recognition.

5. Minicntx allows prefs to be overridden.

6. Minicntx QIs for IHXRequestContext. If successful, it QIs for requester object using IHXRequestContext::GetRequester. This requester is passed to

CHXRequest object in SetRequester call.

7. Other changes to compile minicntx, dtdriver on symbian.

Changes to common/fileio.

1. A datasource factory has been added to create the datasources (implements IHXMMFDataSource). CHXDataSourceMMFClip, CHXDataSourceCContent, CHXDataSourceDescriptor are the datasources defined. CHXDataSource implements the base class functionality.

2. CHXDataSourceCContent uses CAF for supporting the DRM content. CHXDataSourceDescriptor provides the support to read the media data from descriptors.

3. CHXMediaSource, a struct, passed to CHXDataSourceFactory to create the desired data source object. This enables the metadata APIs to be kept platform independent.


Additions to IHXMMFDataSource API.
------------------------------------------------------

Following new methods are added to IHXMMFDataSource API to support DCF headers for protected contents.

STDMETHOD(GetStringAttribute)(THIS_ UINT32 ulAttibute,
           ;           ;    CHXString &sValue) PURE;
STDMETHOD(GetAttribute)(THIS_ INT32 ulAttribute,
           ;           ;     INT32 &ulValue) PURE;

STDMETHOD(GetSize)  (THIS_ UINT32 &ulSize) PURE;

Changes to Symbian Recognizer:
----------------------------------------------

Symbian recognizer has been changed so that it doesn't call the system recognizer when it is used as part of the metadata engine that could result

in infinite loop when metadata engine itself is used from the system recognizer.

Metadata Engine.
------------------------

Metadata engine depends on the dtdriver for reading the metadata. A symbian specific utility is provided to read the metadata from the metadata engine.

Metadata engine receives the file header and stream headers from FFDriver and stores them in the m_MetadataList. CHXMetaDataEntry represents one single

metadata entry. Entries can be read by the caller by Calling CHXMetaDataEngBase::GetMetaDataAt.

Symbian metadata engine performs setup that includes global manager, symbian dll map, MiniCCF, Prefs, Global Access Paths.


Testing:

Tests were performed on ARMV5 and CW for RFile, filename and descriptor based metadata reading. Real and 3GPP contents were used.

DRM protected files have also been tested. TestRMPlayer has been modified to include a new option for testing the metadata.

Memory leak testing has been done for MediaPlayer and CW has been used to make sure that all the objects are destroyed.


Files Modified:

datatype/tools/dtdriver/common/reporterror.cpp
datatype/tools/dtdriver/common/pub/reporterror.h
datatype/tools/dtdriver/engine/Umakefil
datatype/tools/dtdriver/engine/csrchdlrstackfact.cpp
datatype/tools/dtdriver/engine/ffdriver.cpp
datatype/tools/dtdriver/engine/pub/ffdriver.h
datatype/tools/minicntx/minicntx.cpp
datatype/tools/minicntx/pub/minicntx.h

common/fileio/symbian.pcf
common/fileio/platform/symbian/hxdatasourcemmfclip.cpp
common/fileio/pub/platform/symbian/hxdatasourcemmfclip.h

common/system/symbian.pcf
common/system/pub/recognizer.h
common/system/recognizer.cpp
common/system/platform/symbian/symbianrecognizer.cpp

build/umakepf/helix-client-s60-32-common.pfi

client/build/BIF/hxclient_2_1_0_cayennes.bif
common/build/BIF/helix.bif

clientapps/symbianMmf/videocontroller/installMmf.pcf

Files Added:

common/fileio/pub/hxmediasource.h.

common/fileio/pub/platform/symbian/hxdatasource_factory.h
common/fileio/pub/platform/symbian/hxdatasource.h
common/fileio/pub/platform/symbian/hxdatasource_descriptor.h
common/fileio/pub/platform/symbian/hxdatasource_ccontent.h

common/fileio/platform/symbian/hxdatasource_factory.cpp
common/fileio/platform/symbian/hxdatasource.cpp
common/fileio/platform/symbian/hxdatasource_descriptor.cpp
common/fileio/platform/symbian/hxdatasource_ccontent.cpp

datatype/tools/metadataeng/engine/
datatype/tools/metadataeng/Umakefil
datatype/tools/metadataeng/engine/symbian.pcf
datatype/tools/metadataeng/engine/dlliids.cpp
datatype/tools/metadataeng/engine/hxdll.cpp
datatype/tools/metadataeng/engine/hxmetadataeng.uid.cpp
datatype/tools/metadataeng/engine/metadataeng.cpp
datatype/tools/metadataeng/engine/metadataengbase.cpp
datatype/tools/metadataeng/engine/hxdll.h
datatype/tools/metadataeng/engine/metadataeng.h
datatype/tools/metadataeng/engine/pub/metadataengbase.h
datatype/tools/metadataeng/engine/pub/hxmetadatalog.h 
datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h
datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
datatype/tools/metadataeng/engine/platform/symbian/hxmddefines.h

datatype/tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt   ;   Dlls to be loaded by plugin manager.
datatype/tools/metadataeng/common/pub/hxmetadata.h          ;           ;     CHXMetaDataEntry.
datatype/tools/metadataeng/common/pub/hxmetadatakeys.h  ;           ;         enums for metadata.
datatype/tools/metadataeng/utility/Umakefil
datatype/tools/metadataeng/utility/symbian.pcf
datatype/tools/metadataeng/utility/platform/symbian/hxmetadatautil.cpp
datatype/tools/metadataeng/utility/platform/symbian/hxmetadatautil.h


build/umakepf/helix-dtdr-local-reader.pfi
build/umakepf/helix-s60-metadataengine.pfi
build/umakepf/helix-s60-metadataengine.pf

Files Exported:

datatype/tools/metadataeng/common/pub/hxmetadatakeys.h
datatype/tools/metadataeng/utility/[target]/hxmetadatautil.lib
datatype/tools/metadataeng/utility/platform/symbian/hxmetadatautil.h


Image Size and Heap Use impact: Minor. No heap impact. 109KB metadata engine dll.

Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm, helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: armv5, winscw

Branch: head, hxclient_2_1_0_cayennes

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )