omxilvideocomps/omxilgraphicsink/tsrc/src/graphicsinktestbase.h
author hgs
Fri, 08 Oct 2010 22:09:17 +0100
changeset 0 5d29cba61097
permissions -rw-r--r--
2010wk38_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     1
/*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     3
* All rights reserved.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     8
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    11
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    12
* Contributors:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    13
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    14
* Description: 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    15
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    16
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    17
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    18
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    19
/**
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    20
 * @file
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    21
 * @internalTechnology
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    22
 */
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    23
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    24
#ifndef GRAPHICSINKTESTBASE_H
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    25
#define GRAPHICSINKTESTBASE_H
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    26
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    27
#include <openmax/il/extensions/omxilsymbianvideographicsinkextensions.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    28
#include <graphics/surfaceconfiguration.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    29
#include <graphics/surfaceupdateclient.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    30
#include <openmax/il/common/omxilspecversion.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    31
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    32
#include "omxilgraphicsinktestbase.h"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    33
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    34
const TInt KTSU_OMX_GS_PAUSE = 2000000;// 2 second timer for test shutdown
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    35
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    36
class CGraphicsSinkTestBase : public COmxGsTestBase
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    37
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    38
public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    39
	CGraphicsSinkTestBase();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    40
	~CGraphicsSinkTestBase();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    41
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    42
public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    43
	void CloseTestStep();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    44
	// Functions to act on callbackhandler functions
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    45
	void DoFillBufferDone(OMX_HANDLETYPE aComponent,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    46
			  	OMX_BUFFERHEADERTYPE* aBufferHeader);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    47
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    48
	void DoEmptyBufferDone(OMX_HANDLETYPE aComponent,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    49
			   	OMX_BUFFERHEADERTYPE* aBufferHeader);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    50
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    51
	void DoEventHandler(OMX_HANDLETYPE aComponent,OMX_EVENTTYPE aEvent,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    52
				TUint aData1,TUint aData2,TAny* aExtra);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    53
	// End of callbackhandler functions
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    54
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    55
	void InitiateNextStateTransition(OMX_HANDLETYPE aComponent, TUint aData1, 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    56
				TUint aData2, TAny* aExtra);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    57
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    58
	void UpdateSettingChanged(OMX_HANDLETYPE aComponent, TUint aData1, 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    59
				TUint aData2, TAny* aExtra);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    60
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    61
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    62
protected:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    63
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    64
	void ErrorEventTask_001(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    65
			OMX_ERRORTYPE aOmxError);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    66
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    67
	TVerdict DoGSCompAllocTestL();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    68
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    69
	void LoadedStateTask_002();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    70
	void IdleStateTask_002();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    71
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    72
	void LoadedStateTask_003();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    73
	void IdleStateTask_003();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    74
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    75
	void LoadedStateTask_004();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    76
	void IdleStateTask_004();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    77
	void ExecutingStateTask_004();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    78
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    79
	void LoadedStateTask_005();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    80
	void IdleStateTask_005();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    81
	void ExecutingStateTask_005();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    82
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    83
	void LoadedStateTask_006();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    84
	void IdleStateTask_006();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    85
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    86
	void LoadedStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    87
	void IdleStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    88
	void PauseStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    89
	void ExecutingStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    90
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    91
	void StartStateTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    92
	void WaitForResourcesTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    93
	void LoadedStateTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    94
	void IdleStateTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    95
	void ExecutingStateTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    96
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    97
	void StartBufferDoneTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    98
	void LoadedStateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    99
	void IdleStateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   100
	void ExecutingStateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   101
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   102
	void DoROmxGsTestSetup();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   103
	void AllocateCCameraBuf();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   104
	void DeleteCCameraBuf();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   105
	void AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   106
	void AllocateBufferTaskStress();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   107
	void UseBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   108
	void FreeBufferTask(RPointerArray<OMX_BUFFERHEADERTYPE>* aBufferHeaders,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   109
			OMX_U32 aPortIndex,TBool aSendCommand = ETrue);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   110
	void FreeBufferTaskAlt(RPointerArray<OMX_BUFFERHEADERTYPE> aBufferHeaders,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   111
			OMX_U32 aPortIndex,TBool aSendCommand = ETrue);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   112
	void EmptyThisBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   113
	void FillCCamBuffer(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   114
				const RChunk& aCamBuf, 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   115
				OMX_U32 aFrameWidth, 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   116
				OMX_U32 aFrameHeight, 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   117
				TInt aBytePerPixel, 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   118
				TInt aNumOfActualBuffer);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   119
	void CreateOmxParamPortDefinitionType(OMX_PARAM_PORTDEFINITIONTYPE* aOmxParamPortType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   120
	void CreateOmxVideoParamPortFormatType(OMX_VIDEO_PARAM_PORTFORMATTYPE* aOmxVideoParamPortType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   121
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   122
	TInt PostKickOffTestL(TInt aTimerId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   123
	// General functions used to test the outcome of Get and Set tests.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   124
	void CompareVCTParam(OMX_VIDEO_CODINGTYPE aInputParamType, OMX_VIDEO_CODINGTYPE aOutputParamType, OMX_INDEXTYPE aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   125
	void CompareU32Param(OMX_U32 aInputParamType, OMX_U32 aOutputParamType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   126
	void CompareCFTParam(OMX_COLOR_FORMATTYPE aInputParamType, OMX_COLOR_FORMATTYPE aOutputParamType, OMX_INDEXTYPE aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   127
	void CompareBoolParam(OMX_BOOL aInputParamType, OMX_BOOL aOutputParamType, OMX_INDEXTYPE aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   128
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   129
	void WaitForEvent(OMX_EVENTTYPE aEvent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   130
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   131
protected:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   132
	//COmxILMMBuffer* iCamBuf;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   133
	RChunk iChunk; // to replace with COmxILMMBuffer
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   134
	COmxILMMBuffer* iCamOutputBuffer;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   135
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   136
	OMX_BUFFERHEADERTYPE* iInputBufferHeader;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   137
	OMX_BUFFERHEADERTYPE* iOutputBufferHeader;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   138
	RPointerArray<OMX_BUFFERHEADERTYPE> iInputBufferHeaders;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   139
	RPointerArray<OMX_BUFFERHEADERTYPE> iOutputBufferHeaders;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   140
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   141
	OMX_PARAM_PORTDEFINITIONTYPE iOmxParamPortInput;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   142
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   143
	OMX_STATETYPE iOmxStateType;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   144
	OMX_ERRORTYPE iOmxErrorType;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   145
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   146
	TUint iPreviousState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   147
	TInt iDoEmptyBufferDoneCount;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   148
	TInt iDoEmptyBufferDoneLimit;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   149
	TInt iColSwitch;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   150
	TInt iExecuteToIdleCount;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   151
	TInt iIdleToLoadedCount;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   152
	TInt iPauseStateCount;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   153
	TInt iIdleToExecuteCount;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   154
	TBool iExecutingToIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   155
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   156
    TSurfaceConfiguration* iSurfaceConfig;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   157
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   158
    TInt iTestIteration;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   159
    volatile TBool iTestTimedOut;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   160
    volatile TBool iWaitForResources;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   161
	TInt iInputBufferHeadersCount;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   162
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   163
	OMX_EVENTTYPE iEventToWaitFor;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   164
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   165
	TInt iTestCase;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   166
	TInt iTestStep;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   167
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   168
	TBool iIgnoreNextBufferDone;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   169
    };
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   170
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   171
#endif //GRAPHICSINKTESTBASE_H