khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c
author hgs
Fri, 11 Jun 2010 19:59:23 -0500
changeset 25 6f7ceef7b1d1
parent 21 2ed61feeead6
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: 21
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents: 21
diff changeset
     3
 * All rights reserved.
hgs
parents: 21
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 21
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents: 21
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 21
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents: 21
diff changeset
     8
 *
hgs
parents: 21
diff changeset
     9
 * Initial Contributors:
hgs
parents: 21
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 21
diff changeset
    11
 *
hgs
parents: 21
diff changeset
    12
 * Contributors:
hgs
parents: 21
diff changeset
    13
 *
hgs
parents: 21
diff changeset
    14
 * Description: Media Player Object Implementation
hgs
parents: 21
diff changeset
    15
 *
hgs
parents: 21
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 <string.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <assert.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include "xamediaplayer.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include "xaplayitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include "xaseekitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include "xaprefetchstatusitf.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 "xavolumeitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "xametadataextractionitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "xametadatatraversalitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "xaplaybackrateitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "xaequalizeritf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include "xaimagecontrolsitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include "xaimageeffectsitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include "xavideopostprocessingitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include "xaconfigextensionsitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#include "xathreadsafety.h"
19
hgs
parents: 12
diff changeset
    37
#include "xametadataadaptation.h"
hgs
parents: 12
diff changeset
    38
#include "xacapabilitiesmgr.h"
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
#include "xadynamicsourceitf.h"
19
hgs
parents: 12
diff changeset
    40
#include "xastreaminformationitf.h"
hgs
parents: 12
diff changeset
    41
#include "xanlinearvolumeitf.h"
hgs
parents: 12
diff changeset
    42
#include "xanvolumeextitf.h"
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
extern void* vfHandle;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
/* Static mapping of enumeration XAMediaPlayerInterfaces to interface iids */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
static const XAInterfaceID* xaMediaPlayerItfIIDs[MP_ITFCOUNT] =
25
hgs
parents: 21
diff changeset
    48
    {
hgs
parents: 21
diff changeset
    49
            &XA_IID_OBJECT,
hgs
parents: 21
diff changeset
    50
            &XA_IID_DYNAMICINTERFACEMANAGEMENT,
hgs
parents: 21
diff changeset
    51
            &XA_IID_PLAY,
hgs
parents: 21
diff changeset
    52
            &XA_IID_SEEK,
hgs
parents: 21
diff changeset
    53
            &XA_IID_VOLUME,
hgs
parents: 21
diff changeset
    54
            &XA_IID_PREFETCHSTATUS,
hgs
parents: 21
diff changeset
    55
            &XA_IID_CONFIGEXTENSION,
hgs
parents: 21
diff changeset
    56
            &XA_IID_DYNAMICSOURCE,
hgs
parents: 21
diff changeset
    57
            &XA_IID_EQUALIZER,
hgs
parents: 21
diff changeset
    58
            &XA_IID_IMAGECONTROLS,
hgs
parents: 21
diff changeset
    59
            &XA_IID_IMAGEEFFECTS,
hgs
parents: 21
diff changeset
    60
            &XA_IID_METADATAEXTRACTION,
hgs
parents: 21
diff changeset
    61
            &XA_IID_METADATATRAVERSAL,
hgs
parents: 21
diff changeset
    62
            &XA_IID_PLAYBACKRATE,
hgs
parents: 21
diff changeset
    63
            &XA_IID_VIDEOPOSTPROCESSING,
hgs
parents: 21
diff changeset
    64
            &XA_IID_NOKIAVOLUMEEXT,
hgs
parents: 21
diff changeset
    65
            &XA_IID_NOKIALINEARVOLUME,
hgs
parents: 21
diff changeset
    66
            &XA_IID_STREAMINFORMATION
hgs
parents: 21
diff changeset
    67
    };
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
/* Global methods */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
/* XAResult XAMediaPlayerImpl_CreateMediaPlayer
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
 * Create object
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
 */
19
hgs
parents: 12
diff changeset
    74
XAresult XAMediaPlayerImpl_CreateMediaPlayer(FrameworkMap* mapper,
25
hgs
parents: 21
diff changeset
    75
        XACapabilities* capabilities, XAObjectItf *pPlayer,
hgs
parents: 21
diff changeset
    76
        XADataSource *pDataSrc, XADataSource *pBankSrc,
hgs
parents: 21
diff changeset
    77
        XADataSink *pAudioSnk, XADataSink *pImageVideoSnk,
hgs
parents: 21
diff changeset
    78
        XADataSink *pVibra, XADataSink *pLEDArray, XAuint32 numInterfaces,
hgs
parents: 21
diff changeset
    79
        const XAInterfaceID *pInterfaceIds,
hgs
parents: 21
diff changeset
    80
        const XAboolean *pInterfaceRequired)
hgs
parents: 21
diff changeset
    81
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
    XAuint8 itfIdx = 0;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
    XAMediaType mediaType = XA_MEDIATYPE_UNKNOWN;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
    XAMediaPlayerImpl* pPlayerImpl = NULL;
19
hgs
parents: 12
diff changeset
    85
    FWMgrFwType fwType;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
    XAObjectItfImpl* pBaseObj = NULL;
19
hgs
parents: 12
diff changeset
    87
    const char *uri = NULL;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
    XAresult ret = XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
    89
    XADataLocator_IODevice* tmpIODevice;
hgs
parents: 21
diff changeset
    90
    XADataLocator_IODevice locatorIODevice;
21
hgs
parents: 19
diff changeset
    91
19
hgs
parents: 12
diff changeset
    92
    DEBUG_API("->XAMediaPlayerImpl_CreateMediaPlayer");
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
    XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
25
hgs
parents: 21
diff changeset
    96
    if (!pPlayer || !pDataSrc)
hgs
parents: 21
diff changeset
    97
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
        return XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   102
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
    /* check sink&source parameters */
25
hgs
parents: 21
diff changeset
   104
    ret = XACommon_ValidateDataLocator(6, pAudioSnk, pImageVideoSnk,
hgs
parents: 21
diff changeset
   105
            pDataSrc, pBankSrc, pVibra, pLEDArray);
hgs
parents: 21
diff changeset
   106
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
   107
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
        return ret;
25
hgs
parents: 21
diff changeset
   111
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
    /* also, check source availability */
25
hgs
parents: 21
diff changeset
   113
    ret = XACommon_CheckDataSource(pDataSrc, &mediaType);
hgs
parents: 21
diff changeset
   114
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
   115
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
        return ret;
25
hgs
parents: 21
diff changeset
   119
        }
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
    /* instantiate object */
25
hgs
parents: 21
diff changeset
   122
    pPlayerImpl = (XAMediaPlayerImpl*) calloc(1, sizeof(XAMediaPlayerImpl));
hgs
parents: 21
diff changeset
   123
    if (!pPlayerImpl)
hgs
parents: 21
diff changeset
   124
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
        /* memory allocation failed */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
        return XA_RESULT_MEMORY_FAILURE;
25
hgs
parents: 21
diff changeset
   129
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
    pBaseObj = &pPlayerImpl->baseObj;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
    /* Initialize base object default implementation */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
    XAObjectItfImpl_Init(pBaseObj, MP_ITFCOUNT, xaMediaPlayerItfIIDs,
25
hgs
parents: 21
diff changeset
   134
            XAMediaPlayerImpl_DoRealize, XAMediaPlayerImpl_DoResume,
hgs
parents: 21
diff changeset
   135
            XAMediaPlayerImpl_FreeResources);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
    /* Mark interfaces that need to be exposed */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
    /* Implicit and mandated interfaces */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
    pBaseObj->interfaceMap[MP_PLAYITF].required = XA_BOOLEAN_TRUE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
    pBaseObj->interfaceMap[MP_DIMITF].required = XA_BOOLEAN_TRUE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
    /* Explicit interfaces */
25
hgs
parents: 21
diff changeset
   143
    if ((numInterfaces != 0) && pInterfaceIds && pInterfaceRequired)
hgs
parents: 21
diff changeset
   144
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
        /* Check required interfaces */
25
hgs
parents: 21
diff changeset
   146
        for (itfIdx = 0; itfIdx < numInterfaces; itfIdx++)
hgs
parents: 21
diff changeset
   147
            {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
            /* If mapEntry is null then required interface is not supported.*/
25
hgs
parents: 21
diff changeset
   149
            XAObjItfMapEntry *entry = XAObjectItfImpl_GetItfEntry(
hgs
parents: 21
diff changeset
   150
                    (XAObjectItf) &(pBaseObj), pInterfaceIds[itfIdx]);
hgs
parents: 21
diff changeset
   151
            if (!entry)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
                {
25
hgs
parents: 21
diff changeset
   153
                if (pInterfaceRequired[itfIdx])
hgs
parents: 21
diff changeset
   154
                    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
                    /* required interface cannot be accommodated - fail creation */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
                    DEBUG_ERR("Required interface not found - abort creation!");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
                    ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
                    break;
25
hgs
parents: 21
diff changeset
   159
                    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
                else
25
hgs
parents: 21
diff changeset
   161
                    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
                    DEBUG_INFO("Requested (not required) interface not found - continue creation");
25
hgs
parents: 21
diff changeset
   163
                    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
                }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
            else
25
hgs
parents: 21
diff changeset
   166
                { /* weed out unsupported content-aware itf's */
hgs
parents: 21
diff changeset
   167
                if ((mediaType == XA_MEDIATYPE_IMAGE && (entry->mapIdx
hgs
parents: 21
diff changeset
   168
                        == MP_SEEKITF || entry->mapIdx == MP_EQUALIZERITF
hgs
parents: 21
diff changeset
   169
                        || entry->mapIdx == MP_VOLUMEITF)) || (mediaType
hgs
parents: 21
diff changeset
   170
                        == XA_MEDIATYPE_AUDIO && (entry->mapIdx
hgs
parents: 21
diff changeset
   171
                        == MP_IMAGECONTROLSITF || entry->mapIdx
hgs
parents: 21
diff changeset
   172
                        == MP_IMAGEEFFECTSITF || entry->mapIdx
hgs
parents: 21
diff changeset
   173
                        == MP_VIDEOPOSTPROCESSINGITF)))
hgs
parents: 21
diff changeset
   174
                    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
                    entry->required = XA_BOOLEAN_FALSE;
25
hgs
parents: 21
diff changeset
   176
                    if (pInterfaceRequired[itfIdx])
hgs
parents: 21
diff changeset
   177
                        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
                        DEBUG_ERR("Required interface not supported for given media - abort creation!");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
                        ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
                        break;
25
hgs
parents: 21
diff changeset
   181
                        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
                    }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
                else
25
hgs
parents: 21
diff changeset
   184
                    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
                    entry->required = XA_BOOLEAN_TRUE;
25
hgs
parents: 21
diff changeset
   186
                    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
                }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
            }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
        }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
25
hgs
parents: 21
diff changeset
   191
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
   192
        { /* creation fails */
hgs
parents: 21
diff changeset
   193
        XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj));
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
        return ret;
25
hgs
parents: 21
diff changeset
   195
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
    /* Mark interfaces that can be handled dynamically */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
    /* Mandated dynamic itfs */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
    pBaseObj->interfaceMap[MP_EQUALIZERITF].isDynamic = XA_BOOLEAN_TRUE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
    pBaseObj->interfaceMap[MP_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE;
25
hgs
parents: 21
diff changeset
   201
    pBaseObj->interfaceMap[MP_METADATAEXTRACTIONITF].isDynamic
hgs
parents: 21
diff changeset
   202
            = XA_BOOLEAN_TRUE;
hgs
parents: 21
diff changeset
   203
    pBaseObj->interfaceMap[MP_METADATATRAVERSALITF].isDynamic
hgs
parents: 21
diff changeset
   204
            = XA_BOOLEAN_TRUE;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    pBaseObj->interfaceMap[MP_PLAYBACKRATEITF].isDynamic = XA_BOOLEAN_TRUE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
25
hgs
parents: 21
diff changeset
   207
    /*Set ObjectItf to point to newly created object*/
hgs
parents: 21
diff changeset
   208
    *pPlayer = (XAObjectItf) &(pBaseObj->self);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
19
hgs
parents: 12
diff changeset
   210
    /*initialize XAPlayerImpl variables */
12
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
    pPlayerImpl->dataSrc = pDataSrc;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
    pPlayerImpl->bankSrc = pBankSrc;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
    pPlayerImpl->audioSnk = pAudioSnk;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
    pPlayerImpl->imageVideoSnk = pImageVideoSnk;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
    pPlayerImpl->vibra = pVibra;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
    pPlayerImpl->LEDArray = pLEDArray;
25
hgs
parents: 21
diff changeset
   218
21
hgs
parents: 19
diff changeset
   219
    // Handle possible radio:      
25
hgs
parents: 21
diff changeset
   220
    tmpIODevice = (XADataLocator_IODevice*) (pPlayerImpl->dataSrc->pLocator);
hgs
parents: 21
diff changeset
   221
    locatorIODevice = *tmpIODevice;
hgs
parents: 21
diff changeset
   222
    if (locatorIODevice.deviceType == XA_IODEVICE_RADIO)
hgs
parents: 21
diff changeset
   223
        {
hgs
parents: 21
diff changeset
   224
        fwType = (FWMgrFwType) FWMgrFWMMF;
hgs
parents: 21
diff changeset
   225
        }
hgs
parents: 21
diff changeset
   226
    else
19
hgs
parents: 12
diff changeset
   227
        {
25
hgs
parents: 21
diff changeset
   228
        /* Determine framework type that can handle recording */
hgs
parents: 21
diff changeset
   229
        fwType = (FWMgrFwType) FWMgrMOUnknown;
hgs
parents: 21
diff changeset
   230
        /**/
hgs
parents: 21
diff changeset
   231
        if (pDataSrc->pLocator)
hgs
parents: 21
diff changeset
   232
            {
hgs
parents: 21
diff changeset
   233
            XADataLocator_URI* dataLoc =
hgs
parents: 21
diff changeset
   234
                    (XADataLocator_URI*) pDataSrc->pLocator;
hgs
parents: 21
diff changeset
   235
            if (dataLoc->locatorType == XA_DATALOCATOR_URI)
hgs
parents: 21
diff changeset
   236
                {
hgs
parents: 21
diff changeset
   237
                uri = (char*) dataLoc->URI;
hgs
parents: 21
diff changeset
   238
                }
hgs
parents: 21
diff changeset
   239
            }
hgs
parents: 21
diff changeset
   240
        fwType = XAFrameworkMgr_GetFramework(mapper, uri, FWMgrMOPlayer);
hgs
parents: 21
diff changeset
   241
hgs
parents: 21
diff changeset
   242
        if (fwType == FWMgrMOUnknown)
hgs
parents: 21
diff changeset
   243
            {
hgs
parents: 21
diff changeset
   244
            ret = XA_RESULT_CONTENT_UNSUPPORTED;
hgs
parents: 21
diff changeset
   245
            XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj));
hgs
parents: 21
diff changeset
   246
            XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
hgs
parents: 21
diff changeset
   247
            DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
hgs
parents: 21
diff changeset
   248
            return ret;
hgs
parents: 21
diff changeset
   249
            }
hgs
parents: 21
diff changeset
   250
        } // end else
hgs
parents: 21
diff changeset
   251
hgs
parents: 21
diff changeset
   252
    if (fwType == FWMgrFWMMF)
hgs
parents: 21
diff changeset
   253
        {
hgs
parents: 21
diff changeset
   254
        pPlayerImpl->adaptationCtxMMF = XAMediaPlayerAdaptMMF_Create(
hgs
parents: 21
diff changeset
   255
                pPlayerImpl->dataSrc, pPlayerImpl->bankSrc,
hgs
parents: 21
diff changeset
   256
                pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk,
hgs
parents: 21
diff changeset
   257
                pPlayerImpl->vibra, pPlayerImpl->LEDArray);
hgs
parents: 21
diff changeset
   258
hgs
parents: 21
diff changeset
   259
        pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxMMF;
19
hgs
parents: 12
diff changeset
   260
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
    else
25
hgs
parents: 21
diff changeset
   262
        {
hgs
parents: 21
diff changeset
   263
        pPlayerImpl->adaptationCtxGst = XAMediaPlayerAdapt_Create(
hgs
parents: 21
diff changeset
   264
                pPlayerImpl->dataSrc, pPlayerImpl->bankSrc,
hgs
parents: 21
diff changeset
   265
                pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk,
hgs
parents: 21
diff changeset
   266
                pPlayerImpl->vibra, pPlayerImpl->LEDArray);
hgs
parents: 21
diff changeset
   267
hgs
parents: 21
diff changeset
   268
        pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxGst;
hgs
parents: 21
diff changeset
   269
        }
hgs
parents: 21
diff changeset
   270
19
hgs
parents: 12
diff changeset
   271
    pPlayerImpl->curAdaptCtx->capslist = capabilities;
hgs
parents: 12
diff changeset
   272
    pPlayerImpl->curAdaptCtx->fwtype = fwType;
25
hgs
parents: 21
diff changeset
   273
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
    XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
    DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
19
hgs
parents: 12
diff changeset
   276
    return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   277
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
/* XAResult XAMediaPlayerImpl_QueryNumSupportedInterfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
 * Statically query supported interfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
 */
25
hgs
parents: 21
diff changeset
   282
XAresult XAMediaPlayerImpl_QueryNumSupportedInterfaces(
hgs
parents: 21
diff changeset
   283
        XAuint32 * pNumSupportedInterfaces)
hgs
parents: 21
diff changeset
   284
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
    DEBUG_API("->XAMediaPlayerImpl_QueryNumSupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
25
hgs
parents: 21
diff changeset
   287
    if (pNumSupportedInterfaces)
hgs
parents: 21
diff changeset
   288
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
        *pNumSupportedInterfaces = MP_ITFCOUNT;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
        DEBUG_API("<-XAMediaPlayerImpl_QueryNumSupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
        return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   292
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
    else
25
hgs
parents: 21
diff changeset
   294
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
        DEBUG_API("<-XAMediaPlayerImpl_QueryNumSupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
        return XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   298
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
    }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
/* XAResult XAMediaPlayerImpl_QuerySupportedInterfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
 * Statically query supported interfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
 */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
XAresult XAMediaPlayerImpl_QuerySupportedInterfaces(XAuint32 index,
25
hgs
parents: 21
diff changeset
   305
        XAInterfaceID * pInterfaceId)
hgs
parents: 21
diff changeset
   306
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
    DEBUG_API("->XAMediaPlayerImpl_QuerySupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
25
hgs
parents: 21
diff changeset
   309
    if (index >= MP_ITFCOUNT || !pInterfaceId)
19
hgs
parents: 12
diff changeset
   310
        {
25
hgs
parents: 21
diff changeset
   311
        if (pInterfaceId)
hgs
parents: 21
diff changeset
   312
            {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
            *pInterfaceId = XA_IID_NULL;
25
hgs
parents: 21
diff changeset
   314
            }DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents: 21
diff changeset
   315
            DEBUG_API("<-XAMediaPlayerImpl_QuerySupportedInterfaces");
hgs
parents: 21
diff changeset
   316
        return XA_RESULT_PARAMETER_INVALID;
19
hgs
parents: 12
diff changeset
   317
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
    else
25
hgs
parents: 21
diff changeset
   319
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
        *pInterfaceId = *(xaMediaPlayerItfIIDs[index]);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
        DEBUG_API("<-XAMediaPlayerImpl_QuerySupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
        return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   323
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
    }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
/*
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
 * Realize the object
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
 */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
XAresult XAMediaPlayerImpl_DoRealize(XAObjectItf self)
25
hgs
parents: 21
diff changeset
   330
    {
hgs
parents: 21
diff changeset
   331
    XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
hgs
parents: 21
diff changeset
   332
    XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) (pObj);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
    XAuint8 itfIdx = 0;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
    void *pItf = NULL;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
    DEBUG_API("->XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
    XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer );
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
    /* check casting from correct pointer type */
25
hgs
parents: 21
diff changeset
   341
    if (!pImpl || pObj != pImpl->baseObj.self)
hgs
parents: 21
diff changeset
   342
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
        /* invalid parameter */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
        XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
        DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
        return XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   348
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
    /* Realize all implicit and explicitly wanted interfaces */
25
hgs
parents: 21
diff changeset
   351
    for (itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
        {
25
hgs
parents: 21
diff changeset
   353
        if (!(pObj->interfaceMap[itfIdx].pItf)
hgs
parents: 21
diff changeset
   354
                && pObj->interfaceMap[itfIdx].required)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
            {
25
hgs
parents: 21
diff changeset
   356
            switch (itfIdx)
hgs
parents: 21
diff changeset
   357
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
                case MP_DIMITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
                    pItf = XADIMItfImpl_Create();
25
hgs
parents: 21
diff changeset
   360
                    if (pItf)
hgs
parents: 21
diff changeset
   361
                        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
                        XADIMItfImpl_Init(pItf, self,
25
hgs
parents: 21
diff changeset
   363
                                XAMediaPlayerImpl_DoAddItf,
hgs
parents: 21
diff changeset
   364
                                XAMediaPlayerImpl_DoResumeItf,
hgs
parents: 21
diff changeset
   365
                                XAMediaPlayerImpl_DoRemoveItf);
hgs
parents: 21
diff changeset
   366
                        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
                case MP_PLAYITF:
19
hgs
parents: 12
diff changeset
   369
                    pItf = XAPlayItfImpl_Create(pImpl);
25
hgs
parents: 21
diff changeset
   370
                    if (pImpl->dataSrc)
hgs
parents: 21
diff changeset
   371
                        {
hgs
parents: 21
diff changeset
   372
                        XAuint32 locType =
hgs
parents: 21
diff changeset
   373
                                *((XAuint32*) (pImpl->dataSrc->pLocator));
hgs
parents: 21
diff changeset
   374
                        if (locType == XA_DATALOCATOR_IODEVICE)
hgs
parents: 21
diff changeset
   375
                            {
hgs
parents: 21
diff changeset
   376
                            XADataLocator_IODevice
hgs
parents: 21
diff changeset
   377
                                    *ioDevice =
hgs
parents: 21
diff changeset
   378
                                            (XADataLocator_IODevice*) (pImpl->dataSrc->pLocator);
hgs
parents: 21
diff changeset
   379
                            if (ioDevice->deviceType == XA_IODEVICE_CAMERA)
hgs
parents: 21
diff changeset
   380
                                {
hgs
parents: 21
diff changeset
   381
                                vfHandle = (void*) pItf;
hgs
parents: 21
diff changeset
   382
                                DEBUG_INFO_A1("Stored view finder pointer to global address %x", vfHandle);
hgs
parents: 21
diff changeset
   383
                                }
hgs
parents: 21
diff changeset
   384
                            }
hgs
parents: 21
diff changeset
   385
                        else
hgs
parents: 21
diff changeset
   386
                            {
hgs
parents: 21
diff changeset
   387
hgs
parents: 21
diff changeset
   388
                            }
hgs
parents: 21
diff changeset
   389
                        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
                case MP_VOLUMEITF:
19
hgs
parents: 12
diff changeset
   392
                    pItf = XAVolumeItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
                case MP_SEEKITF:
19
hgs
parents: 12
diff changeset
   395
                    pItf = XASeekItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
                case MP_PREFETCHSTATUSITF:
25
hgs
parents: 21
diff changeset
   398
                    pItf = XAPrefetchStatusItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
                case MP_METADATAEXTRACTIONITF:
25
hgs
parents: 21
diff changeset
   401
                    pItf = XAMetadataExtractionItfImpl_Create(
hgs
parents: 21
diff changeset
   402
                            pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
                case MP_METADATATRAVERSALITF:
25
hgs
parents: 21
diff changeset
   405
                    pItf = XAMetadataTraversalItfImpl_Create(
hgs
parents: 21
diff changeset
   406
                            pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
                case MP_PLAYBACKRATEITF:
19
hgs
parents: 12
diff changeset
   409
                    pItf = XAPlaybackRateItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
                case MP_CONFIGEXTENSIONITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
                    pItf = XAConfigExtensionsItfImpl_Create();
25
hgs
parents: 21
diff changeset
   413
                    XAConfigExtensionsItfImpl_SetContext(pItf,
hgs
parents: 21
diff changeset
   414
                            pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
                case MP_DYNAMICSOURCEITF:
19
hgs
parents: 12
diff changeset
   417
                    pItf = XADynamicSourceItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
                case MP_EQUALIZERITF:
19
hgs
parents: 12
diff changeset
   420
                    pItf = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
                    break;
21
hgs
parents: 19
diff changeset
   422
#ifdef OMAX_CAMERABIN
25
hgs
parents: 21
diff changeset
   423
                    case MP_IMAGECONTROLSITF:
19
hgs
parents: 12
diff changeset
   424
                    pItf = XAImageControlsItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
                    break;
25
hgs
parents: 21
diff changeset
   426
                    case MP_IMAGEEFFECTSITF:
19
hgs
parents: 12
diff changeset
   427
                    pItf = XAImageEffectsItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
                    break;
25
hgs
parents: 21
diff changeset
   429
                    case MP_VIDEOPOSTPROCESSINGITF:
19
hgs
parents: 12
diff changeset
   430
                    pItf = XAVideoPostProcessingItfImpl_Create(pImpl->curAdaptCtx);
hgs
parents: 12
diff changeset
   431
                    break;
21
hgs
parents: 19
diff changeset
   432
#endif
25
hgs
parents: 21
diff changeset
   433
                case MP_NOKIAVOLUMEEXT:
19
hgs
parents: 12
diff changeset
   434
                    pItf = XANokiaVolumeExtItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
                    break;
25
hgs
parents: 21
diff changeset
   436
                case MP_NOKIALINEARVOLUME:
hgs
parents: 21
diff changeset
   437
                    pItf = XANokiaLinearVolumeItfImpl_Create(
hgs
parents: 21
diff changeset
   438
                            pImpl->curAdaptCtx);
hgs
parents: 21
diff changeset
   439
                    break;
19
hgs
parents: 12
diff changeset
   440
                case MP_STREAMINFORMATIONITF:
25
hgs
parents: 21
diff changeset
   441
                    pItf = XAStreamInformationItfImpl_Create(
hgs
parents: 21
diff changeset
   442
                            pImpl->curAdaptCtx);
hgs
parents: 21
diff changeset
   443
                    break;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
                default:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   445
                    break;
25
hgs
parents: 21
diff changeset
   446
                }
hgs
parents: 21
diff changeset
   447
            if (!pItf)
hgs
parents: 21
diff changeset
   448
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
                /* Memory allocation failed */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
                XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
                DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
                DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
                return XA_RESULT_MEMORY_FAILURE;
25
hgs
parents: 21
diff changeset
   454
                }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   455
            else
25
hgs
parents: 21
diff changeset
   456
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
                pObj->interfaceMap[itfIdx].pItf = pItf;
25
hgs
parents: 21
diff changeset
   458
                }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
            }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
        }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
    /* init adaptation */
25
hgs
parents: 21
diff changeset
   462
    if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF)
hgs
parents: 21
diff changeset
   463
        {
hgs
parents: 21
diff changeset
   464
        ret = XAMediaPlayerAdaptMMF_PostInit(
hgs
parents: 21
diff changeset
   465
                (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF);
hgs
parents: 21
diff changeset
   466
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
    else
25
hgs
parents: 21
diff changeset
   468
        {
hgs
parents: 21
diff changeset
   469
        ret = XAMediaPlayerAdapt_PostInit(
hgs
parents: 21
diff changeset
   470
                (XAAdaptationGstCtx*) pImpl->adaptationCtxGst);
hgs
parents: 21
diff changeset
   471
        }
hgs
parents: 21
diff changeset
   472
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
   473
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
        XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
        DEBUG_ERR("Adaptation init failed!");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
        DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   477
        return ret;
25
hgs
parents: 21
diff changeset
   478
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
    pObj->state = XA_OBJECT_STATE_REALIZED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   481
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   482
    XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
    DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
    return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   485
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
/*
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
 * Resume object
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
 */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
XAresult XAMediaPlayerImpl_DoResume(XAObjectItf self)
25
hgs
parents: 21
diff changeset
   491
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
    DEBUG_API("->XAMediaPlayerImpl_DoResume");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
    DEBUG_API("<-XAMediaPlayerImpl_DoResume");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
    /* suspended state not supported by this implementation */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
    return XA_RESULT_PRECONDITIONS_VIOLATED;
25
hgs
parents: 21
diff changeset
   496
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
/**
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
 * void XAMediaPlayerImpl_FreeResources(XAObjectItf self)
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   500
 * Description: Free all resources reserved at XAMediaPlayerImpl_DoRealize()
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
 **/
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
void XAMediaPlayerImpl_FreeResources(XAObjectItf self)
25
hgs
parents: 21
diff changeset
   503
    {
hgs
parents: 21
diff changeset
   504
    XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
    XAuint8 itfIdx = 0;
25
hgs
parents: 21
diff changeset
   506
    XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) pObj;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
    DEBUG_API("->XAMediaPlayerImpl_FreeResources");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
    XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS( XATSMediaPlayer );
19
hgs
parents: 12
diff changeset
   509
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
    assert(pObj && pImpl && pObj == pObj->self);
25
hgs
parents: 21
diff changeset
   511
    for (itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++)
hgs
parents: 21
diff changeset
   512
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
        void *pItf = pObj->interfaceMap[itfIdx].pItf;
25
hgs
parents: 21
diff changeset
   514
        if (pItf)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
            {
25
hgs
parents: 21
diff changeset
   516
            switch (itfIdx)
hgs
parents: 21
diff changeset
   517
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
                case MP_DIMITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
                    XADIMItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
                case MP_PLAYITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
                    XAPlayItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
                case MP_VOLUMEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
                    XAVolumeItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
                case MP_SEEKITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
                    XASeekItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
                case MP_PREFETCHSTATUSITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
                    XAPrefetchStatusItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
                case MP_METADATAEXTRACTIONITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
                    XAMetadataExtractionItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
                case MP_METADATATRAVERSALITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
                    XAMetadataTraversalItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   539
                case MP_PLAYBACKRATEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   540
                    XAPlaybackRateItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
                case MP_CONFIGEXTENSIONITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
                    XAConfigExtensionsItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
                case MP_DYNAMICSOURCEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
                    XADynamicSourceItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
                case MP_EQUALIZERITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
                    XAEqualizerItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
                    break;
21
hgs
parents: 19
diff changeset
   551
#ifdef OMAX_CAMERABIN
25
hgs
parents: 21
diff changeset
   552
                    case MP_IMAGECONTROLSITF:
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   553
                    XAImageControlsItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
                    break;
25
hgs
parents: 21
diff changeset
   555
                    case MP_IMAGEEFFECTSITF:
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
                    XAImageEffectsItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
                    break;
25
hgs
parents: 21
diff changeset
   558
                    case MP_VIDEOPOSTPROCESSINGITF:
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
                    XAVideoPostProcessingItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
                    break;
21
hgs
parents: 19
diff changeset
   561
#endif
19
hgs
parents: 12
diff changeset
   562
                case MP_NOKIAVOLUMEEXT:
hgs
parents: 12
diff changeset
   563
                    XANokiaVolumeExtItfImpl_Free(pItf);
hgs
parents: 12
diff changeset
   564
                    break;
hgs
parents: 12
diff changeset
   565
                case MP_NOKIALINEARVOLUME:
hgs
parents: 12
diff changeset
   566
                    XANokiaLinearVolumeItfImpl_Free(pItf);
25
hgs
parents: 21
diff changeset
   567
                    break;
19
hgs
parents: 12
diff changeset
   568
                case MP_STREAMINFORMATIONITF:
hgs
parents: 12
diff changeset
   569
                    XAStreamInformationItfImpl_Free(pItf);
hgs
parents: 12
diff changeset
   570
                    break;
25
hgs
parents: 21
diff changeset
   571
hgs
parents: 21
diff changeset
   572
                }
hgs
parents: 21
diff changeset
   573
            pObj->interfaceMap[itfIdx].pItf = NULL;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
            }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
        }
25
hgs
parents: 21
diff changeset
   576
hgs
parents: 21
diff changeset
   577
    if (pImpl->curAdaptCtx)
19
hgs
parents: 12
diff changeset
   578
        {
25
hgs
parents: 21
diff changeset
   579
        if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF)
19
hgs
parents: 12
diff changeset
   580
            {
25
hgs
parents: 21
diff changeset
   581
            XAMediaPlayerAdaptMMF_Destroy(
hgs
parents: 21
diff changeset
   582
                    (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF);
19
hgs
parents: 12
diff changeset
   583
            }
hgs
parents: 12
diff changeset
   584
        else
hgs
parents: 12
diff changeset
   585
            {
25
hgs
parents: 21
diff changeset
   586
            XAMediaPlayerAdapt_Destroy(
hgs
parents: 21
diff changeset
   587
                    (XAAdaptationGstCtx*) pImpl->adaptationCtxGst);
19
hgs
parents: 12
diff changeset
   588
            }
hgs
parents: 12
diff changeset
   589
        }
hgs
parents: 12
diff changeset
   590
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   591
    XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   592
    DEBUG_API("<-XAMediaPlayerImpl_FreeResources");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
    return;
25
hgs
parents: 21
diff changeset
   594
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   595
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   596
/* XAMediaPlayerImpl_DoAddItf
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   597
 * Dynamically add an interface, object specific parts
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   598
 */
25
hgs
parents: 21
diff changeset
   599
XAresult XAMediaPlayerImpl_DoAddItf(XAObjectItf self,
hgs
parents: 21
diff changeset
   600
        XAObjItfMapEntry *mapEntry)
hgs
parents: 21
diff changeset
   601
    {
hgs
parents: 21
diff changeset
   602
hgs
parents: 21
diff changeset
   603
    XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
hgs
parents: 21
diff changeset
   604
    XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) (pObj);
19
hgs
parents: 12
diff changeset
   605
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   607
    DEBUG_API("->XAMediaPlayerImpl_DoAddItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
25
hgs
parents: 21
diff changeset
   609
    if (mapEntry)
hgs
parents: 21
diff changeset
   610
        {
hgs
parents: 21
diff changeset
   611
        switch (mapEntry->mapIdx)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   612
            {
25
hgs
parents: 21
diff changeset
   613
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   614
            case MP_METADATAEXTRACTIONITF:
25
hgs
parents: 21
diff changeset
   615
                mapEntry->pItf = XAMetadataExtractionItfImpl_Create(
hgs
parents: 21
diff changeset
   616
                        pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   617
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   618
            case MP_METADATATRAVERSALITF:
25
hgs
parents: 21
diff changeset
   619
                mapEntry->pItf = XAMetadataTraversalItfImpl_Create(
hgs
parents: 21
diff changeset
   620
                        pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   621
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   622
            case MP_PLAYBACKRATEITF:
19
hgs
parents: 12
diff changeset
   623
                mapEntry->pItf = XAPlaybackRateItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   624
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   625
            case MP_EQUALIZERITF:
25
hgs
parents: 21
diff changeset
   626
                mapEntry->pItf
hgs
parents: 21
diff changeset
   627
                        = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   628
                break;
21
hgs
parents: 19
diff changeset
   629
#ifdef OMAX_CAMERABIN
25
hgs
parents: 21
diff changeset
   630
                case MP_IMAGEEFFECTSITF:
19
hgs
parents: 12
diff changeset
   631
                mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->curAdaptCtx );
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   632
                break;
21
hgs
parents: 19
diff changeset
   633
#endif
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   634
            default:
25
hgs
parents: 21
diff changeset
   635
                DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id")
hgs
parents: 21
diff changeset
   636
                ;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   637
                ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   638
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   639
            }
25
hgs
parents: 21
diff changeset
   640
hgs
parents: 21
diff changeset
   641
        if (!mapEntry->pItf && ret == XA_RESULT_SUCCESS)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   642
            {
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   643
            DEBUG_ERR("XAMediaPlayerImpl_DoAddItf itf creation failed");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   644
            ret = XA_RESULT_MEMORY_FAILURE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   645
            }
25
hgs
parents: 21
diff changeset
   646
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   647
    else
25
hgs
parents: 21
diff changeset
   648
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   649
        ret = XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   650
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   651
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   652
    DEBUG_API("<-XAMediaPlayerImpl_DoAddItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   653
    return ret;
25
hgs
parents: 21
diff changeset
   654
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   655
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   656
/* XAMediaPlayerImpl_DoResumeItf
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   657
 * Try to resume lost interface, object specific parts
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   658
 */
25
hgs
parents: 21
diff changeset
   659
XAresult XAMediaPlayerImpl_DoResumeItf(XAObjectItf self,
hgs
parents: 21
diff changeset
   660
        XAObjItfMapEntry *mapEntry)
hgs
parents: 21
diff changeset
   661
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   662
    /* For now, no difference between suspended and unrealised itfs */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   663
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   664
    DEBUG_API("->XAMediaPlayerImpl_DoResumeItf");
25
hgs
parents: 21
diff changeset
   665
    ret = XAMediaPlayerImpl_DoAddItf(self, mapEntry);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   666
    DEBUG_API("<-XAMediaPlayerImpl_DoResumeItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   667
    return ret;
25
hgs
parents: 21
diff changeset
   668
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   669
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   670
/* XAMediaPlayerImpl_DoRemoveItf
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   671
 * Dynamically remove an interface, object specific parts
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   672
 */
25
hgs
parents: 21
diff changeset
   673
XAresult XAMediaPlayerImpl_DoRemoveItf(XAObjectItf self,
hgs
parents: 21
diff changeset
   674
        XAObjItfMapEntry *mapEntry)
hgs
parents: 21
diff changeset
   675
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   676
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   677
    DEBUG_API("->XAMediaPlayerImpl_DoRemoveItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   678
25
hgs
parents: 21
diff changeset
   679
    if (mapEntry)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   680
        {
25
hgs
parents: 21
diff changeset
   681
        switch (mapEntry->mapIdx)
hgs
parents: 21
diff changeset
   682
            {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   683
            case MP_METADATAEXTRACTIONITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   684
                XAMetadataExtractionItfImpl_Free(mapEntry->pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   685
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   686
            case MP_METADATATRAVERSALITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   687
                XAMetadataTraversalItfImpl_Free(mapEntry->pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   688
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   689
            case MP_PLAYBACKRATEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   690
                XAPlaybackRateItfImpl_Free(mapEntry->pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   691
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   692
            case MP_EQUALIZERITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   693
                XAEqualizerItfImpl_Free(mapEntry->pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   694
                break;
21
hgs
parents: 19
diff changeset
   695
#ifdef OMAX_CAMERABIN				
25
hgs
parents: 21
diff changeset
   696
                case MP_IMAGEEFFECTSITF:
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   697
                XAImageEffectsItfImpl_Free(mapEntry->pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   698
                break;
21
hgs
parents: 19
diff changeset
   699
#endif
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   700
            default:
25
hgs
parents: 21
diff changeset
   701
                DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id")
hgs
parents: 21
diff changeset
   702
                ;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   703
                ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   704
                break;
25
hgs
parents: 21
diff changeset
   705
            }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   706
        mapEntry->pItf = NULL;
25
hgs
parents: 21
diff changeset
   707
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   708
    else
25
hgs
parents: 21
diff changeset
   709
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   710
        ret = XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   711
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   712
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   713
    DEBUG_API("<-XAMediaPlayerImpl_DoRemoveItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   714
    return ret;
25
hgs
parents: 21
diff changeset
   715
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   716