os/mm/mmplugins/lib3gpunittest/inc/tsu_3gplibrary_composer_api.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#ifndef TSU_3GPLIBRARY_COMPOSER_API_H
sl@0
    17
#define TSU_3GPLIBRARY_COMPOSER_API_H
sl@0
    18
sl@0
    19
#include <test/testexecutestepbase.h>
sl@0
    20
#include <c3gplibrary.h>
sl@0
    21
sl@0
    22
class CActiveScheduler;
sl@0
    23
sl@0
    24
//
sl@0
    25
// Base class for testing composer.  Provides a framework for:
sl@0
    26
//
sl@0
    27
// 1. Setup
sl@0
    28
// 2. Add video/audio data
sl@0
    29
// 3. Add user data
sl@0
    30
//
sl@0
    31
class C3GPLibComposeBase : public CTestStep
sl@0
    32
	{
sl@0
    33
	public:
sl@0
    34
		C3GPLibComposeBase();
sl@0
    35
		
sl@0
    36
		TVerdict doTestStepPreambleL();
sl@0
    37
		TVerdict doTestStepPostambleL();
sl@0
    38
		TVerdict doTestStepL();
sl@0
    39
		
sl@0
    40
	protected:		
sl@0
    41
		virtual C3GPCompose* doTestStepCreateComposerL();
sl@0
    42
sl@0
    43
		virtual void doTestStepComposeOpenL(C3GPCompose& aComposer) = 0;
sl@0
    44
		
sl@0
    45
		// default to do nothing & return the current test result
sl@0
    46
		virtual void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);		
sl@0
    47
		virtual void doTestStepComposeSetUserDataL(C3GPCompose& aComposer);		
sl@0
    48
sl@0
    49
	private:
sl@0
    50
		CActiveScheduler* iScheduler;
sl@0
    51
	};
sl@0
    52
sl@0
    53
//
sl@0
    54
// Setup a composer via filepath supplied by the configuration file
sl@0
    55
// 
sl@0
    56
_LIT(K3GPComposeFilename, "3GPComposeFilename");
sl@0
    57
class C3GPLibComposeFilename : public C3GPLibComposeBase
sl@0
    58
	{
sl@0
    59
	public:
sl@0
    60
		C3GPLibComposeFilename();
sl@0
    61
		
sl@0
    62
		TVerdict doTestStepPreambleL();
sl@0
    63
		TVerdict doTestStepPostambleL();	
sl@0
    64
sl@0
    65
	protected:
sl@0
    66
		virtual void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
    67
sl@0
    68
	protected:
sl@0
    69
		RBuf iFilename;
sl@0
    70
	};
sl@0
    71
sl@0
    72
//
sl@0
    73
// Class to test execution of composer APIs without any setup.
sl@0
    74
//
sl@0
    75
_LIT(K3GPComposeWithoutOpen, "3GPComposeWithoutOpen");
sl@0
    76
class C3GPLibComposeWithoutOpen : public C3GPLibComposeBase
sl@0
    77
	{
sl@0
    78
	public:
sl@0
    79
		C3GPLibComposeWithoutOpen();
sl@0
    80
		
sl@0
    81
	private:
sl@0
    82
		// virtual functions overriding base class implementations
sl@0
    83
		void doTestStepComposeOpenL(C3GPCompose& aComposer);		
sl@0
    84
		void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);		
sl@0
    85
		void doTestStepComposeSetUserDataL(C3GPCompose& aComposer);				
sl@0
    86
	};
sl@0
    87
sl@0
    88
//
sl@0
    89
// Class to test composer with video/audio properties supplied by 
sl@0
    90
// the configuration file.
sl@0
    91
//
sl@0
    92
_LIT(K3GPComposeFile, "3GPComposeFile");
sl@0
    93
class C3GPLibComposeFile : public C3GPLibComposeBase
sl@0
    94
	{
sl@0
    95
	public:
sl@0
    96
		C3GPLibComposeFile();
sl@0
    97
		
sl@0
    98
		TVerdict doTestStepPreambleL();
sl@0
    99
		TVerdict doTestStepPostambleL();	
sl@0
   100
sl@0
   101
	protected:
sl@0
   102
		virtual void doTestStepComposeOpenL(C3GPCompose& aComposer);		
sl@0
   103
		virtual void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);
sl@0
   104
		
sl@0
   105
		T3GPVideoPropertiesBase* SetupVideoPropertiesL();
sl@0
   106
		virtual T3GPVideoPropertiesBase* SetupAvcVideoL();
sl@0
   107
		virtual T3GPVideoPropertiesBase* SetupH263VideoL();
sl@0
   108
		virtual T3GPVideoPropertiesBase* SetupMpeg4VideoL();
sl@0
   109
		
sl@0
   110
		T3GPAudioPropertiesBase* SetupAudioPropertiesL();
sl@0
   111
		virtual T3GPAudioPropertiesBase* SetupQcelpAudioL();
sl@0
   112
		virtual T3GPAudioPropertiesBase* SetupAmrAudioL();
sl@0
   113
		virtual T3GPAudioPropertiesBase* SetupMpeg4AudioL();		
sl@0
   114
		
sl@0
   115
	protected:
sl@0
   116
		T3GPFileFormatType iInputFileFormat;	// requested file format
sl@0
   117
		T3GPVideoType iVideoType;
sl@0
   118
		T3GPAudioType iAudioType;
sl@0
   119
		RFs iFs;
sl@0
   120
		RFile iFile;
sl@0
   121
		RBuf iFileName;
sl@0
   122
		RFile64 iFile64;		
sl@0
   123
	};
sl@0
   124
sl@0
   125
//
sl@0
   126
// Class to compose file conforms to the expected file format as supplied by 
sl@0
   127
// the test configuration.
sl@0
   128
//
sl@0
   129
_LIT(K3GPComposeFileWithFileFormatCheck, "3GPComposeFileWithFileFormatCheck");
sl@0
   130
class C3GPLibComposeFileWithFileFormatCheck : public C3GPLibComposeFile
sl@0
   131
	{
sl@0
   132
	public:
sl@0
   133
		C3GPLibComposeFileWithFileFormatCheck();
sl@0
   134
		
sl@0
   135
		TVerdict doTestStepPreambleL();		
sl@0
   136
		TVerdict doTestStepL();	
sl@0
   137
sl@0
   138
	private:
sl@0
   139
		TVerdict VerifyFileFormatL(const RFile& aFile);
sl@0
   140
sl@0
   141
	private:
sl@0
   142
		T3GPFileFormatType iOutputFileFormat;	// expected file format		
sl@0
   143
	};
sl@0
   144
sl@0
   145
//
sl@0
   146
// Class to compose file with video frames of all possible combinations of different 
sl@0
   147
// dependencies 
sl@0
   148
//
sl@0
   149
_LIT(K3GPComposeFrameDependency, "3GPComposeFrameDependency");
sl@0
   150
class C3GPLibComposeFrameDependency : public C3GPLibComposeFile
sl@0
   151
	{
sl@0
   152
	public:
sl@0
   153
		C3GPLibComposeFrameDependency();
sl@0
   154
		
sl@0
   155
	private:
sl@0
   156
		void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);
sl@0
   157
	};
sl@0
   158
sl@0
   159
//
sl@0
   160
// Class to compose file with video properties as specified in the test
sl@0
   161
// configuration
sl@0
   162
//
sl@0
   163
_LIT(K3GPComposeVideoProperties, "3GPComposeVideoProperties");
sl@0
   164
class C3GPLibComposeVideoProperties : public C3GPLibComposeFile
sl@0
   165
	{
sl@0
   166
	public:
sl@0
   167
		C3GPLibComposeVideoProperties();		
sl@0
   168
		
sl@0
   169
		TVerdict doTestStepPreambleL();
sl@0
   170
		TVerdict doTestStepPostambleL();	
sl@0
   171
		
sl@0
   172
	private:
sl@0
   173
		virtual T3GPVideoPropertiesBase* SetupAvcVideoL();
sl@0
   174
		virtual T3GPVideoPropertiesBase* SetupH263VideoL();
sl@0
   175
		virtual T3GPVideoPropertiesBase* SetupMpeg4VideoL();
sl@0
   176
		
sl@0
   177
	private:
sl@0
   178
		TSize iSize;
sl@0
   179
		TUint iMaxBitRate;
sl@0
   180
		TUint iAvgBitRate;
sl@0
   181
		RBuf8 iDecoderSpecInfo;
sl@0
   182
		TUint iTimescale;
sl@0
   183
		TInt iVideoLevel;
sl@0
   184
	};
sl@0
   185
sl@0
   186
//
sl@0
   187
// Class to compose file with audio properties as specified in the test
sl@0
   188
// configuration
sl@0
   189
//
sl@0
   190
_LIT(K3GPComposeAudioProperties, "3GPComposeAudioProperties");
sl@0
   191
class C3GPLibComposeAudioProperties : public C3GPLibComposeFile
sl@0
   192
	{
sl@0
   193
	public:
sl@0
   194
		C3GPLibComposeAudioProperties();		
sl@0
   195
		
sl@0
   196
		TVerdict doTestStepPreambleL();
sl@0
   197
		TVerdict doTestStepPostambleL();	
sl@0
   198
		
sl@0
   199
	private:
sl@0
   200
		T3GPAudioPropertiesBase* SetupQcelpAudioL();
sl@0
   201
		T3GPAudioPropertiesBase* SetupAmrAudioL();
sl@0
   202
		T3GPAudioPropertiesBase* SetupMpeg4AudioL();		
sl@0
   203
		
sl@0
   204
	private:
sl@0
   205
		TInt iFps;
sl@0
   206
		RBuf8 iDecoderSpecInfo;
sl@0
   207
		TInt iTimescale;
sl@0
   208
		T3GPQcelpStorageMode iQCelpMode;
sl@0
   209
		TInt iModeSet;		
sl@0
   210
	};
sl@0
   211
sl@0
   212
//
sl@0
   213
// Class to create composer using buffer sizes and counts specified by test
sl@0
   214
// configuration
sl@0
   215
//
sl@0
   216
_LIT(K3GPComposeWithSpecificBufferSize, "3GPComposeWithSpecificBufferSize");
sl@0
   217
class C3GPLibComposeWithSpecificBufferSize : public C3GPLibComposeFile
sl@0
   218
	{
sl@0
   219
	public:
sl@0
   220
		C3GPLibComposeWithSpecificBufferSize();		
sl@0
   221
		
sl@0
   222
		TVerdict doTestStepPreambleL();		
sl@0
   223
		
sl@0
   224
	private:
sl@0
   225
		C3GPCompose* doTestStepCreateComposerL();
sl@0
   226
		
sl@0
   227
	private:
sl@0
   228
		TInt iBufferSize;
sl@0
   229
		TInt iBufferMaxCount;
sl@0
   230
	};
sl@0
   231
sl@0
   232
//
sl@0
   233
// Class to compose file with user data as specified by the test 
sl@0
   234
// configuration
sl@0
   235
//
sl@0
   236
_LIT(K3GPComposeUserData, "3GPComposeUserData");
sl@0
   237
class C3GPLibComposeUserData : public C3GPLibComposeFile
sl@0
   238
	{
sl@0
   239
	public:
sl@0
   240
		C3GPLibComposeUserData();	
sl@0
   241
		TVerdict doTestStepPreambleL();
sl@0
   242
		TVerdict doTestStepPostambleL();
sl@0
   243
		
sl@0
   244
	private:	
sl@0
   245
		void doTestStepComposeSetUserDataL(C3GPCompose& aComposer);
sl@0
   246
		
sl@0
   247
	private:
sl@0
   248
		RBuf8 iUserData;		
sl@0
   249
		TBool iUdtaMoov;
sl@0
   250
		TBool iUdtaVideo;
sl@0
   251
		TBool iUdtaAudio;	
sl@0
   252
		TInt  iUdtaLocation;
sl@0
   253
	};
sl@0
   254
sl@0
   255
//
sl@0
   256
// Class to compose file using different composer flags as specified in the test 
sl@0
   257
// configuration
sl@0
   258
//
sl@0
   259
_LIT(K3GPComposeWithFlag, "3GPComposeWithFlag");
sl@0
   260
class C3GPLibComposeWithFlag : public C3GPLibComposeFile
sl@0
   261
	{
sl@0
   262
	public:
sl@0
   263
		C3GPLibComposeWithFlag();
sl@0
   264
		TVerdict doTestStepPreambleL();
sl@0
   265
		
sl@0
   266
	protected:	
sl@0
   267
		virtual void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   268
		
sl@0
   269
	protected:
sl@0
   270
		TInt iComposeFlag;
sl@0
   271
	};
sl@0
   272
sl@0
   273
//
sl@0
   274
// Class to compose file specifying no video nor audio.
sl@0
   275
//
sl@0
   276
_LIT(K3GPComposeWithNoAudioVideo, "3GPComposeWithNoAudioVideo");
sl@0
   277
class C3GPLibComposeWithNoAudioVideo : public C3GPLibComposeFile
sl@0
   278
	{
sl@0
   279
	public:
sl@0
   280
		C3GPLibComposeWithNoAudioVideo();
sl@0
   281
		TVerdict doTestStepPreambleL();		
sl@0
   282
	};
sl@0
   283
sl@0
   284
//
sl@0
   285
// Class to compose file with audio frames of properties specified by test
sl@0
   286
// configuration
sl@0
   287
//
sl@0
   288
_LIT(K3GPComposeAudioFrames, "3GPComposeAudioFrames");
sl@0
   289
class C3GPLibComposeAudioFrames : public C3GPLibComposeFile
sl@0
   290
	{
sl@0
   291
	public:
sl@0
   292
		C3GPLibComposeAudioFrames();
sl@0
   293
		TVerdict doTestStepPreambleL();
sl@0
   294
		TVerdict doTestStepPostambleL();	
sl@0
   295
		
sl@0
   296
	private:
sl@0
   297
		void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);		
sl@0
   298
	
sl@0
   299
	private:
sl@0
   300
		TInt iDuration;
sl@0
   301
		RBuf8 iAudioFrames;
sl@0
   302
	};
sl@0
   303
sl@0
   304
//
sl@0
   305
// Class to compose file with video frames of properties specified by test
sl@0
   306
// configuration
sl@0
   307
//
sl@0
   308
_LIT(K3GPComposeVideoFrame, "3GPComposeVideoFrame");
sl@0
   309
class C3GPLibComposeVideoFrame : public C3GPLibComposeFile
sl@0
   310
	{
sl@0
   311
	public:
sl@0
   312
		C3GPLibComposeVideoFrame();
sl@0
   313
		TVerdict doTestStepPreambleL();
sl@0
   314
		TVerdict doTestStepPostambleL();	
sl@0
   315
		
sl@0
   316
	private:
sl@0
   317
		void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);		
sl@0
   318
	
sl@0
   319
	private:
sl@0
   320
		TBool iKeyFrame;
sl@0
   321
		TInt iDuration;
sl@0
   322
		RBuf8 iVideoFrame;
sl@0
   323
		T3GPFrameDependencies* iDependencies;
sl@0
   324
	};
sl@0
   325
sl@0
   326
sl@0
   327
//
sl@0
   328
// Class to open the composer again before closing it
sl@0
   329
//
sl@0
   330
_LIT(K3GPComposeOpenAgain, "3GPComposeOpenAgain");
sl@0
   331
class C3GPLibComposeOpenAgain: public C3GPLibComposeFile
sl@0
   332
	{
sl@0
   333
	public:
sl@0
   334
		C3GPLibComposeOpenAgain();
sl@0
   335
		
sl@0
   336
	private:
sl@0
   337
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   338
	};
sl@0
   339
sl@0
   340
//
sl@0
   341
// Class to setup composer with a Read-Only file via file handle
sl@0
   342
//
sl@0
   343
_LIT(K3GPComposeOpenReadOnlyFile, "3GPComposeOpenReadOnlyFile");
sl@0
   344
class C3GPLibComposeOpenReadOnlyFile: public C3GPLibComposeWithFlag
sl@0
   345
	{
sl@0
   346
	public:
sl@0
   347
		C3GPLibComposeOpenReadOnlyFile();		
sl@0
   348
		TVerdict doTestStepL();
sl@0
   349
		
sl@0
   350
	private:
sl@0
   351
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   352
	};
sl@0
   353
sl@0
   354
//
sl@0
   355
// Class to setup composer using file path of an opened file using 
sl@0
   356
// ShareAny and then ShareReadersOrWriters mode.
sl@0
   357
//
sl@0
   358
_LIT(K3GPComposeOpenedFile, "3GPComposeOpenedFile");
sl@0
   359
class C3GPLibComposeOpenedFile: public C3GPLibComposeFile
sl@0
   360
	{
sl@0
   361
	public:
sl@0
   362
		C3GPLibComposeOpenedFile();
sl@0
   363
		
sl@0
   364
	private:
sl@0
   365
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   366
	};
sl@0
   367
sl@0
   368
//
sl@0
   369
// Class to use 2 composer opening the same file 
sl@0
   370
//
sl@0
   371
_LIT(K3GPComposeMultiComposeOnSameFile, "3GPComposeMultiComposeOnSameFile");
sl@0
   372
class C3GPLibComposeMultiComposeOnSameFile : public C3GPLibComposeFilename
sl@0
   373
	{
sl@0
   374
	public:
sl@0
   375
		C3GPLibComposeMultiComposeOnSameFile();
sl@0
   376
		
sl@0
   377
	private:
sl@0
   378
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   379
	};
sl@0
   380
sl@0
   381
//
sl@0
   382
// Class to have multiple composers / parser working at the same time 
sl@0
   383
//
sl@0
   384
_LIT(K3GPComposeMultiComposers, "3GPComposeMultiComposers");
sl@0
   385
class C3GPLibComposeMultiComposers : public C3GPLibComposeFilename
sl@0
   386
	{
sl@0
   387
	public:
sl@0
   388
		C3GPLibComposeMultiComposers();
sl@0
   389
		
sl@0
   390
	private:
sl@0
   391
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   392
	};
sl@0
   393
sl@0
   394
//
sl@0
   395
// Class to compose file without calling complete first 
sl@0
   396
//
sl@0
   397
_LIT(K3GPComposeCloseComposerWithoutComplete, "3GPComposeCloseComposerWithoutComplete");
sl@0
   398
class C3GPLibComposeCloseComposerWithoutComplete : public C3GPLibComposeFilename
sl@0
   399
	{
sl@0
   400
	public:
sl@0
   401
		C3GPLibComposeCloseComposerWithoutComplete();
sl@0
   402
		
sl@0
   403
	private:
sl@0
   404
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   405
	};
sl@0
   406
sl@0
   407
//
sl@0
   408
// Class to test cleanup of temporary files when composer panics    
sl@0
   409
//
sl@0
   410
_LIT(K3GPComposePanic, "3GPComposePanic");
sl@0
   411
class C3GPLibComposePanic : public C3GPLibComposeFilename
sl@0
   412
	{
sl@0
   413
	public:
sl@0
   414
		C3GPLibComposePanic();
sl@0
   415
		TVerdict doTestStepPreambleL();
sl@0
   416
		TVerdict doTestStepPostambleL();
sl@0
   417
		
sl@0
   418
	private:
sl@0
   419
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   420
		
sl@0
   421
	private:
sl@0
   422
		TBool iPanic;
sl@0
   423
		RBuf iDir;
sl@0
   424
	};
sl@0
   425
sl@0
   426
//
sl@0
   427
// Class to compose a large file >2GB
sl@0
   428
//
sl@0
   429
_LIT(K3GPComposeLargeFile, "3GPComposeLargeFile");
sl@0
   430
class C3GPLibComposeLargeFile : public C3GPLibComposeFile
sl@0
   431
	{
sl@0
   432
	public:
sl@0
   433
		C3GPLibComposeLargeFile();		
sl@0
   434
		
sl@0
   435
		TVerdict doTestStepPreambleL();
sl@0
   436
		TVerdict doTestStepPostambleL();	
sl@0
   437
		
sl@0
   438
	private:
sl@0
   439
		C3GPCompose* doTestStepCreateComposerL();
sl@0
   440
sl@0
   441
		void doTestStepComposeOpenL(C3GPCompose& aComposer);
sl@0
   442
		void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);	
sl@0
   443
sl@0
   444
	private:
sl@0
   445
		TInt iComposeFlag;
sl@0
   446
	};
sl@0
   447
sl@0
   448
//
sl@0
   449
// Class to compose a large file >2GB with user data
sl@0
   450
//
sl@0
   451
_LIT(K3GPComposeLargeFileUserData, "3GPComposeLargeFileUserData");
sl@0
   452
class C3GPLibComposeLargeFileUserData : public C3GPLibComposeLargeFile
sl@0
   453
	{
sl@0
   454
	public:
sl@0
   455
		C3GPLibComposeLargeFileUserData();		
sl@0
   456
		
sl@0
   457
	private:
sl@0
   458
		void doTestStepComposeSetUserDataL(C3GPCompose& aComposer);
sl@0
   459
		void WriteInt32(TUint8* aPtr, TInt32 aData);	
sl@0
   460
sl@0
   461
	private:
sl@0
   462
	};
sl@0
   463
sl@0
   464
//
sl@0
   465
// Class to compose a large file >2GB using 32bit APIs
sl@0
   466
//
sl@0
   467
_LIT(K3GPComposeLargeFile32bitAPI, "3GPComposeLargeFile32bitAPI");
sl@0
   468
class C3GPLibComposeLargeFile32bitAPI : public C3GPLibComposeWithFlag
sl@0
   469
	{
sl@0
   470
	public:
sl@0
   471
		C3GPLibComposeLargeFile32bitAPI();		
sl@0
   472
				
sl@0
   473
	private:
sl@0
   474
		C3GPCompose* doTestStepCreateComposerL();
sl@0
   475
		void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);	
sl@0
   476
sl@0
   477
	private:
sl@0
   478
	};
sl@0
   479
sl@0
   480
//
sl@0
   481
// Class to compose a large file on an mmc card until the disk is full
sl@0
   482
//
sl@0
   483
_LIT(K3GPComposeLargeFileDiskFull, "3GPComposeLargeFileDiskFull");
sl@0
   484
class C3GPLibComposeLargeFileDiskFull : public C3GPLibComposeLargeFile
sl@0
   485
	{
sl@0
   486
	public:
sl@0
   487
		C3GPLibComposeLargeFileDiskFull();		
sl@0
   488
		
sl@0
   489
	private:
sl@0
   490
		void doTestStepComposeWriteVideoAudioL(C3GPCompose& aComposer);
sl@0
   491
sl@0
   492
	private:
sl@0
   493
	};
sl@0
   494
sl@0
   495
//
sl@0
   496
// Class to compose file with AVC video that conforms to the expected AVC profile.
sl@0
   497
//
sl@0
   498
_LIT(K3GPComposeFileWithAvcProfileCheck, "3GPComposeFileWithAvcProfileCheck");
sl@0
   499
class C3GPLibComposeFileWithAvcProfileCheck : public C3GPLibComposeFile
sl@0
   500
    {
sl@0
   501
    public:
sl@0
   502
        C3GPLibComposeFileWithAvcProfileCheck();
sl@0
   503
        virtual T3GPVideoPropertiesBase* SetupAvcVideoL();
sl@0
   504
        TVerdict doTestStepL(); 
sl@0
   505
sl@0
   506
    private:
sl@0
   507
        TVerdict VerifyAvcProfileL(const RFile& aFile);
sl@0
   508
        
sl@0
   509
    private:
sl@0
   510
        TBuf8<7> iAvcDecoderConfigRecord;
sl@0
   511
    };
sl@0
   512
sl@0
   513
sl@0
   514
#endif // TSU_3GPLIBRARY_COMPOSER_API_H
sl@0
   515