khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.h
changeset 16 43d09473c595
child 22 128eb6a32b84
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.h	Fri May 14 16:22:35 2010 +0300
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef CMETADATA_UTILITY_ITF_H
+#define CMETADATA_UTILITY_ITF_H
+
+
+#ifdef __cplusplus
+
+#include <e32base.h>
+#include <e32std.h>
+#include <e32hashtab.h>
+#include <OpenMAXAL.h>
+
+#include <Hxmetadatautil.h>
+#include <MetaDataUtility.h>
+#include <MetaDataFieldContainer.h>
+#include <MetaDataField.hrh>
+
+
+#define MAX_EXTENSION_SIZE 10
+#define uint32 unsigned int
+
+class CS60MetadataUtilityItf;
+class CHXMetadataUtilityItf;
+
+NONSHARABLE_CLASS(CMetadataUtilityItf)
+{
+public:
+
+	enum TValueEncodingType
+	{
+		EUnknownEncoding,
+		EAsciiEncoding,
+		EUnicodeEncoding,
+		EBinaryEncoding,	
+	};
+	
+	static CMetadataUtilityItf* New(char* uri);
+
+	CMetadataUtilityItf();
+	virtual ~CMetadataUtilityItf();
+	TInt ParseSource(char* uri);
+	TInt OpenSource(char* uri);	
+	TInt CalculateNumMetadataItems(TUint*);
+	char* GetKey(TInt index);
+	TInt GetValueSize(TInt index);
+	TInt GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType);
+
+	//helper function
+	//extracts left part of input descriptor upto (maxLen-1) and copies content in outPtr
+	//append a null terminator
+	static TInt ExtractUCS2(TDesC& inDes, char* outPtr,TInt maxLen);
+
+private:
+	CS60MetadataUtilityItf* m_pS60Util;
+	CHXMetadataUtilityItf*  m_pHXUtil;
+};
+
+
+NONSHARABLE_CLASS(CS60MetadataUtilityItf)
+{
+public:
+
+	static CS60MetadataUtilityItf* New();
+  	~CS60MetadataUtilityItf();
+
+	TInt CalculateNumMetadataItems(TUint*);
+	
+	char* GetKey(TInt index);
+	TInt  GetValueSize(TInt index);
+	TInt  GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType);
+
+	TInt 	ParseSource(TDesC&);
+
+	char* KeyMapping(TMetaDataFieldId);
+	TInt  ValueEncoding(TMetaDataFieldId);
+
+	static bool IsSupportedExtension(char* extn);
+
+	TInt Reset();
+
+private:
+	
+    CS60MetadataUtilityItf();
+    void ConstructL();
+	
+   	CMetaDataUtility* pMetaDataUtility; //S60MetadataUtility
+   	
+	TUint 		uNumMetadataItems;		
+		
+};
+
+NONSHARABLE_CLASS(CHXMetadataUtilityItf)
+{
+public:
+
+	static CHXMetadataUtilityItf* New();
+  ~CHXMetadataUtilityItf();
+
+	TInt CalculateNumMetadataItems(TUint*);
+	
+	char* GetKey(TInt index);
+	
+	TInt ValueEncoding(HXMetaDataKeys::EHXMetaDataId fldID);
+	TInt  GetValueSize(TInt index);
+	TInt  GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType);
+	
+	TInt 	ParseSource(TDesC&);
+	char* KeyMapping(HXMetaDataKeys::EHXMetaDataId);
+	
+	TInt Reset();
+
+private:
+	CHXMetadataUtilityItf();
+    void ConstructL();
+   	
+  CHXMetaDataUtility *pHXMetaDataUtility;
+  
+  TUint 	  uNumMetadataItems;	  
+};
+
+
+#else
+
+extern void* mmf_metadata_utility_init(char*);
+extern void  mmf_metadata_utility_destroy(void* context);
+extern XAresult mmf_metadata_utility_parse_source(void* , char*);
+extern XAresult  mmf_get_item_count(void* context, XAuint32* itemCount);
+extern XAresult  mmf_get_key_size(void* context, XAuint32 keyIndex, XAuint32* keySize);
+extern XAresult  mmf_get_key(void* context, XAuint32 index,XAuint32 keySize, XAMetadataInfo *pKey);
+extern XAresult  mmf_get_value_size(void* context, XAuint32 index, XAuint32 *pValueSize);
+extern XAresult  mmf_get_value(void* context, XAuint32 index, XAuint32 valueSize, XAMetadataInfo *pValue);
+#endif //__cplusplus
+
+#endif