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