khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.h
author hgs
Fri, 14 May 2010 18:19:45 -0500
changeset 20 b67dd1fc57c5
parent 19 4a629bc82c5e
child 25 6f7ceef7b1d1
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
hgs
parents:
diff changeset
     1
#ifndef CMETADATA_UTILITY_ITF_H
hgs
parents:
diff changeset
     2
#define CMETADATA_UTILITY_ITF_H
hgs
parents:
diff changeset
     3
hgs
parents:
diff changeset
     4
hgs
parents:
diff changeset
     5
#ifdef __cplusplus
hgs
parents:
diff changeset
     6
hgs
parents:
diff changeset
     7
#include <e32base.h>
hgs
parents:
diff changeset
     8
#include <e32std.h>
hgs
parents:
diff changeset
     9
#include <e32hashtab.h>
hgs
parents:
diff changeset
    10
#include <OpenMAXAL.h>
hgs
parents:
diff changeset
    11
20
hgs
parents: 19
diff changeset
    12
#include <hxmetadatautil.h>
19
hgs
parents:
diff changeset
    13
#include <MetaDataUtility.h>
hgs
parents:
diff changeset
    14
#include <MetaDataFieldContainer.h>
hgs
parents:
diff changeset
    15
#include <MetaDataField.hrh>
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#define MAX_EXTENSION_SIZE 10
hgs
parents:
diff changeset
    19
#define uint32 unsigned int
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
class CS60MetadataUtilityItf;
hgs
parents:
diff changeset
    22
class CHXMetadataUtilityItf;
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
NONSHARABLE_CLASS(CMetadataUtilityItf)
hgs
parents:
diff changeset
    25
{
hgs
parents:
diff changeset
    26
public:
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
	enum TValueEncodingType
hgs
parents:
diff changeset
    29
	{
hgs
parents:
diff changeset
    30
		EUnknownEncoding,
hgs
parents:
diff changeset
    31
		EAsciiEncoding,
hgs
parents:
diff changeset
    32
		EUnicodeEncoding,
hgs
parents:
diff changeset
    33
		EBinaryEncoding,	
hgs
parents:
diff changeset
    34
	};
hgs
parents:
diff changeset
    35
	
hgs
parents:
diff changeset
    36
	static CMetadataUtilityItf* New(char* uri);
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
	CMetadataUtilityItf();
hgs
parents:
diff changeset
    39
	virtual ~CMetadataUtilityItf();
hgs
parents:
diff changeset
    40
	TInt ParseSource(char* uri);
hgs
parents:
diff changeset
    41
	TInt OpenSource(char* uri);	
hgs
parents:
diff changeset
    42
	TInt CalculateNumMetadataItems(TUint*);
hgs
parents:
diff changeset
    43
	char* GetKey(TInt index);
hgs
parents:
diff changeset
    44
	TInt GetValueSize(TInt index);
hgs
parents:
diff changeset
    45
	TInt GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType);
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
	//helper function
hgs
parents:
diff changeset
    48
	//extracts left part of input descriptor upto (maxLen-1) and copies content in outPtr
hgs
parents:
diff changeset
    49
	//append a null terminator
hgs
parents:
diff changeset
    50
	static TInt ExtractUCS2(TDesC& inDes, char* outPtr,TInt maxLen);
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
private:
hgs
parents:
diff changeset
    53
	CS60MetadataUtilityItf* m_pS60Util;
hgs
parents:
diff changeset
    54
	CHXMetadataUtilityItf*  m_pHXUtil;
hgs
parents:
diff changeset
    55
};
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
NONSHARABLE_CLASS(CS60MetadataUtilityItf)
hgs
parents:
diff changeset
    59
{
hgs
parents:
diff changeset
    60
public:
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
	static CS60MetadataUtilityItf* New();
hgs
parents:
diff changeset
    63
  	~CS60MetadataUtilityItf();
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
	TInt CalculateNumMetadataItems(TUint*);
hgs
parents:
diff changeset
    66
	
hgs
parents:
diff changeset
    67
	char* GetKey(TInt index);
hgs
parents:
diff changeset
    68
	TInt  GetValueSize(TInt index);
hgs
parents:
diff changeset
    69
	TInt  GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType);
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
	TInt 	ParseSource(TDesC&);
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
	char* KeyMapping(TMetaDataFieldId);
hgs
parents:
diff changeset
    74
	TInt  ValueEncoding(TMetaDataFieldId);
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
	static bool IsSupportedExtension(char* extn);
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
	TInt Reset();
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
private:
hgs
parents:
diff changeset
    81
	
hgs
parents:
diff changeset
    82
    CS60MetadataUtilityItf();
hgs
parents:
diff changeset
    83
    void ConstructL();
hgs
parents:
diff changeset
    84
	
hgs
parents:
diff changeset
    85
   	CMetaDataUtility* pMetaDataUtility; //S60MetadataUtility
hgs
parents:
diff changeset
    86
   	
hgs
parents:
diff changeset
    87
	TUint 		uNumMetadataItems;		
hgs
parents:
diff changeset
    88
		
hgs
parents:
diff changeset
    89
};
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
NONSHARABLE_CLASS(CHXMetadataUtilityItf)
hgs
parents:
diff changeset
    92
{
hgs
parents:
diff changeset
    93
public:
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
	static CHXMetadataUtilityItf* New();
hgs
parents:
diff changeset
    96
  ~CHXMetadataUtilityItf();
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
	TInt CalculateNumMetadataItems(TUint*);
hgs
parents:
diff changeset
    99
	
hgs
parents:
diff changeset
   100
	char* GetKey(TInt index);
hgs
parents:
diff changeset
   101
	
hgs
parents:
diff changeset
   102
	TInt ValueEncoding(HXMetaDataKeys::EHXMetaDataId fldID);
hgs
parents:
diff changeset
   103
	TInt  GetValueSize(TInt index);
hgs
parents:
diff changeset
   104
	TInt  GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType);
hgs
parents:
diff changeset
   105
	
hgs
parents:
diff changeset
   106
	TInt 	ParseSource(TDesC&);
hgs
parents:
diff changeset
   107
	char* KeyMapping(HXMetaDataKeys::EHXMetaDataId);
hgs
parents:
diff changeset
   108
	
hgs
parents:
diff changeset
   109
	TInt Reset();
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
private:
hgs
parents:
diff changeset
   112
	CHXMetadataUtilityItf();
hgs
parents:
diff changeset
   113
    void ConstructL();
hgs
parents:
diff changeset
   114
   	
hgs
parents:
diff changeset
   115
  CHXMetaDataUtility *pHXMetaDataUtility;
hgs
parents:
diff changeset
   116
  
hgs
parents:
diff changeset
   117
  TUint 	  uNumMetadataItems;	  
hgs
parents:
diff changeset
   118
};
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
#else
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
extern void* mmf_metadata_utility_init(char*);
hgs
parents:
diff changeset
   124
extern void  mmf_metadata_utility_destroy(void* context);
hgs
parents:
diff changeset
   125
extern XAresult mmf_metadata_utility_parse_source(void* , char*);
hgs
parents:
diff changeset
   126
extern XAresult  mmf_get_item_count(void* context, XAuint32* itemCount);
hgs
parents:
diff changeset
   127
extern XAresult  mmf_get_key_size(void* context, XAuint32 keyIndex, XAuint32* keySize);
hgs
parents:
diff changeset
   128
extern XAresult  mmf_get_key(void* context, XAuint32 index,XAuint32 keySize, XAMetadataInfo *pKey);
hgs
parents:
diff changeset
   129
extern XAresult  mmf_get_value_size(void* context, XAuint32 index, XAuint32 *pValueSize);
hgs
parents:
diff changeset
   130
extern XAresult  mmf_get_value(void* context, XAuint32 index, XAuint32 valueSize, XAMetadataInfo *pValue);
hgs
parents:
diff changeset
   131
#endif //__cplusplus
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
#endif