os/mm/mmapitest/devvideohaitest/inc/H264DecTestEngine.h
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/mm/mmapitest/devvideohaitest/inc/H264DecTestEngine.h	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,515 @@
     1.4 +/*
     1.5 +* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
     1.6 +* All rights reserved.
     1.7 +* This component and the accompanying materials are made available
     1.8 +* under the terms of "Eclipse Public License v1.0"
     1.9 +* which accompanies this distribution, and is available
    1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.11 +*
    1.12 +* Initial Contributors:
    1.13 +* Nokia Corporation - initial contribution.
    1.14 +*
    1.15 +* Contributors:
    1.16 +*
    1.17 +* Description:  
    1.18 +*
    1.19 +*/
    1.20 +
    1.21 +
    1.22 +
    1.23 +#ifndef __H264DecTestEngine_H
    1.24 +#define __H264DecTestEngine_H
    1.25 +
    1.26 +#include <e32base.h>
    1.27 +#include <e32std.h>
    1.28 +#include <f32file.h>
    1.29 +
    1.30 +#include "T_DevVideoConstants.h"
    1.31 +#include <Videoplayhwdevice.h>
    1.32 +#include <Devvideoplay.h>
    1.33 +#include <Devvideobase.h> 
    1.34 +
    1.35 +//#define __CI_HEADERS__
    1.36 +//#define __SECUREOUTPUTCI__
    1.37 +
    1.38 +
    1.39 +#ifdef __CI_HEADERS__
    1.40 +#include <buffermanagementci.h>  // Custom interface buffre management
    1.41 +
    1.42 +#endif
    1.43 +
    1.44 +
    1.45 +#ifdef __SECUREOUTPUTCI__
    1.46 +#include <secureoutputci.h>
    1.47 +#endif
    1.48 +
    1.49 +#include <Bitdev.h>   // for display device 
    1.50 +#include <Fbs.h>      // for display device
    1.51 +#include <math.h> //pow
    1.52 +
    1.53 +#ifdef __RESOURCENOTIFICATION__
    1.54 +#include <devvideostandardcustominterfaces.h>
    1.55 +#endif
    1.56 +
    1.57 +
    1.58 +
    1.59 +
    1.60 +
    1.61 +//////////////////
    1.62 +// Utility function
    1.63 +//////////////////
    1.64 +
    1.65 +
    1.66 +// MACROS
    1.67 +
    1.68 +// DATA TYPES
    1.69 +
    1.70 +// FORWARD DECLARATIONS
    1.71 +
    1.72 +// CLASS DECLARATION
    1.73 +
    1.74 +const TUint KMaxNumberOfNals = 100;
    1.75 +//const TUint KDataChunkSize = 500000;
    1.76 +
    1.77 +
    1.78 +//#ifdef _DEBUG
    1.79 +#define DEBUGPRINT
    1.80 +//#endif
    1.81 +
    1.82 +// Debug print macro
    1.83 +#ifdef DEBUGPRINT
    1.84 +#include <e32svr.h>
    1.85 +#define PRINT(x) RDebug::Print x;
    1.86 +#else
    1.87 +#define PRINT(x)
    1.88 +#endif
    1.89 +
    1.90 +// ENumerations
    1.91 +
    1.92 +
    1.93 +enum TEngineState
    1.94 +     {
    1.95 +     EStateNone,
    1.96 +     ECreated,
    1.97 +     EInitialized,
    1.98 +     ERunning,	
    1.99 +     EPaused,	
   1.100 +     EStopped,	
   1.101 +     };
   1.102 +
   1.103 +enum TYuvDataOptions
   1.104 +     {
   1.105 +     EYuv420Planner,
   1.106 +     EYuv422Interleaved
   1.107 +     };
   1.108 +
   1.109 +enum THWDevice 
   1.110 +	{
   1.111 +	EPostProcessor,
   1.112 +	EDecoder
   1.113 +	};
   1.114 +
   1.115 +enum TFLVFileType
   1.116 +	{
   1.117 +	EFLVNotSet,
   1.118 +	EFLVContainer,
   1.119 +	EFLVRaw
   1.120 +	};
   1.121 +
   1.122 +// CLASS DECLARATION
   1.123 +class CVDecTestAO;
   1.124 +class CVDecTestEngine;
   1.125 +class MVDecEngineObserver;
   1.126 +
   1.127 +
   1.128 +/**
   1.129 +*  Video Decoder Test Engine Observer
   1.130 +*  
   1.131 +*  @lib 
   1.132 +*  @since 
   1.133 +*/
   1.134 +class MVDecEngineObserver
   1.135 +{
   1.136 +public:
   1.137 +	
   1.138 +	virtual void MvdeStreamEndReached() = 0;
   1.139 +	virtual void MvdeSetError(TInt aError) = 0;
   1.140 +};
   1.141 +
   1.142 +/**
   1.143 +*  Video Decoder Test Engine 
   1.144 +*  implements common test execution block
   1.145 +*  @lib 
   1.146 +*  @since 
   1.147 +*/
   1.148 +class CVDecTestEngine : public CBase , public MMMFDevVideoPlayObserver 
   1.149 +#ifdef __CI_HEADERS__
   1.150 +,public MMmfVideoBufferManagementObserver
   1.151 +#endif
   1.152 +#ifdef __RESOURCENOTIFICATION__
   1.153 +,public MMmfVideoResourceObserver
   1.154 +#endif
   1.155 +    {
   1.156 +public:
   1.157 +
   1.158 +     
   1.159 +     TEngineState iState;
   1.160 +
   1.161 +public:
   1.162 +    CVDecTestEngine () { }
   1.163 +    ~CVDecTestEngine ();
   1.164 +    static CVDecTestEngine* NewL(MVDecEngineObserver& aTestClass);
   1.165 +    
   1.166 +    //info test method
   1.167 +    void SetCodecType(TVideoCodec aCodec);
   1.168 +    //void GetDecoderInfoL(const TDesC8& aMimeType, TBool aExactMatch);
   1.169 +    //void GetPostProcessorInfoL(TInt aCombination);
   1.170 +    void GetHeaderInformationL();
   1.171 +    
   1.172 +	void GetHeaderInformationL(TVideoDataUnitType aDataUnitType, TVideoDataUnitEncapsulation aDataUnitEncapsulation);
   1.173 +    //void GetHeaderInfoL(const TUid& aDecUid, TVideoDataUnitType aDataUnitType, TVideoDataUnitEncapsulation aDataUnitEncapsulation);
   1.174 +	void GetBitstreamCountersL();
   1.175 +	void PreDecoderBufferBytes();	
   1.176 +    void PictureBufferBytes();
   1.177 +    
   1.178 +    // Video test control methods
   1.179 +    //void SetUpL(TBool aScreenAcces);
   1.180 +    void SetUpL(TSize aSize, TBool aScreenAccess, TBool aCIBuffMgmt);
   1.181 +    void CreateDecoderL(const TUid& aDecUid, TVideoCodec aCodec, const TDesC8& aMimeType, TYuvDataOptions aOutFormat);
   1.182 +    void CreatePostProcessorL(const TUid& aPostprocUid, const TYuvFormat& aInputFormat, const TUncompressedVideoFormat& aOutputFormat, TUint32 aCombination);
   1.183 +    void CreateDecPostprocL(const TUid& aDecUid, TVideoCodec aCodec, const TUid& aPostprocUid, TUint32 aCombination);
   1.184 +    TInt Initialize();
   1.185 +    TInt InitializeAndDelete();
   1.186 +    TInt Start(TBool aInputEnd);
   1.187 +    TInt Stop();
   1.188 +    TInt Resume();
   1.189 +    TInt Pause();
   1.190 +    void FreezePicture(TTimeIntervalMicroSeconds aTimeStamp);
   1.191 +    void ReleaseFreeze(TTimeIntervalMicroSeconds aTimeStamp);
   1.192 +    void TearDown();    
   1.193 +    void SetFrameMatch(TBool aMatch);
   1.194 +    TInt FrameJump(TInt aNumToJump );
   1.195 +    void SetFrameDrop(TInt aFrameInterval, TInt aFrameNum, TBool aFrameDropMarker );
   1.196 +    void SetFLVPassword(TDesC8& aPassword); 
   1.197 +    void EnableInstantFpsL(TFileName& aOutFileName);
   1.198 +    
   1.199 +    // Select and set Postprocessing  
   1.200 +    void SetPostProcessTypesL(TInt aHWDevice, TUint32 aCombination);
   1.201 +    void SetInputCropOptionsL(TInt aHWDevice, TRect aCrop);
   1.202 +    void SetYuvToRgbOptionsL(TInt aHWDevice, TYuvToRgbOptions aOptions);
   1.203 +    void SetRotateOptionsL(TInt aHWDevice, TRotationType aRotation);
   1.204 +    void SetScaleOptionsL(TInt aHWDevice, TSize aSize, TBool aAntiAliasFiltering);
   1.205 +    void SetScaleOptionsL(TInt aNumFactor,TInt aDenoFactor, TBool aAntiAliasFiltering);
   1.206 +    void SetOutputCropOptionsL(TInt aHWDevice, TRect aCrop);
   1.207 +    void CommitL();
   1.208 +    void Revert();    
   1.209 +    
   1.210 +    void SetClockSource();
   1.211 +    void SetInputBufferSize(TInt aSize);
   1.212 +    void SetHrdVbvSpec(THrdVbvSpecification aHrdVbvSpec, const TDesC8& aHrdVbvParams);
   1.213 +    void SetPostProcSpecificOptionsL(TInt aHWDevice, const TDesC8& aOptions);
   1.214 +    void SetScreenClipRegion(TRegion& aRegion);
   1.215 +    void SetPauseOnClipFail(TBool aPause);    
   1.216 +    void IsPlaying();
   1.217 +    void GetPictureCounters();
   1.218 +    void NumFreeBuffers();
   1.219 +    void NumComplexityLevels(TInt aHWDevice);
   1.220 +    void InputEnd();
   1.221 +    void GetNewPictureInfo(TTimeIntervalMicroSeconds& aEarliestTimestamp, 
   1.222 +						   TTimeIntervalMicroSeconds& aLatestTimestamp);
   1.223 +    void GetTimedSnapshotL(const TUncompressedVideoFormat& aFormat, 
   1.224 +							const TTimeIntervalMicroSeconds& aPresentationTimestamp); 
   1.225 +	void GetTimedSnapshotL(const TUncompressedVideoFormat& aFormat, const TPictureId& aPictureId);						
   1.226 +    void CancelTimedSnapshot();
   1.227 +    void GetSupportedSnapshotFormatsL();
   1.228 +    
   1.229 +    // Complexity level
   1.230 +    void SetComplexityLevel(TInt aHWDevice, TInt aLevel);
   1.231 +    void GetComplexityLevelInfo(TInt aHWDevice, TInt aLevel);
   1.232 +    
   1.233 +    //DSA
   1.234 +    void StartDirectScreenAccessL();
   1.235 +    void StartDirectScreenAccessL(TRect aVideoRect, TRect aClipRegion);
   1.236 +    void AbortDirectScreenAccess();    
   1.237 +    void Redraw();
   1.238 +    
   1.239 +    void SetWindowRect(TInt aX, TInt aY, TSize aSize);
   1.240 +    void SetSecondScreenAccess(TBool aStatus);
   1.241 +    
   1.242 +    // snap shot methods
   1.243 +    void GetSnapshotL(TUncompressedVideoFormat& aFormat);
   1.244 +    
   1.245 +    void EnableSynchronization(TInt aFrameRate);
   1.246 +    void EnableFrameMeasurementTest(TBool aEnable);
   1.247 +    void SetSecureOutputL(TBool aSecure);
   1.248 +    void SetPosition(const TTimeIntervalMicroSeconds& aPlaybackPosition);
   1.249 +    void ResetPosition();
   1.250 +    TTimeIntervalMicroSeconds PlaybackPosition();
   1.251 +    void DecodingPosition();
   1.252 +    void ListFrameSizeL(RArray<TInt> aFramesizes);
   1.253 +    TInt GetFrameSizeCount();
   1.254 +    //void GetPictureCounter();
   1.255 +    void SetLandscapeMode();
   1.256 +    void SelectDecoderL(const TUid& aUid);
   1.257 +    void SelectPostProcessorL(const TUid& aUid);
   1.258 +    void SetInputFormatL(TInt aHwDev, const TUncompressedVideoFormat& aFormat);
   1.259 +    void SetInputFormatL(TInt aHwDev, const CCompressedVideoFormat& aFormat, 
   1.260 +						 TVideoDataUnitType aDataUnitType, TVideoDataUnitEncapsulation aEncapsulation,
   1.261 +						 TBool aDataInOrder);
   1.262 +	void SetOutputFormatL(TInt aHwDev, const TUncompressedVideoFormat& aFormat);						 
   1.263 +    void SetBufferOptionsL(const CMMFDevVideoPlay::TBufferOptions& aOptions);
   1.264 +    void GetBufferOptions();
   1.265 +    void SynchronizeDecoding(TBool aSynch);
   1.266 +    void SetVideoDestScreenL(TBool aDest);
   1.267 +    void SetYuvToRgbOptionsL(TInt aHWDevice, const TYuvToRgbOptions& aOptions, const TYuvFormat& aYuvFormat, TRgbFormat aRgbFormat);
   1.268 +    void FindCommonFormatsL();
   1.269 +    TInt FindDecodersL(const TDesC8& aMimeType, TUint32 aPostProcType, TBool aExactMatch, TUid& aUid);
   1.270 +    TInt FindPostProcessorsL(TUid& aUid, TUint32 aPostProcType);
   1.271 +    void GetDecoderListL();
   1.272 +    void ConfigureDecoderL(TVideoPictureHeader& aVideoPictureHeader);
   1.273 +    void ConfigureDecoderL();
   1.274 +    void GetOutputFormatListL(TInt aHWDevice);
   1.275 +    void GetPostProcessorListL();
   1.276 +    void VideoDecoderInfoL(TUid aVideoDecoder);
   1.277 +    void PostProcessorInfoL(TUid aPostProcessor);
   1.278 +    
   1.279 +    TReal ConvertToRealL(const TDesC& aPtr);
   1.280 +    
   1.281 +    //File operations
   1.282 +    void OpenFileL(TFileName& aInFileName);
   1.283 +    void OpenFileL(TFileName& aOutFileName, TFileName& aInFileName);
   1.284 +    void CloseFile();
   1.285 +    void CorruptInput(TInt aFilter, TInt aInterval, TInt aFrameNum, TInt aPct);
   1.286 +    void CorruptEngineL();
   1.287 +    void CorruptEngineL( TVideoInputBuffer* aCodedInBuffer ); 
   1.288 +    TInt CreateCorruptedFileL(); 
   1.289 +    void OpenFileToWriteL(TFileName& aInFileName);
   1.290 +    TInt ReadVC1FrameL(TVideoInputBuffer* aCodedInBuffer);
   1.291 +    TInt ReadMPEG4FrameL(TVideoInputBuffer* aCodedInBuffer); 
   1.292 +    
   1.293 +    TInt SupportsFormatL(const TUid& aUid, const CCompressedVideoFormat& aFormat);
   1.294 +	TInt SupportsFormatInfoL(const TUid& aUid, const CCompressedVideoFormat& aFormat);		
   1.295 +	TInt SupportsAccelerationL(TInt aHwDev, const TUid& aUid);		
   1.296 +	TInt SupportsDirectDisplayL(TInt aHwDev, const TUid& aUid);		
   1.297 +	TInt SupportsMaxBitrateL(const TUid& aUid, TInt aBitrate);		
   1.298 +	TInt SupportsMaxPictureSizeL(const TUid& aUid, TSize aSize);		
   1.299 +	TInt SupportsMaxPictureRateL(const TUid& aUid, TPictureRateAndSize& aRateAndSize);			
   1.300 +	TInt SupportsPictureLossL(const TUid& aUid);		
   1.301 +	TInt SupportsSliceLossL(const TUid& aUid);
   1.302 + 	TInt SupportsOutputFormatL(TInt aHwdev, const TUncompressedVideoFormat& aFormat);
   1.303 + 	void SetSlowClient(TBool aOption);
   1.304 + 	void SetFastClient(TBool aOption);
   1.305 + 	TInt SetAUFormat();
   1.306 + 	TInt MoveFileL(const TDesC &anOld, const TDesC &aNew);
   1.307 + 	TInt CopyFileL(const TDesC &anOld, const TDesC &aNew); 	
   1.308 + 	
   1.309 +    
   1.310 +    // For Active objects
   1.311 +    void HandleNewBufferL();
   1.312 +        
   1.313 +    // From DevVideo Play observer 
   1.314 +    void MdvpoNewBuffers();
   1.315 +    void MdvpoReturnPicture(TVideoPicture* aPicture);
   1.316 +    void MdvpoSupplementalInformation(const TDesC8& aData, const TTimeIntervalMicroSeconds& aTimestamp, const TPictureId& aPictureId);
   1.317 +    void MdvpoPictureLoss();
   1.318 +    void MdvpoPictureLoss(const TArray<TPictureId>& aPictures);
   1.319 +    void MdvpoSliceLoss(TUint aFirstMacroblock, TUint aNumMacroblocks, const TPictureId& aPicture);
   1.320 +    void MdvpoReferencePictureSelection(const TDesC8& aSelectionData);
   1.321 +    void MdvpoTimedSnapshotComplete(TInt aError, TPictureData* aPictureData, const TTimeIntervalMicroSeconds& aPresentationTimestamp, const TPictureId& aPictureId);
   1.322 +    void MdvpoNewPictures();
   1.323 +    void MdvpoFatalError(TInt aError);
   1.324 +    void MdvpoInitComplete(TInt aError);
   1.325 +    void MdvpoStreamEnd();
   1.326 +   
   1.327 +    // Buffer Management Custom Interface observer 
   1.328 +#ifdef __CI_HEADERS__    
   1.329 +    void MmvbmoNewBuffers();
   1.330 +    void MmvbmoReleaseBuffers();
   1.331 +#endif
   1.332 +#ifdef __RESOURCENOTIFICATION__
   1.333 +	void MmvroResourcesLost(TUid aMediaDevice);
   1.334 +    void MmvroResourcesRestored(TUid aMediaDevice);
   1.335 +#endif
   1.336 + 
   1.337 +protected:
   1.338 +    // Own test functions
   1.339 +    void GetInputBufferL();
   1.340 +    void FillAndSendBufferL();
   1.341 +    void GetReturnedPictureL();
   1.342 +    void SaveAndReturnPicture();
   1.343 +    TInt ReadOneCodedPicture(TVideoInputBuffer* aCodedInBuffer);
   1.344 +    TInt ReadOneCodedPicture(TVideoInputBuffer* aCodedInBuffer, TInt aSize);
   1.345 +    TInt ReadRawPicture();
   1.346 +     
   1.347 +private:
   1.348 +	TUint8 ReadByteFromFile();
   1.349 +	void GoBackInFile(TUint aBytes);
   1.350 +	void ReadDataToBuffer(TVideoInputBuffer* aCodedInBuffer, TInt aSize, TBool aDiscard = EFalse);
   1.351 +	TBool CheckAndFillDataChunk();
   1.352 +	TBool ReadItemLE(unsigned char *readBuffer, int Size, unsigned char* pItem);
   1.353 +	TInt LoadNextFrameL(TVideoInputBuffer* aCodedInBuffer);
   1.354 +    void ConstructL(MVDecEngineObserver& aTestClass);
   1.355 +    void AssertTIntEqualL(TInt aExpected, TInt aActual);
   1.356 +    void PrintUncompressedFormat(const TUncompressedVideoFormat& aFormat);
   1.357 +    
   1.358 +private:
   1.359 +    CMMFDevVideoPlay* iDevvp;			  //points to DevVideo Play
   1.360 +    THwDeviceId iDecHWDevId;              //Hwdevise ID of selected Decoder
   1.361 +    THwDeviceId iPostProcId;              //Hwdevise ID of selected postprocessor
   1.362 +    TUid iPostProcessorUid;
   1.363 +    TUid iDecoderUid;
   1.364 +    CVDecTestAO* iDecTestAO;              
   1.365 +    TBool iRunning;                       //State of scheduler
   1.366 +    TYuvFormat iRawFormat;                //Used for Decoder output, postprocessor input 
   1.367 +    TRgbFormat iDispFormat;               // Display Options
   1.368 +    TRect iDispRect;                        
   1.369 +    TInt iError;
   1.370 +    TVideoInputBuffer* iCodedInBuffer;     // Pointer to Decoder input buffer
   1.371 +    TVideoInputBuffer* iCorruptedInBuffer;   //Pointer to corrupted input for decoder
   1.372 +    TInt iInBuffSize;                 // Size of decoder input buffer
   1.373 +    TVideoPicture* iOutBuffer;             // Pointer to picuture class for output data in memory buffer output 
   1.374 +    TVideoPicture* iOutBufferTemp;             // Pointer to picuture class for output data in memory buffer output 
   1.375 +    TVideoPicture* iRawInBuffer;            // Used for postprocessor input
   1.376 +    HBufC8* iRawDataArea;                  // Pointer to Heap buffer, filled with input data to postprocessor
   1.377 +    TInt64 iTimeStamp; 
   1.378 +    TInt64 iFrameTimeInterval;              
   1.379 +    TInt iSentBuffCount;                    //Number of frames sent to target HwDevice    
   1.380 +    TInt iReturnedBuffCount;                //Number of frames returned from target HwDevice
   1.381 +    TInt iPictureLoss;                      // number of picture loss
   1.382 +    TBool iInputEnd;
   1.383 +    TBool iStreamEnd; 
   1.384 +    TVideoCodec iCodecType;                
   1.385 +    TSize iPictureSize; 
   1.386 +    CSystemClockSource* iClock;            //Clock source, based on System clock
   1.387 +    TBool iSynchronized;
   1.388 +    TBool iDirectScreenAccess;
   1.389 +    TBool iCIBuffMgmtOn;
   1.390 +    TBool iDisableInputEnd;
   1.391 +    TBool iFrameMatch;              // input frame number should match output frame number
   1.392 +    TInt  iFrameJump;
   1.393 +    TInt  iFrameJumpCounter;
   1.394 +    TInt iFrameWriteLength;
   1.395 +    TInt iCurrentFilePos;
   1.396 +#ifdef __CI_HEADERS__     	   
   1.397 +    MMmfVideoBufferManagement* iCIBuffMgmt;  
   1.398 +#endif    
   1.399 +    MVDecEngineObserver* iTestClass;
   1.400 +    TBool iFrameMeasurement;
   1.401 +    TBool iDsaStarted;
   1.402 +    TBool iLandscapeMode;
   1.403 +    TInt iNoBuffAvailable;
   1.404 +    RArray<TInt> iFrameSizeList;
   1.405 +    TPictureData iPictureDataSnapshot;
   1.406 +    TBuf8<128> iInFileName;
   1.407 +    TBool iSetSlowClient;
   1.408 +    TBool iSetFastClient;
   1.409 +    TBool iSetAUFormat;
   1.410 +    TBool iOutFileOpen;
   1.411 +    TUint8* iAUBuffer;
   1.412 +    TUint32* iNalOffsetArray;
   1.413 +    TUint32* iNalLengthArray;
   1.414 +    TReal32 iFrameTime;
   1.415 +    
   1.416 +    TUint8* iDataChunk;
   1.417 +    TUint8* iReadDataChunk;
   1.418 +    TUint8* iWriteDataChunk;
   1.419 +    TUint iDataReadFromFile;
   1.420 +    TUint iDataThreshold;
   1.421 +    TBool iEndOfData;
   1.422 +    TBool iLastFrame;
   1.423 +    TBool iUseSecondScreen;
   1.424 +    
   1.425 +    //File IO
   1.426 +    RFs   iFs;
   1.427 +    RFile iInFile;                         // Input data file
   1.428 +    RFile iOutFile;                        // Output data file
   1.429 +    RFile iOutCorruptedFile;
   1.430 +    RFile iLogFile;
   1.431 +	TBool iDeleteDecoderFromInitComp;
   1.432 +	
   1.433 +	TInt iFlvCounter;
   1.434 +	TBool iCorruptMarker;
   1.435 +	TInt iFilter;
   1.436 +	TInt iInterval;
   1.437 +	TInt iFrameNum;
   1.438 +	TInt iPercentage;
   1.439 +	TInt iFrameCounter;
   1.440 +	TInt iCorruptCounter;
   1.441 +	TInt iFrameDropCounter;
   1.442 +	TInt iFrameDropInterval;
   1.443 +	TInt iFrameDropNum;
   1.444 +	TInt iFrameDropNumCounter;
   1.445 +	TBool iFrameDropMarker;
   1.446 +	TFileName iOutFileName;
   1.447 +	TFileName iOutCorruptedFileName;
   1.448 +	TBool iOutCorruptedFileOpen;
   1.449 +	TBuf8<128> iPasswordForFLV;
   1.450 +	TBool iSetPassword;
   1.451 +    TBool iInstantFpsEnabled;
   1.452 +    RArray<TTimeIntervalMicroSeconds> iInstantFpsList;
   1.453 +    RFile iFpsFile;
   1.454 +
   1.455 +	
   1.456 +	// Memory check
   1.457 +	TInt iMemAlloc;
   1.458 +	TInt iMemDelete;
   1.459 +	
   1.460 +    
   1.461 +    TInt32 iDataChunkSize;
   1.462 +    //Fbs
   1.463 +
   1.464 +    CFbsScreenDevice* iScreenDevice;
   1.465 +    
   1.466 +    CActiveSchedulerWait* iScheduler;      //Nested scheduler
   1.467 +    
   1.468 +    TTime							iTime;
   1.469 +	TDateTime						iTimeBeforeDecoding;
   1.470 +	TDateTime						iTimeAfterDecoding;	
   1.471 +	//TInt							iNumFramesDecoded;
   1.472 +	//TUint64							iTotalTime;
   1.473 +	//TBool 							iIsBeforeTimeUsed;
   1.474 +	TUint64							iBeforeDecodingTime;
   1.475 +	RArray<TUint64>					iBeforeDecoingTimesQueue;
   1.476 +    TUint							iFrame;
   1.477 +    //	TInt							iLength;
   1.478 +	//TBool							iFirstTime;
   1.479 +	TBool                           iNumFreeBufsFirstTime;
   1.480 +	TTimeIntervalMicroSeconds		iTimeToPlay;
   1.481 +    TTimeIntervalMicroSeconds		iPresentationTimestamp;
   1.482 +	TBool							iNoOfFreeBuffFlag;
   1.483 +	
   1.484 +	
   1.485 +	TInt tempFrame;
   1.486 +
   1.487 +	TFLVFileType                    iFLVFileType;
   1.488 +    };
   1.489 +
   1.490 +
   1.491 +
   1.492 +
   1.493 +/**
   1.494 +*  Video Decoder Test Engine AO
   1.495 +*  Provides async services
   1.496 +*  @lib 
   1.497 +*  @since 
   1.498 +*/
   1.499 +
   1.500 +class CVDecTestAO : public CActive
   1.501 +{
   1.502 +	public:
   1.503 +		CVDecTestAO(CVDecTestEngine* aTestEngine);
   1.504 +  		~CVDecTestAO();
   1.505 +  		void RequestData();
   1.506 +	private:
   1.507 +		void RunL();
   1.508 +  		void DoCancel();
   1.509 +
   1.510 +	private:
   1.511 +  		CVDecTestEngine* iTestEngine;
   1.512 +  	    
   1.513 +};
   1.514 +
   1.515 +
   1.516 +
   1.517 +
   1.518 +#endif