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