omxilvideocomps/omxilgraphicsink/src/omxilgraphicsinkprocessingfunction.h
author hgs
Fri, 08 Oct 2010 22:09:17 +0100
changeset 0 5d29cba61097
permissions -rw-r--r--
2010wk38_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     1
/*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2008-2009 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
 @file
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    20
 @internalComponent
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    21
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    22
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    23
#ifndef OMXILGRAPHICSINKPROCESSINGFUNCTION_H
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    24
#define OMXILGRAPHICSINKPROCESSINGFUNCTION_H
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    25
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    26
#include <e32msgqueue.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    27
#include <openmax/il/common/omxilprocessingfunction.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    28
#include <openmax/il/extensions/omxilsymbianvideographicsinkextensions.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    29
#include <openmax/il/khronos/v1_x/OMX_Video.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    30
#include <graphics/surface.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    31
#include <graphics/surfacemanager.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    32
#include <graphics/surfaceupdateclient.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    33
#include <graphics/surfaceconfiguration.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    34
#include "mmfbuffershared.h"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    35
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    36
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    37
class COmxILGraphicSinkVPB0Port;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    38
/**
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    39
The class for GraphicSink processing functions. This provides the main processing engine behind the graphic sink.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    40
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    41
class COmxILGraphicSinkProcessingFunction :
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    42
	public COmxILProcessingFunction
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    43
	{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    44
private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    45
    class TGraphicSurfaceSettings
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    46
        {
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    47
    public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    48
        TGraphicSurfaceSettings() : iSurfaceAttributes(iSurfaceAttributesBuf()) {};
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    49
        
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    50
    public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    51
        // Surface configuration
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    52
        TSurfaceConfiguration iSurfaceConfig;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    53
        // A package for surface attribute.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    54
        RSurfaceManager::TSurfaceCreationAttributesBuf iSurfaceAttributesBuf;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    55
        // A surface attribute.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    56
        RSurfaceManager::TSurfaceCreationAttributes& iSurfaceAttributes;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    57
        } iGraphicSurfaceSettings;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    58
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    59
public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    60
	static COmxILGraphicSinkProcessingFunction* NewL(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    61
			MOmxILCallbackNotificationIf& aCallbacks);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    62
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    63
	~COmxILGraphicSinkProcessingFunction();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    64
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    65
	OMX_ERRORTYPE StateTransitionIndication(TStateIndex aNewState);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    66
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    67
	OMX_ERRORTYPE BufferFlushingIndication(TUint32 aPortIndex,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    68
										   OMX_DIRTYPE aDirection);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    69
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    70
	OMX_ERRORTYPE ParamIndication(OMX_INDEXTYPE aParamIndex,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    71
									  const TAny* apComponentParameterStructure);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    72
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    73
	OMX_ERRORTYPE ConfigIndication(OMX_INDEXTYPE aConfigIndex,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    74
									   const TAny* apComponentConfigStructure);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    75
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    76
	OMX_ERRORTYPE BufferIndication(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    77
		OMX_BUFFERHEADERTYPE* apBufferHeader,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    78
		OMX_DIRTYPE aDirection);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    79
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    80
	OMX_BOOL BufferRemovalIndication(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    81
		OMX_BUFFERHEADERTYPE* apBufferHeader,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    82
		OMX_DIRTYPE aDirection);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    83
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    84
	void CreateBufferL(OMX_U8*& aPortSpecificBuffer, OMX_PTR& aPortPrivate, OMX_U32 aBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    85
	void DestroyBuffer(OMX_PTR apPortPrivate);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    86
	void InitBufferL(OMX_U32 aSizeBytes, OMX_U8* apBuffer, OMX_U32 aBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    87
	void DeInitBuffer();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    88
	void WaitForTransitionToPauseToFinish();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    89
	void TransitionToPauseFinished();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    90
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    91
	TUidPixelFormat ConvertPixelFormat(OMX_COLOR_FORMATTYPE aColorFormat);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    92
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    93
	// Access private member (read and write)
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    94
	inline MOmxILCallbackNotificationIf& GetCallbacks();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    95
	inline TSurfaceConfiguration& GetSurfaceConfiguration();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    96
	inline RPointerArray<OMX_BUFFERHEADERTYPE>& BuffersToEmpty();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    97
	inline TGraphicSurfaceSettings& GraphicSurfaceSettings();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    98
	inline OMX_STATETYPE State();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    99
	inline void SetState(OMX_STATETYPE aState);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   100
	inline RSurfaceManager& SurfaceManager();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   101
	inline TInt GetFastCounterFrequency();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   102
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   103
	void SetSharedChunkBufConfig(TMMSharedChunkBufConfig aSharedChunkBufConfig);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   104
    void GetSharedChunkMetadata(OMX_U32& aHandleId, OMX_U64& aThreadId) const;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   105
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   106
public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   107
	//Not own, just points to related graphic sink port, so set it to public data member.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   108
    COmxILGraphicSinkVPB0Port* iGraphicSinkPort;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   109
private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   110
	COmxILGraphicSinkProcessingFunction(MOmxILCallbackNotificationIf& aCallbacks);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   111
	void ConstructL();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   112
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   113
	void InitSurfaceAttributes();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   114
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   115
private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   116
	RPointerArray<OMX_BUFFERHEADERTYPE> iBuffersToEmpty;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   117
	OMX_BUFFERHEADERTYPE* iBufferOnScreen;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   118
	RMutex iBufferMutex;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   119
	OMX_STATETYPE iState;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   120
	TInt iFastCounterFrequency;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   121
    // A surface manager.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   122
    RSurfaceManager iSurfaceManager;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   123
    TThreadId iOwnerThreadId;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   124
    CActiveSchedulerWait* iTransitionToPauseWait;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   125
    RSemaphore iTransitionToPauseWaitSemaphore;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   126
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   127
	/**
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   128
	 * Mediates access to the RSurfaceUpdateSession.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   129
	 */
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   130
	class CGraphicSurfaceAccess : public CActive
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   131
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   132
	public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   133
		static CGraphicSurfaceAccess* NewL(COmxILGraphicSinkProcessingFunction& aParent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   134
		~CGraphicSurfaceAccess();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   135
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   136
		// from CActive
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   137
		void RunL();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   138
		void DoCancel();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   139
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   140
		TInt OpenDevice();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   141
		void CloseDevice();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   142
		TInt Execute();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   143
		TInt Pause();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   144
		TInt Stop();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   145
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   146
		void CreateBufferL(OMX_U8*& aPortSpecificBuffer, OMX_PTR& aPortPrivate, OMX_U32 aBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   147
		void InitBufferL(OMX_U32 aSizeBytes, OMX_U8* apBuffer, OMX_U32 aBufferCountActual);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   148
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   149
		TInt ProcessNextBuffer();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   150
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   151
		void ResetSurfaceId();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   152
		void CloseChunk();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   153
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   154
	public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   155
	    TInt iSharedChunkHandleId;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   156
	    TUint64 iSharedChunkThreadId;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   157
	    TMMSharedChunkBufConfig iSharedChunkBufConfig;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   158
        TBool iIsLocalChunk;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   159
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   160
	private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   161
		CGraphicSurfaceAccess(COmxILGraphicSinkProcessingFunction& aParent);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   162
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   163
	public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   164
	    TInt iBufferIdGenerator;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   165
	    
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   166
	private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   167
		OMX_BUFFERHEADERTYPE* iCurrentBuffer;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   168
		COmxILGraphicSinkProcessingFunction& iParent;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   169
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   170
		// Memory chunk
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   171
		RChunk iChunk;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   172
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   173
        #ifdef ILCOMPONENTCONFORMANCE
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   174
		// These are added for the ILComponentConformance Suite
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   175
		// Handles copy of data in case of Non-buffer supplier, while running IL Component conformance suite
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   176
		TBool iIsBufferSupplier;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   177
		// Conformance suite does not handle chunks therefore offsets from base chunk address are held in this array
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   178
		RArray<TInt> iArrayOffsets;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   179
        #endif
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   180
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   181
		// Surface Id
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   182
		TSurfaceId iSurfaceId;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   183
		// A surface update session.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   184
		RSurfaceUpdateSession iSurfaceUpdateSession;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   185
		// Time stamp of the display notification event
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   186
		TTimeStamp iTimeStamp;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   187
		// An indicator for first frame displayed
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   188
		TBool iFirstFrameDisplayed;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   189
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   190
		RArray<TInt> iOffsetArray;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   191
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   192
		} *iGraphicSurfaceAccess;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   193
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   194
	/**
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   195
	 * Serializes operations into the 'main' thread hosting the Active Scheduler.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   196
	 */
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   197
	class CPFHelper : public CActive
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   198
		{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   199
	public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   200
		static CPFHelper* NewL(COmxILGraphicSinkProcessingFunction& aParent, CGraphicSurfaceAccess& aGraphicSurfaceAccess);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   201
		~CPFHelper();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   202
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   203
		// from CActive
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   204
		void RunL();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   205
		void DoCancel();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   206
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   207
		OMX_ERRORTYPE OpenDevice();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   208
		OMX_ERRORTYPE CloseDevice();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   209
		OMX_ERRORTYPE ExecuteAsync();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   210
		OMX_ERRORTYPE StopAsync();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   211
		OMX_ERRORTYPE StopSync();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   212
		OMX_ERRORTYPE Pause();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   213
		OMX_ERRORTYPE BufferIndication();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   214
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   215
		enum TMessageType 
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   216
			{
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   217
			EOpenDevice,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   218
			ECloseDevice,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   219
			EExecuteCommand,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   220
			EStopCommand,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   221
			EPauseCommand,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   222
			EBufferIndication
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   223
			};
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   224
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   225
		RMsgQueue<TMessageType> iMsgQueue;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   226
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   227
	private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   228
		CPFHelper(COmxILGraphicSinkProcessingFunction& aParent, CGraphicSurfaceAccess& aGraphicSurfaceAccess);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   229
		void ConstructL();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   230
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   231
		TInt ProcessQueue();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   232
		
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   233
		OMX_ERRORTYPE ConvertError(TInt aError);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   234
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   235
	private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   236
		static const TInt KMaxMsgQueueEntries = 25;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   237
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   238
		COmxILGraphicSinkProcessingFunction& iParent;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   239
		CGraphicSurfaceAccess& iGraphicSurfaceAccess;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   240
		} *iPFHelper;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   241
	};
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   242
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   243
#include "omxilgraphicsinkprocessingfunction.inl"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   244
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   245
#endif // OMXILGRAPHICSINKPROCESSINGFUNCTION_H
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   246