diff -r 735348f59235 -r 948c7f65f6d4 omxil/omxilcomponentcommon/src/common/omxilprocessingfunction.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omxil/omxilcomponentcommon/src/common/omxilprocessingfunction.h Wed Sep 01 12:38:50 2010 +0100 @@ -0,0 +1,177 @@ +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +/** + @file + @internalComponent +*/ + +#ifndef OMXILPROCESSINGFUNCTION_H +#define OMXILPROCESSINGFUNCTION_H + +#include + +#include +#include +#include + +#include "omxilfsm.h" + +// Forward declarations +class MOmxILCallbackNotificationIf; + +/** + Base class for component-specific implementations of the Processing Function + abstraction. Component implementations realize within a Processing Function + object the codec specific logic. Component implementations may choose + whether to implement the Processing Function functionality in an additional + independent thread or in-context with the framework. The interface is + designed to generalize the notification of the OpenMAX IL commands, OpenMAX + IL state changes and input/output buffer arrivals to the codec + itself. Implementations of this interface are intended to communicate with + the entity in charge of the egress component communication, the Callback + Manager. + */ +class COmxILProcessingFunction : public CBase + { + +public: + + IMPORT_C ~COmxILProcessingFunction(); + + /** + Framework notification of a state transition in the component. + + @param aNewState The new state. + + @return OMX_ERRORTYPE + */ + virtual OMX_ERRORTYPE StateTransitionIndication( + COmxILFsm::TStateIndex aNewState) = 0; + + /** + Framework notification of a buffer flushing command. + + @param aPortIndex The port that is being flushed. + + @param aDirection The direction of the port that is being flushed. + + @return OMX_ERRORTYPE + */ + virtual OMX_ERRORTYPE BufferFlushingIndication( + TUint32 aPortIndex, + OMX_DIRTYPE aDirection) = 0; + + /** + Framework notification of an OpenMAX IL Param structure change. + + @param aParamIndex The index of the param structure that has changed. + + @param apComponentParameterStructure The param structure. + + @return OMX_ERRORTYPE + */ + virtual OMX_ERRORTYPE ParamIndication( + OMX_INDEXTYPE aParamIndex, + const TAny* apComponentParameterStructure) = 0; + + /** + Framework notification of an OpenMAX IL Config structure change. + + @param aConfigIndex The index of the config structure that has changed. + + @param apComponentConfigStructure The config structure. + + @return OMX_ERRORTYPE + */ + virtual OMX_ERRORTYPE ConfigIndication( + OMX_INDEXTYPE aConfigIndex, + const TAny* apComponentConfigStructure) = 0; + + /** + Framework notification of a buffer arrival. + + @param apBufferHeader The header of the buffer to be processed. + + @param aDirection The direction of the port that has received the + buffer. + + @return OMX_ERRORTYPE + */ + virtual OMX_ERRORTYPE BufferIndication( + OMX_BUFFERHEADERTYPE* apBufferHeader, + OMX_DIRTYPE aDirection) = 0; + + /** + Framework notification of a buffer removal. Here the Processing Function + object is being notified that a buffer needs to be removed from its + internal queues. At present, a synchronous implementation of this method + is assumed. Buffer removal notifications may be originated by the + framework in the following scenarios: + + -# After an OMX_FreeBuffer call has been received from the IL Client or + from another component. + + -# After a port flushing command has been received from the IL Client + AND the port is tunnelled and buffer supplier. + + -# After a transition OMX_StateExecuting/OMX_StatePause -> OMX_StateIdle + has been requested by the IL Client AND the port associated to the + buffer is tunnelled and buffer supplier. + + -# After a port disable command has been received from the IL Client AND + the port associated to the buffer is tunnelled and buffer supplier. + + @param apBufferHeader The buffer header to be removed from internal + queues. + + @param aDirection The direction of the port associated to the buffer. + + @return OMX_BOOL Etrue if the Processing Function has successfully + removed the buffer header from its internal queues, EFalse otherwise. + */ + virtual OMX_BOOL BufferRemovalIndication( + OMX_BUFFERHEADERTYPE* apBufferHeader, + OMX_DIRTYPE aDirection) = 0; + + IMPORT_C virtual OMX_ERRORTYPE ComponentRoleIndication( + TUint aComponentRoleIndex); + + /** + Framework notification of a buffer arrival on a OMX_PortDomainOther; + normally the interested component would just extract the buffer and + let the port manager returns the buffer to the buffer supplier + component via callback immediately. + + @param apBufferHeader The header of the buffer to be processed. + @param aDirection The direction of the port that has received + the buffer. + @return OMX_ERRORTYPE + */ + IMPORT_C virtual OMX_ERRORTYPE MediaTimeIndication(const OMX_TIME_MEDIATIMETYPE& ); + +protected: + + IMPORT_C COmxILProcessingFunction( + MOmxILCallbackNotificationIf& aCallbacks); + +protected: + + MOmxILCallbackNotificationIf& iCallbacks; + + }; + +#endif // OMXILPROCESSINGFUNCTION_H