khronosfws/openmax_al/src/engine/xaengine.c
changeset 25 6f7ceef7b1d1
parent 19 4a629bc82c5e
child 33 5e8b14bae8c3
equal deleted inserted replaced
21:2ed61feeead6 25:6f7ceef7b1d1
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3  * All rights reserved.
     4 * This component and the accompanying materials are made available
     4  * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5  * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6  * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     8  *
     9 * Initial Contributors:
     9  * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10  * Nokia Corporation - initial contribution.
    11 *
    11  *
    12 * Contributors:
    12  * Contributors:
    13 *
    13  *
    14 * Description: 
    14  * Description: Engine Implementation
    15 *
    15  *
    16 */
    16  */
    17 
    17 
    18 #include <stdio.h>
    18 #include <stdio.h>
    19 #include <stdlib.h>
    19 #include <stdlib.h>
    20 #include <assert.h>
    20 #include <assert.h>
    21 
    21 
    36 #include "xaconfigextensionsitf.h"
    36 #include "xaconfigextensionsitf.h"
    37 #include "xathreadsafety.h"
    37 #include "xathreadsafety.h"
    38 #include "xaframeworkmgr.h"  
    38 #include "xaframeworkmgr.h"  
    39 #include "xastaticcameracapsadaptation.h"
    39 #include "xastaticcameracapsadaptation.h"
    40 
    40 
    41 
       
    42 /* Static mapping of enumeration XAEngineInterfaces to interface iids */
    41 /* Static mapping of enumeration XAEngineInterfaces to interface iids */
    43 static const XAInterfaceID* xaEngineItfIIDs[ENGINE_ITFCOUNT]={
    42 static const XAInterfaceID* xaEngineItfIIDs[ENGINE_ITFCOUNT] =
       
    43     {
    44     &XA_IID_OBJECT,
    44     &XA_IID_OBJECT,
    45     &XA_IID_ENGINE,
    45     &XA_IID_ENGINE,
    46     &XA_IID_DYNAMICINTERFACEMANAGEMENT,
    46     &XA_IID_DYNAMICINTERFACEMANAGEMENT,
    47     &XA_IID_THREADSYNC,
    47     &XA_IID_THREADSYNC,
    48 /*    &XA_IID_CONFIGEXTENSION,*/
    48     /*    &XA_IID_CONFIGEXTENSION,*/
    49 /*    &XA_IID_DEVICEVOLUME,*/
    49     /*    &XA_IID_DEVICEVOLUME,*/
    50     &XA_IID_AUDIOIODEVICECAPABILITIES,
    50     &XA_IID_AUDIOIODEVICECAPABILITIES,
    51 /*    &XA_IID_AUDIODECODERCAPABILITIES,*/
    51     /*    &XA_IID_AUDIODECODERCAPABILITIES,*/
    52     &XA_IID_AUDIOENCODERCAPABILITIES
    52     &XA_IID_AUDIOENCODERCAPABILITIES
    53 /*
    53     /*
    54     &XA_IID_CAMERACAPABILITIES,
    54     &XA_IID_CAMERACAPABILITIES,
    55     &XA_IID_IMAGEDECODERCAPABILITIES,
    55     &XA_IID_IMAGEDECODERCAPABILITIES,
    56     &XA_IID_IMAGEENCODERCAPABILITIES,
    56     &XA_IID_IMAGEENCODERCAPABILITIES,
    57     &XA_IID_VIDEODECODERCAPABILITIES,
    57     &XA_IID_VIDEODECODERCAPABILITIES,
    58     &XA_IID_VIDEOENCODERCAPABILITIES
    58     &XA_IID_VIDEOENCODERCAPABILITIES
    59 */
    59      */
    60 };
    60     };
    61 
    61 
    62 /*****************************************************************************
    62 /*****************************************************************************
    63  * Global methods
    63  * Global methods
    64  *****************************************************************************/
    64  *****************************************************************************/
    65 
    65 
    66 /* XAResult XAEngineImpl_Create
    66 /* XAResult XAEngineImpl_Create
    67  * Description: Create object
    67  * Description: Create object
    68  */
    68  */
    69 XAresult XAEngineImpl_Create(XAObjectItf *pEngine,
    69 XAresult XAEngineImpl_Create(XAObjectItf *pEngine, XAuint32 numOptions,
    70                              XAuint32 numOptions,
    70         const XAEngineOption *pEngineOptions, XAuint32 numInterfaces,
    71                              const XAEngineOption *pEngineOptions,
    71         const XAInterfaceID *pInterfaceIds,
    72                              XAuint32 numInterfaces,
    72         const XAboolean *pInterfaceRequired)
    73                              const XAInterfaceID *pInterfaceIds,
    73     {
    74                              const XAboolean *pInterfaceRequired)
       
    75 {
       
    76     XAEngineImpl* pImpl = NULL;
    74     XAEngineImpl* pImpl = NULL;
    77     XAObjectItfImpl* pBaseObj = NULL;
    75     XAObjectItfImpl* pBaseObj = NULL;
    78     XAuint32 itfIndex = 0;
    76     XAuint32 itfIndex = 0;
    79     //XAboolean optEnabled = XA_BOOLEAN_FALSE;
    77     //XAboolean optEnabled = XA_BOOLEAN_FALSE;
    80     XAboolean threadSafeEnabled = XA_BOOLEAN_TRUE;
    78     XAboolean threadSafeEnabled = XA_BOOLEAN_TRUE;
    81     DEBUG_API("->XAEngineImpl_Create");
    79     DEBUG_API("->XAEngineImpl_Create");
    82 
    80 
    83     if( !pEngine )
    81     if (!pEngine)
    84     {
    82         {
    85         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
    83         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineImpl_Create");
    86         DEBUG_API("<-XAEngineImpl_Create");
       
    87         /* invalid parameter */
    84         /* invalid parameter */
    88         return XA_RESULT_PARAMETER_INVALID;
    85         return XA_RESULT_PARAMETER_INVALID;
    89     }
    86         }
    90 
    87 
    91     /* check engine options */
    88     /* check engine options */
    92     if( pEngineOptions && (numOptions != 0))
    89     if (pEngineOptions && (numOptions != 0))
    93     {
    90         {
    94         int i;
    91         int i;
    95         for(i = 0; i<numOptions; i++)
    92         for (i = 0; i < numOptions; i++)
    96         {
    93             {
    97             if (pEngineOptions[i].feature==XA_ENGINEOPTION_LOSSOFCONTROL)
    94             if (pEngineOptions[i].feature == XA_ENGINEOPTION_LOSSOFCONTROL)
    98             {
    95                 {
    99                 //XAboolean optEnabled = pEngineOptions[i].data;
    96                 //XAboolean optEnabled = pEngineOptions[i].data;
   100                 // TODO: do something with the above value or else remove the code
    97                 // TODO: do something with the above value or else remove the code
   101             }
    98                 }
   102             if (pEngineOptions[i].feature==XA_ENGINEOPTION_THREADSAFE)
    99             if (pEngineOptions[i].feature == XA_ENGINEOPTION_THREADSAFE)
   103             {
   100                 {
   104                 threadSafeEnabled = pEngineOptions[i].data;
   101                 threadSafeEnabled = pEngineOptions[i].data;
   105             }
   102                 }
   106         }
   103             }
   107     }
   104         }
   108 
   105 
   109     /* instantiate object implementation */
   106     /* instantiate object implementation */
   110     pImpl = (XAEngineImpl*)calloc(1,sizeof(XAEngineImpl));
   107     pImpl = (XAEngineImpl*) calloc(1, sizeof(XAEngineImpl));
   111     if( !pImpl )
   108     if (!pImpl)
   112     {
   109         {
   113         DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");
   110         DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");DEBUG_API("<-XAEngineImpl_Create");
   114         DEBUG_API("<-XAEngineImpl_Create");
       
   115         /* memory allocation failed */
   111         /* memory allocation failed */
   116         return XA_RESULT_MEMORY_FAILURE;
   112         return XA_RESULT_MEMORY_FAILURE;
   117     }
   113         }
   118     pBaseObj = &pImpl->baseObj;
   114     pBaseObj = &pImpl->baseObj;
   119 
   115 
   120     /* Initialize base object default implementation */
   116     /* Initialize base object default implementation */
   121     XAObjectItfImpl_Init(pBaseObj,
   117     XAObjectItfImpl_Init(pBaseObj, ENGINE_ITFCOUNT, xaEngineItfIIDs,
   122                          ENGINE_ITFCOUNT,
   118             XAEngineImpl_DoRealize, XAEngineImpl_DoResume,
   123                          xaEngineItfIIDs,
   119             XAEngineImpl_FreeResources);
   124                          XAEngineImpl_DoRealize,
       
   125                          XAEngineImpl_DoResume,
       
   126                          XAEngineImpl_FreeResources);
       
   127 
       
   128 
   120 
   129     /* Mark interfaces that need to be exposed */
   121     /* Mark interfaces that need to be exposed */
   130     /* Implicit and mandated interfaces */
   122     /* Implicit and mandated interfaces */
   131     pBaseObj->interfaceMap[ENGINE_ENGINEITF].required = XA_BOOLEAN_TRUE;
   123     pBaseObj->interfaceMap[ENGINE_ENGINEITF].required = XA_BOOLEAN_TRUE;
   132     pBaseObj->interfaceMap[ENGINE_DIMITF].required = XA_BOOLEAN_TRUE;
   124     pBaseObj->interfaceMap[ENGINE_DIMITF].required = XA_BOOLEAN_TRUE;
   133     pBaseObj->interfaceMap[ENGINE_THREADSYNCITF].required = XA_BOOLEAN_TRUE;
   125     pBaseObj->interfaceMap[ENGINE_THREADSYNCITF].required = XA_BOOLEAN_TRUE;
   134     pBaseObj->interfaceMap[ENGINE_AUDIOIODEVICECAPAITF].required = XA_BOOLEAN_TRUE;
   126     pBaseObj->interfaceMap[ENGINE_AUDIOIODEVICECAPAITF].required
   135     pBaseObj->interfaceMap[ENGINE_AUDIOENCODERCAPAITF].required = XA_BOOLEAN_TRUE;
   127             = XA_BOOLEAN_TRUE;
       
   128     pBaseObj->interfaceMap[ENGINE_AUDIOENCODERCAPAITF].required
       
   129             = XA_BOOLEAN_TRUE;
   136     /* Explicit interfaces */
   130     /* Explicit interfaces */
   137     if( (numInterfaces != 0) &&  pInterfaceIds && pInterfaceRequired )
   131     if ((numInterfaces != 0) && pInterfaceIds && pInterfaceRequired)
   138     {
   132         {
   139         /* Check required interfaces */
   133         /* Check required interfaces */
   140         for(itfIndex = 0; itfIndex < numInterfaces; itfIndex++)
   134         for (itfIndex = 0; itfIndex < numInterfaces; itfIndex++)
   141         {
   135             {
   142             /* If mapEntry is null then required interface is not supported.*/
   136             /* If mapEntry is null then required interface is not supported.*/
   143             XAObjItfMapEntry *entry =
   137             XAObjItfMapEntry *entry = XAObjectItfImpl_GetItfEntry(
   144                 XAObjectItfImpl_GetItfEntry((XAObjectItf)&(pBaseObj), pInterfaceIds[itfIndex]);
   138                     (XAObjectItf) &(pBaseObj), pInterfaceIds[itfIndex]);
   145             if( !entry  )
   139             if (!entry)
   146             {
   140                 {
   147                 if( pInterfaceRequired[itfIndex] )
   141                 if (pInterfaceRequired[itfIndex])
   148                 {
   142                     {
   149                     /* required interface cannot be accommodated - fail creation */
   143                     /* required interface cannot be accommodated - fail creation */
   150                     XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj));
   144                     XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj));
   151                     DEBUG_ERR("Required interface not found - abort creation!");
   145                     DEBUG_ERR("Required interface not found - abort creation!");DEBUG_API("<-XAEngineImpl_Create");
   152                     DEBUG_API("<-XAEngineImpl_Create");
       
   153                     return XA_RESULT_FEATURE_UNSUPPORTED;
   146                     return XA_RESULT_FEATURE_UNSUPPORTED;
   154                 }
   147                     }
   155                 else
   148                 else
   156                 {
   149                     {
   157                     DEBUG_INFO("Requested (not required) interface not found - continue creation");
   150                     DEBUG_INFO("Requested (not required) interface not found - continue creation");
   158                 }
   151                     }
   159             }
   152                 }
   160             else
   153             else
   161             {
   154                 {
   162                 entry->required = XA_BOOLEAN_TRUE;
   155                 entry->required = XA_BOOLEAN_TRUE;
   163             }
   156                 }
   164         }
   157             }
   165     }
   158         }
   166 
   159 
   167     /* Initialize XAEngineImpl variables */
   160     /* Initialize XAEngineImpl variables */
   168     if( threadSafeEnabled )
   161     if (threadSafeEnabled)
   169     {
   162         {
   170         XAresult ret = XA_RESULT_SUCCESS;
   163         XAresult ret = XA_RESULT_SUCCESS;
   171         pImpl->isThreadSafe = threadSafeEnabled;
   164         pImpl->isThreadSafe = threadSafeEnabled;
   172         ret = XAThreadSafety_Init( threadSafeEnabled );
   165         ret = XAThreadSafety_Init(threadSafeEnabled);
   173         if ( ret != XA_RESULT_SUCCESS )
   166         if (ret != XA_RESULT_SUCCESS)
   174         {
   167             {
   175             DEBUG_INFO_A1("Unable to initialize thread safety - ret:%x", ret );
   168             DEBUG_INFO_A1("Unable to initialize thread safety - ret:%x", ret );
   176         }
   169             }
   177     }
   170         }
   178 
   171 
   179 /*
       
   180   
       
   181     pImpl->adaptationCtx = XAEngineAdapt_Create();
       
   182 
       
   183 */
       
   184     /* Set ObjectItf to point to newly created object */
   172     /* Set ObjectItf to point to newly created object */
   185     *pEngine = ((XAObjectItf)&(pBaseObj->self));
   173     *pEngine = ((XAObjectItf) &(pBaseObj->self));
   186 
   174 
   187     DEBUG_API("<-XAEngineImpl_Create");
   175     DEBUG_API("<-XAEngineImpl_Create");
   188     return XA_RESULT_SUCCESS;
   176     return XA_RESULT_SUCCESS;
   189 }
   177     }
   190 
   178 
   191 /* XAResult XAEngineImpl_QueryNumSupportedInterfaces
   179 /* XAResult XAEngineImpl_QueryNumSupportedInterfaces
   192  * Description: Statically query number of supported interfaces
   180  * Description: Statically query number of supported interfaces
   193  */
   181  */
   194 XAresult XAEngineImpl_QueryNumSupportedInterfaces(
   182 XAresult XAEngineImpl_QueryNumSupportedInterfaces(
   195                                 XAuint32 *pNumSupportedInterfaces)
   183         XAuint32 *pNumSupportedInterfaces)
   196 {
   184     {
   197     DEBUG_API("->XAEngineImpl_QueryNumSupportedInterfaces");
   185     DEBUG_API("->XAEngineImpl_QueryNumSupportedInterfaces");
   198     if(pNumSupportedInterfaces)
   186     if (pNumSupportedInterfaces)
   199     {
   187         {
   200         *pNumSupportedInterfaces = ENGINE_ITFCOUNT;
   188         *pNumSupportedInterfaces = ENGINE_ITFCOUNT;
   201         DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces");
   189         DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces");
   202         return XA_RESULT_SUCCESS;
   190         return XA_RESULT_SUCCESS;
   203     }
   191         }
   204     else
   192     else
   205     {
   193         {
   206         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   194         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces");
   207         DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces");
       
   208         return XA_RESULT_PARAMETER_INVALID;
   195         return XA_RESULT_PARAMETER_INVALID;
   209     }
   196         }
   210 }
   197     }
   211 
   198 
   212 /* XAResult XAEngineImpl_QuerySupportedInterfaces
   199 /* XAResult XAEngineImpl_QuerySupportedInterfaces
   213  * Description: Statically query supported interfaces
   200  * Description: Statically query supported interfaces
   214  */
   201  */
   215 XAresult XAEngineImpl_QuerySupportedInterfaces(
   202 XAresult XAEngineImpl_QuerySupportedInterfaces(XAuint32 index,
   216                                 XAuint32 index,
   203         XAInterfaceID *pInterfaceId)
   217                                 XAInterfaceID *pInterfaceId)
   204     {
   218 {
       
   219     DEBUG_API("->XAEngineImpl_QuerySupportedInterfaces");
   205     DEBUG_API("->XAEngineImpl_QuerySupportedInterfaces");
   220     if (index >= ENGINE_ITFCOUNT || !pInterfaceId )
   206     if (index >= ENGINE_ITFCOUNT || !pInterfaceId)
   221     {
   207         {
   222         if(pInterfaceId)
   208         if (pInterfaceId)
   223             {
   209             {
   224             *pInterfaceId = XA_IID_NULL;
   210             *pInterfaceId = XA_IID_NULL;
   225             }
   211             }
   226         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   212         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   227         DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces");
   213         DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces");
   228         return XA_RESULT_PARAMETER_INVALID;
   214         return XA_RESULT_PARAMETER_INVALID;
   229     }
   215         }
   230     else
   216     else
   231     {
   217         {
   232         *pInterfaceId = *(xaEngineItfIIDs[index]);
   218         *pInterfaceId = *(xaEngineItfIIDs[index]);
   233         DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces");
   219         DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces");
   234         return XA_RESULT_SUCCESS;
   220         return XA_RESULT_SUCCESS;
   235     }
   221         }
   236 }
   222     }
   237 
   223 
   238 /*****************************************************************************
   224 /*****************************************************************************
   239  * base object XAObjectItfImpl methods
   225  * base object XAObjectItfImpl methods
   240  *****************************************************************************/
   226  *****************************************************************************/
   241 
   227 
   243  * Description: Realize all implicit and explicitly wanted interfaces.
   229  * Description: Realize all implicit and explicitly wanted interfaces.
   244  * Create and initialize implementation-specific variables.
   230  * Create and initialize implementation-specific variables.
   245  * Called from base object XAObjectItfImpl
   231  * Called from base object XAObjectItfImpl
   246  */
   232  */
   247 XAresult XAEngineImpl_DoRealize(XAObjectItf self)
   233 XAresult XAEngineImpl_DoRealize(XAObjectItf self)
   248 {
   234     {
   249     XAuint8 itfIdx = 0;
   235     XAuint8 itfIdx = 0;
   250     XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self);
   236     XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
   251     XAEngineImpl* pObjImpl = (XAEngineImpl*)(pObj);
   237     XAEngineImpl* pObjImpl = (XAEngineImpl*) (pObj);
   252     XAresult ret = XA_RESULT_SUCCESS;
   238     XAresult ret = XA_RESULT_SUCCESS;
   253 
   239 
   254     DEBUG_API("->XAEngineImpl_DoRealize");
   240     DEBUG_API("->XAEngineImpl_DoRealize");
   255 
   241 
   256     /* check casting from correct pointer type */
   242     /* check casting from correct pointer type */
   257     if( !pObjImpl || pObj != pObjImpl->baseObj.self )
   243     if (!pObjImpl || pObj != pObjImpl->baseObj.self)
   258     {
   244         {
   259         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   245         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   260         DEBUG_API("<-XAEngineImpl_DoRealize");
   246         DEBUG_API("<-XAEngineImpl_DoRealize");
   261         /* invalid parameter */
   247         /* invalid parameter */
   262         return XA_RESULT_PARAMETER_INVALID;
   248         return XA_RESULT_PARAMETER_INVALID;
   263     }
   249         }
   264 
   250 
   265    
       
   266     /* Table containing use-case framework map */
   251     /* Table containing use-case framework map */
   267     pObjImpl->frameworkMap = XAFrameworkMgr_CreateFrameworkMap();
   252     pObjImpl->frameworkMap = XAFrameworkMgr_CreateFrameworkMap();
   268     if (pObjImpl->frameworkMap == NULL)
   253     if (pObjImpl->frameworkMap == NULL)
   269     {
   254         {
   270         DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");
   255         DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");
   271         DEBUG_API("<-XAEngineImpl_DoRealize");
   256         DEBUG_API("<-XAEngineImpl_DoRealize");
   272         /* memory allocation failed */
   257         /* memory allocation failed */
   273         return XA_RESULT_MEMORY_FAILURE;
   258         return XA_RESULT_MEMORY_FAILURE;
   274     }
   259         }
   275 
       
   276 
   260 
   277     /* Create capabilities list */
   261     /* Create capabilities list */
   278     ret = XACapabilitiesMgr_CreateCapabilitieList(pObjImpl->frameworkMap, &(pObjImpl->capabilities));
   262     ret = XACapabilitiesMgr_CreateCapabilitieList(pObjImpl->frameworkMap,
       
   263             &(pObjImpl->capabilities));
   279     if (ret != XA_RESULT_SUCCESS)
   264     if (ret != XA_RESULT_SUCCESS)
   280         {
   265         {
   281         return ret;
   266         return ret;
   282         }
   267         }
   283 
   268 
   284 
       
   285     /* Realize all implicit and explicitly wanted interfaces */
   269     /* Realize all implicit and explicitly wanted interfaces */
   286     for(itfIdx=0; itfIdx<ENGINE_ITFCOUNT; itfIdx++)
   270     for (itfIdx = 0; itfIdx < ENGINE_ITFCOUNT; itfIdx++)
   287     {
   271         {
   288         if(!(pObj->interfaceMap[itfIdx].pItf) &&
   272         if (!(pObj->interfaceMap[itfIdx].pItf)
   289            pObj->interfaceMap[itfIdx].required )
   273                 && pObj->interfaceMap[itfIdx].required)
   290         {
   274             {
   291             void *pItf = NULL;
   275             void *pItf = NULL;
   292             switch(itfIdx)
   276             switch (itfIdx)
   293             {
   277                 {
   294                 case ENGINE_ENGINEITF:
   278                 case ENGINE_ENGINEITF:
   295                     pItf = XAEngineItfImpl_Create(pObjImpl->frameworkMap, pObjImpl->capabilities);
   279                     pItf = XAEngineItfImpl_Create(pObjImpl->frameworkMap,
       
   280                             pObjImpl->capabilities);
   296                     break;
   281                     break;
   297                 case ENGINE_THREADSYNCITF:
   282                 case ENGINE_THREADSYNCITF:
   298                     pItf = XAThreadSyncItfImpl_Create();
   283                     pItf = XAThreadSyncItfImpl_Create();
   299                     break;
   284                     break;
   300                 case ENGINE_DIMITF:
   285                 case ENGINE_DIMITF:
   301                     pItf = XADIMItfImpl_Create();
   286                     pItf = XADIMItfImpl_Create();
   302                     break;
   287                     break;
   303                 case ENGINE_AUDIOIODEVICECAPAITF:
   288                 case ENGINE_AUDIOIODEVICECAPAITF:
   304                     pItf = XAAudIODevCapaItfImpl_Create(pObjImpl->capabilities);
   289                     pItf = XAAudIODevCapaItfImpl_Create(
       
   290                             pObjImpl->capabilities);
   305                     break;
   291                     break;
   306                 case ENGINE_AUDIOENCODERCAPAITF:
   292                 case ENGINE_AUDIOENCODERCAPAITF:
   307                     pItf = XAAudioEncoderCapabilitiesItfImpl_Create(pObjImpl->capabilities);
   293                     pItf = XAAudioEncoderCapabilitiesItfImpl_Create(
   308                     break;
   294                             pObjImpl->capabilities);
   309 /*
   295                     break;
   310                 case ENGINE_AUDIODECODERCAPAITF:
   296                     /*
   311                     pItf = XAAudioDecoderCapabilitiesItfImpl_Create();
   297                      case ENGINE_AUDIODECODERCAPAITF:
   312                     break;
   298                      pItf = XAAudioDecoderCapabilitiesItfImpl_Create();
   313                 case ENGINE_CONFIGEXTENSIONSITF:
   299                      break;
   314                     pItf = XAConfigExtensionsItfImpl_Create();
   300                      case ENGINE_CONFIGEXTENSIONSITF:
   315                     break;
   301                      pItf = XAConfigExtensionsItfImpl_Create();
   316                 case ENGINE_DEVICEVOLUMEITF:
   302                      break;
   317                     pItf = XADeviceVolumeItfImpl_Create(pObjImpl->adaptationCtx);
   303                      case ENGINE_DEVICEVOLUMEITF:
   318                     break;
   304                      pItf = XADeviceVolumeItfImpl_Create(pObjImpl->adaptationCtx);
   319                 case ENGINE_CAMERACAPAITF:
   305                      break;
   320 
   306                      case ENGINE_CAMERACAPAITF:
   321                     XAStaticCameraCaps_Init();
   307 
   322                     pItf = XACameraCapabilitiesItfImpl_Create();
   308                      XAStaticCameraCaps_Init();
   323                     
   309                      pItf = XACameraCapabilitiesItfImpl_Create();
   324                     break;
   310                      
   325                 case ENGINE_IMAGEDECODERCAPAITF:
   311                      break;
   326                     pItf = XAImageDecoderCapabilitiesItfImpl_Create();
   312                      case ENGINE_IMAGEDECODERCAPAITF:
   327                     break;
   313                      pItf = XAImageDecoderCapabilitiesItfImpl_Create();
   328                 case ENGINE_IMAGEENCODERCAPAITF:
   314                      break;
   329                     pItf = XAImageEncoderCapabilitiesItfImpl_Create();
   315                      case ENGINE_IMAGEENCODERCAPAITF:
   330                     break;
   316                      pItf = XAImageEncoderCapabilitiesItfImpl_Create();
   331                 case ENGINE_VIDEODECODERCAPAITF:
   317                      break;
   332                     pItf = XAVideoDecoderCapabilitiesItfImpl_Create();
   318                      case ENGINE_VIDEODECODERCAPAITF:
   333                     break;
   319                      pItf = XAVideoDecoderCapabilitiesItfImpl_Create();
   334                 case ENGINE_VIDEOENCODERCAPAITF:
   320                      break;
   335                     pItf = XAVideoEncoderCapabilitiesItfImpl_Create();
   321                      case ENGINE_VIDEOENCODERCAPAITF:
   336                     break;
   322                      pItf = XAVideoEncoderCapabilitiesItfImpl_Create();
   337 */
   323                      break;
       
   324                      */
   338                 default:
   325                 default:
   339                     break;
   326                     break;
   340             }
   327                 }
   341             if(!pItf)
   328             if (!pItf)
   342             {
   329                 {
   343                 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");
   330                 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");DEBUG_API("<-XAEngineImpl_DoRealize");
   344                 DEBUG_API("<-XAEngineImpl_DoRealize");
       
   345                 /* memory allocation failed */
   331                 /* memory allocation failed */
   346                 return XA_RESULT_MEMORY_FAILURE;
   332                 return XA_RESULT_MEMORY_FAILURE;
   347             }
   333                 }
   348             else
   334             else
   349             {
   335                 {
   350                 pObj->interfaceMap[itfIdx].pItf = pItf;
   336                 pObj->interfaceMap[itfIdx].pItf = pItf;
   351             }
   337                 }
   352         }
   338             }
   353     }
   339         }
   354 
   340 
   355     pObj->state = XA_OBJECT_STATE_REALIZED;
   341     pObj->state = XA_OBJECT_STATE_REALIZED;
   356     DEBUG_API("<-XAEngineImpl_DoRealize");
   342     DEBUG_API("<-XAEngineImpl_DoRealize");
   357     return XA_RESULT_SUCCESS;
   343     return XA_RESULT_SUCCESS;
   358 }
   344     }
   359 
   345 
   360 /* XAresult XAEngineImpl_DoResume
   346 /* XAresult XAEngineImpl_DoResume
   361  * Description: Resume object from suspended state
   347  * Description: Resume object from suspended state
   362  */
   348  */
   363 XAresult XAEngineImpl_DoResume(XAObjectItf self)
   349 XAresult XAEngineImpl_DoResume(XAObjectItf self)
   364 {
   350     {
   365     DEBUG_API("->XAEngineImpl_DoResume");
   351     DEBUG_API("->XAEngineImpl_DoResume");DEBUG_API("<-XAEngineImpl_DoResume");
   366     DEBUG_API("<-XAEngineImpl_DoResume");
       
   367 
   352 
   368     return XA_RESULT_PRECONDITIONS_VIOLATED;
   353     return XA_RESULT_PRECONDITIONS_VIOLATED;
   369 }
   354     }
   370 
   355 
   371 /* void XAEngineImpl_FreeResources
   356 /* void XAEngineImpl_FreeResources
   372  * Description: Free all resources reserved at XA%ExampleObject%Impl_DoRealize()
   357  * Description: Free all resources reserved at XA%ExampleObject%Impl_DoRealize()
   373  */
   358  */
   374 void XAEngineImpl_FreeResources(XAObjectItf self)
   359 void XAEngineImpl_FreeResources(XAObjectItf self)
   375 {
   360     {
   376     XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self);
   361     XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
   377     XAEngineImpl* pImpl = (XAEngineImpl*)(*self);
   362     XAEngineImpl* pImpl = (XAEngineImpl*) (*self);
   378     XAuint8 itfIdx = 0;
   363     XAuint8 itfIdx = 0;
   379     DEBUG_API("->XAEngineImpl_FreeResources");
   364     DEBUG_API("->XAEngineImpl_FreeResources");
   380     assert( pObj && pImpl && pObj == pObj->self );
   365     assert( pObj && pImpl && pObj == pObj->self );
   381 
   366 
   382     /* free all allocated interfaces */
   367     /* free all allocated interfaces */
   383     for(itfIdx=0; itfIdx<ENGINE_ITFCOUNT; itfIdx++)
   368     for (itfIdx = 0; itfIdx < ENGINE_ITFCOUNT; itfIdx++)
   384     {
   369         {
   385         void *pItf = pObj->interfaceMap[itfIdx].pItf;
   370         void *pItf = pObj->interfaceMap[itfIdx].pItf;
   386         if(pItf)
   371         if (pItf)
   387         {
   372             {
   388             switch(itfIdx)
   373             switch (itfIdx)
   389             {
   374                 {
   390                 case ENGINE_ENGINEITF:
   375                 case ENGINE_ENGINEITF:
   391                     XAEngineItfImpl_Free(pItf);
   376                     XAEngineItfImpl_Free(pItf);
   392                     break;
   377                     break;
   393                 case ENGINE_THREADSYNCITF:
   378                 case ENGINE_THREADSYNCITF:
   394                     XAThreadSyncItfImpl_Free(pItf);
   379                     XAThreadSyncItfImpl_Free(pItf);
   400                     XAAudIODevCapaItfImpl_Free(pItf);
   385                     XAAudIODevCapaItfImpl_Free(pItf);
   401                     break;
   386                     break;
   402                 case ENGINE_AUDIOENCODERCAPAITF:
   387                 case ENGINE_AUDIOENCODERCAPAITF:
   403                     XAAudioEncoderCapabilitiesItfImpl_Free(pItf);
   388                     XAAudioEncoderCapabilitiesItfImpl_Free(pItf);
   404                     break;
   389                     break;
   405 /*
   390                     /*
   406                 case ENGINE_AUDIODECODERCAPAITF:
   391                      case ENGINE_AUDIODECODERCAPAITF:
   407                     XAAudioDecoderCapabilitiesItfImpl_Free(pItf);
   392                      XAAudioDecoderCapabilitiesItfImpl_Free(pItf);
   408                     break;
   393                      break;
   409                 case ENGINE_CONFIGEXTENSIONSITF:
   394                      case ENGINE_CONFIGEXTENSIONSITF:
   410                     XAConfigExtensionsItfImpl_Free(pItf);
   395                      XAConfigExtensionsItfImpl_Free(pItf);
   411                     break;
   396                      break;
   412                 case ENGINE_DEVICEVOLUMEITF:
   397                      case ENGINE_DEVICEVOLUMEITF:
   413                     XADeviceVolumeItfImpl_Free(pItf);
   398                      XADeviceVolumeItfImpl_Free(pItf);
   414                     break;
   399                      break;
   415                 case ENGINE_CAMERACAPAITF:
   400                      case ENGINE_CAMERACAPAITF:
   416 
   401 
   417                     XACameraCapabilitiesItfImpl_Free(pItf);
   402                      XACameraCapabilitiesItfImpl_Free(pItf);
   418                     
   403                      
   419                     break;
   404                      break;
   420                 case ENGINE_IMAGEDECODERCAPAITF:
   405                      case ENGINE_IMAGEDECODERCAPAITF:
   421                     XAImageDecoderCapabilitiesItfImpl_Free(pItf);
   406                      XAImageDecoderCapabilitiesItfImpl_Free(pItf);
   422                     break;
   407                      break;
   423                 case ENGINE_IMAGEENCODERCAPAITF:
   408                      case ENGINE_IMAGEENCODERCAPAITF:
   424                     XAImageEncoderCapabilitiesItfImpl_Free(pItf);
   409                      XAImageEncoderCapabilitiesItfImpl_Free(pItf);
   425                     break;
   410                      break;
   426                 case ENGINE_VIDEODECODERCAPAITF:
   411                      case ENGINE_VIDEODECODERCAPAITF:
   427                     XAVideoDecoderCapabilitiesItfImpl_Free(pItf);
   412                      XAVideoDecoderCapabilitiesItfImpl_Free(pItf);
   428                     break;
   413                      break;
   429                 case ENGINE_VIDEOENCODERCAPAITF:
   414                      case ENGINE_VIDEOENCODERCAPAITF:
   430                     XAVideoEncoderCapabilitiesItfImpl_Free(pItf);
   415                      XAVideoEncoderCapabilitiesItfImpl_Free(pItf);
   431                     break;
   416                      break;
   432 */
   417                      */
   433                 default:
   418                 default:
   434                     break;
   419                     break;
   435             }
   420                 }
   436             pObj->interfaceMap[itfIdx].pItf = NULL;
   421             pObj->interfaceMap[itfIdx].pItf = NULL;
   437         }
   422             }
   438     }
   423         }
   439 
   424 
   440     /* free all other allocated resources*/
   425     /* free all other allocated resources*/
   441 /*  
   426 
   442     if ( pImpl->adaptationCtx != NULL )
       
   443     {
       
   444         XAEngineAdapt_Destroy( pImpl->adaptationCtx );
       
   445         pImpl->adaptationCtx = NULL;
       
   446     }
       
   447     
       
   448     if ( pImpl->adaptationMmfCtx != NULL )
       
   449     {
       
   450         XAEngineAdaptMMF_Destroy( pImpl->adaptationMmfCtx );
       
   451         pImpl->adaptationMmfCtx = NULL;
       
   452     }*/
       
   453     /* free framework map */
   427     /* free framework map */
   454     XAFrameworkMgr_DeleteFrameworkMap(&pImpl->frameworkMap);
   428     XAFrameworkMgr_DeleteFrameworkMap(&pImpl->frameworkMap);
   455     
   429 
   456     /* TODO free capabilities list */
   430     /* free capabilities list */
   457     XACapabilitiesMgr_DeleteCapabilitieList(&pImpl->capabilities);
   431     XACapabilitiesMgr_DeleteCapabilitieList(&pImpl->capabilities);
   458     
   432 
   459      XAThreadSafety_Destroy();
   433     XAThreadSafety_Destroy();
   460 
   434 
   461     DEBUG_API("<-XAEngineImpl_FreeResources");
   435     DEBUG_API("<-XAEngineImpl_FreeResources");
   462     return;
   436     return;
   463 }
   437     }
   464 
   438 
   465 /* END OF FILE */
   439 /* END OF FILE */