mmserv/metadatautility/3GPExtParserLib/src/3GPExtParser.h
author hgs
Tue, 21 Sep 2010 11:38:43 -0500
changeset 53 eabc8c503852
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* ==============================================================================
hgs
parents:
diff changeset
     3
*  Name        : 3GPExtParser.h
hgs
parents:
diff changeset
     4
*  Part of     : 3GPExtParser
hgs
parents:
diff changeset
     5
*  Interface   : ?Interface_category, ?Interface_name
hgs
parents:
diff changeset
     6
*  Description : This class implements an 3GPExt metadata parser 
hgs
parents:
diff changeset
     7
*  Version     : 6
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
    10
* All rights reserved.
hgs
parents:
diff changeset
    11
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
    12
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
    13
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
    14
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
* Initial Contributors:
hgs
parents:
diff changeset
    17
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    18
* ==============================================================================
hgs
parents:
diff changeset
    19
*/
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#ifndef C3GPEXTPARSER_H
hgs
parents:
diff changeset
    23
#define C3GPEXTPARSER_H
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// INCLUDES
hgs
parents:
diff changeset
    26
#include <e32base.h>
hgs
parents:
diff changeset
    27
#include <mp4lib.h>
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
#include "MetaDataFieldContainer.h"
hgs
parents:
diff changeset
    30
#include "MetaDataField.hrh"
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// CONSTANTS
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
_LIT8 (K3GPExtMetaTitleFormat, "%cnam"); 
hgs
parents:
diff changeset
    35
_LIT8 (K3GPExtMetaArtistFormat, "%cART"); 
hgs
parents:
diff changeset
    36
_LIT8 (K3GPExtMetaComposerFormat, "%cwrt"); 
hgs
parents:
diff changeset
    37
_LIT8 (K3GPExtMetaAlbumFormat, "%calb"); 
hgs
parents:
diff changeset
    38
_LIT8 (K3GPExtMetaCommentFormat, "%ccmt"); 
hgs
parents:
diff changeset
    39
_LIT8 (K3GPExtMetaCustomGenreFormat, "%cgen");  // mapped to rating
hgs
parents:
diff changeset
    40
_LIT8 (K3GPExtMetaYearFormat, "%cday"); 
hgs
parents:
diff changeset
    41
_LIT8 (K3GPExtMetaGenre, "gnre");
hgs
parents:
diff changeset
    42
_LIT8 (K3GPExtMetaTrack, "trkn"); 
hgs
parents:
diff changeset
    43
_LIT8 (K3GPExtMetaJpeg, "covr"); 
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
// CLASS DECLARATION
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
/**
hgs
parents:
diff changeset
    49
*  This class implements an 3GPExt metadata parser.
hgs
parents:
diff changeset
    50
*
hgs
parents:
diff changeset
    51
*  @lib 3GPExtParser.lib
hgs
parents:
diff changeset
    52
*  @since 3.0
hgs
parents:
diff changeset
    53
*/
hgs
parents:
diff changeset
    54
class C3GPExtParser : public CBase
hgs
parents:
diff changeset
    55
	{
hgs
parents:
diff changeset
    56
    public:  // Constructors and destructor
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
        /**
hgs
parents:
diff changeset
    59
        * Two-phased constructor.
hgs
parents:
diff changeset
    60
        * @return A pointer to a new instance of parser; NULL if parser is not created.
hgs
parents:
diff changeset
    61
        */
hgs
parents:
diff changeset
    62
        IMPORT_C static C3GPExtParser* NewL(MP4Handle& aMP4Handle);
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
        /**
hgs
parents:
diff changeset
    65
        * Destructor.
hgs
parents:
diff changeset
    66
        */
hgs
parents:
diff changeset
    67
        IMPORT_C virtual ~C3GPExtParser();
hgs
parents:
diff changeset
    68
        
hgs
parents:
diff changeset
    69
        /**
hgs
parents:
diff changeset
    70
		* Extract meta data boxes from ilst
hgs
parents:
diff changeset
    71
		* @since 3.0
hgs
parents:
diff changeset
    72
		* @param aBox wanted metadata box
hgs
parents:
diff changeset
    73
        * @param aFieldId metadata field in 3GPExtParser
hgs
parents:
diff changeset
    74
		* @return void
hgs
parents:
diff changeset
    75
		*/
hgs
parents:
diff changeset
    76
		IMPORT_C void GetilstBoxesL(const TDesC8& aBox, TMetaDataFieldId aFieldId, HBufC** aBuf);
hgs
parents:
diff changeset
    77
		/**
hgs
parents:
diff changeset
    78
		* Extract meta data boxes from ilst
hgs
parents:
diff changeset
    79
		* 8-bit version to support international languages in string metadata
hgs
parents:
diff changeset
    80
		* @since 3.1
hgs
parents:
diff changeset
    81
		* @param aBox wanted metadata box
hgs
parents:
diff changeset
    82
        * @param aFieldId metadata field in 3GPExtParser
hgs
parents:
diff changeset
    83
		* @return void
hgs
parents:
diff changeset
    84
		*/
hgs
parents:
diff changeset
    85
		IMPORT_C void GetilstBoxesL(const TDesC8& aBox, TMetaDataFieldId aFieldId, HBufC8** aBuf);
hgs
parents:
diff changeset
    86
				
hgs
parents:
diff changeset
    87
		/** 
hgs
parents:
diff changeset
    88
		* Checks if file has 3GPExt metadata
hgs
parents:
diff changeset
    89
		*/ 
hgs
parents:
diff changeset
    90
		IMPORT_C TBool Is3GPExtMetadataL();
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
 	private:
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
        /**
hgs
parents:
diff changeset
    95
        * C++ default constructor.
hgs
parents:
diff changeset
    96
        */
hgs
parents:
diff changeset
    97
		C3GPExtParser(MP4Handle& aMP4Handle);
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
        /**
hgs
parents:
diff changeset
   100
        * By default Symbian 2nd phase constructor is private.
hgs
parents:
diff changeset
   101
        */
hgs
parents:
diff changeset
   102
		void ConstructL();
hgs
parents:
diff changeset
   103
		
hgs
parents:
diff changeset
   104
		/**
hgs
parents:
diff changeset
   105
        * Maps ID3v1 genre integer to string
hgs
parents:
diff changeset
   106
        * @param aNum genre integer code
hgs
parents:
diff changeset
   107
        * @param aGenrePtr string genre value returned
hgs
parents:
diff changeset
   108
        * @since 3.0
hgs
parents:
diff changeset
   109
        * @return void
hgs
parents:
diff changeset
   110
        */
hgs
parents:
diff changeset
   111
		void MapID3GenreToString(TInt aNum, TDes& aGenrePtr);
hgs
parents:
diff changeset
   112
		
hgs
parents:
diff changeset
   113
		/**
hgs
parents:
diff changeset
   114
        * Translates error code from MP4 library to one of System Errors.
hgs
parents:
diff changeset
   115
        * @since 3.0
hgs
parents:
diff changeset
   116
        * @param aError error code from MP4 library
hgs
parents:
diff changeset
   117
        * @return System error
hgs
parents:
diff changeset
   118
        */
hgs
parents:
diff changeset
   119
		TInt TranslateMP4Err( MP4Err aError );
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
		/**
hgs
parents:
diff changeset
   122
        * Parses iList Boxes
hgs
parents:
diff changeset
   123
        * @since 3.0
hgs
parents:
diff changeset
   124
        * @param none
hgs
parents:
diff changeset
   125
        * @return void 
hgs
parents:
diff changeset
   126
        */
hgs
parents:
diff changeset
   127
		void ParseIlstBoxesL();
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
	private:
hgs
parents:
diff changeset
   130
	
hgs
parents:
diff changeset
   131
		// MP4 Handle
hgs
parents:
diff changeset
   132
		MP4Handle& iMP4Handle;
hgs
parents:
diff changeset
   133
		// ilst box
hgs
parents:
diff changeset
   134
		TPtrC8 ilst;
hgs
parents:
diff changeset
   135
		// 3GPExt metadata exists
hgs
parents:
diff changeset
   136
		TBool iExists;
hgs
parents:
diff changeset
   137
		// local chunk
hgs
parents:
diff changeset
   138
		RChunk iChunk;
hgs
parents:
diff changeset
   139
		// chuck status
hgs
parents:
diff changeset
   140
		TInt iChunkStatus;
hgs
parents:
diff changeset
   141
 			
hgs
parents:
diff changeset
   142
		
hgs
parents:
diff changeset
   143
		TUint32 iTitleOffset;
hgs
parents:
diff changeset
   144
		TUint32 iTitleSize;
hgs
parents:
diff changeset
   145
 		TUint32 iArtistOffset;	
hgs
parents:
diff changeset
   146
 		TUint32 iArtistSize;
hgs
parents:
diff changeset
   147
 		TUint32 iComposerOffset;
hgs
parents:
diff changeset
   148
 		TUint32 iComposerSize;
hgs
parents:
diff changeset
   149
 		TUint32 iAlbumOffset;
hgs
parents:
diff changeset
   150
 		TUint32 iAlbumSize;
hgs
parents:
diff changeset
   151
 		TUint32 iCommentOffset;
hgs
parents:
diff changeset
   152
 		TUint32 iCommentSize;
hgs
parents:
diff changeset
   153
 		TUint32 iCustomGenreOffset;
hgs
parents:
diff changeset
   154
 		TUint32 iCustomGenreSize;
hgs
parents:
diff changeset
   155
 		TUint32 iYearOffset;
hgs
parents:
diff changeset
   156
 		TUint32 iYearSize;
hgs
parents:
diff changeset
   157
 		TUint32 iGenreOffset;
hgs
parents:
diff changeset
   158
 		TUint32 iGenreSize;
hgs
parents:
diff changeset
   159
 		TUint32 iTrackNumberOffset;
hgs
parents:
diff changeset
   160
 		TUint32 iTrackNumberSize;
hgs
parents:
diff changeset
   161
 		TUint32 iCoverOffset;
hgs
parents:
diff changeset
   162
 		TUint32 iCoverSize;
hgs
parents:
diff changeset
   163
 		
hgs
parents:
diff changeset
   164
 	public:
hgs
parents:
diff changeset
   165
 				// constants
hgs
parents:
diff changeset
   166
		TBuf8<4> K3GPExtMetaTitle;
hgs
parents:
diff changeset
   167
		TBuf8<4> K3GPExtMetaArtist;
hgs
parents:
diff changeset
   168
		TBuf8<4> K3GPExtMetaComposer;
hgs
parents:
diff changeset
   169
		TBuf8<4> K3GPExtMetaAlbum;
hgs
parents:
diff changeset
   170
		TBuf8<4> K3GPExtMetaComment;
hgs
parents:
diff changeset
   171
		TBuf8<4> K3GPExtMetaCustomGenre;
hgs
parents:
diff changeset
   172
		TBuf8<4> K3GPExtMetaYear;
hgs
parents:
diff changeset
   173
    };
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
#endif      // C3GPEXTPARSER_H
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
// End of File