mmserv/metadatautility/3GPExtParserLib/src/3GPExtParser.cpp
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
*  Name        : 3GPExtParser.cpp
hgs
parents:
diff changeset
     3
*  Part of     : MetaDataUtility
hgs
parents:
diff changeset
     4
*  Description : This class implements an 3GPExt metadata parser
hgs
parents:
diff changeset
     5
*  Version     : 9
hgs
parents:
diff changeset
     6
*
hgs
parents:
diff changeset
     7
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     8
* All rights reserved.
hgs
parents:
diff changeset
     9
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
    10
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
    11
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
    12
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Initial Contributors:
hgs
parents:
diff changeset
    15
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    16
* ==============================================================================
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include "3GPExtParser.h"
hgs
parents:
diff changeset
    22
#include "MetaDataID3v1Genre.h"
hgs
parents:
diff changeset
    23
#ifdef _DEBUG
hgs
parents:
diff changeset
    24
#include	<e32svr.h>
hgs
parents:
diff changeset
    25
#endif
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// CONSTANTS
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
const TUint32 K3gpMetaMeta	= 0x6d657461;	// 'meta'
hgs
parents:
diff changeset
    30
const TInt K3gpMetaLength = 1;
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    36
// C3GPExtParser::C3GPExtParser
hgs
parents:
diff changeset
    37
// C++ default constructor can NOT contain any code, that
hgs
parents:
diff changeset
    38
// might leave.
hgs
parents:
diff changeset
    39
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    40
//
hgs
parents:
diff changeset
    41
C3GPExtParser::C3GPExtParser(MP4Handle& aMP4Handle): iMP4Handle(aMP4Handle), ilst(NULL, 0)
hgs
parents:
diff changeset
    42
	{
hgs
parents:
diff changeset
    43
    }
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    46
// C3GPExtParser::ConstructL
hgs
parents:
diff changeset
    47
// Symbian 2nd phase constructor can leave.
hgs
parents:
diff changeset
    48
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    49
//
hgs
parents:
diff changeset
    50
void C3GPExtParser::ConstructL()
hgs
parents:
diff changeset
    51
    {
hgs
parents:
diff changeset
    52
    K3GPExtMetaTitle.Format(K3GPExtMetaTitleFormat, 0xA9);
hgs
parents:
diff changeset
    53
    K3GPExtMetaArtist.Format(K3GPExtMetaArtistFormat, 0xA9);
hgs
parents:
diff changeset
    54
	K3GPExtMetaComposer.Format(K3GPExtMetaComposerFormat, 0xA9);
hgs
parents:
diff changeset
    55
	K3GPExtMetaAlbum.Format(K3GPExtMetaAlbumFormat, 0xA9);
hgs
parents:
diff changeset
    56
	K3GPExtMetaComment.Format(K3GPExtMetaCommentFormat, 0xA9);
hgs
parents:
diff changeset
    57
	K3GPExtMetaCustomGenre.Format(K3GPExtMetaCustomGenreFormat, 0xA9);
hgs
parents:
diff changeset
    58
	K3GPExtMetaYear.Format(K3GPExtMetaYearFormat, 0xA9);
hgs
parents:
diff changeset
    59
    }
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    62
// C3GPExtParser::NewL
hgs
parents:
diff changeset
    63
// Two-phased constructor.
hgs
parents:
diff changeset
    64
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    65
//
hgs
parents:
diff changeset
    66
EXPORT_C C3GPExtParser* C3GPExtParser::NewL(MP4Handle& aMP4Handle)
hgs
parents:
diff changeset
    67
    {
hgs
parents:
diff changeset
    68
#ifdef _DEBUG
hgs
parents:
diff changeset
    69
	RDebug::Print(_L("C3GPExtParser::NewL"));
hgs
parents:
diff changeset
    70
#endif
hgs
parents:
diff changeset
    71
	C3GPExtParser* self = new( ELeave ) C3GPExtParser (aMP4Handle);
hgs
parents:
diff changeset
    72
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    73
    self->ConstructL();
hgs
parents:
diff changeset
    74
    CleanupStack::Pop();
hgs
parents:
diff changeset
    75
    return self;
hgs
parents:
diff changeset
    76
    }
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
// Destructor
hgs
parents:
diff changeset
    79
EXPORT_C C3GPExtParser::~C3GPExtParser()
hgs
parents:
diff changeset
    80
	{
hgs
parents:
diff changeset
    81
	if(iChunkStatus)
hgs
parents:
diff changeset
    82
		{
hgs
parents:
diff changeset
    83
		iChunk.Close();
hgs
parents:
diff changeset
    84
		}
hgs
parents:
diff changeset
    85
	}
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    88
// 3GPExtParser::GetilstBoxesL
hgs
parents:
diff changeset
    89
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    90
//
hgs
parents:
diff changeset
    91
EXPORT_C void C3GPExtParser::GetilstBoxesL(const TDesC8 &/*aBox*/, TMetaDataFieldId aFieldId, HBufC** aBuf)
hgs
parents:
diff changeset
    92
{
hgs
parents:
diff changeset
    93
#ifdef _DEBUG
hgs
parents:
diff changeset
    94
	RDebug::Print(_L("C3GPExtParser::GetilstBoxesL"));
hgs
parents:
diff changeset
    95
#endif
hgs
parents:
diff changeset
    96
	TUint32 offset = 0;
hgs
parents:
diff changeset
    97
	TUint32 size = 0;
hgs
parents:
diff changeset
    98
	switch(aFieldId)
hgs
parents:
diff changeset
    99
		{
hgs
parents:
diff changeset
   100
			case EMetaDataSongTitle:
hgs
parents:
diff changeset
   101
				offset = iTitleOffset;
hgs
parents:
diff changeset
   102
				size = iTitleSize;
hgs
parents:
diff changeset
   103
				break;
hgs
parents:
diff changeset
   104
			case EMetaDataArtist:
hgs
parents:
diff changeset
   105
				offset = iArtistOffset;
hgs
parents:
diff changeset
   106
				size = iArtistSize;
hgs
parents:
diff changeset
   107
				break;
hgs
parents:
diff changeset
   108
			case EMetaDataAlbum:
hgs
parents:
diff changeset
   109
				offset = iAlbumOffset;
hgs
parents:
diff changeset
   110
				size = iAlbumSize;
hgs
parents:
diff changeset
   111
				break;
hgs
parents:
diff changeset
   112
			case EMetaDataComposer:
hgs
parents:
diff changeset
   113
				offset = iComposerOffset;
hgs
parents:
diff changeset
   114
				size = iComposerSize;
hgs
parents:
diff changeset
   115
				break;
hgs
parents:
diff changeset
   116
			case EMetaDataComment:
hgs
parents:
diff changeset
   117
				offset = iCommentOffset;
hgs
parents:
diff changeset
   118
				size = iCommentSize;
hgs
parents:
diff changeset
   119
				break;
hgs
parents:
diff changeset
   120
			case EMetaDataRating:
hgs
parents:
diff changeset
   121
				offset = iCustomGenreOffset;
hgs
parents:
diff changeset
   122
				size = iCustomGenreSize;
hgs
parents:
diff changeset
   123
				break;
hgs
parents:
diff changeset
   124
			case EMetaDataYear:
hgs
parents:
diff changeset
   125
				offset = iYearOffset;
hgs
parents:
diff changeset
   126
				size = iYearSize;
hgs
parents:
diff changeset
   127
				break;
hgs
parents:
diff changeset
   128
			case EMetaDataGenre:
hgs
parents:
diff changeset
   129
				offset = iGenreOffset;
hgs
parents:
diff changeset
   130
				size = iGenreSize;
hgs
parents:
diff changeset
   131
				break;
hgs
parents:
diff changeset
   132
			case EMetaDataAlbumTrack:
hgs
parents:
diff changeset
   133
				offset = iTrackNumberOffset;
hgs
parents:
diff changeset
   134
				size = iTrackNumberSize;
hgs
parents:
diff changeset
   135
				break;
hgs
parents:
diff changeset
   136
			case EMetaDataJpeg:
hgs
parents:
diff changeset
   137
				offset = iCoverOffset;
hgs
parents:
diff changeset
   138
				size = iCoverSize;
hgs
parents:
diff changeset
   139
				break;
hgs
parents:
diff changeset
   140
			default:
hgs
parents:
diff changeset
   141
				break;
hgs
parents:
diff changeset
   142
		
hgs
parents:
diff changeset
   143
		}
hgs
parents:
diff changeset
   144
		
hgs
parents:
diff changeset
   145
	if(size <= 0 || size >= (KMaxTInt/2))
hgs
parents:
diff changeset
   146
		{
hgs
parents:
diff changeset
   147
		User::Leave(KErrNotFound); // no data
hgs
parents:
diff changeset
   148
		}
hgs
parents:
diff changeset
   149
		
hgs
parents:
diff changeset
   150
	TInt length = ilst.Length();
hgs
parents:
diff changeset
   151
	if (length < 0 || length < (offset + size))
hgs
parents:
diff changeset
   152
	    {
hgs
parents:
diff changeset
   153
		User::Leave(KErrNotFound); // no data
hgs
parents:
diff changeset
   154
	    }
hgs
parents:
diff changeset
   155
		
hgs
parents:
diff changeset
   156
	// actual data ptr
hgs
parents:
diff changeset
   157
	TPtrC8 data = ilst.Mid(offset, size);
hgs
parents:
diff changeset
   158
	if(aFieldId != EMetaDataGenre && aFieldId != EMetaDataAlbumTrack && aFieldId != EMetaDataJpeg)
hgs
parents:
diff changeset
   159
		{ // string meta data
hgs
parents:
diff changeset
   160
		*aBuf = HBufC::NewL(size);
hgs
parents:
diff changeset
   161
		TPtr data16Ptr( (*aBuf)->Des() );
hgs
parents:
diff changeset
   162
		data16Ptr.Copy(data);
hgs
parents:
diff changeset
   163
		}
hgs
parents:
diff changeset
   164
	else if(aFieldId == EMetaDataGenre)
hgs
parents:
diff changeset
   165
		{ // 0x XXXX ID3v1 Genre + 1
hgs
parents:
diff changeset
   166
		TInt16 num = 0;
hgs
parents:
diff changeset
   167
		for(TInt i = 0 ; i <= 1; i++)
hgs
parents:
diff changeset
   168
			{	
hgs
parents:
diff changeset
   169
			num <<= 8;
hgs
parents:
diff changeset
   170
			num |= data[i];
hgs
parents:
diff changeset
   171
			}
hgs
parents:
diff changeset
   172
		num -= 1; // getting it to ID3
hgs
parents:
diff changeset
   173
		if((num >= 0 && num <= 125) || num == 199)
hgs
parents:
diff changeset
   174
			{
hgs
parents:
diff changeset
   175
			*aBuf = HBufC::NewL(KMaxGenreSize);
hgs
parents:
diff changeset
   176
			TPtr genrePtr = (*aBuf)->Des();
hgs
parents:
diff changeset
   177
			MapID3GenreToString(num, genrePtr);
hgs
parents:
diff changeset
   178
			}
hgs
parents:
diff changeset
   179
		}
hgs
parents:
diff changeset
   180
	else if(aFieldId == EMetaDataAlbumTrack)
hgs
parents:
diff changeset
   181
		{
hgs
parents:
diff changeset
   182
		*aBuf = HBufC::NewL(6);
hgs
parents:
diff changeset
   183
		TUint num = 0;
hgs
parents:
diff changeset
   184
		for(TInt i = 0 ; i <= 1; i++)
hgs
parents:
diff changeset
   185
			{	
hgs
parents:
diff changeset
   186
			num <<= 8;
hgs
parents:
diff changeset
   187
			num |= data[i+2];
hgs
parents:
diff changeset
   188
			}
hgs
parents:
diff changeset
   189
		TBuf<6> data16;
hgs
parents:
diff changeset
   190
		data16.NumUC(num);
hgs
parents:
diff changeset
   191
		(**aBuf) = data16;
hgs
parents:
diff changeset
   192
		}
hgs
parents:
diff changeset
   193
	else if(aFieldId == EMetaDataJpeg)
hgs
parents:
diff changeset
   194
		{
hgs
parents:
diff changeset
   195
		TPtrC8 imageMime1 = data.Mid(6, 4);
hgs
parents:
diff changeset
   196
		TPtrC8 imageMime2 = data.Mid(1, 3);
hgs
parents:
diff changeset
   197
		_LIT8(KJFIF, "JFIF");
hgs
parents:
diff changeset
   198
		_LIT8(KPNG, "PNG");
hgs
parents:
diff changeset
   199
		if(imageMime1.Compare(KJFIF) != 0 && imageMime2.Compare(KPNG) != 0)
hgs
parents:
diff changeset
   200
			{
hgs
parents:
diff changeset
   201
			// only JPEG and PNG supported
hgs
parents:
diff changeset
   202
			User::Leave(KErrNotFound); // no data
hgs
parents:
diff changeset
   203
			}
hgs
parents:
diff changeset
   204
		if(imageMime1.Compare(KJFIF) == 0)
hgs
parents:
diff changeset
   205
			{
hgs
parents:
diff changeset
   206
			TPtrC8 pic = data.Mid(0, size);
hgs
parents:
diff changeset
   207
			TInt length = pic.Length();
hgs
parents:
diff changeset
   208
			if ( length )
hgs
parents:
diff changeset
   209
				{
hgs
parents:
diff changeset
   210
				*aBuf = HBufC::NewL( length );
hgs
parents:
diff changeset
   211
				TPtr unicode( (*aBuf)->Des() );
hgs
parents:
diff changeset
   212
				unicode.Copy( pic );
hgs
parents:
diff changeset
   213
				}
hgs
parents:
diff changeset
   214
			}
hgs
parents:
diff changeset
   215
		else if(imageMime2.Compare(KPNG) == 0)
hgs
parents:
diff changeset
   216
			{
hgs
parents:
diff changeset
   217
			TPtrC8 pic = data.Mid(0, size);
hgs
parents:
diff changeset
   218
			TInt length = pic.Length();
hgs
parents:
diff changeset
   219
			if ( length )
hgs
parents:
diff changeset
   220
				{
hgs
parents:
diff changeset
   221
				*aBuf = HBufC::NewL( length );
hgs
parents:
diff changeset
   222
				TPtr unicode( (*aBuf)->Des() );
hgs
parents:
diff changeset
   223
				unicode.Copy( pic );
hgs
parents:
diff changeset
   224
				}	
hgs
parents:
diff changeset
   225
			}
hgs
parents:
diff changeset
   226
		}
hgs
parents:
diff changeset
   227
}
hgs
parents:
diff changeset
   228
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   229
// 3GPExtParser::GetilstBoxesL for 8-bit descriptor fields 
hgs
parents:
diff changeset
   230
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   231
//
hgs
parents:
diff changeset
   232
EXPORT_C void C3GPExtParser::GetilstBoxesL(const TDesC8 &/*aBox*/, TMetaDataFieldId aFieldId, HBufC8** aBuf)
hgs
parents:
diff changeset
   233
{
hgs
parents:
diff changeset
   234
#ifdef _DEBUG
hgs
parents:
diff changeset
   235
	RDebug::Print(_L("C3GPExtParser::GetilstBoxesL 8 bit version"));
hgs
parents:
diff changeset
   236
#endif
hgs
parents:
diff changeset
   237
	TUint32 offset = 0;
hgs
parents:
diff changeset
   238
	TUint32 size = 0;
hgs
parents:
diff changeset
   239
	switch(aFieldId)
hgs
parents:
diff changeset
   240
		{
hgs
parents:
diff changeset
   241
			case EMetaDataSongTitle:
hgs
parents:
diff changeset
   242
				offset = iTitleOffset;
hgs
parents:
diff changeset
   243
				size = iTitleSize;
hgs
parents:
diff changeset
   244
				break;
hgs
parents:
diff changeset
   245
			case EMetaDataArtist:
hgs
parents:
diff changeset
   246
				offset = iArtistOffset;
hgs
parents:
diff changeset
   247
				size = iArtistSize;
hgs
parents:
diff changeset
   248
				break;
hgs
parents:
diff changeset
   249
			case EMetaDataAlbum:
hgs
parents:
diff changeset
   250
				offset = iAlbumOffset;
hgs
parents:
diff changeset
   251
				size = iAlbumSize;
hgs
parents:
diff changeset
   252
				break;
hgs
parents:
diff changeset
   253
			case EMetaDataComposer:
hgs
parents:
diff changeset
   254
				offset = iComposerOffset;
hgs
parents:
diff changeset
   255
				size = iComposerSize;
hgs
parents:
diff changeset
   256
				break;
hgs
parents:
diff changeset
   257
			case EMetaDataComment:
hgs
parents:
diff changeset
   258
				offset = iCommentOffset;
hgs
parents:
diff changeset
   259
				size = iCommentSize;
hgs
parents:
diff changeset
   260
				break;
hgs
parents:
diff changeset
   261
			case EMetaDataRating:
hgs
parents:
diff changeset
   262
				offset = iCustomGenreOffset;
hgs
parents:
diff changeset
   263
				size = iCustomGenreSize;
hgs
parents:
diff changeset
   264
				break;
hgs
parents:
diff changeset
   265
			case EMetaDataYear:
hgs
parents:
diff changeset
   266
				offset = iYearOffset;
hgs
parents:
diff changeset
   267
				size = iYearSize;
hgs
parents:
diff changeset
   268
				break;
hgs
parents:
diff changeset
   269
			case EMetaDataGenre:
hgs
parents:
diff changeset
   270
				offset = iGenreOffset;
hgs
parents:
diff changeset
   271
				size = iGenreSize;
hgs
parents:
diff changeset
   272
				break;
hgs
parents:
diff changeset
   273
			case EMetaDataAlbumTrack:
hgs
parents:
diff changeset
   274
				offset = iTrackNumberOffset;
hgs
parents:
diff changeset
   275
				size = iTrackNumberSize;
hgs
parents:
diff changeset
   276
				break;
hgs
parents:
diff changeset
   277
			case EMetaDataJpeg:
hgs
parents:
diff changeset
   278
				offset = iCoverOffset;
hgs
parents:
diff changeset
   279
				size = iCoverSize;
hgs
parents:
diff changeset
   280
				break;
hgs
parents:
diff changeset
   281
			default:
hgs
parents:
diff changeset
   282
				break;
hgs
parents:
diff changeset
   283
		
hgs
parents:
diff changeset
   284
		}
hgs
parents:
diff changeset
   285
		
hgs
parents:
diff changeset
   286
	if(size <= 0 || size >= (KMaxTInt/2))
hgs
parents:
diff changeset
   287
		{
hgs
parents:
diff changeset
   288
		User::Leave(KErrNotFound); // no data
hgs
parents:
diff changeset
   289
		}
hgs
parents:
diff changeset
   290
		
hgs
parents:
diff changeset
   291
	TInt length = ilst.Length();
hgs
parents:
diff changeset
   292
	if (length < 0 || length < (offset + size))
hgs
parents:
diff changeset
   293
	    {
hgs
parents:
diff changeset
   294
		User::Leave(KErrNotFound); // no data
hgs
parents:
diff changeset
   295
	    }
hgs
parents:
diff changeset
   296
		
hgs
parents:
diff changeset
   297
	// actual data ptr
hgs
parents:
diff changeset
   298
	TPtrC8 data = ilst.Mid(offset, size);
hgs
parents:
diff changeset
   299
	if(aFieldId != EMetaDataGenre && aFieldId != EMetaDataAlbumTrack && aFieldId != EMetaDataJpeg)
hgs
parents:
diff changeset
   300
		{ // string meta data
hgs
parents:
diff changeset
   301
		*aBuf = HBufC8::NewL(size);
hgs
parents:
diff changeset
   302
		TPtr8 unicode( (*aBuf)->Des() );
hgs
parents:
diff changeset
   303
		unicode.Copy(data);
hgs
parents:
diff changeset
   304
		}
hgs
parents:
diff changeset
   305
	if(aFieldId == EMetaDataJpeg)
hgs
parents:
diff changeset
   306
		{
hgs
parents:
diff changeset
   307
		TPtrC8 imageMime1 = data.Mid(6, 4);
hgs
parents:
diff changeset
   308
		TPtrC8 imageMime2 = data.Mid(1, 3);
hgs
parents:
diff changeset
   309
		_LIT8(KJFIF, "JFIF");
hgs
parents:
diff changeset
   310
		_LIT8(KPNG, "PNG");
hgs
parents:
diff changeset
   311
		if(imageMime1.Compare(KJFIF) != 0 && imageMime2.Compare(KPNG) != 0)
hgs
parents:
diff changeset
   312
			{
hgs
parents:
diff changeset
   313
			// only JPEG and PNG supported
hgs
parents:
diff changeset
   314
			User::Leave(KErrNotFound); // no data
hgs
parents:
diff changeset
   315
			}
hgs
parents:
diff changeset
   316
		if(imageMime1.Compare(KJFIF) == 0)
hgs
parents:
diff changeset
   317
			{
hgs
parents:
diff changeset
   318
			TPtrC8 pic = data.Mid(0, size);
hgs
parents:
diff changeset
   319
			TInt length = pic.Length();
hgs
parents:
diff changeset
   320
			if ( length )
hgs
parents:
diff changeset
   321
				{
hgs
parents:
diff changeset
   322
				*aBuf = HBufC8::NewL( length );
hgs
parents:
diff changeset
   323
				TPtr8 unicode( (*aBuf)->Des() );
hgs
parents:
diff changeset
   324
				unicode.Copy( pic );
hgs
parents:
diff changeset
   325
				}
hgs
parents:
diff changeset
   326
			}
hgs
parents:
diff changeset
   327
		else if(imageMime2.Compare(KPNG) == 0)
hgs
parents:
diff changeset
   328
			{
hgs
parents:
diff changeset
   329
			TPtrC8 pic = data.Mid(0, size);
hgs
parents:
diff changeset
   330
			TInt length = pic.Length();
hgs
parents:
diff changeset
   331
			if ( length )
hgs
parents:
diff changeset
   332
				{
hgs
parents:
diff changeset
   333
				*aBuf = HBufC8::NewL( length );
hgs
parents:
diff changeset
   334
				TPtr8 unicode( (*aBuf)->Des() );
hgs
parents:
diff changeset
   335
				unicode.Copy( pic );
hgs
parents:
diff changeset
   336
				}	
hgs
parents:
diff changeset
   337
			}
hgs
parents:
diff changeset
   338
		}
hgs
parents:
diff changeset
   339
}
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   342
// C3GPExtParser::Is3GPExtMetadataL
hgs
parents:
diff changeset
   343
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   344
//
hgs
parents:
diff changeset
   345
EXPORT_C TBool C3GPExtParser::Is3GPExtMetadataL()
hgs
parents:
diff changeset
   346
	{
hgs
parents:
diff changeset
   347
#ifdef _DEBUG
hgs
parents:
diff changeset
   348
	RDebug::Print(_L("C3GPExtParser::3GPExtMetadataL"));
hgs
parents:
diff changeset
   349
#endif
hgs
parents:
diff changeset
   350
	HBufC8* frame = HBufC8::NewLC( K3gpMetaLength );
hgs
parents:
diff changeset
   351
	TUint8* buffer = CONST_CAST(TUint8*, frame->Ptr());
hgs
parents:
diff changeset
   352
hgs
parents:
diff changeset
   353
	MP4Err err;
hgs
parents:
diff changeset
   354
	mp4_u8 udtaLocation = MP4_UDTA_MOOV;
hgs
parents:
diff changeset
   355
	mp4_u32 bufferSize = K3gpMetaLength;
hgs
parents:
diff changeset
   356
	mp4_u32 atomIndex = 0;
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
	err = MP4ParseGetUserDataAtom(iMP4Handle, udtaLocation, K3gpMetaMeta, buffer,
hgs
parents:
diff changeset
   359
			bufferSize, atomIndex);
hgs
parents:
diff changeset
   360
	if (bufferSize > (KMaxTInt / 2))
hgs
parents:
diff changeset
   361
	    {
hgs
parents:
diff changeset
   362
		User::Leave(KErrNotFound); // no data	    
hgs
parents:
diff changeset
   363
	    }
hgs
parents:
diff changeset
   364
	    
hgs
parents:
diff changeset
   365
	if ( err == MP4_UDTA_NOT_FOUND )
hgs
parents:
diff changeset
   366
		{
hgs
parents:
diff changeset
   367
		if ( udtaLocation == MP4_UDTA_NONE || udtaLocation == MP4_UDTA_MOOV )
hgs
parents:
diff changeset
   368
			{
hgs
parents:
diff changeset
   369
#ifdef _DEBUG
hgs
parents:
diff changeset
   370
	RDebug::Print(_L("3GPExtParser::Parse3GPExtL - NotFound"));
hgs
parents:
diff changeset
   371
#endif
hgs
parents:
diff changeset
   372
			CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   373
			return EFalse;
hgs
parents:
diff changeset
   374
			}
hgs
parents:
diff changeset
   375
		else
hgs
parents:
diff changeset
   376
			{
hgs
parents:
diff changeset
   377
			if ( udtaLocation & MP4_UDTA_AUDIOTRAK )
hgs
parents:
diff changeset
   378
				{
hgs
parents:
diff changeset
   379
				udtaLocation = MP4_UDTA_AUDIOTRAK;
hgs
parents:
diff changeset
   380
				}
hgs
parents:
diff changeset
   381
			else 	// MP4_UDTA_VIDEOTRAK
hgs
parents:
diff changeset
   382
				{
hgs
parents:
diff changeset
   383
				udtaLocation = MP4_UDTA_VIDEOTRAK;
hgs
parents:
diff changeset
   384
				}
hgs
parents:
diff changeset
   385
			}
hgs
parents:
diff changeset
   386
#ifdef _DEBUG
hgs
parents:
diff changeset
   387
	RDebug::Print(_L("3GPExtParser::Parse3GPExtL - New Location [%d]"), udtaLocation);
hgs
parents:
diff changeset
   388
#endif
hgs
parents:
diff changeset
   389
		err = MP4ParseGetUserDataAtom(iMP4Handle, udtaLocation, K3gpMetaMeta, buffer,
hgs
parents:
diff changeset
   390
			bufferSize, atomIndex);
hgs
parents:
diff changeset
   391
		}
hgs
parents:
diff changeset
   392
hgs
parents:
diff changeset
   393
	if ( err != MP4_OK )
hgs
parents:
diff changeset
   394
		{
hgs
parents:
diff changeset
   395
		if ( err == MP4_OUTPUT_BUFFER_TOO_SMALL )
hgs
parents:
diff changeset
   396
			{
hgs
parents:
diff changeset
   397
			iChunk.Close();
hgs
parents:
diff changeset
   398
	
hgs
parents:
diff changeset
   399
			User::LeaveIfError(iChunk.CreateLocal(bufferSize, bufferSize, EOwnerProcess));
hgs
parents:
diff changeset
   400
			iChunkStatus = ETrue;
hgs
parents:
diff changeset
   401
			buffer = iChunk.Base();
hgs
parents:
diff changeset
   402
			err = MP4ParseGetUserDataAtom(iMP4Handle, udtaLocation, K3gpMetaMeta, buffer, bufferSize, atomIndex);
hgs
parents:
diff changeset
   403
			if(err != MP4_OK)
hgs
parents:
diff changeset
   404
				{
hgs
parents:
diff changeset
   405
				CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   406
				return EFalse;
hgs
parents:
diff changeset
   407
				}
hgs
parents:
diff changeset
   408
			}
hgs
parents:
diff changeset
   409
		else
hgs
parents:
diff changeset
   410
			{
hgs
parents:
diff changeset
   411
			CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   412
			return EFalse;
hgs
parents:
diff changeset
   413
			//User::Leave( TranslateMP4Err(err) );
hgs
parents:
diff changeset
   414
			}
hgs
parents:
diff changeset
   415
		}
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
	TPtr8 des(buffer, bufferSize, bufferSize);
hgs
parents:
diff changeset
   418
	
hgs
parents:
diff changeset
   419
	// HDLR BOX
hgs
parents:
diff changeset
   420
	_LIT8(KHdlr, "hdlr");
hgs
parents:
diff changeset
   421
	TInt hdlrOffset = 16; // header box at constant offset
hgs
parents:
diff changeset
   422
	TPtrC8 hdlrCheck = des.MidTPtr(hdlrOffset, 4);
hgs
parents:
diff changeset
   423
	if(hdlrCheck !=  KHdlr)
hgs
parents:
diff changeset
   424
	{ 
hgs
parents:
diff changeset
   425
		CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   426
		return EFalse; // not 3GPExt
hgs
parents:
diff changeset
   427
	}
hgs
parents:
diff changeset
   428
	hdlrOffset -= 4; // hdlr box begins at size, 4 bytes back
hgs
parents:
diff changeset
   429
	
hgs
parents:
diff changeset
   430
	// get hdlr size
hgs
parents:
diff changeset
   431
	TPtrC8 sizeHdlrDesc = des.Mid(hdlrOffset, 4);
hgs
parents:
diff changeset
   432
	TInt32 sizeHdlr = 0;
hgs
parents:
diff changeset
   433
	for(TInt i = 0 ; i <= 3; i++)
hgs
parents:
diff changeset
   434
		{	
hgs
parents:
diff changeset
   435
		sizeHdlr <<= 8;
hgs
parents:
diff changeset
   436
		sizeHdlr |= sizeHdlrDesc[i];
hgs
parents:
diff changeset
   437
		}
hgs
parents:
diff changeset
   438
	if(sizeHdlr <= 0)
hgs
parents:
diff changeset
   439
	    {
hgs
parents:
diff changeset
   440
		CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   441
		return EFalse; // not 3GPExt
hgs
parents:
diff changeset
   442
	    }
hgs
parents:
diff changeset
   443
	
hgs
parents:
diff changeset
   444
	// hdlr ptr
hgs
parents:
diff changeset
   445
	if (des.Length() < (hdlrOffset + sizeHdlr))
hgs
parents:
diff changeset
   446
	    {
hgs
parents:
diff changeset
   447
	    CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   448
	    return EFalse;  // data corrupted
hgs
parents:
diff changeset
   449
	    }	        
hgs
parents:
diff changeset
   450
	TPtrC8 hdlr = des.Mid(hdlrOffset, sizeHdlr);
hgs
parents:
diff changeset
   451
	
hgs
parents:
diff changeset
   452
	// match mdirappl
hgs
parents:
diff changeset
   453
	/**** Comment out the following lines - no need to test for "mdirappl" string	
hgs
parents:
diff changeset
   454
	TPtrC8 text = hdlr.Mid(16, 8); // at 16 bytes from hdlr box
hgs
parents:
diff changeset
   455
	_LIT8(KMdirappl, "mdirappl");
hgs
parents:
diff changeset
   456
	if(text.Compare(KMdirappl) != 0)
hgs
parents:
diff changeset
   457
	{
hgs
parents:
diff changeset
   458
		CleanupStack::PopAndDestroy();  	// frame
hgs
parents:
diff changeset
   459
		return EFalse; 						// not 3GPExt
hgs
parents:
diff changeset
   460
	}
hgs
parents:
diff changeset
   461
	*****/   // End comment out "mdirappl" 	
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
	// iLST BOX
hgs
parents:
diff changeset
   464
	_LIT8(KIlst, "ilst");
hgs
parents:
diff changeset
   465
	TInt ilstOffset = hdlrOffset + sizeHdlr + 4;
hgs
parents:
diff changeset
   466
	if (ilstOffset > bufferSize)
hgs
parents:
diff changeset
   467
	    {
hgs
parents:
diff changeset
   468
		CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   469
		return EFalse; // not 3GPExt	    
hgs
parents:
diff changeset
   470
	    }
hgs
parents:
diff changeset
   471
	    
hgs
parents:
diff changeset
   472
	TPtrC8 ilstCheck = des.MidTPtr(ilstOffset, 4);
hgs
parents:
diff changeset
   473
	if(ilstCheck !=  KIlst)
hgs
parents:
diff changeset
   474
	    {
hgs
parents:
diff changeset
   475
	    ilstOffset = des.Find(KIlst);
hgs
parents:
diff changeset
   476
	    if(ilstOffset == KErrNotFound)
hgs
parents:
diff changeset
   477
	        {
hgs
parents:
diff changeset
   478
	        CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   479
	        return EFalse; // no list box
hgs
parents:
diff changeset
   480
	        }
hgs
parents:
diff changeset
   481
	    }
hgs
parents:
diff changeset
   482
	ilstOffset -=4; // ilst box begins at size, 4 bytes back
hgs
parents:
diff changeset
   483
	
hgs
parents:
diff changeset
   484
	// get ilst size
hgs
parents:
diff changeset
   485
	TPtrC8 sizeIlstDesc = des.Mid(ilstOffset, 4);
hgs
parents:
diff changeset
   486
	TUint32 sizeIlst = 0;
hgs
parents:
diff changeset
   487
	for(TInt i = 0 ; i <= 3; i++)
hgs
parents:
diff changeset
   488
		{	
hgs
parents:
diff changeset
   489
		sizeIlst <<= 8;
hgs
parents:
diff changeset
   490
		sizeIlst |= sizeIlstDesc[i];
hgs
parents:
diff changeset
   491
		}
hgs
parents:
diff changeset
   492
	if(sizeIlst <= 0 || sizeIlst > bufferSize - ilstOffset)
hgs
parents:
diff changeset
   493
	{
hgs
parents:
diff changeset
   494
		CleanupStack::PopAndDestroy();  // frame
hgs
parents:
diff changeset
   495
		return EFalse; // no list box
hgs
parents:
diff changeset
   496
	}
hgs
parents:
diff changeset
   497
	
hgs
parents:
diff changeset
   498
	// ilst 
hgs
parents:
diff changeset
   499
	TPtrC8 tmp = des.Mid(ilstOffset, sizeIlst);
hgs
parents:
diff changeset
   500
	const TUint8* tmpPtr = tmp.Ptr();
hgs
parents:
diff changeset
   501
	ilst.Set(tmpPtr, sizeIlst);
hgs
parents:
diff changeset
   502
	iExists = ETrue;
hgs
parents:
diff changeset
   503
	
hgs
parents:
diff changeset
   504
	ParseIlstBoxesL();
hgs
parents:
diff changeset
   505
	CleanupStack::PopAndDestroy();  // frame	
hgs
parents:
diff changeset
   506
	return ETrue;
hgs
parents:
diff changeset
   507
	}
hgs
parents:
diff changeset
   508
hgs
parents:
diff changeset
   509
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   510
// 3GPExtParser::MapID3v1GenreToString()
hgs
parents:
diff changeset
   511
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   512
//
hgs
parents:
diff changeset
   513
void C3GPExtParser::ParseIlstBoxesL()
hgs
parents:
diff changeset
   514
{
hgs
parents:
diff changeset
   515
#ifdef _DEBUG
hgs
parents:
diff changeset
   516
	RDebug::Print(_L("C3GPExtParser::ParseIlstBoxesL"));
hgs
parents:
diff changeset
   517
#endif
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
	TUint32 sizeIlst = ilst.Length();
hgs
parents:
diff changeset
   520
	TUint32 offset = 8; // first tag
hgs
parents:
diff changeset
   521
	while (offset < sizeIlst)	
hgs
parents:
diff changeset
   522
		{
hgs
parents:
diff changeset
   523
		TUint32 tagSize = 0;
hgs
parents:
diff changeset
   524
		TPtrC8 tagSizeDes = ilst.Mid(offset, 4);
hgs
parents:
diff changeset
   525
		for(TInt i = 0 ; i <= 3; i++)
hgs
parents:
diff changeset
   526
			{	
hgs
parents:
diff changeset
   527
			tagSize <<= 8;
hgs
parents:
diff changeset
   528
			tagSize |= tagSizeDes[i];
hgs
parents:
diff changeset
   529
			}
hgs
parents:
diff changeset
   530
		TPtrC8 tagName = ilst.Mid(offset + 4, 4);
hgs
parents:
diff changeset
   531
		TUint32 dataSize = 0;
hgs
parents:
diff changeset
   532
		TPtrC8 dataSizeDesc = ilst.Mid(offset + 8, 4);
hgs
parents:
diff changeset
   533
		for(TInt i = 0 ; i <= 3; i++)
hgs
parents:
diff changeset
   534
			{	
hgs
parents:
diff changeset
   535
			dataSize <<= 8;
hgs
parents:
diff changeset
   536
			dataSize |= dataSizeDesc[i];
hgs
parents:
diff changeset
   537
			}
hgs
parents:
diff changeset
   538
		if(dataSize > 16)
hgs
parents:
diff changeset
   539
			{
hgs
parents:
diff changeset
   540
			if(!tagName.Compare(K3GPExtMetaTitle))
hgs
parents:
diff changeset
   541
				{ 
hgs
parents:
diff changeset
   542
				iTitleOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   543
				iTitleSize = dataSize - 16;
hgs
parents:
diff changeset
   544
				}
hgs
parents:
diff changeset
   545
			else if(!tagName.Compare(K3GPExtMetaArtist))
hgs
parents:
diff changeset
   546
				{
hgs
parents:
diff changeset
   547
				iArtistOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   548
				iArtistSize = dataSize - 16;
hgs
parents:
diff changeset
   549
				}
hgs
parents:
diff changeset
   550
			else if(!tagName.Compare(K3GPExtMetaComposer))
hgs
parents:
diff changeset
   551
				{
hgs
parents:
diff changeset
   552
				iComposerOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   553
				iComposerSize = dataSize - 16;
hgs
parents:
diff changeset
   554
				}	
hgs
parents:
diff changeset
   555
			else if(!tagName.Compare(K3GPExtMetaAlbum))
hgs
parents:
diff changeset
   556
				{
hgs
parents:
diff changeset
   557
				iAlbumOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   558
				iAlbumSize = dataSize - 16;
hgs
parents:
diff changeset
   559
				}	
hgs
parents:
diff changeset
   560
			else if(!tagName.Compare(K3GPExtMetaComment))
hgs
parents:
diff changeset
   561
				{
hgs
parents:
diff changeset
   562
				iCommentOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   563
				iCommentSize = dataSize - 16;
hgs
parents:
diff changeset
   564
				}	
hgs
parents:
diff changeset
   565
			else if(!tagName.Compare(K3GPExtMetaYear))
hgs
parents:
diff changeset
   566
				{
hgs
parents:
diff changeset
   567
				iYearOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   568
				iYearSize = dataSize - 16;
hgs
parents:
diff changeset
   569
				}	
hgs
parents:
diff changeset
   570
			else if(!tagName.Compare(K3GPExtMetaCustomGenre))
hgs
parents:
diff changeset
   571
				{
hgs
parents:
diff changeset
   572
				iCustomGenreOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   573
				iCustomGenreSize = dataSize - 16;
hgs
parents:
diff changeset
   574
				}	
hgs
parents:
diff changeset
   575
			else if(!tagName.Compare(K3GPExtMetaGenre))
hgs
parents:
diff changeset
   576
				{
hgs
parents:
diff changeset
   577
				iGenreOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   578
				iGenreSize = dataSize - 16;
hgs
parents:
diff changeset
   579
				}	
hgs
parents:
diff changeset
   580
			else if(!tagName.Compare(K3GPExtMetaTrack))
hgs
parents:
diff changeset
   581
				{
hgs
parents:
diff changeset
   582
				iTrackNumberOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   583
				iTrackNumberSize = dataSize - 16;
hgs
parents:
diff changeset
   584
				}	
hgs
parents:
diff changeset
   585
			else if(!tagName.Compare(K3GPExtMetaJpeg))
hgs
parents:
diff changeset
   586
				{
hgs
parents:
diff changeset
   587
				iCoverOffset = offset + 8 + 16;
hgs
parents:
diff changeset
   588
				iCoverSize = dataSize - 16;
hgs
parents:
diff changeset
   589
				}	
hgs
parents:
diff changeset
   590
			else // default
hgs
parents:
diff changeset
   591
				{
hgs
parents:
diff changeset
   592
				// unwanted tag, ignore
hgs
parents:
diff changeset
   593
				}
hgs
parents:
diff changeset
   594
			}
hgs
parents:
diff changeset
   595
		if (tagSize <= 0)
hgs
parents:
diff changeset
   596
		    {
hgs
parents:
diff changeset
   597
		    #ifdef _DEBUG
hgs
parents:
diff changeset
   598
	            RDebug::Print(_L("C3GPExtParser::ParseIlstBoxesL - break"));
hgs
parents:
diff changeset
   599
            #endif
hgs
parents:
diff changeset
   600
hgs
parents:
diff changeset
   601
		    break;
hgs
parents:
diff changeset
   602
		    }
hgs
parents:
diff changeset
   603
		else
hgs
parents:
diff changeset
   604
		    {
hgs
parents:
diff changeset
   605
			offset += tagSize;
hgs
parents:
diff changeset
   606
		    }
hgs
parents:
diff changeset
   607
		}
hgs
parents:
diff changeset
   608
}
hgs
parents:
diff changeset
   609
hgs
parents:
diff changeset
   610
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   611
// 3GPExtParser::MapID3v1GenreToString()
hgs
parents:
diff changeset
   612
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   613
//
hgs
parents:
diff changeset
   614
void C3GPExtParser::MapID3GenreToString(TInt aNum, TDes& aGenrePtr)
hgs
parents:
diff changeset
   615
{
hgs
parents:
diff changeset
   616
#ifdef _DEBUG
hgs
parents:
diff changeset
   617
	RDebug::Print(_L("C3GPExtParser::MapID3GenreToString"));
hgs
parents:
diff changeset
   618
#endif
hgs
parents:
diff changeset
   619
hgs
parents:
diff changeset
   620
	switch(aNum)
hgs
parents:
diff changeset
   621
			{
hgs
parents:
diff changeset
   622
				case 0:
hgs
parents:
diff changeset
   623
					aGenrePtr.Append(KGenreBlues);
hgs
parents:
diff changeset
   624
					break;
hgs
parents:
diff changeset
   625
				case 1:
hgs
parents:
diff changeset
   626
					aGenrePtr.Append(KGenreClassicRock);
hgs
parents:
diff changeset
   627
					break;
hgs
parents:
diff changeset
   628
				case 2:
hgs
parents:
diff changeset
   629
					aGenrePtr.Append(KGenreCountry);
hgs
parents:
diff changeset
   630
					break;
hgs
parents:
diff changeset
   631
				case 3:
hgs
parents:
diff changeset
   632
					aGenrePtr.Append(KGenreDance);
hgs
parents:
diff changeset
   633
					break;
hgs
parents:
diff changeset
   634
				case 4:
hgs
parents:
diff changeset
   635
					aGenrePtr.Append(KGenreDisco);
hgs
parents:
diff changeset
   636
					break;
hgs
parents:
diff changeset
   637
				case 5:
hgs
parents:
diff changeset
   638
					aGenrePtr.Append(KGenreFunk);
hgs
parents:
diff changeset
   639
					break;
hgs
parents:
diff changeset
   640
				case 6:
hgs
parents:
diff changeset
   641
					aGenrePtr.Append(KGenreGrunge);
hgs
parents:
diff changeset
   642
					break;
hgs
parents:
diff changeset
   643
				case 7:
hgs
parents:
diff changeset
   644
					aGenrePtr.Append(KGenreHipHop);
hgs
parents:
diff changeset
   645
					break;
hgs
parents:
diff changeset
   646
				case 8:
hgs
parents:
diff changeset
   647
					aGenrePtr.Append(KGenreJazz);
hgs
parents:
diff changeset
   648
					break;
hgs
parents:
diff changeset
   649
				case 9:
hgs
parents:
diff changeset
   650
					aGenrePtr.Append(KGenreMetal);
hgs
parents:
diff changeset
   651
					break;
hgs
parents:
diff changeset
   652
				case 10:
hgs
parents:
diff changeset
   653
					aGenrePtr.Append(KGenreNewAge);
hgs
parents:
diff changeset
   654
					break;
hgs
parents:
diff changeset
   655
				case 11:
hgs
parents:
diff changeset
   656
					aGenrePtr.Append(KGenreOldies);
hgs
parents:
diff changeset
   657
					break;
hgs
parents:
diff changeset
   658
				case 12:
hgs
parents:
diff changeset
   659
					aGenrePtr.Append(KGenreOther);
hgs
parents:
diff changeset
   660
					break;
hgs
parents:
diff changeset
   661
				case 13:
hgs
parents:
diff changeset
   662
					aGenrePtr.Append(KGenrePop);
hgs
parents:
diff changeset
   663
					break;
hgs
parents:
diff changeset
   664
				case 14:
hgs
parents:
diff changeset
   665
					aGenrePtr.Append(KGenreRB);
hgs
parents:
diff changeset
   666
					break;
hgs
parents:
diff changeset
   667
				case 15:
hgs
parents:
diff changeset
   668
					aGenrePtr.Append(KGenreRap);
hgs
parents:
diff changeset
   669
					break;
hgs
parents:
diff changeset
   670
				case 16:
hgs
parents:
diff changeset
   671
					aGenrePtr.Append(KGenreReggae);
hgs
parents:
diff changeset
   672
					break;
hgs
parents:
diff changeset
   673
				case 17:
hgs
parents:
diff changeset
   674
					aGenrePtr.Append(KGenreRock);
hgs
parents:
diff changeset
   675
					break;
hgs
parents:
diff changeset
   676
				case 18:
hgs
parents:
diff changeset
   677
					aGenrePtr.Append(KGenreTechno);
hgs
parents:
diff changeset
   678
					break;
hgs
parents:
diff changeset
   679
				case 19:
hgs
parents:
diff changeset
   680
					aGenrePtr.Append(KGenreIndustrial);
hgs
parents:
diff changeset
   681
					break;
hgs
parents:
diff changeset
   682
				case 20:
hgs
parents:
diff changeset
   683
					aGenrePtr.Append(KGenreAlternative);
hgs
parents:
diff changeset
   684
					break;
hgs
parents:
diff changeset
   685
				case 21:
hgs
parents:
diff changeset
   686
					aGenrePtr.Append(KGenreSka);
hgs
parents:
diff changeset
   687
					break;
hgs
parents:
diff changeset
   688
				case 22:
hgs
parents:
diff changeset
   689
					aGenrePtr.Append(KGenreDeathMetal);
hgs
parents:
diff changeset
   690
					break;
hgs
parents:
diff changeset
   691
				case 23:
hgs
parents:
diff changeset
   692
					aGenrePtr.Append(KGenrePranks);
hgs
parents:
diff changeset
   693
					break;
hgs
parents:
diff changeset
   694
				case 24:
hgs
parents:
diff changeset
   695
					aGenrePtr.Append(KGenreSoundtrack);
hgs
parents:
diff changeset
   696
					break;
hgs
parents:
diff changeset
   697
				case 25:
hgs
parents:
diff changeset
   698
					aGenrePtr.Append(KGenreEuroTechno);
hgs
parents:
diff changeset
   699
					break;
hgs
parents:
diff changeset
   700
				case 26:
hgs
parents:
diff changeset
   701
					aGenrePtr.Append(KGenreAmbient);
hgs
parents:
diff changeset
   702
					break;
hgs
parents:
diff changeset
   703
				case 27:
hgs
parents:
diff changeset
   704
					aGenrePtr.Append(KGenreTripHop);
hgs
parents:
diff changeset
   705
					break;
hgs
parents:
diff changeset
   706
				case 28:
hgs
parents:
diff changeset
   707
					aGenrePtr.Append(KGenreVocal);
hgs
parents:
diff changeset
   708
					break;
hgs
parents:
diff changeset
   709
				case 29:
hgs
parents:
diff changeset
   710
					aGenrePtr.Append(KGenreJazzFunk);
hgs
parents:
diff changeset
   711
					break;
hgs
parents:
diff changeset
   712
				case 30:
hgs
parents:
diff changeset
   713
					aGenrePtr.Append(KGenreFusion);
hgs
parents:
diff changeset
   714
					break;
hgs
parents:
diff changeset
   715
				case 31:
hgs
parents:
diff changeset
   716
					aGenrePtr.Append(KGenreTrance);
hgs
parents:
diff changeset
   717
					break;
hgs
parents:
diff changeset
   718
				case 32:
hgs
parents:
diff changeset
   719
					aGenrePtr.Append(KGenreClassical);
hgs
parents:
diff changeset
   720
					break;
hgs
parents:
diff changeset
   721
				case 33:
hgs
parents:
diff changeset
   722
					aGenrePtr.Append(KGenreInstrumental);
hgs
parents:
diff changeset
   723
					break;
hgs
parents:
diff changeset
   724
				case 34:
hgs
parents:
diff changeset
   725
					aGenrePtr.Append(KGenreAcid);
hgs
parents:
diff changeset
   726
					break;
hgs
parents:
diff changeset
   727
				case 35:
hgs
parents:
diff changeset
   728
					aGenrePtr.Append(KGenreHouse);
hgs
parents:
diff changeset
   729
					break;
hgs
parents:
diff changeset
   730
				case 36:
hgs
parents:
diff changeset
   731
					aGenrePtr.Append(KGenreGame);
hgs
parents:
diff changeset
   732
					break;
hgs
parents:
diff changeset
   733
				case 37:
hgs
parents:
diff changeset
   734
					aGenrePtr.Append(KGenreSoundClip);
hgs
parents:
diff changeset
   735
					break;
hgs
parents:
diff changeset
   736
				case 38:
hgs
parents:
diff changeset
   737
					aGenrePtr.Append(KGenreGospel);
hgs
parents:
diff changeset
   738
					break;
hgs
parents:
diff changeset
   739
				case 39:
hgs
parents:
diff changeset
   740
					aGenrePtr.Append(KGenreNoise);
hgs
parents:
diff changeset
   741
					break;
hgs
parents:
diff changeset
   742
				case 40:
hgs
parents:
diff changeset
   743
					aGenrePtr.Append(KGenreAlternRock);
hgs
parents:
diff changeset
   744
					break;
hgs
parents:
diff changeset
   745
				case 41:
hgs
parents:
diff changeset
   746
					aGenrePtr.Append(KGenreBass);
hgs
parents:
diff changeset
   747
					break;
hgs
parents:
diff changeset
   748
				case 42:
hgs
parents:
diff changeset
   749
					aGenrePtr.Append(KGenreSoul);
hgs
parents:
diff changeset
   750
					break;
hgs
parents:
diff changeset
   751
				case 43:
hgs
parents:
diff changeset
   752
					aGenrePtr.Append(KGenrePunk);
hgs
parents:
diff changeset
   753
					break;
hgs
parents:
diff changeset
   754
				case 44:
hgs
parents:
diff changeset
   755
					aGenrePtr.Append(KGenreSpace);
hgs
parents:
diff changeset
   756
					break;
hgs
parents:
diff changeset
   757
				case 45:
hgs
parents:
diff changeset
   758
					aGenrePtr.Append(KGenreMeditative);
hgs
parents:
diff changeset
   759
					break;
hgs
parents:
diff changeset
   760
				case 46:
hgs
parents:
diff changeset
   761
					aGenrePtr.Append(KGenreInstrumentalPop);
hgs
parents:
diff changeset
   762
					break;
hgs
parents:
diff changeset
   763
				case 47:
hgs
parents:
diff changeset
   764
					aGenrePtr.Append(KGenreInstrumentalRock);
hgs
parents:
diff changeset
   765
					break;
hgs
parents:
diff changeset
   766
				case 48:
hgs
parents:
diff changeset
   767
					aGenrePtr.Append(KGenreEthnic);
hgs
parents:
diff changeset
   768
					break;
hgs
parents:
diff changeset
   769
				case 49:
hgs
parents:
diff changeset
   770
					aGenrePtr.Append(KGenreGothic);
hgs
parents:
diff changeset
   771
					break;
hgs
parents:
diff changeset
   772
				case 50:
hgs
parents:
diff changeset
   773
					aGenrePtr.Append(KGenreDarkwave);
hgs
parents:
diff changeset
   774
					break;
hgs
parents:
diff changeset
   775
				case 51:
hgs
parents:
diff changeset
   776
					aGenrePtr.Append(KGenreTechnoIndustrial);
hgs
parents:
diff changeset
   777
					break;
hgs
parents:
diff changeset
   778
				case 52:
hgs
parents:
diff changeset
   779
					aGenrePtr.Append(KGenreElectronic);
hgs
parents:
diff changeset
   780
					break;
hgs
parents:
diff changeset
   781
				case 53:
hgs
parents:
diff changeset
   782
					aGenrePtr.Append(KGenrePopFolk);
hgs
parents:
diff changeset
   783
					break;
hgs
parents:
diff changeset
   784
				case 54:
hgs
parents:
diff changeset
   785
					aGenrePtr.Append(KGenreEurodance);
hgs
parents:
diff changeset
   786
					break;
hgs
parents:
diff changeset
   787
				case 55:
hgs
parents:
diff changeset
   788
					aGenrePtr.Append(KGenreDream);
hgs
parents:
diff changeset
   789
					break;
hgs
parents:
diff changeset
   790
				case 56:
hgs
parents:
diff changeset
   791
					aGenrePtr.Append(KGenreSouthernRock);
hgs
parents:
diff changeset
   792
					break;
hgs
parents:
diff changeset
   793
				case 57:
hgs
parents:
diff changeset
   794
					aGenrePtr.Append(KGenreComedy);
hgs
parents:
diff changeset
   795
					break;
hgs
parents:
diff changeset
   796
				case 58:
hgs
parents:
diff changeset
   797
					aGenrePtr.Append(KGenreCult);
hgs
parents:
diff changeset
   798
					break;
hgs
parents:
diff changeset
   799
				case 59:
hgs
parents:
diff changeset
   800
					aGenrePtr.Append(KGenreGangsta);
hgs
parents:
diff changeset
   801
					break;
hgs
parents:
diff changeset
   802
				case 60:
hgs
parents:
diff changeset
   803
					aGenrePtr.Append(KGenreTop40);
hgs
parents:
diff changeset
   804
					break;
hgs
parents:
diff changeset
   805
				case 61:
hgs
parents:
diff changeset
   806
					aGenrePtr.Append(KGenreChristianRap);
hgs
parents:
diff changeset
   807
					break;
hgs
parents:
diff changeset
   808
				case 62:
hgs
parents:
diff changeset
   809
					aGenrePtr.Append(KGenrePopFunk);
hgs
parents:
diff changeset
   810
					break;
hgs
parents:
diff changeset
   811
				case 63:
hgs
parents:
diff changeset
   812
					aGenrePtr.Append(KGenreJungle);
hgs
parents:
diff changeset
   813
					break;
hgs
parents:
diff changeset
   814
				case 64:
hgs
parents:
diff changeset
   815
					aGenrePtr.Append(KGenreNativeAmerican);
hgs
parents:
diff changeset
   816
					break;
hgs
parents:
diff changeset
   817
				case 65:
hgs
parents:
diff changeset
   818
					aGenrePtr.Append(KGenreCabaret);
hgs
parents:
diff changeset
   819
					break;
hgs
parents:
diff changeset
   820
				case 66:
hgs
parents:
diff changeset
   821
					aGenrePtr.Append(KGenreNewWave);
hgs
parents:
diff changeset
   822
					break;
hgs
parents:
diff changeset
   823
				case 67:
hgs
parents:
diff changeset
   824
					aGenrePtr.Append(KGenrePsychadelic);
hgs
parents:
diff changeset
   825
					break;
hgs
parents:
diff changeset
   826
				case 68:
hgs
parents:
diff changeset
   827
					aGenrePtr.Append(KGenreRave);
hgs
parents:
diff changeset
   828
					break;
hgs
parents:
diff changeset
   829
				case 69:
hgs
parents:
diff changeset
   830
					aGenrePtr.Append(KGenreShowtunes);
hgs
parents:
diff changeset
   831
					break;
hgs
parents:
diff changeset
   832
				case 70:
hgs
parents:
diff changeset
   833
					aGenrePtr.Append(KGenreTrailer);
hgs
parents:
diff changeset
   834
					break;
hgs
parents:
diff changeset
   835
				case 71:
hgs
parents:
diff changeset
   836
					aGenrePtr.Append(KGenreLoFi);
hgs
parents:
diff changeset
   837
					break;
hgs
parents:
diff changeset
   838
				case 72:
hgs
parents:
diff changeset
   839
					aGenrePtr.Append(KGenreTribal);
hgs
parents:
diff changeset
   840
					break;
hgs
parents:
diff changeset
   841
				case 73:
hgs
parents:
diff changeset
   842
					aGenrePtr.Append(KGenreAcidPunk);
hgs
parents:
diff changeset
   843
					break;
hgs
parents:
diff changeset
   844
				case 74:
hgs
parents:
diff changeset
   845
					aGenrePtr.Append(KGenreAcidJazz);
hgs
parents:
diff changeset
   846
					break;
hgs
parents:
diff changeset
   847
				case 75:
hgs
parents:
diff changeset
   848
					aGenrePtr.Append(KGenrePolka);
hgs
parents:
diff changeset
   849
					break;
hgs
parents:
diff changeset
   850
				case 76:
hgs
parents:
diff changeset
   851
					aGenrePtr.Append(KGenreRetro);
hgs
parents:
diff changeset
   852
					break;
hgs
parents:
diff changeset
   853
				case 77:
hgs
parents:
diff changeset
   854
					aGenrePtr.Append(KGenreMusical);
hgs
parents:
diff changeset
   855
					break;
hgs
parents:
diff changeset
   856
				case 78:
hgs
parents:
diff changeset
   857
					aGenrePtr.Append(KGenreRockRoll);
hgs
parents:
diff changeset
   858
					break;
hgs
parents:
diff changeset
   859
				case 79:
hgs
parents:
diff changeset
   860
					aGenrePtr.Append(KGenreHardRock);
hgs
parents:
diff changeset
   861
					break;
hgs
parents:
diff changeset
   862
				case 80:
hgs
parents:
diff changeset
   863
					aGenrePtr.Append(KGenreFolk);
hgs
parents:
diff changeset
   864
					break;
hgs
parents:
diff changeset
   865
				case 81:
hgs
parents:
diff changeset
   866
					aGenrePtr.Append(KGenreFolkRock);
hgs
parents:
diff changeset
   867
					break;
hgs
parents:
diff changeset
   868
				case 82:
hgs
parents:
diff changeset
   869
					aGenrePtr.Append(KGenreNationalFolk);
hgs
parents:
diff changeset
   870
					break;
hgs
parents:
diff changeset
   871
				case 83:
hgs
parents:
diff changeset
   872
					aGenrePtr.Append(KGenreSwing);
hgs
parents:
diff changeset
   873
					break;
hgs
parents:
diff changeset
   874
				case 84:
hgs
parents:
diff changeset
   875
					aGenrePtr.Append(KGenreFastFusion);
hgs
parents:
diff changeset
   876
					break;
hgs
parents:
diff changeset
   877
				case 85:
hgs
parents:
diff changeset
   878
					aGenrePtr.Append(KGenreBebob);
hgs
parents:
diff changeset
   879
					break;
hgs
parents:
diff changeset
   880
				case 86:
hgs
parents:
diff changeset
   881
					aGenrePtr.Append(KGenreLatin);
hgs
parents:
diff changeset
   882
					break;
hgs
parents:
diff changeset
   883
				case 87:
hgs
parents:
diff changeset
   884
					aGenrePtr.Append(KGenreRevival);
hgs
parents:
diff changeset
   885
					break;
hgs
parents:
diff changeset
   886
				case 88:
hgs
parents:
diff changeset
   887
					aGenrePtr.Append(KGenreCeltic);
hgs
parents:
diff changeset
   888
					break;
hgs
parents:
diff changeset
   889
				case 89:
hgs
parents:
diff changeset
   890
					aGenrePtr.Append(KGenreBluegrass);
hgs
parents:
diff changeset
   891
					break;
hgs
parents:
diff changeset
   892
				case 90:
hgs
parents:
diff changeset
   893
					aGenrePtr.Append(KGenreAvantgarde);
hgs
parents:
diff changeset
   894
					break;
hgs
parents:
diff changeset
   895
				case 91:
hgs
parents:
diff changeset
   896
					aGenrePtr.Append(KGenreGothicRock);
hgs
parents:
diff changeset
   897
					break;
hgs
parents:
diff changeset
   898
				case 92:
hgs
parents:
diff changeset
   899
					aGenrePtr.Append(KGenreProgressiveRock);
hgs
parents:
diff changeset
   900
					break;
hgs
parents:
diff changeset
   901
				case 93:
hgs
parents:
diff changeset
   902
					aGenrePtr.Append(KGenrePsychedelicRock);
hgs
parents:
diff changeset
   903
					break;
hgs
parents:
diff changeset
   904
				case 94:
hgs
parents:
diff changeset
   905
					aGenrePtr.Append(KGenreSymphonicRock);
hgs
parents:
diff changeset
   906
					break;
hgs
parents:
diff changeset
   907
				case 95:
hgs
parents:
diff changeset
   908
					aGenrePtr.Append(KGenreSlowRock);
hgs
parents:
diff changeset
   909
					break;
hgs
parents:
diff changeset
   910
				case 96:
hgs
parents:
diff changeset
   911
					aGenrePtr.Append(KGenreBigBand);
hgs
parents:
diff changeset
   912
					break;
hgs
parents:
diff changeset
   913
				case 97:
hgs
parents:
diff changeset
   914
					aGenrePtr.Append(KGenreChorus);
hgs
parents:
diff changeset
   915
					break;
hgs
parents:
diff changeset
   916
				case 98:
hgs
parents:
diff changeset
   917
					aGenrePtr.Append(KGenreEasyListening);
hgs
parents:
diff changeset
   918
					break;
hgs
parents:
diff changeset
   919
				case 99:
hgs
parents:
diff changeset
   920
					aGenrePtr.Append(KGenreAcoustic);
hgs
parents:
diff changeset
   921
					break;
hgs
parents:
diff changeset
   922
				case 100:
hgs
parents:
diff changeset
   923
					aGenrePtr.Append(KGenreHumour);
hgs
parents:
diff changeset
   924
					break;
hgs
parents:
diff changeset
   925
				case 101:
hgs
parents:
diff changeset
   926
					aGenrePtr.Append(KGenreSpeech);
hgs
parents:
diff changeset
   927
					break;
hgs
parents:
diff changeset
   928
				case 102:
hgs
parents:
diff changeset
   929
					aGenrePtr.Append(KGenreChanson);
hgs
parents:
diff changeset
   930
					break;
hgs
parents:
diff changeset
   931
				case 103:
hgs
parents:
diff changeset
   932
					aGenrePtr.Append(KGenreOpera);
hgs
parents:
diff changeset
   933
					break;
hgs
parents:
diff changeset
   934
				case 104:
hgs
parents:
diff changeset
   935
					aGenrePtr.Append(KGenreChamberMusic);
hgs
parents:
diff changeset
   936
					break;
hgs
parents:
diff changeset
   937
				case 105:
hgs
parents:
diff changeset
   938
					aGenrePtr.Append(KGenreSonata);
hgs
parents:
diff changeset
   939
					break;
hgs
parents:
diff changeset
   940
				case 106:
hgs
parents:
diff changeset
   941
					aGenrePtr.Append(KGenreSymphony);
hgs
parents:
diff changeset
   942
					break;
hgs
parents:
diff changeset
   943
				case 107:
hgs
parents:
diff changeset
   944
					aGenrePtr.Append(KGenreBootyBass);
hgs
parents:
diff changeset
   945
					break;
hgs
parents:
diff changeset
   946
				case 108:
hgs
parents:
diff changeset
   947
					aGenrePtr.Append(KGenrePrimus);
hgs
parents:
diff changeset
   948
					break;
hgs
parents:
diff changeset
   949
				case 109:
hgs
parents:
diff changeset
   950
					aGenrePtr.Append(KGenrePornGroove);
hgs
parents:
diff changeset
   951
					break;
hgs
parents:
diff changeset
   952
				case 110:
hgs
parents:
diff changeset
   953
					aGenrePtr.Append(KGenreSatire);
hgs
parents:
diff changeset
   954
					break;
hgs
parents:
diff changeset
   955
				case 111:
hgs
parents:
diff changeset
   956
					aGenrePtr.Append(KGenreSlowJam);
hgs
parents:
diff changeset
   957
					break;
hgs
parents:
diff changeset
   958
				case 112:
hgs
parents:
diff changeset
   959
					aGenrePtr.Append(KGenreClub);
hgs
parents:
diff changeset
   960
					break;
hgs
parents:
diff changeset
   961
				case 113:
hgs
parents:
diff changeset
   962
					aGenrePtr.Append(KGenreTango);
hgs
parents:
diff changeset
   963
					break;
hgs
parents:
diff changeset
   964
				case 114:
hgs
parents:
diff changeset
   965
					aGenrePtr.Append(KGenreSamba);
hgs
parents:
diff changeset
   966
					break;
hgs
parents:
diff changeset
   967
				case 115:
hgs
parents:
diff changeset
   968
					aGenrePtr.Append(KGenreFolklore);
hgs
parents:
diff changeset
   969
					break;
hgs
parents:
diff changeset
   970
				case 116:
hgs
parents:
diff changeset
   971
					aGenrePtr.Append(KGenreBallad);
hgs
parents:
diff changeset
   972
					break;
hgs
parents:
diff changeset
   973
				case 117:
hgs
parents:
diff changeset
   974
					aGenrePtr.Append(KGenrePowerBallad);
hgs
parents:
diff changeset
   975
					break;
hgs
parents:
diff changeset
   976
				case 118:
hgs
parents:
diff changeset
   977
					aGenrePtr.Append(KGenreRhythmicSoul);
hgs
parents:
diff changeset
   978
					break;
hgs
parents:
diff changeset
   979
				case 119:
hgs
parents:
diff changeset
   980
					aGenrePtr.Append(KGenreFreestyle);
hgs
parents:
diff changeset
   981
					break;
hgs
parents:
diff changeset
   982
				case 120:
hgs
parents:
diff changeset
   983
					aGenrePtr.Append(KGenreDuet);
hgs
parents:
diff changeset
   984
					break;
hgs
parents:
diff changeset
   985
				case 121:
hgs
parents:
diff changeset
   986
					aGenrePtr.Append(KGenrePunkRock);
hgs
parents:
diff changeset
   987
					break;
hgs
parents:
diff changeset
   988
				case 122:
hgs
parents:
diff changeset
   989
					aGenrePtr.Append(KGenreDrumSolo);
hgs
parents:
diff changeset
   990
					break;
hgs
parents:
diff changeset
   991
				case 123:
hgs
parents:
diff changeset
   992
					aGenrePtr.Append(KGenreAcapella);
hgs
parents:
diff changeset
   993
					break;
hgs
parents:
diff changeset
   994
				case 124:
hgs
parents:
diff changeset
   995
					aGenrePtr.Append(KGenreEuroHouse);
hgs
parents:
diff changeset
   996
					break;
hgs
parents:
diff changeset
   997
				case 125:
hgs
parents:
diff changeset
   998
					aGenrePtr.Append(KGenreDanceHall);
hgs
parents:
diff changeset
   999
					break;
hgs
parents:
diff changeset
  1000
				case 199:
hgs
parents:
diff changeset
  1001
					aGenrePtr.Append(KGenrePodcast);
hgs
parents:
diff changeset
  1002
					break;
hgs
parents:
diff changeset
  1003
				default:
hgs
parents:
diff changeset
  1004
					break;
hgs
parents:
diff changeset
  1005
			}
hgs
parents:
diff changeset
  1006
	}
hgs
parents:
diff changeset
  1007
		
hgs
parents:
diff changeset
  1008
			
hgs
parents:
diff changeset
  1009
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1010
// 3GPExtParser::TranslateMP4Err
hgs
parents:
diff changeset
  1011
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1012
//
hgs
parents:
diff changeset
  1013
TInt C3GPExtParser::TranslateMP4Err(MP4Err aError)
hgs
parents:
diff changeset
  1014
	{
hgs
parents:
diff changeset
  1015
#ifdef _DEBUG
hgs
parents:
diff changeset
  1016
	RDebug::Print(_L("CMetaDataParserMP4::TranslateMP4Err [%d]"), aError);
hgs
parents:
diff changeset
  1017
#endif
hgs
parents:
diff changeset
  1018
	TInt err;
hgs
parents:
diff changeset
  1019
	switch ( aError )
hgs
parents:
diff changeset
  1020
		{
hgs
parents:
diff changeset
  1021
		case MP4_OK:
hgs
parents:
diff changeset
  1022
			err = KErrNone;
hgs
parents:
diff changeset
  1023
			break;
hgs
parents:
diff changeset
  1024
		case MP4_OUT_OF_MEMORY:
hgs
parents:
diff changeset
  1025
			err = KErrNoMemory;
hgs
parents:
diff changeset
  1026
			break;
hgs
parents:
diff changeset
  1027
		case MP4_NOT_AVAILABLE:
hgs
parents:
diff changeset
  1028
			err = KErrNotReady;
hgs
parents:
diff changeset
  1029
			break;
hgs
parents:
diff changeset
  1030
		case MP4_FILE_ERROR:
hgs
parents:
diff changeset
  1031
			err = KErrBadHandle;
hgs
parents:
diff changeset
  1032
			break;
hgs
parents:
diff changeset
  1033
		case MP4_INVALID_TYPE:
hgs
parents:
diff changeset
  1034
			err = KErrNotSupported;
hgs
parents:
diff changeset
  1035
			break;
hgs
parents:
diff changeset
  1036
		case MP4_TIMESCALE_NOT_SET:
hgs
parents:
diff changeset
  1037
			err = KErrNotReady;
hgs
parents:
diff changeset
  1038
			break;
hgs
parents:
diff changeset
  1039
		case MP4_NOT_STREAMABLE:
hgs
parents:
diff changeset
  1040
		case MP4_NO_REQUESTED_FRAME:
hgs
parents:
diff changeset
  1041
		case MP4_CANT_SEEK:
hgs
parents:
diff changeset
  1042
		case MP4_INVALID_INPUT_STREAM:
hgs
parents:
diff changeset
  1043
		case MP4_NO_FRAME:
hgs
parents:
diff changeset
  1044
			err = KErrArgument;
hgs
parents:
diff changeset
  1045
			break;
hgs
parents:
diff changeset
  1046
		case MP4_ERROR:
hgs
parents:
diff changeset
  1047
		case MP4_FILE_MODE:
hgs
parents:
diff changeset
  1048
		case MP4_BUFFER_TOO_SMALL:
hgs
parents:
diff changeset
  1049
		case MP4_END_OF_VIDEO:
hgs
parents:
diff changeset
  1050
		case MP4_METADATA_ERROR:
hgs
parents:
diff changeset
  1051
		case MP4_NO_VIDEO:
hgs
parents:
diff changeset
  1052
		case MP4_NO_AUDIO:
hgs
parents:
diff changeset
  1053
			err = KErrGeneral;
hgs
parents:
diff changeset
  1054
			break;
hgs
parents:
diff changeset
  1055
		default:
hgs
parents:
diff changeset
  1056
			err = KErrGeneral;
hgs
parents:
diff changeset
  1057
			break;
hgs
parents:
diff changeset
  1058
		}
hgs
parents:
diff changeset
  1059
	return err;
hgs
parents:
diff changeset
  1060
	}
hgs
parents:
diff changeset
  1061
//  End of File