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