omxilvideocomps/omxilgraphicsink/tsrc/src/graphicsinktestbase.cpp
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
#include "graphicsinktestbase.h"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    20
#include <e32math.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    21
#include <openmax/il/shai/OMX_Symbian_ExtensionNames.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    22
#include <openmax/il/shai/OMX_Symbian_ComponentExt.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    23
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    24
const TInt MAXNUMOFBUFFERS = 30; // Due to the size of buffers we limit the max number of buffers
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    25
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    26
/*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    27
 * There are known issues due to limitations in the OMX core with tests that repeatedly load
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    28
 * and unload buffers. If left to run until the timer runs out they inevitably end up failing
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    29
 * and causing problems for subsequent test steps due to iffy clean-up. This constant is therefore
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    30
 * used to limit the amount of test iterations to a "safe" number.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    31
 */
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    32
const TInt KMaxTestIterations = 25;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    33
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    34
CGraphicsSinkTestBase::CGraphicsSinkTestBase()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    35
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    36
	iTestIteration = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    37
	iTestTimedOut = EFalse;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    38
	iWaitForResources = EFalse;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    39
	iExecuteToIdleCount = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    40
	iDoEmptyBufferDoneLimit = 20;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    41
	iExecutingToIdle = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    42
	iDoEmptyBufferDoneCount = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    43
	iIdleToExecuteCount = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    44
	iPauseStateCount = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    45
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    46
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    47
CGraphicsSinkTestBase::~CGraphicsSinkTestBase()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    48
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    49
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    50
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    51
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    52
void CGraphicsSinkTestBase::WaitForEvent(OMX_EVENTTYPE aEvent)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    53
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    54
	INFO_PRINTF2(_L("Wait for event %d cmd"),aEvent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    55
	iEventToWaitFor = aEvent;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    56
	CActiveScheduler::Start();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    57
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    58
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    59
void CGraphicsSinkTestBase::DoFillBufferDone(OMX_HANDLETYPE /*aComponent*/,OMX_BUFFERHEADERTYPE* /*aBufferHeader*/)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    60
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    61
	// Should never be called as graphic sink does not support this
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    62
    INFO_PRINTF1(_L("CGraphicsSinkTestBase::DoFillBufferDone"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    63
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    64
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    65
void CGraphicsSinkTestBase::DoEmptyBufferDone(OMX_HANDLETYPE aComponent,OMX_BUFFERHEADERTYPE* aBufferHeader)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    66
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    67
    // INFO_PRINTF3(_L("CGraphicsSinkTestBase::DoEmptyBufferDone: Count %d Limit %d"), iDoEmptyBufferDoneCount,iDoEmptyBufferDoneLimit);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    68
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    69
    //INFO_PRINTF2(_L("CGraphicsSinkTestBase::DoEmptyBufferDone: Received pBuffer 0x%08x"), aBufferHeader->pBuffer );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    70
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    71
	TInt error = iInputBufferHeaders.Append(aBufferHeader);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    72
    if (error != KErrNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    73
    	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    74
		ERR_PRINTF1(_L("OOM ERROR"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    75
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    76
		return SetTestStepError(error);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    77
    	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    78
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    79
    if (iIgnoreNextBufferDone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    80
        {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    81
        iIgnoreNextBufferDone = EFalse;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    82
        return;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    83
        }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    84
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    85
	if (iInputBufferHeaders.Count() == 0)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    86
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    87
		ERR_PRINTF1(_L("iInputBufferHeaders count has dropped to 0"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    88
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    89
		return SetTestStepResult(EFail);	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    90
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    91
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    92
	iDoEmptyBufferDoneCount++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    93
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    94
    OMX_COMPONENTTYPE* comp = static_cast<OMX_COMPONENTTYPE*>(aComponent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    95
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    96
    if (iTestCase == 10)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    97
    	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    98
    	if ((iDoEmptyBufferDoneCount < iDoEmptyBufferDoneLimit || iDoEmptyBufferDoneLimit == 0) && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    99
    		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   100
			iInputBufferHeader = iInputBufferHeaders[0];
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   101
			iInputBufferHeaders.Remove(0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   102
			
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   103
			iInputBufferHeader->nFilledLen = iOmxParamPortInput.format.video.nFrameWidth * 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   104
				COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat) *
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   105
				iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   106
			
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   107
			iInputBufferHeader->nFlags = OMX_BUFFERFLAG_SYNCFRAME;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   108
			
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   109
			iOmxErrorType = comp->EmptyThisBuffer(comp,iInputBufferHeader);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   110
			if (OMX_ErrorNone != iOmxErrorType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   111
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   112
				ERR_PRINTF1(_L("EmptyThisBuffer returned an error"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   113
				PrintOmxError(iOmxErrorType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   114
				return SetTestStepError(iOmxErrorType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   115
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   116
			
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   117
    		if (iTestStep == 6)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   118
    			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   119
    			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   120
    			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   121
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   122
    	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   123
    		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   124
    		iDoEmptyBufferDoneCount = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   125
            iIgnoreNextBufferDone = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   126
    		if (iTestStep != 5 && iTestStep != 6)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   127
    			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   128
    			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   129
    			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   130
    		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   131
    	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   132
    else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   133
    	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   134
		if (TestStepName() == (_L("MMVIDEO-OMX-GS-005-05-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   135
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   136
			iDoEmptyBufferDoneCount = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   137
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   138
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   139
		if (iDoEmptyBufferDoneCount < iDoEmptyBufferDoneLimit && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   140
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   141
		    //INFO_PRINTF2(_L("CGraphicsSinkTestBase::DoEmptyBufferDone: Sending pBuffer 0x%08x"), iInputBufferHeaders[0]->pBuffer );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   142
		    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   143
			iInputBufferHeader = iInputBufferHeaders[0];
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   144
			iInputBufferHeaders.Remove(0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   145
			
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   146
			TInt bytesperpixel = COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   147
			iInputBufferHeader->nFilledLen = iOmxParamPortInput.format.video.nFrameWidth * bytesperpixel *
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   148
				iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   149
			iInputBufferHeader->nOffset = aBufferHeader->nOffset;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   150
			iInputBufferHeader->nFlags = OMX_BUFFERFLAG_SYNCFRAME;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   151
						
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   152
			iOmxErrorType = comp->EmptyThisBuffer(comp,iInputBufferHeader);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   153
			if (OMX_ErrorNone != iOmxErrorType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   154
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   155
				ERR_PRINTF1(_L("EmptyThisBuffer returned an error"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   156
				PrintOmxError(iOmxErrorType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   157
				return SetTestStepError(iOmxErrorType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   158
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   159
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   160
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   161
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   162
			iDoEmptyBufferDoneCount = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   163
            iIgnoreNextBufferDone = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   164
			if (TestStepName() != (_L("MMVIDEO-OMX-GS-004-06-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   165
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   166
				if (iExecutingToIdle)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   167
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   168
					SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   169
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   170
				else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   171
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   172
					SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StatePause,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   173
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   174
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   175
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   176
    	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   177
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   178
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   179
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   180
TVerdict CGraphicsSinkTestBase::DoGSCompAllocTestL()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   181
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   182
	TVerdict result = EPass;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   183
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   184
	// Create a callback handler, graphic sink handle and destroy it
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   185
	iError = OMX_Init();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   186
	if(iError != OMX_ErrorNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   187
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   188
		iError = OMX_Deinit();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   189
		User::Leave(KErrNoMemory);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   190
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   191
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   192
	delete iCallbackHandler;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   193
	iCallbackHandler = NULL;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   194
	TRAPD(error, iCallbackHandler = CCallbackHandler::NewL(*this));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   195
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   196
	if (!error)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   197
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   198
		OMX_CALLBACKTYPE* omxCallbacks = *iCallbackHandler;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   199
		OMX_PTR appData = iCallbackHandler;		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   200
		OMX_HANDLETYPE graphicsSinkHandle = NULL;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   201
		OMX_STRING graphicsSinkComponentName = "OMX.SYMBIAN.VIDEO.GRAPHICSINK";	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   202
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   203
		iError = OMX_GetHandle(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   204
		    &graphicsSinkHandle, 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   205
		    graphicsSinkComponentName,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   206
		    appData,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   207
		    omxCallbacks);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   208
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   209
		if (iError == OMX_ErrorNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   210
			{		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   211
			iGraphicSinkCompHandle = (OMX_COMPONENTTYPE*)graphicsSinkHandle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   212
			OMX_FreeHandle(iGraphicSinkCompHandle);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   213
			delete iCallbackHandler;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   214
			iCallbackHandler = NULL;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   215
			iError = OMX_Deinit();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   216
			if(iError != OMX_ErrorNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   217
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   218
				User::Leave(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   219
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   220
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   221
		else 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   222
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   223
			result = EFail;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   224
			PrintOmxError(iError);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   225
			ERR_PRINTF2(_L("Unexpected %d return OMX_GetHandle"), iError);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   226
			delete iCallbackHandler;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   227
			iCallbackHandler = NULL;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   228
			iError = OMX_Deinit();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   229
			User::Leave(KErrNoMemory);				
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   230
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   231
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   232
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   233
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   234
		ERR_PRINTF2(_L("Unexpected %d return CCallbackHandler::NewL()"), iError);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   235
		result = EFail;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   236
		iError = OMX_Deinit();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   237
		User::Leave(KErrNoMemory);				
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   238
		}	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   239
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   240
	return result;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   241
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   242
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   243
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   244
void CGraphicsSinkTestBase::DoEventHandler(OMX_HANDLETYPE aComponent, OMX_EVENTTYPE aEvent,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   245
			TUint aData1, TUint aData2, TAny* aExtra)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   246
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   247
/*	OMX_COMPONENTTYPE* comp = static_cast<OMX_COMPONENTTYPE*>(aComponent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   248
	if (comp == iCameraSourceCompHandle &&
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   249
	        aEvent == OMX_EventCmdComplete &&
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   250
	        aData1 == OMX_CommandPortDisable &&
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   251
	        (aData2 == KCameraVCPortIndex || aData2 == KCameraClockPortIndex))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   252
	    {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   253
	    return;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   254
	    }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   255
*/	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   256
	OMX_ERRORTYPE errorEvent = static_cast<OMX_ERRORTYPE>( aData1 );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   257
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   258
	switch (aEvent)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   259
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   260
		case OMX_EventError:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   261
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   262
			if(TestStepName() == (_L("MMVIDEO-OMX-GS-001-01-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   263
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   264
				ErrorEventTask_001(errorEvent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   265
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   266
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   267
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   268
				switch (errorEvent)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   269
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   270
					case OMX_ErrorFormatNotDetected:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   271
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   272
						// INFO_PRINTF1(_L("DoEventHandler: OMX_EventError [OMX_ErrorFormatNotDetected]"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   273
						PrintOmxError(OMX_ErrorFormatNotDetected);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   274
						CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   275
						return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   276
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   277
					case OMX_ErrorIncorrectStateOperation:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   278
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   279
						// INFO_PRINTF1(_L("DoEventHandler: OMX_EventError [OMX_ErrorIncorrectStateOperation]"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   280
						if(TestStepName() == (_L("MMVIDEO-OMX-GS-002-04-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   281
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   282
							CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   283
							return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   284
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   285
						CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   286
						return SetTestStepError(PrintOmxError(OMX_ErrorIncorrectStateOperation));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   287
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   288
					case OMX_ErrorInvalidState:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   289
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   290
						// INFO_PRINTF1(_L("DoEventHandler: OMX_EventError [OMX_ErrorInvalidState]"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   291
						CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   292
						PrintOmxError(OMX_ErrorInvalidState);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   293
						return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   294
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   295
					case OMX_ErrorPortUnpopulated:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   296
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   297
						// INFO_PRINTF1(_L("DoEventHandler: OMX_EventError [OMX_ErrorPortUnpopulated]"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   298
						if (TestStepName() == (_L("MMVIDEO-OMX-GS-006-02-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   299
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   300
							if (--iInputBufferHeadersCount == 0)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   301
							CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   302
							return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   303
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   304
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   305
					default:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   306
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   307
						INFO_PRINTF2(_L("DoEventHandler: OMX_EventError [%d]"), aData1);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   308
						CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   309
						return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   310
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   311
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   312
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   313
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   314
		case OMX_EventBufferFlag:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   315
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   316
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   317
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   318
		case OMX_EventCmdComplete:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   319
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   320
			InitiateNextStateTransition(aComponent, aData1, aData2, aExtra);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   321
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   322
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   323
		case OMX_EventPortSettingsChanged:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   324
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   325
			if(iEventToWaitFor == aEvent)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   326
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   327
				iEventToWaitFor = OMX_EventMax;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   328
				CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   329
				return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   330
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   331
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   332
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   333
				UpdateSettingChanged(aComponent, aData1, aData2, aExtra);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   334
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   335
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   336
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   337
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   338
	/*	case OMX_EventNokiaFirstFrameDisplayed:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   339
			{			
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   340
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   341
			}*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   342
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   343
		default:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   344
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   345
			INFO_PRINTF2(_L("DoEventHandler: OMX Event [%d]"), aEvent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   346
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   347
			return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   348
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   349
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   350
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   351
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   352
void CGraphicsSinkTestBase::InitiateNextStateTransition(OMX_HANDLETYPE /*aComponent*/, TUint /*aData1*/,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   353
			TUint aData2, TAny* /*aExtra*/)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   354
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   355
	switch(aData2)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   356
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   357
		case OMX_StateLoaded:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   358
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   359
			if(TestStepName() == (_L("MMVIDEO-OMX-GS-002-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-002-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   360
					 || TestStepName() == (_L("MMVIDEO-OMX-GS-002-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   361
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   362
				LoadedStateTask_002();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   363
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   364
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   365
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   366
				if(TestStepName() == (_L("MMVIDEO-OMX-GS-003-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-003-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   367
						 || TestStepName() == (_L("MMVIDEO-OMX-GS-003-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   368
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   369
					LoadedStateTask_003();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   370
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   371
				else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   372
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   373
					if(TestStepName() == (_L("MMVIDEO-OMX-GS-004-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   374
								|| TestStepName() == (_L("MMVIDEO-OMX-GS-004-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-04-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   375
								|| TestStepName() == (_L("MMVIDEO-OMX-GS-004-05-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-06-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   376
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   377
						LoadedStateTask_004();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   378
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   379
					else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   380
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   381
						if(TestStepName() == (_L("MMVIDEO-OMX-GS-005-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-005-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   382
									|| TestStepName() == (_L("MMVIDEO-OMX-GS-005-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-005-04-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   383
									|| TestStepName() == (_L("MMVIDEO-OMX-GS-005-05-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   384
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   385
							LoadedStateTask_005();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   386
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   387
						else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   388
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   389
							if (TestStepName() == (_L("MMVIDEO-OMX-GS-006-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-006-02-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   390
								{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   391
								LoadedStateTask_006();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   392
								}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   393
							else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   394
								{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   395
								if(TestStepName() == (_L("MMVIDEO-OMX-GS-007-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-02-HP")) ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   396
										TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-04-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   397
									{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   398
									LoadedStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   399
									}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   400
								else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   401
									{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   402
									if (iTestCase == 9)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   403
										{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   404
										LoadedStateTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   405
										}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   406
									else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   407
										{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   408
										if (iTestCase == 10)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   409
											{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   410
											LoadedStateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   411
											}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   412
										else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   413
											{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   414
											INFO_PRINTF1(_L("CGraphicsSinkTestBase::DoEventHandler State set to  OMX_StateLoaded"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   415
											}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   416
										}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   417
									}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   418
								}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   419
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   420
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   421
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   422
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   423
			break;		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   424
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   425
		case OMX_StateWaitForResources:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   426
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   427
			if (iTestCase == 9)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   428
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   429
				WaitForResourcesTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   430
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   431
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   432
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   433
				INFO_PRINTF1(_L("CGraphicsSinkTestBase::DoEventHandler State set to  OMX_StateWaitForResources"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   434
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   435
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   436
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   437
		case OMX_StateIdle:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   438
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   439
			if(TestStepName() == (_L("MMVIDEO-OMX-GS-002-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-002-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   440
					 || TestStepName() == (_L("MMVIDEO-OMX-GS-002-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   441
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   442
				IdleStateTask_002();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   443
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   444
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   445
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   446
				if(TestStepName() == (_L("MMVIDEO-OMX-GS-003-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-003-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   447
						 || TestStepName() == (_L("MMVIDEO-OMX-GS-003-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   448
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   449
					IdleStateTask_003();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   450
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   451
				else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   452
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   453
					if(TestStepName() == (_L("MMVIDEO-OMX-GS-004-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   454
								|| TestStepName() == (_L("MMVIDEO-OMX-GS-004-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-04-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   455
								|| TestStepName() == (_L("MMVIDEO-OMX-GS-004-05-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-06-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   456
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   457
						IdleStateTask_004();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   458
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   459
					else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   460
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   461
						if(TestStepName() == (_L("MMVIDEO-OMX-GS-005-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-005-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   462
									|| TestStepName() == (_L("MMVIDEO-OMX-GS-005-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-005-04-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   463
									|| TestStepName() == (_L("MMVIDEO-OMX-GS-005-05-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   464
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   465
							IdleStateTask_005();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   466
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   467
						else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   468
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   469
							if (TestStepName() == (_L("MMVIDEO-OMX-GS-006-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-006-02-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   470
								{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   471
								IdleStateTask_006();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   472
								}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   473
							else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   474
								{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   475
								if(TestStepName() == (_L("MMVIDEO-OMX-GS-007-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-02-HP")) ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   476
										TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-04-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   477
									{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   478
									IdleStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   479
									}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   480
								else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   481
									{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   482
									if (iTestCase == 9)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   483
										{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   484
										IdleStateTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   485
										}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   486
									else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   487
										{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   488
										if (iTestCase == 10)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   489
											{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   490
											IdleStateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   491
											}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   492
										else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   493
											{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   494
											INFO_PRINTF1(_L("CGraphicsSinkTestBase::DoEventHandler State set to OMX_StateIdle"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   495
											}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   496
										}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   497
									}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   498
								}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   499
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   500
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   501
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   502
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   503
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   504
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   505
		case OMX_StateExecuting:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   506
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   507
			if(TestStepName() == (_L("MMVIDEO-OMX-GS-004-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   508
										|| TestStepName() == (_L("MMVIDEO-OMX-GS-004-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-04-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   509
										|| TestStepName() == (_L("MMVIDEO-OMX-GS-004-05-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-06-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   510
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   511
				ExecutingStateTask_004();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   512
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   513
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   514
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   515
				if(TestStepName() == (_L("MMVIDEO-OMX-GS-005-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-005-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   516
							|| TestStepName() == (_L("MMVIDEO-OMX-GS-005-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-005-04-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   517
							|| TestStepName() == (_L("MMVIDEO-OMX-GS-005-05-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   518
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   519
					ExecutingStateTask_005();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   520
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   521
				else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   522
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   523
					if (TestStepName() == (_L("MMVIDEO-OMX-GS-007-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   524
							|| TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   525
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   526
						ExecutingStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   527
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   528
					else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   529
						{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   530
						if (iTestCase == 9)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   531
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   532
							ExecutingStateTransitionTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   533
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   534
						else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   535
							{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   536
							if (iTestCase == 10)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   537
								{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   538
								ExecutingStateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   539
								}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   540
							else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   541
								{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   542
								switch(iPreviousState)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   543
									{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   544
									case OMX_StateIdle:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   545
										{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   546
										iPreviousState = OMX_StateExecuting;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   547
										EmptyThisBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   548
										break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   549
										}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   550
									case OMX_StatePause:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   551
										{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   552
										iPreviousState = OMX_StateExecuting;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   553
										EmptyThisBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   554
										break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   555
										}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   556
									}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   557
								}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   558
							}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   559
						}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   560
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   561
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   562
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   563
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   564
		case OMX_StatePause:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   565
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   566
			if(TestStepName() == (_L("MMVIDEO-OMX-GS-007-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-02-HP")) ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   567
					TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-04-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   568
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   569
				PauseStateTask_007();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   570
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   571
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   572
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   573
				INFO_PRINTF1(_L("CGraphicsSinkTestBase::DoEventHandler State set to  OMX_StatePause"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   574
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   575
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   576
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   577
		case OMX_StateInvalid:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   578
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   579
			if(TestStepName() == (_L("MMVIDEO-OMX-GS-001-01-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   580
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   581
				INFO_PRINTF1(_L("CGraphicsSinkTestBase::GSTest001: Loaded to Invalid"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   582
				// Not really intended for loaded to invalid test but booleon needed
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   583
				iExecutingToIdle = EFalse;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   584
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   585
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   586
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   587
				INFO_PRINTF1(_L("CGraphicsSinkTestBase::DoEventHandler State set to  OMX_StateInvalid"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   588
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   589
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   590
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   591
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   592
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   593
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   594
void CGraphicsSinkTestBase::UpdateSettingChanged(OMX_HANDLETYPE /*aComponent*/,TUint aData1,TUint /*aData2*/,TAny* /*aExtra*/)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   595
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   596
	TInt err = KErrGeneral;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   597
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   598
	if(aData1 == iSurfaceConfigExt ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   599
	   aData1 == OMX_IndexConfigCommonScale ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   600
	   aData1 == OMX_IndexConfigCommonOutputSize ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   601
	   aData1 == OMX_IndexConfigCommonInputCrop ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   602
	   aData1 == OMX_IndexConfigCommonOutputCrop ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   603
	   aData1 == OMX_IndexConfigCommonExclusionRect)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   604
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   605
		// port setting has been changed with Configs
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   606
		TSurfaceId surfaceId;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   607
		(*iSurfaceConfig).GetSurfaceId(surfaceId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   608
		// INFO_PRINTF2(_L("Surface Id:%d"),surfaceId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   609
		err = iWindow->SetBackgroundSurface(*iSurfaceConfig, ETrue);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   610
		if(KErrNone != err)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   611
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   612
			ERR_PRINTF2(_L("SetSurfaceId fails with error: %d"),err);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   613
			SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   614
			return SetTestStepResult(EFail);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   615
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   616
		// SetBackgroundSurface OK
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   617
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   618
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   619
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   620
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   621
void CGraphicsSinkTestBase::CloseTestStep()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   622
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   623
	delete iCamOutputBuffer;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   624
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   625
	FreeBuffer( iGraphicSinkCompHandle, 0, iInputBufferHeaders, OMX_ErrorNone );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   626
	iInputBufferHeaders.Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   627
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   628
	COmxGsTestBase::CloseTest();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   629
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   630
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   631
void CGraphicsSinkTestBase::EmptyThisBufferTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   632
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   633
	// INFO_PRINTF2(_L("CGraphicsSinkTestBase::EmptyThisBufferTask: Empty this buffer task Count %d"),iDoEmptyBufferDoneCount);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   634
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   635
    TInt bytesperpixel = COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   636
    // CGraphicsSinkTestBase::EmptyThisBufferTask: Fill COmxILMMBuffer* with colour
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   637
    FillCCamBuffer(iChunk, iOmxParamPortInput.format.video.nFrameWidth,iOmxParamPortInput.format.video.nFrameHeight,bytesperpixel,iOmxParamPortInput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   638
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   639
    //INFO_PRINTF2(_L("CGraphicsSinkTestBase::EmptyThisBufferTask: Sending pBuffer 0x%08x"), iInputBufferHeaders[0]->pBuffer  );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   640
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   641
    iInputBufferHeader = iInputBufferHeaders[0];
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   642
    iInputBufferHeader->nFilledLen = iOmxParamPortInput.format.video.nFrameWidth * 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   643
        COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat) *
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   644
        iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   645
    iInputBufferHeaders.Remove(0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   646
    iOmxErrorType = iGraphicSinkCompHandle->EmptyThisBuffer(iGraphicSinkCompHandle,iInputBufferHeader);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   647
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   648
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   649
	if (OMX_ErrorNone != iOmxErrorType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   650
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   651
		ERR_PRINTF1(_L("EmptyThisBuffer returned an error"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   652
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   653
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   654
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   655
	if (TestStepName() == (_L("MMVIDEO-OMX-GS-004-06-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   656
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   657
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle, 0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   658
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   659
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   660
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   661
	    if( iIgnoreNextBufferDone ){
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   662
	        iIgnoreNextBufferDone = EFalse;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   663
	        return;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   664
	    }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   665
	    // else...
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   666
	    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   667
	    //INFO_PRINTF2(_L("CGraphicsSinkTestBase::EmptyThisBufferTask: Sending pBuffer 0x%08x"), iInputBufferHeaders[0]->pBuffer  );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   668
	    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   669
		iInputBufferHeader = iInputBufferHeaders[0];
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   670
		iInputBufferHeaders.Remove(0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   671
		iInputBufferHeader->nFilledLen = iOmxParamPortInput.format.video.nFrameWidth * 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   672
			COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat) *
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   673
			iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   674
		iInputBufferHeader->nFlags = OMX_BUFFERFLAG_SYNCFRAME;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   675
		iOmxErrorType = iGraphicSinkCompHandle->EmptyThisBuffer(iGraphicSinkCompHandle,iInputBufferHeader);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   676
		if (OMX_ErrorNone != iOmxErrorType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   677
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   678
			ERR_PRINTF1(_L("EmptyThisBuffer returned an error"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   679
			return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   680
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   681
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   682
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   683
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   684
void CGraphicsSinkTestBase::DoROmxGsTestSetup()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   685
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   686
	TRAPD(err,CreateWindowL());
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   687
	if(err != KErrNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   688
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   689
		ERR_PRINTF2(_L("CreateWindow Failed %d"),err);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   690
		return SetTestStepError(err);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   691
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   692
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   693
	OMX_INDEXTYPE videoSurfaceConfigIndex = OMX_IndexMax;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   694
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   695
	iError = iGraphicSinkCompHandle->GetExtensionIndex(iGraphicSinkCompHandle, const_cast<char*>(sOmxSymbianGfxSurfaceConfig), &videoSurfaceConfigIndex);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   696
	if(OMX_ErrorNone != iError)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   697
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   698
		ERR_PRINTF1(_L("OMX_GetExtensionIndex Failed"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   699
		PrintOmxError(iError);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   700
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   701
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   702
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   703
	OMX_SYMBIAN_VIDEO_PARAM_SURFACECONFIGURATION surfaceConfig;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   704
	surfaceConfig.nSize = sizeof(OMX_SYMBIAN_VIDEO_PARAM_SURFACECONFIGURATION);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   705
	surfaceConfig.nVersion = TOmxILSpecVersion();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   706
	surfaceConfig.nPortIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   707
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   708
	GetParameter(iGraphicSinkCompHandle, videoSurfaceConfigIndex, &surfaceConfig);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   709
	if(NULL == surfaceConfig.pSurfaceConfig)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   710
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   711
		ERR_PRINTF1(_L("GetParameter Failed 01"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   712
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   713
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   714
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   715
	iSurfaceConfig = reinterpret_cast<TSurfaceConfiguration*>(surfaceConfig.pSurfaceConfig);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   716
	// INFO_PRINTF2(_L("SurfaceConfig : %x"), iSurfaceConfig);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   717
	TSurfaceId surfaceId;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   718
	(*iSurfaceConfig).GetSurfaceId(surfaceId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   719
	// INFO_PRINTF2(_L("Surface Id:%d: "),surfaceId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   720
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   721
	// Get default OMX_PARAM_PORTDEFINITIONTYPE paramaters
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   722
	iOmxParamPortInput.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   723
	iOmxParamPortInput.nVersion = TOmxILSpecVersion();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   724
	iOmxParamPortInput.nPortIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   725
	GetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   726
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   727
    // Set the color format to the supported type OMX_COLOR_FormatCbYCrY
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   728
	// initial settings
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   729
    iOmxParamPortInput.format.video.eColorFormat = OMX_COLOR_FormatCbYCrY;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   730
    iOmxParamPortInput.format.video.nFrameWidth = 320;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   731
    iOmxParamPortInput.format.video.nFrameHeight = 240;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   732
    iOmxParamPortInput.format.video.nStride = 320*2;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   733
    iOmxParamPortInput.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   734
    SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   735
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   736
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   737
void CGraphicsSinkTestBase::DeleteCCameraBuf()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   738
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   739
	// Clean up from AllocateCCameraBuf
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   740
	if (iCamOutputBuffer)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   741
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   742
		delete iCamOutputBuffer;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   743
		iCamOutputBuffer = NULL;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   744
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   745
		iTestChunk.Close();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   746
		iSurfaceUpdateSession.CancelAllUpdateNotifications();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   747
		iSurfaceUpdateSession.Close();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   748
		iSurfaceManager.CloseSurface(iSurfaceId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   749
		iSurfaceId = TSurfaceId::CreateNullId();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   750
		iSurfaceManager.Close();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   751
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   752
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   753
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   754
void CGraphicsSinkTestBase::AllocateCCameraBuf()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   755
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   756
	// Setting paramters for surface manager
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   757
    iOmxParamPortInput.format.video.eColorFormat = OMX_COLOR_FormatCbYCrY;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   758
    iOmxParamPortInput.format.video.xFramerate = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   759
    iOmxParamPortInput.format.video.nFrameHeight = 320;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   760
    iOmxParamPortInput.format.video.nFrameWidth = 240;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   761
    iOmxParamPortInput.format.video.nStride = iOmxParamPortInput.format.video.nFrameWidth * COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   762
    SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   763
	GetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   764
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   765
	// Create surface manager
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   766
	RSurfaceManager::TSurfaceCreationAttributesBuf bf;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   767
    RSurfaceManager::TSurfaceCreationAttributes& b = bf();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   768
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   769
    b.iSize.iWidth = iOmxParamPortInput.format.video.nFrameWidth;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   770
    b.iSize.iHeight = iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   771
    b.iBuffers = iOmxParamPortInput.nBufferCountActual;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   772
    b.iPixelFormat = EUidPixelFormatRGB_565; // Look for conversion method
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   773
    b.iStride = iOmxParamPortInput.format.video.nStride;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   774
    b.iOffsetToFirstBuffer = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   775
    b.iOffsetBetweenBuffers = 0; // let surfacemanager choose.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   776
#ifndef __WINSCW__
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   777
    b.iAlignment = RSurfaceManager::EPageAligned;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   778
#else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   779
    b.iAlignment = 2;  //TBC  //working algn = 2z
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   780
#endif
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   781
    b.iContiguous = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   782
    b.iMappable = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   783
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   784
	TInt grapherr = InitialiseSurfaceManager();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   785
	if(grapherr != KErrNone && grapherr != KErrAlreadyExists)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   786
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   787
		ERR_PRINTF1(_L("CGraphicsSurfaceSink::NewL FAILED"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   788
		return SetTestStepError(grapherr);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   789
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   790
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   791
	TRAPD(error, iCamOutputBuffer = COmxILMMBuffer::NewL(iTestChunk));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   792
	if(error != KErrNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   793
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   794
		ERR_PRINTF1(_L("COmxILMMBuffer::NewL FAILED"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   795
		return SetTestStepError(error);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   796
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   797
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   798
	TInt ret = CreateAndMapSurface(bf, iCamOutputBuffer->SurfaceId());
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   799
	if(ret != KErrNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   800
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   801
		ERR_PRINTF2(_L("CreateAndMapSurfaceL FAILED: %d"), ret);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   802
		return SetTestStepError(ret);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   803
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   804
	//INFO_PRINTF2(_L("CGraphicsSinkTestBase::UseBufferTask: Chunk size: %d"),iCamOutputBuffer->Chunk().Size());	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   805
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   806
	RSurfaceManager::TInfoBuf surfacebuf;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   807
	ret = iSurfaceManager.SurfaceInfo(iCamOutputBuffer->SurfaceId(), surfacebuf);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   808
	if(ret != KErrNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   809
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   810
		ERR_PRINTF1(_L("RSurfaceManager::SurfaceInfo FAILED"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   811
		return SetTestStepError(ret);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   812
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   813
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   814
	// INFO_PRINTF2(_L("Surface Id:%d "),iCamOutputBuffer->SurfaceId());
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   815
	iCamOutputBuffer->SurfaceInfoV01() = surfacebuf();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   816
	// INFO_PRINTF2(_L("Handle of RChunk graph: %d"),iCamOutputBuffer->Chunk().Handle());
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   817
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   818
	TInt numberofbuffer = b.iBuffers;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   819
	for(TInt i = 0 ; i < numberofbuffer; i++ )
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   820
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   821
		TInt offset;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   822
		iSurfaceManager.GetBufferOffset(iCamOutputBuffer->SurfaceId(),i,offset);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   823
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   824
		//INFO_PRINTF3(_L("CGraphicsSinkTestBase::AllocateCCameraBuf() offset no %d = %d"), i , offset);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   825
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   826
		iCamOutputBuffer->OffsetInfoArray().Append(offset);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   827
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   828
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   829
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   830
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   831
void CGraphicsSinkTestBase::AllocateBufferTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   832
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   833
	TInt bytesperpixel = COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   834
	TInt size = bytesperpixel * iOmxParamPortInput.format.video.nFrameWidth * iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   835
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   836
	// Assume that allocate buffer is only called in state loaded
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   837
	iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   838
	SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   839
	AllocateBuffer(iGraphicSinkCompHandle,&iInputBufferHeader,0,NULL,size,&iInputBufferHeaders,iOmxParamPortInput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   840
	// This also confirms that the buffer count is correct, as is shouldnt be zero
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   841
	if (iInputBufferHeaders.Count() == 0)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   842
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   843
		ERR_PRINTF2(_L("CGraphicsSinkTestBase::AllocateBufferTask: iInputBufferHeaders Count %d"),iInputBufferHeaders.Count());
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   844
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   845
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   846
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   847
	iInputBufferHeadersCount = iInputBufferHeaders.Count();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   848
	// Create COmxILMMBuffer*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   849
	// INFO_PRINTF2(_L("CGraphicsSinkTestBase::AllocateBufferTask: reinterpret_cast COmxILMMBuffer* %d"),iInputBufferHeaders[0]->pInputPortPrivate);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   850
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   851
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   852
	// duplicate chunk given from component by getconfig
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   853
	OMX_INDEXTYPE sharedChunkMetadataExtensionIndex;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   854
    // due to chunk extension support in gfx
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   855
    if (OMX_ErrorNone == OMX_GetExtensionIndex(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   856
            iGraphicSinkCompHandle,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   857
         OMX_SYMBIAN_INDEX_CONFIG_SHAREDCHUNKMETADATA_NAME,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   858
         &sharedChunkMetadataExtensionIndex))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   859
        {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   860
        // Communicate the shared chunk metadata to the tunnelled
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   861
        // component
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   862
        OMX_SYMBIAN_CONFIG_SHAREDCHUNKMETADATATYPE configSharedChunkMetadata;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   863
        configSharedChunkMetadata.nSize = sizeof(OMX_SYMBIAN_CONFIG_SHAREDCHUNKMETADATATYPE);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   864
        configSharedChunkMetadata.nVersion = TOmxILSpecVersion();            
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   865
        configSharedChunkMetadata.nPortIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   866
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   867
        (void) OMX_GetConfig(iGraphicSinkCompHandle,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   868
                          sharedChunkMetadataExtensionIndex,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   869
                          &configSharedChunkMetadata);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   870
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   871
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   872
        //map the chunk into this process
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   873
        RThread chunkOwnerThread;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   874
        User::LeaveIfError(chunkOwnerThread.Open(TThreadId(configSharedChunkMetadata.nOwnerThreadId)));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   875
        CleanupClosePushL(chunkOwnerThread);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   876
                
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   877
        iChunk.SetHandle(configSharedChunkMetadata.nHandleId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   878
        User::LeaveIfError(iChunk.Duplicate(chunkOwnerThread));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   879
        CleanupStack::PopAndDestroy(&chunkOwnerThread);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   880
      
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   881
        }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   882
    else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   883
        {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   884
        ERR_PRINTF1(_L("Failed to fetch shared chunk metadata from gfx sink."));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   885
        CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   886
        return SetTestStepError( KErrGeneral );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   887
        }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   888
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   889
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   890
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   891
void CGraphicsSinkTestBase::UseBufferTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   892
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   893
	TInt size = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   894
	if( iCamOutputBuffer->OffsetInfoArray().Count() < 2 ){
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   895
	    iSurfaceManager.GetBufferOffset( iCamOutputBuffer->SurfaceId(), 0, size );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   896
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   897
	else{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   898
	    size = iCamOutputBuffer->OffsetInfoArray()[1] - iCamOutputBuffer->OffsetInfoArray()[0];
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   899
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   900
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   901
    // Assume that use buffer is only called in state loaded
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   902
    iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   903
    SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   904
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   905
    // due to chunk extension support in gfx
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   906
    OMX_INDEXTYPE sharedChunkMetadataExtensionIndex;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   907
    if (OMX_ErrorNone == OMX_GetExtensionIndex(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   908
            iGraphicSinkCompHandle,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   909
         OMX_SYMBIAN_INDEX_CONFIG_SHAREDCHUNKMETADATA_NAME,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   910
         &sharedChunkMetadataExtensionIndex))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   911
        {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   912
        // Communicate the shared chunk metadata to the tunnelled
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   913
        // component
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   914
        OMX_SYMBIAN_CONFIG_SHAREDCHUNKMETADATATYPE configSharedChunkMetadata;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   915
        configSharedChunkMetadata.nSize = sizeof(OMX_SYMBIAN_CONFIG_SHAREDCHUNKMETADATATYPE);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   916
        configSharedChunkMetadata.nVersion = TOmxILSpecVersion();            
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   917
        configSharedChunkMetadata.nPortIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   918
        configSharedChunkMetadata.nHandleId = iCamOutputBuffer->Chunk().Handle();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   919
        configSharedChunkMetadata.nOwnerThreadId = RThread().Id().Id();            
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   920
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   921
        iError = OMX_SetConfig(iGraphicSinkCompHandle,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   922
                          sharedChunkMetadataExtensionIndex,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   923
                          &configSharedChunkMetadata);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   924
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   925
        if (OMX_ErrorNone != iError)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   926
            {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   927
            ERR_PRINTF1(_L("CGraphicsSinkTestBase::UseBufferTask: Set shared chunk config error!"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   928
            return SetTestStepError(PrintOmxError(iError));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   929
            } 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   930
        }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   931
       
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   932
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   933
	for (TInt i = 0 ; i < iOmxParamPortInput.nBufferCountActual; i++)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   934
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   935
	    //INFO_PRINTF4(_L("CGraphicsSinkTestBase::UseBufferTask: size = %d, chunk base = 0x%08x, offset = %d.") , size, iCamOutputBuffer->Chunk().Base(), iCamOutputBuffer->OffsetInfoArray()[i] );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   936
		iError = iGraphicSinkCompHandle->UseBuffer(iGraphicSinkCompHandle,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   937
												&iOutputBufferHeader,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   938
												0,					// input port
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   939
												NULL, /*iCamOutputBuffer,*/		// pAppPrivate
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   940
												size,		// update
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   941
												iCamOutputBuffer->Chunk().Base() + iCamOutputBuffer->OffsetInfoArray()[i] /* // change made due to OMXILBufferClass */);		//
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   942
		if (OMX_ErrorNone != iError)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   943
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   944
			ERR_PRINTF1(_L("CGraphicsSinkTestBase::UseBufferTask: UseBuffer Error"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   945
			return SetTestStepError(PrintOmxError(iError));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   946
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   947
		// INFO_PRINTF2(_L("surface ID y : %d"), iCamOutputBuffer->SurfaceId());	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   948
		// INFO_PRINTF2(_L("Buffer offset : %d"), iCamOutputBuffer->iBufferOffset);	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   949
		if (iOutputBufferHeaders.Append(iOutputBufferHeader) != KErrNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   950
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   951
			ERR_PRINTF1(_L("OOM ERROR"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   952
			return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   953
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   954
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   955
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   956
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   957
void CGraphicsSinkTestBase::AllocateBufferTaskStress()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   958
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   959
	// Color format should be default value: OMX_COLOR_Format16bitRGB565
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   960
	TInt bytesperpixel = COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   961
	TInt size = bytesperpixel * iOmxParamPortInput.format.video.nFrameWidth * iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   962
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   963
	// Assume that allocate buffer is only called in state loaded
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   964
	iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   965
	SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   966
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   967
	for(TInt i = 0 ; i < iOmxParamPortInput.nBufferCountActual; i++ )
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   968
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   969
		iOmxErrorType = iGraphicSinkCompHandle->AllocateBuffer(iGraphicSinkCompHandle,&iInputBufferHeader,0,NULL,size);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   970
		if (iOmxErrorType != OMX_ErrorNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   971
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   972
			if (iOmxErrorType == OMX_ErrorInsufficientResources)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   973
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   974
				INFO_PRINTF2(_L("CGraphicsSinkTestBase::AllocateBufferTaskStress: AllocateBuffer returned InsufficientResources & nBufferCountActual was set to %d"),iOmxParamPortInput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   975
				CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   976
				return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   977
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   978
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   979
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   980
				CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   981
				return SetTestStepError(PrintOmxError(iOmxErrorType));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   982
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   983
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   984
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   985
		// Used for tracking
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   986
		TRAPD(err,iInputBufferHeaders.AppendL(iInputBufferHeader));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   987
		if(err != KErrNone)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   988
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   989
			ERR_PRINTF2(_L("AppendL Buffer Failed %d"),err);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   990
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   991
			return SetTestStepError(err);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   992
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   993
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   994
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   995
	// This also confirms that the buffer count is correct, as is shouldnt be zero
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   996
	if (iInputBufferHeaders.Count() == 0)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   997
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   998
		ERR_PRINTF2(_L("CGraphicsSinkTestBase::AllocateBufferTaskStress: iInputBufferHeaders Count %d"),iInputBufferHeaders.Count());
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   999
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1000
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1001
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1002
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1003
	// Create COmxILMMBuffer*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1004
	// INFO_PRINTF2(_L("CGraphicsSinkTestBase::AllocateBufferTaskStress: reinterpret_cast COmxILMMBuffer* %d"),iInputBufferHeaders[0]->pInputPortPrivate);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1005
	//iCamBuf = static_cast<COmxILMMBuffer*>(iInputBufferHeaders[0]->pInputPortPrivate);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1006
	// duplicate chunk given from component by getconfig
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1007
    OMX_INDEXTYPE sharedChunkMetadataExtensionIndex;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1008
    // due to chunk extension support in gfx
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1009
    if (OMX_ErrorNone == OMX_GetExtensionIndex(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1010
            iGraphicSinkCompHandle,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1011
         OMX_SYMBIAN_INDEX_CONFIG_SHAREDCHUNKMETADATA_NAME,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1012
         &sharedChunkMetadataExtensionIndex))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1013
        {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1014
        // Communicate the shared chunk metadata to the tunnelled
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1015
        // component
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1016
        OMX_SYMBIAN_CONFIG_SHAREDCHUNKMETADATATYPE configSharedChunkMetadata;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1017
        configSharedChunkMetadata.nSize = sizeof(OMX_SYMBIAN_CONFIG_SHAREDCHUNKMETADATATYPE);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1018
        configSharedChunkMetadata.nVersion = TOmxILSpecVersion();            
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1019
        configSharedChunkMetadata.nPortIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1020
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1021
        (void) OMX_GetConfig(iGraphicSinkCompHandle,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1022
                          sharedChunkMetadataExtensionIndex,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1023
                          &configSharedChunkMetadata);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1024
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1025
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1026
        //map the chunk into this process
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1027
        RThread chunkOwnerThread;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1028
        User::LeaveIfError(chunkOwnerThread.Open(TThreadId(configSharedChunkMetadata.nOwnerThreadId)));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1029
        CleanupClosePushL(chunkOwnerThread);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1030
                
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1031
        iChunk.SetHandle(configSharedChunkMetadata.nHandleId);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1032
        User::LeaveIfError(iChunk.Duplicate(chunkOwnerThread));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1033
        CleanupStack::PopAndDestroy(&chunkOwnerThread);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1034
      
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1035
        }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1036
    else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1037
        {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1038
        ERR_PRINTF1(_L("Failed to fetch shared chunk metadata from gfx sink."));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1039
        CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1040
        return SetTestStepError( KErrGeneral );
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1041
        }
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1042
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1043
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1044
void CGraphicsSinkTestBase::FreeBufferTask(RPointerArray<OMX_BUFFERHEADERTYPE>* aBufferHeaders,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1045
		OMX_U32 aPortIndex,TBool aSendCommand)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1046
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1047
	if (aSendCommand)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1048
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1049
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateLoaded,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1050
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1051
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1052
	FreeBuffer(iGraphicSinkCompHandle,aPortIndex,*aBufferHeaders);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1053
	aBufferHeaders->Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1054
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1055
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1056
void CGraphicsSinkTestBase::FreeBufferTaskAlt(RPointerArray<OMX_BUFFERHEADERTYPE> aBufferHeaders,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1057
		OMX_U32 aPortIndex,TBool aSendCommand)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1058
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1059
	if (aSendCommand)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1060
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1061
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateLoaded,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1062
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1063
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1064
	FreeBuffer(iGraphicSinkCompHandle,aPortIndex,aBufferHeaders);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1065
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1066
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1067
void CGraphicsSinkTestBase::FillCCamBuffer(const RChunk& aCamBuf, OMX_U32 aFrameWidth,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1068
		OMX_U32 aFrameHeight, TInt aBytePerPixel, TInt aNumOfActualBuffer)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1069
	{	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1070
	// FillThisBuffer
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1071
	TRgb red_col(255,0,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1072
	TRgb blue_col(0,255,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1073
	TRgb green_col(0,0,255);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1074
	TRgb black_col(0,0,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1075
	TUint32 red_color = red_col.Color64K();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1076
	TUint32 blue_color = blue_col.Color64K();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1077
	TUint32 green_color = green_col.Color64K();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1078
	TUint32 black_color = black_col.Color64K();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1079
	TUint32 col[] = {red_color, blue_color, green_color, black_color};
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1080
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1081
	TInt stride = aFrameWidth * aBytePerPixel;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1082
	TInt colIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1083
	for(TInt index=0; index<aNumOfActualBuffer; ++index)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1084
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1085
		//TODO: TUint8* surfacePtr = aCamBuf->Chunk().Base() + aCamBuf->BufferOffset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1086
		TUint8* surfacePtr = aCamBuf.Base() + (iOmxParamPortInput.nBufferSize * index);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1087
		TUint8* linePtr = surfacePtr;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1088
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1089
		TUint16* ptr = reinterpret_cast<TUint16*>(surfacePtr);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1090
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1091
		// Fill first line
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1092
		for (TInt xx = 0; xx < aFrameWidth; xx++)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1093
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1094
			colIndex = Math::Random() % 4;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1095
			ptr[xx] = (TUint16)col[colIndex];
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1096
			//ptr[xx] = (TUint16)col[colIndex%4];
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1097
			colIndex++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1098
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1099
			
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1100
		// Now copy that to the other lines
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1101
		for (TInt yy = 1; yy < aFrameHeight; yy++)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1102
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1103
			linePtr += stride;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1104
			Mem::Move(linePtr, surfacePtr, stride);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1105
			}	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1106
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1107
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1108
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1109
void CGraphicsSinkTestBase::CreateOmxParamPortDefinitionType(OMX_PARAM_PORTDEFINITIONTYPE* aOmxParamPortType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1110
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1111
	aOmxParamPortType->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1112
	aOmxParamPortType->nVersion = TOmxILSpecVersion();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1113
	aOmxParamPortType->nPortIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1114
	GetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,aOmxParamPortType,OMX_ErrorNone);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1115
    // initial settings
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1116
	aOmxParamPortType->format.video.nFrameWidth = 320;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1117
	aOmxParamPortType->format.video.nFrameHeight = 240;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1118
	aOmxParamPortType->format.video.eColorFormat = OMX_COLOR_FormatCbYCrY;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1119
	aOmxParamPortType->format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1120
	aOmxParamPortType->format.video.xFramerate = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1121
	aOmxParamPortType->format.video.nStride = 320*2;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1122
	aOmxParamPortType->format.video.nSliceHeight = 10;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1123
	aOmxParamPortType->format.video.nBitrate = 96000;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1124
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1125
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1126
void CGraphicsSinkTestBase::CreateOmxVideoParamPortFormatType(OMX_VIDEO_PARAM_PORTFORMATTYPE* aOmxVideoParamPortType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1127
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1128
	aOmxVideoParamPortType->nSize = sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1129
	aOmxVideoParamPortType->nVersion = TOmxILSpecVersion();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1130
	aOmxVideoParamPortType->nPortIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1131
	aOmxVideoParamPortType->nIndex = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1132
	// The following 2 values should be over written by the correct ones for this index
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1133
	aOmxVideoParamPortType->eCompressionFormat = OMX_VIDEO_CodingUnused;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1134
	aOmxVideoParamPortType->eColorFormat = OMX_COLOR_FormatCrYCbY;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1135
	aOmxVideoParamPortType->xFramerate = 0;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1136
	GetParameter(iGraphicSinkCompHandle,OMX_IndexParamVideoPortFormat,aOmxVideoParamPortType,OMX_ErrorNone);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1137
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1138
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1139
void CGraphicsSinkTestBase::CompareU32Param(OMX_U32 aSetParamType, OMX_U32 aGetParamType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1140
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1141
	if (aSetParamType != aGetParamType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1142
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1143
		ERR_PRINTF3(_L("Comparison failed:  Set value: %d Get value: %d"),aSetParamType,aGetParamType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1144
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1145
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1146
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1147
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1148
void CGraphicsSinkTestBase::CompareCFTParam(OMX_COLOR_FORMATTYPE aInputParamType, OMX_COLOR_FORMATTYPE aOutputParamType, OMX_INDEXTYPE aIndexType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1149
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1150
	if (aInputParamType != aOutputParamType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1151
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1152
		ERR_PRINTF3(_L("Comparison failed:  set value: %d Index : %X"),aInputParamType,aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1153
		ERR_PRINTF3(_L("Comparison failed:  get value: %d Index : %X"),aOutputParamType,aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1154
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1155
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1156
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1157
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1158
void CGraphicsSinkTestBase::CompareVCTParam(OMX_VIDEO_CODINGTYPE aInputParamType, OMX_VIDEO_CODINGTYPE aOutputParamType, OMX_INDEXTYPE aIndexType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1159
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1160
	if (aInputParamType != aOutputParamType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1161
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1162
		ERR_PRINTF3(_L("Comparison failed:  set value: %d Index : %X"),aInputParamType,aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1163
		ERR_PRINTF3(_L("Comparison failed:  get value: %d Index : %X"),aOutputParamType,aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1164
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1165
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1166
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1167
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1168
void CGraphicsSinkTestBase::CompareBoolParam(OMX_BOOL aInputParamType, OMX_BOOL aOutputParamType, OMX_INDEXTYPE aIndexType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1169
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1170
	if (aInputParamType != aOutputParamType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1171
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1172
		ERR_PRINTF3(_L("Comparison failed:  set value: %d Index : %X"),aInputParamType,aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1173
		ERR_PRINTF3(_L("Comparison failed:  get value: %d Index : %X"),aOutputParamType,aIndexType);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1174
		return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1175
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1176
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1177
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1178
TInt CGraphicsSinkTestBase::PostKickOffTestL(TInt aTimerId)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1179
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1180
	if (aTimerId == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1181
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1182
		iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1183
		return KErrNone;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1184
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1185
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1186
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1187
		if (iPreviousState == OMX_StatePause && (TestStepName() == (_L("MMVIDEO-OMX-GS-007-01-HP")) ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1188
				TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP"))))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1189
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1190
			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1191
			return KErrNone;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1192
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1193
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1194
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1195
			if (iPreviousState == OMX_StatePause && (TestStepName() == (_L("MMVIDEO-OMX-GS-007-02-HP")) ||
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1196
					TestStepName() == (_L("MMVIDEO-OMX-GS-007-04-HP"))))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1197
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1198
				SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1199
				return KErrNone;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1200
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1201
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1202
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1203
	return KErrNone;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1204
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1205
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1206
void CGraphicsSinkTestBase::ErrorEventTask_001(OMX_ERRORTYPE aOmxError)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1207
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1208
	// INFO_PRINTF2(_L("GSTest001: EventError iteration: %d"), iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1209
	if (iTestIteration == 0)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1210
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1211
		if (aOmxError == OMX_ErrorIncorrectStateTransition)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1212
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1213
			GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1214
			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StatePause,0,OMX_ErrorNone);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1215
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1216
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1217
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1218
			ERR_PRINTF1(_L("CGraphicsSinkTestBase::ErrorEventTask_001: Invoked incorrect error event"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1219
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1220
			return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1221
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1222
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1223
	if (iTestIteration == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1224
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1225
		if (aOmxError == OMX_ErrorIncorrectStateTransition)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1226
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1227
			GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1228
			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateLoaded,0,OMX_ErrorNone);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1229
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1230
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1231
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1232
			ERR_PRINTF1(_L("CGraphicsSinkTestBase::ErrorEventTask_001: Invoked incorrect error event"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1233
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1234
			return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1235
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1236
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1237
	if (iTestIteration == 2)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1238
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1239
		if (aOmxError == OMX_ErrorSameState)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1240
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1241
			GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1242
			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateInvalid,0,OMX_ErrorNone);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1243
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1244
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1245
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1246
			ERR_PRINTF1(_L("CGraphicsSinkTestBase::ErrorEventTask_001: Invoked incorrect error event"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1247
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1248
			return SetTestStepError(KErrGeneral);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1249
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1250
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1251
	if (iTestIteration == 3)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1252
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1253
		if (iExecutingToIdle == EFalse && aOmxError == OMX_ErrorInvalidState)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1254
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1255
			// INFO_PRINTF1(_L("CGraphicsSinkTestBase::ErrorEventTask_001: Invoked correct error event"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1256
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1257
			return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1258
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1259
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1260
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1261
			ERR_PRINTF1(_L("CGraphicsSinkTestBase::ErrorEventTask_001: Invoked incorrect error event"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1262
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1263
			return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1264
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1265
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1266
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1267
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1268
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1269
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1270
void CGraphicsSinkTestBase::LoadedStateTask_002()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1271
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1272
	iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1273
	// INFO_PRINTF2(_L("GSTest002: Test complete iteration: %d"), iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1274
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1275
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1276
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-002-01-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1277
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1278
		if (iTestIteration == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1279
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1280
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_002: __MM_HEAP_MARK"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1281
			__UHEAP_MARK;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1282
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1283
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1284
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1285
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_002: __MM_HEAP_MARKEND"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1286
			__UHEAP_MARKEND;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1287
			iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1288
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1289
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1290
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1291
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-002-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1292
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1293
		// Only increase the buffer count every 5 times
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1294
		iOmxParamPortInput.nBufferCountActual = iOmxParamPortInput.nBufferCountMin + iTestIteration/5;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1295
		// INFO_PRINTF2(_L("CGraphicsSinkTestBase::LoadedStateTask_002: Setting nBufferCountActual: %d"), iOmxParamPortInput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1296
		SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1297
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1298
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1299
	if(iTestIteration < KMaxTestIterations && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1300
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1301
		AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1302
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1303
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1304
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1305
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1306
		return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1307
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1308
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1309
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1310
void CGraphicsSinkTestBase::IdleStateTask_002()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1311
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1312
	iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1313
	FreeBufferTask(&iInputBufferHeaders,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1314
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1315
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1316
void CGraphicsSinkTestBase::LoadedStateTask_003()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1317
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1318
	iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1319
	// INFO_PRINTF2(_L("GSTest003: Test complete iteration: %d"), iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1320
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1321
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1322
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-003-01-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1323
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1324
		if (iTestIteration == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1325
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1326
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_003: __MM_HEAP_MARK"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1327
			__UHEAP_MARK;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1328
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1329
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1330
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1331
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_003: __MM_HEAP_MARKEND"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1332
			DeleteCCameraBuf();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1333
			__UHEAP_MARKEND;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1334
			iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1335
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1336
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1337
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1338
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-003-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1339
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1340
		// Only increase the buffer count every 5 times
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1341
		iOmxParamPortInput.nBufferCountActual = iOmxParamPortInput.nBufferCountMin + iTestIteration/5;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1342
		// INFO_PRINTF2(_L("CGraphicsSinkTestBase::LoadedStateTask_003: Setting nBufferCountActual: %d"), iOmxParamPortOutput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1343
		SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1344
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1345
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1346
	if(!iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1347
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1348
		DeleteCCameraBuf();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1349
		AllocateCCameraBuf();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1350
		UseBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1351
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1352
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1353
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1354
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1355
		return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1356
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1357
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1358
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1359
void CGraphicsSinkTestBase::IdleStateTask_003()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1360
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1361
	iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1362
	FreeBufferTask(&iOutputBufferHeaders,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1363
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1364
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1365
void CGraphicsSinkTestBase::LoadedStateTask_004()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1366
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1367
	// INFO_PRINTF2(_L("GSTest004: Test complete iteration: %d"), iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1368
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1369
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1370
	GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1371
	iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1372
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-004-01-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1373
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1374
		if (iTestIteration == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1375
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1376
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_004: __MM_HEAP_MARK"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1377
			__UHEAP_MARK;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1378
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1379
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1380
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1381
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_004: __MM_HEAP_MARKEND"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1382
			__UHEAP_MARKEND;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1383
			iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1384
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1385
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1386
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1387
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-004-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-05-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1388
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1389
		iOmxParamPortInput.nBufferCountActual = 5 + iTestIteration/5;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1390
		INFO_PRINTF2(_L("CGraphicsSinkTestBase::LoadedStateTask_004: Setting nBufferCountActual: %d"), iOmxParamPortInput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1391
		SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1392
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1393
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1394
	if(iTestIteration < KMaxTestIterations && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1395
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1396
		AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1397
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1398
	else 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1399
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1400
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1401
		return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1402
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1403
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1404
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1405
void CGraphicsSinkTestBase::IdleStateTask_004()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1406
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1407
	GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateIdle);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1408
	if(iPreviousState == OMX_StateLoaded)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1409
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1410
		iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1411
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1412
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1413
	else if(iPreviousState == OMX_StateExecuting)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1414
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1415
		// INFO_PRINTF2(_L("CGraphicsSinkTestBase::IdleStateTask_004: Executing to Idle task Count %d"),iExecuteToIdleCount);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1416
		iExecuteToIdleCount++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1417
		iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1418
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1419
		if (TestStepName() == (_L("MMVIDEO-OMX-GS-004-01-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-02-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1420
				|| TestStepName() == (_L("MMVIDEO-OMX-GS-004-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1421
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1422
			FreeBufferTask(&iInputBufferHeaders,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1423
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1424
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1425
		if (TestStepName() == (_L("MMVIDEO-OMX-GS-004-04-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-004-05-HP"))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1426
				 || TestStepName() == (_L("MMVIDEO-OMX-GS-004-06-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1427
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1428
			if (iExecuteToIdleCount < 20)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1429
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1430
				SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1431
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1432
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1433
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1434
				FreeBufferTask(&iInputBufferHeaders,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1435
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1436
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1437
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1438
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1439
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1440
void CGraphicsSinkTestBase::ExecutingStateTask_004()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1441
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1442
	GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateExecuting);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1443
	iPreviousState = OMX_StateExecuting;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1444
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1445
	if (TestStepName() == (_L("MMVIDEO-OMX-GS-004-06-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1446
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1447
		iExecuteToIdleCount = 20;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1448
		iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1449
		EmptyThisBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1450
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1451
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1452
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1453
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle, 0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1454
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1455
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1456
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1457
void CGraphicsSinkTestBase::LoadedStateTask_005()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1458
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1459
	// INFO_PRINTF2(_L("GSTest005: Test complete iteration: %d"), iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1460
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1461
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1462
	GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1463
	iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1464
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-005-01-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1465
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1466
		if (iTestIteration == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1467
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1468
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_005: __MM_HEAP_MARK"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1469
			__UHEAP_MARK;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1470
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1471
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1472
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1473
			INFO_PRINTF1(_L("CGraphicsSinkTestBase::LoadedStateTask_005: __MM_HEAP_MARKEND"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1474
			__UHEAP_MARKEND;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1475
			iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1476
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1477
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1478
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1479
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-005-03-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1480
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1481
		iOmxParamPortInput.nBufferCountActual = Min(5 + iTestIteration, 100); // let's cap the amount of buffers :-)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1482
		// INFO_PRINTF2(_L("CGraphicsSinkTestBase::LoadedStateTask_005: Setting nBufferCountActual: %d"), iOmxParamPortInput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1483
		SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1484
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1485
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1486
	if(iTestIteration < KMaxTestIterations && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1487
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1488
		AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1489
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1490
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1491
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1492
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1493
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1494
		return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1495
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1496
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1497
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1498
void CGraphicsSinkTestBase::IdleStateTask_005()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1499
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1500
	GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateIdle);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1501
	if(iPreviousState == OMX_StateLoaded)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1502
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1503
		iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1504
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1505
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1506
	if(iPreviousState == OMX_StateExecuting)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1507
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1508
		iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1509
		if (TestStepName() == (_L("MMVIDEO-OMX-GS-005-04-HP")) && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1510
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1511
			// INFO_PRINTF2(_L("CGraphicsSinkTestBase::IdleStateTask_005: Test complete iteration: %d"), iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1512
			iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1513
			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1514
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1515
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1516
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1517
			FreeBufferTask(&iInputBufferHeaders,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1518
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1519
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1520
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1521
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1522
void CGraphicsSinkTestBase::ExecutingStateTask_005()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1523
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1524
	GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateExecuting);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1525
	iPreviousState = OMX_StateExecuting;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1526
	EmptyThisBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1527
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1528
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1529
void CGraphicsSinkTestBase::LoadedStateTask_006()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1530
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1531
	// INFO_PRINTF2(_L("GSTest006: Test complete iteration: %d"), iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1532
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1533
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1534
	iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1535
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-006-01-HP")) && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1536
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1537
		iOmxParamPortInput.nBufferCountActual = iOmxParamPortInput.nBufferCountActual + 1;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1538
		SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1539
		AllocateBufferTaskStress();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1540
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1541
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1542
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1543
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1544
		return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1545
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1546
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1547
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1548
void CGraphicsSinkTestBase::IdleStateTask_006()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1549
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1550
	iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1551
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-006-01-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1552
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1553
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateLoaded,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1554
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1555
		FreeBuffer(iGraphicSinkCompHandle,0,iInputBufferHeaders);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1556
		iInputBufferHeaders.Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1557
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1558
	if(TestStepName() == (_L("MMVIDEO-OMX-GS-006-02-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1559
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1560
		// Allocate to many buffers
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1561
		TInt bytesperpixel = COmxILMMBuffer::BytesPerPixel(iOmxParamPortInput.format.video.eColorFormat);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1562
		TInt size = bytesperpixel * iOmxParamPortInput.format.video.nFrameWidth * iOmxParamPortInput.format.video.nFrameHeight;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1563
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1564
		iOmxErrorType = iGraphicSinkCompHandle->AllocateBuffer(iGraphicSinkCompHandle,&iInputBufferHeader,0,NULL,size);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1565
		if (OMX_ErrorIncorrectStateOperation != iOmxErrorType)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1566
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1567
			ERR_PRINTF1(_L("AllocateBuffer failed to return error"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1568
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1569
			return SetTestStepError(PrintOmxError(iOmxErrorType));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1570
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1571
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1572
		// Confirm state remains OMX_StateIdle
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1573
		GetState(iGraphicSinkCompHandle,&iOmxStateType,OMX_StateIdle);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1574
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1575
		// FreeBuffer without calling SendCommand to OMX_StateLoaded
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1576
		FreeBuffer(iGraphicSinkCompHandle, 0, iInputBufferHeaders);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1577
		iInputBufferHeaders.Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1578
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1579
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1580
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1581
void CGraphicsSinkTestBase::LoadedStateTask_007()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1582
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1583
	switch (iPreviousState)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1584
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1585
		case OMX_StateIdle:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1586
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1587
			iPreviousState = OMX_StateLoaded;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1588
			CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1589
			return SetTestStepResult(EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1590
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1591
		case OMX_StateWaitForResources:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1592
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1593
			// State is OMX_StateIdle from OMX_StateWaitForResources
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1594
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1595
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1596
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1597
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1598
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1599
void CGraphicsSinkTestBase::IdleStateTask_007()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1600
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1601
	switch (iPreviousState)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1602
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1603
		case OMX_StateLoaded:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1604
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1605
			iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1606
			if (TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP")) || TestStepName() == (_L("MMVIDEO-OMX-GS-007-04-HP")))
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1607
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1608
				SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StatePause,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1609
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1610
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1611
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1612
				SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1613
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1614
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1615
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1616
		case OMX_StateExecuting:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1617
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1618
			iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1619
			if (TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP")) && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1620
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1621
				SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StatePause,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1622
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1623
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1624
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1625
				// INFO_PRINTF2(_L("CGraphicsSinkTestBase::IdleStateTask_007:: Executing to Idle task Count %d"),iExecuteToIdleCount);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1626
				iExecuteToIdleCount++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1627
				SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateLoaded,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1628
				
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1629
				FreeBuffer(iGraphicSinkCompHandle,0,iInputBufferHeaders);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1630
				iInputBufferHeaders.Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1631
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1632
			break;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1633
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1634
		case OMX_StatePause:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1635
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1636
			iPreviousState = OMX_StateIdle;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1637
			if (TestStepName() == (_L("MMVIDEO-OMX-GS-007-04-HP")) && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1638
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1639
				SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StatePause,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1640
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1641
			else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1642
				{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1643
				if (iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1644
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1645
					// INFO_PRINTF2(_L("CGraphicsSinkTestBase::IdleStateTask_007:: Executing to Idle task Count %d"),iExecuteToIdleCount);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1646
					iExecuteToIdleCount++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1647
					SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateLoaded,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1648
					
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1649
					FreeBuffer(iGraphicSinkCompHandle,0,iInputBufferHeaders);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1650
					iInputBufferHeaders.Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1651
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1652
				else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1653
					{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1654
					SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1655
					}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1656
				}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1657
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1658
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1659
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1660
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1661
void CGraphicsSinkTestBase::PauseStateTask_007()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1662
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1663
	iPreviousState = OMX_StatePause;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1664
	// INFO_PRINTF2(_L("CGraphicsSinkTestBase::PauseStateTask_007:: Pause state task count %d"),iPauseStateCount);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1665
	if(++iPauseStateCount == 5)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1666
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1667
		iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1668
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1669
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1670
	if(iTestShutdown)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1671
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1672
		delete iTestShutdown;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1673
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1674
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1675
	TRAPD(err, iTestShutdown = COmxGsTestShutdown::NewL(this,2));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1676
	if(err)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1677
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1678
		ERR_PRINTF1(_L("OOM ERROR"));
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1679
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1680
		return SetTestStepError(err);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1681
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1682
	iInterval = KTSU_OMX_GS_PAUSE;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1683
	iTestShutdown->Start(iInterval,KErrGeneral, EPass);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1684
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1685
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1686
void CGraphicsSinkTestBase::ExecutingStateTask_007()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1687
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1688
	iPreviousState = OMX_StateExecuting;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1689
	// INFO_PRINTF2(_L("CGraphicsSinkTestBase::ExecutingStateTask_007 Idle to Executing task Count %d"),iIdleToExecuteCount);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1690
    iIdleToExecuteCount++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1691
    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1692
    if (TestStepName() == (_L("MMVIDEO-OMX-GS-007-03-HP")) || iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1693
    	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1694
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1695
    	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1696
    else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1697
    	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1698
    	EmptyThisBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1699
    	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1700
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1701
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1702
void CGraphicsSinkTestBase::StartStateTransitionTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1703
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1704
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1705
	iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1706
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1707
	if (iTestStep == 4)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1708
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1709
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateWaitForResources,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1710
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1711
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1712
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1713
		AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1714
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1715
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1716
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1717
void CGraphicsSinkTestBase::WaitForResourcesTransitionTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1718
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1719
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateWaitForResources);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1720
	iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1721
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1722
	if (iTestStep == 4)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1723
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1724
		iWaitForResources = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1725
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateLoaded,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1726
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1727
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1728
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1729
void CGraphicsSinkTestBase::LoadedStateTransitionTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1730
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1731
	//INFO_PRINTF3(_L("GSTest00%d: Test complete iteration: %d"), iTestCase, iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1732
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1733
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1734
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1735
	iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1736
	if(iTestStep == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1737
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1738
		if (iTestIteration == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1739
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1740
			INFO_PRINTF3(_L("LoadedStateTransitionTask_00%d_0%d: __MM_HEAP_MARK"), iTestCase,iTestStep);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1741
			__UHEAP_MARK;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1742
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1743
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1744
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1745
			INFO_PRINTF3(_L("LoadedStateTransitionTask_00%d_0%d: __MM_HEAP_MARKEND"), iTestCase,iTestStep);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1746
			__UHEAP_MARKEND;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1747
			iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1748
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1749
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1750
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1751
	if(iTestStep == 3)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1752
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1753
		if ((iOmxParamPortInput.nBufferCountMin + iTestIteration/10) <= MAXNUMOFBUFFERS)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1754
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1755
			iOmxParamPortInput.nBufferCountActual = iOmxParamPortInput.nBufferCountMin + iTestIteration/10;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1756
			//INFO_PRINTF3(_L("GSTest00%d: Setting INPUT nBufferCountActual: %d"),iTestCase,iOmxParamPortInput.nBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1757
			SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1758
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1759
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1760
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1761
	if(iTestIteration < KMaxTestIterations && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1762
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1763
		if (iTestStep == 4 && iWaitForResources)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1764
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1765
			SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateWaitForResources,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1766
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1767
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1768
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1769
			iWaitForResources = EFalse;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1770
			AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1771
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1772
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1773
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1774
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1775
		CActiveScheduler::Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1776
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1777
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1778
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1779
void CGraphicsSinkTestBase::IdleStateTransitionTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1780
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1781
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateIdle);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1782
	if(iGphxPrevState == OMX_StateLoaded)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1783
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1784
		iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1785
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1786
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1787
	else if(iGphxPrevState == OMX_StateExecuting)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1788
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1789
		iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1790
		FreeBufferTaskAlt(iInputBufferHeaders,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1791
		iInputBufferHeaders.Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1792
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1793
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1794
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1795
void CGraphicsSinkTestBase::ExecutingStateTransitionTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1796
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1797
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateExecuting);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1798
	iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1799
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1800
	SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1801
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1802
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1803
void CGraphicsSinkTestBase::StartBufferDoneTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1804
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1805
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1806
	iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1807
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1808
	AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1809
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1810
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1811
void CGraphicsSinkTestBase::LoadedStateBufferTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1812
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1813
	// INFO_PRINTF3(_L("GSTest00%d: Test complete iteration: %d"), iTestCase, iTestIteration);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1814
	iTestIteration++;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1815
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateLoaded);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1816
	iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1817
	if(iTestStep == 1 || iTestStep == 5|| iTestStep == 6)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1818
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1819
		if (iTestIteration == 1)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1820
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1821
			INFO_PRINTF3(_L("LoadedStateTransitionTask_00%d_0%d: __MM_HEAP_MARK"), iTestCase,iTestStep);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1822
			__UHEAP_MARK;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1823
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1824
		else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1825
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1826
			INFO_PRINTF3(_L("LoadedStateTransitionTask_00%d_0%d: __MM_HEAP_MARKEND"), iTestCase,iTestStep);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1827
			__UHEAP_MARKEND;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1828
			iTestTimedOut = ETrue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1829
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1830
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1831
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1832
	if(iTestStep == 3)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1833
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1834
		OMX_U32 setbuffercount = iOmxParamPortInput.nBufferCountMin + iTestIteration/10;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1835
		if (setbuffercount <= MAXNUMOFBUFFERS && setbuffercount != iOmxParamPortInput.nBufferCountActual)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1836
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1837
			iOmxParamPortInput.nBufferCountActual = iOmxParamPortInput.nBufferCountMin + iTestIteration/10;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1838
			iDoEmptyBufferDoneLimit = iOmxParamPortInput.nBufferCountActual;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1839
			INFO_PRINTF4(_L("GSTest00%d: Setting INPUT nBufferCountActual: %d DoEmptyBufferDoneLimit: %d")
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1840
					,iTestCase,iOmxParamPortInput.nBufferCountActual,iDoEmptyBufferDoneLimit);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1841
			SetParameter(iGraphicSinkCompHandle,OMX_IndexParamPortDefinition,&iOmxParamPortInput);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1842
			}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1843
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1844
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1845
	if(iTestIteration < KMaxTestIterations && !iTestTimedOut)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1846
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1847
		iWaitForResources = EFalse;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1848
		AllocateBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1849
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1850
	else
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1851
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1852
		CActiveScheduler::Stop(); // End the test
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1853
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1854
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1855
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1856
void CGraphicsSinkTestBase::IdleStateBufferTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1857
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1858
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateIdle);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1859
	if(iGphxPrevState == OMX_StateLoaded)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1860
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1861
		iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1862
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateExecuting,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1863
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1864
	else if(iGphxPrevState == OMX_StateExecuting)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1865
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1866
		iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1867
		FreeBufferTaskAlt(iInputBufferHeaders,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1868
		iInputBufferHeaders.Reset();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1869
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1870
	}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1871
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1872
void CGraphicsSinkTestBase::ExecutingStateBufferTask()
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1873
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1874
	GetState(iGraphicSinkCompHandle,&iState,OMX_StateExecuting);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1875
	iGphxPrevState = iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1876
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1877
	EmptyThisBufferTask();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1878
	if (iTestStep == 5)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1879
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1880
		SendCommand(iGraphicSinkCompHandle,OMX_CommandStateSet,OMX_StateIdle,0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1881
		}
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
  1882
	}