diff -r a36789189b53 -r 095bea5f582e khronosfws/openmax_al/src/common/xaobjectitf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/khronosfws/openmax_al/src/common/xaobjectitf.h Tue Aug 31 15:43:02 2010 +0300 @@ -0,0 +1,120 @@ +/* + * Copyright (c) 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: + * + */ + +#ifndef XAOBJECTITF_H +#define XAOBJECTITF_H + +#include "openmaxalwrapper.h" +#include "xaglobals.h" +#include "xaplatform.h" + +/** MACROS **/ + +/** TYPES **/ +/* object-specific function pointers */ +typedef XAresult (*xaDoRealizeImpl)(XAObjectItf self); +typedef XAresult (*xaDoResumeImpl)(XAObjectItf self); +typedef void (*xaFreeResourcesImpl)(XAObjectItf self); + +/** ENUMERATIONS **/ + +/** STRUCTURES **/ +typedef struct XAObjItfMapEntry_ + { + XAInterfaceID iid; + XAuint8 mapIdx; + void *pItf; + XAboolean locEnabled; + XAboolean required; + XAboolean isDynamic; + } XAObjItfMapEntry; + +/* Definition of XAObjectItf implementation */ +typedef struct XAObjectItfImpl_ + { + /* parent interface */ + struct XAObjectItf_ itf; + /* pointer to self */ + struct XAObjectItfImpl_* self; + + /* variables */ + XAint32 priority; + XAboolean preemptable; + XAuint32 state; + + /* array of available interfaces */ + XAObjItfMapEntry *interfaceMap; + XAuint32 interfaceCount; + + /* async related variables */ + XAImplThreadHandle asyncThr; + XAboolean asyncOngoing; + xaObjectCallback callBack; + void *context; + XAObjectItf cbPtrToSelf; + + /* object-specific function implementation pointers */ + /* (must be implemented by every object) */ + xaDoRealizeImpl DoRealizeImpl; + xaDoResumeImpl DoResumeImpl; + xaFreeResourcesImpl FreeResourcesImpl; + } XAObjectItfImpl; + +/** METHODS **/ + +/* Base interface XAObjectItf implementation */ +XAresult XAObjectItfImpl_Realize(XAObjectItf self, XAboolean async); + +XAresult XAObjectItfImpl_Resume(XAObjectItf self, XAboolean async); + +XAresult XAObjectItfImpl_GetState(XAObjectItf self, XAuint32 *pState); + +XAresult XAObjectItfImpl_GetInterface(XAObjectItf self, + const XAInterfaceID iid, void *pInterface); + +XAresult XAObjectItfImpl_RegisterCallback(XAObjectItf self, + xaObjectCallback callback, void *pContext); + +void XAObjectItfImpl_AbortAsyncOperation(XAObjectItf self); + +void XAObjectItfImpl_Destroy(XAObjectItf self); + +XAresult XAObjectItfImpl_SetPriority(XAObjectItf self, XAint32 priority, + XAboolean preemptable); + +XAresult XAObjectItfImpl_GetPriority(XAObjectItf self, XAint32 *pPriority, + XAboolean *pPreemptable); + +XAresult XAObjectItfImpl_SetLossOfControlInterfaces(XAObjectItf self, + XAint16 numInterfaces, XAInterfaceID *pInterfaceIDs, + XAboolean enabled); + +/* XAObjectItfImpl -specific methods */ + +/* Allocate and initialize base object */ +XAresult XAObjectItfImpl_Init(XAObjectItfImpl* self, XAuint32 itfCount, + const XAInterfaceID** itfIIDs, xaDoRealizeImpl doRealizeImpl, + xaDoResumeImpl doResumeImpl, xaFreeResourcesImpl freeResourcesImpl); + +/* methods for asynchronous service */ +void* XAObjectItfImpl_AsyncRealize(void* args); +void* XAObjectItfImpl_AsyncResume(void* args); + +XAObjItfMapEntry* XAObjectItfImpl_GetItfEntry(const XAObjectItf self, + const XAInterfaceID iid); + +#endif /* XAOBJECTITF_H */