--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/metadatautility/Src/3GPExtParser.h Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2004 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: This class implements an 3GPExt metadata parser
+*
+*/
+
+
+
+#ifndef C3GPEXTPARSER_H
+#define C3GPEXTPARSER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <mp4lib.h>
+
+#include "MetaDataFieldContainer.h"
+#include "MetaDataField.hrh"
+
+// CONSTANTS
+
+_LIT8 (K3GPExtMetaTitleFormat, "%cnam");
+_LIT8 (K3GPExtMetaArtistFormat, "%cART");
+_LIT8 (K3GPExtMetaComposerFormat, "%cwrt");
+_LIT8 (K3GPExtMetaAlbumFormat, "%calb");
+_LIT8 (K3GPExtMetaCommentFormat, "%ccmt");
+_LIT8 (K3GPExtMetaCustomGenreFormat, "%cgen"); // mapped to rating
+_LIT8 (K3GPExtMetaYearFormat, "%cday");
+_LIT8 (K3GPExtMetaGenre, "gnre");
+_LIT8 (K3GPExtMetaTrack, "trkn");
+_LIT8 (K3GPExtMetaJpeg, "covr");
+
+
+// CLASS DECLARATION
+
+/**
+* This class implements an 3GPExt metadata parser.
+*
+* @lib 3GPExtParser.lib
+* @since 3.0
+*/
+class C3GPExtParser : public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @return A pointer to a new instance of parser; NULL if parser is not created.
+ */
+ IMPORT_C static C3GPExtParser* NewL(MP4Handle& aMP4Handle);
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~C3GPExtParser();
+
+ /**
+ * Extract meta data boxes from ilst
+ * @since 3.0
+ * @param aBox wanted metadata box
+ * @param aFieldId metadata field in 3GPExtParser
+ * @return void
+ */
+ IMPORT_C void GetilstBoxesL(const TDesC8& aBox, TMetaDataFieldId aFieldId, HBufC** aBuf);
+ /**
+ * Extract meta data boxes from ilst
+ * 8-bit version to support international languages in string metadata
+ * @since 3.1
+ * @param aBox wanted metadata box
+ * @param aFieldId metadata field in 3GPExtParser
+ * @return void
+ */
+ IMPORT_C void GetilstBoxesL(const TDesC8& aBox, TMetaDataFieldId aFieldId, HBufC8** aBuf);
+
+ /**
+ * Checks if file has 3GPExt metadata
+ */
+ IMPORT_C TBool Is3GPExtMetadataL();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ C3GPExtParser(MP4Handle& aMP4Handle);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Maps ID3v1 genre integer to string
+ * @param aNum genre integer code
+ * @param aGenrePtr string genre value returned
+ * @since 3.0
+ * @return void
+ */
+ void MapID3GenreToString(TInt aNum, TDes& aGenrePtr);
+
+ /**
+ * Translates error code from MP4 library to one of System Errors.
+ * @since 3.0
+ * @param aError error code from MP4 library
+ * @return System error
+ */
+ TInt TranslateMP4Err( MP4Err aError );
+
+ /**
+ * Parses iList Boxes
+ * @since 3.0
+ * @param none
+ * @return void
+ */
+ void ParseIlstBoxesL();
+
+ private:
+
+ // MP4 Handle
+ MP4Handle& iMP4Handle;
+ // ilst box
+ TPtrC8 ilst;
+ // 3GPExt metadata exists
+ TBool iExists;
+ // local chunk
+ RChunk iChunk;
+ // chuck status
+ TInt iChunkStatus;
+
+
+ TUint32 iTitleOffset;
+ TUint32 iTitleSize;
+ TUint32 iArtistOffset;
+ TUint32 iArtistSize;
+ TUint32 iComposerOffset;
+ TUint32 iComposerSize;
+ TUint32 iAlbumOffset;
+ TUint32 iAlbumSize;
+ TUint32 iCommentOffset;
+ TUint32 iCommentSize;
+ TUint32 iCustomGenreOffset;
+ TUint32 iCustomGenreSize;
+ TUint32 iYearOffset;
+ TUint32 iYearSize;
+ TUint32 iGenreOffset;
+ TUint32 iGenreSize;
+ TUint32 iTrackNumberOffset;
+ TUint32 iTrackNumberSize;
+ TUint32 iCoverOffset;
+ TUint32 iCoverSize;
+
+ public:
+ // constants
+ TBuf8<4> K3GPExtMetaTitle;
+ TBuf8<4> K3GPExtMetaArtist;
+ TBuf8<4> K3GPExtMetaComposer;
+ TBuf8<4> K3GPExtMetaAlbum;
+ TBuf8<4> K3GPExtMetaComment;
+ TBuf8<4> K3GPExtMetaCustomGenre;
+ TBuf8<4> K3GPExtMetaYear;
+ };
+
+#endif // C3GPEXTPARSER_H
+
+// End of File