khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c
author hgs
Tue, 21 Sep 2010 11:38:43 -0500
changeset 53 eabc8c503852
parent 33 5e8b14bae8c3
permissions -rw-r--r--
201037
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 "xamediaplayer.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include "xaplayitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include "xaseekitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include "xaprefetchstatusitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include "xadynintmgmtitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include "xavolumeitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include "xametadataextractionitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "xaplaybackrateitf.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "xathreadsafety.h"
19
hgs
parents: 12
diff changeset
    30
#include "xacapabilitiesmgr.h"
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "xadynamicsourceitf.h"
19
hgs
parents: 12
diff changeset
    32
#include "xastreaminformationitf.h"
hgs
parents: 12
diff changeset
    33
#include "xanlinearvolumeitf.h"
53
hgs
parents: 33
diff changeset
    34
#include "xavideopostprocessingitf.h"
19
hgs
parents: 12
diff changeset
    35
#include "xanvolumeextitf.h"
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
extern void* vfHandle;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
/* Static mapping of enumeration XAMediaPlayerInterfaces to interface iids */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
static const XAInterfaceID* xaMediaPlayerItfIIDs[MP_ITFCOUNT] =
25
hgs
parents: 21
diff changeset
    41
    {
33
hgs
parents: 25
diff changeset
    42
    &XA_IID_OBJECT,
hgs
parents: 25
diff changeset
    43
    &XA_IID_DYNAMICINTERFACEMANAGEMENT,
hgs
parents: 25
diff changeset
    44
    &XA_IID_PLAY,
hgs
parents: 25
diff changeset
    45
    &XA_IID_SEEK,
hgs
parents: 25
diff changeset
    46
    &XA_IID_VOLUME,
hgs
parents: 25
diff changeset
    47
    &XA_IID_PREFETCHSTATUS,
hgs
parents: 25
diff changeset
    48
    &XA_IID_DYNAMICSOURCE,
hgs
parents: 25
diff changeset
    49
    &XA_IID_METADATAEXTRACTION,
hgs
parents: 25
diff changeset
    50
    &XA_IID_PLAYBACKRATE,
hgs
parents: 25
diff changeset
    51
    &XA_IID_NOKIAVOLUMEEXT,
hgs
parents: 25
diff changeset
    52
    &XA_IID_NOKIALINEARVOLUME,
53
hgs
parents: 33
diff changeset
    53
    &XA_IID_STREAMINFORMATION,
hgs
parents: 33
diff changeset
    54
    &XA_IID_VIDEOPOSTPROCESSING
25
hgs
parents: 21
diff changeset
    55
    };
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
/* Global methods */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
/* XAResult XAMediaPlayerImpl_CreateMediaPlayer
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
 * Create object
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
 */
19
hgs
parents: 12
diff changeset
    62
XAresult XAMediaPlayerImpl_CreateMediaPlayer(FrameworkMap* mapper,
25
hgs
parents: 21
diff changeset
    63
        XACapabilities* capabilities, XAObjectItf *pPlayer,
hgs
parents: 21
diff changeset
    64
        XADataSource *pDataSrc, XADataSource *pBankSrc,
hgs
parents: 21
diff changeset
    65
        XADataSink *pAudioSnk, XADataSink *pImageVideoSnk,
hgs
parents: 21
diff changeset
    66
        XADataSink *pVibra, XADataSink *pLEDArray, XAuint32 numInterfaces,
hgs
parents: 21
diff changeset
    67
        const XAInterfaceID *pInterfaceIds,
hgs
parents: 21
diff changeset
    68
        const XAboolean *pInterfaceRequired)
hgs
parents: 21
diff changeset
    69
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
    XAuint8 itfIdx = 0;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
    XAMediaType mediaType = XA_MEDIATYPE_UNKNOWN;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
    XAMediaPlayerImpl* pPlayerImpl = NULL;
19
hgs
parents: 12
diff changeset
    73
    FWMgrFwType fwType;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
    XAObjectItfImpl* pBaseObj = NULL;
19
hgs
parents: 12
diff changeset
    75
    const char *uri = NULL;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
    XAresult ret = XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
    77
    XADataLocator_IODevice* tmpIODevice;
hgs
parents: 21
diff changeset
    78
    XADataLocator_IODevice locatorIODevice;
21
hgs
parents: 19
diff changeset
    79
19
hgs
parents: 12
diff changeset
    80
    DEBUG_API("->XAMediaPlayerImpl_CreateMediaPlayer");
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
    XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
25
hgs
parents: 21
diff changeset
    84
    if (!pPlayer || !pDataSrc)
hgs
parents: 21
diff changeset
    85
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
        return XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
    90
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
    /* check sink&source parameters */
25
hgs
parents: 21
diff changeset
    92
    ret = XACommon_ValidateDataLocator(6, pAudioSnk, pImageVideoSnk,
hgs
parents: 21
diff changeset
    93
            pDataSrc, pBankSrc, pVibra, pLEDArray);
hgs
parents: 21
diff changeset
    94
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
    95
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
        return ret;
25
hgs
parents: 21
diff changeset
    99
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
    /* also, check source availability */
25
hgs
parents: 21
diff changeset
   101
    ret = XACommon_CheckDataSource(pDataSrc, &mediaType);
hgs
parents: 21
diff changeset
   102
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
   103
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
        return ret;
25
hgs
parents: 21
diff changeset
   107
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
    /* instantiate object */
25
hgs
parents: 21
diff changeset
   110
    pPlayerImpl = (XAMediaPlayerImpl*) calloc(1, sizeof(XAMediaPlayerImpl));
hgs
parents: 21
diff changeset
   111
    if (!pPlayerImpl)
hgs
parents: 21
diff changeset
   112
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
        /* memory allocation failed */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
        return XA_RESULT_MEMORY_FAILURE;
25
hgs
parents: 21
diff changeset
   117
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
    pBaseObj = &pPlayerImpl->baseObj;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
    /* Initialize base object default implementation */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
    XAObjectItfImpl_Init(pBaseObj, MP_ITFCOUNT, xaMediaPlayerItfIIDs,
25
hgs
parents: 21
diff changeset
   122
            XAMediaPlayerImpl_DoRealize, XAMediaPlayerImpl_DoResume,
hgs
parents: 21
diff changeset
   123
            XAMediaPlayerImpl_FreeResources);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
    /* Mark interfaces that need to be exposed */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
    /* Implicit and mandated interfaces */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    pBaseObj->interfaceMap[MP_PLAYITF].required = XA_BOOLEAN_TRUE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
    pBaseObj->interfaceMap[MP_DIMITF].required = XA_BOOLEAN_TRUE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
    /* Explicit interfaces */
25
hgs
parents: 21
diff changeset
   131
    if ((numInterfaces != 0) && pInterfaceIds && pInterfaceRequired)
hgs
parents: 21
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: 21
diff changeset
   134
        for (itfIdx = 0; itfIdx < numInterfaces; itfIdx++)
hgs
parents: 21
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: 21
diff changeset
   137
            XAObjItfMapEntry *entry = XAObjectItfImpl_GetItfEntry(
hgs
parents: 21
diff changeset
   138
                    (XAObjectItf) &(pBaseObj), pInterfaceIds[itfIdx]);
hgs
parents: 21
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: 21
diff changeset
   141
                if (pInterfaceRequired[itfIdx])
hgs
parents: 21
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 */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
                    DEBUG_ERR("Required interface not found - abort creation!");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
                    ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
                    break;
25
hgs
parents: 21
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: 21
diff changeset
   149
                    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
                    DEBUG_INFO("Requested (not required) interface not found - continue creation");
25
hgs
parents: 21
diff changeset
   151
                    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
                }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
            else
25
hgs
parents: 21
diff changeset
   154
                { /* weed out unsupported content-aware itf's */
33
hgs
parents: 25
diff changeset
   155
                if ((mediaType == XA_MEDIATYPE_IMAGE && (entry->mapIdx == MP_SEEKITF 
hgs
parents: 25
diff changeset
   156
                        || entry->mapIdx == MP_VOLUMEITF)))
25
hgs
parents: 21
diff changeset
   157
                    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
                    entry->required = XA_BOOLEAN_FALSE;
25
hgs
parents: 21
diff changeset
   159
                    if (pInterfaceRequired[itfIdx])
hgs
parents: 21
diff changeset
   160
                        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
                        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
   162
                        ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
                        break;
25
hgs
parents: 21
diff changeset
   164
                        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
                    }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
                else
25
hgs
parents: 21
diff changeset
   167
                    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
                    entry->required = XA_BOOLEAN_TRUE;
25
hgs
parents: 21
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
        }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
25
hgs
parents: 21
diff changeset
   174
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
   175
        { /* creation fails */
hgs
parents: 21
diff changeset
   176
        XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj));
53
hgs
parents: 33
diff changeset
   177
        XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer);
hgs
parents: 33
diff changeset
   178
        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
        return ret;
25
hgs
parents: 21
diff changeset
   180
        }
12
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
    /* Mark interfaces that can be handled dynamically */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
    /* Mandated dynamic itfs */
25
hgs
parents: 21
diff changeset
   184
    pBaseObj->interfaceMap[MP_METADATAEXTRACTIONITF].isDynamic
hgs
parents: 21
diff changeset
   185
            = XA_BOOLEAN_TRUE;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
    pBaseObj->interfaceMap[MP_PLAYBACKRATEITF].isDynamic = XA_BOOLEAN_TRUE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
19
hgs
parents: 12
diff changeset
   188
    /*initialize XAPlayerImpl variables */
12
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
    pPlayerImpl->dataSrc = pDataSrc;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
    pPlayerImpl->bankSrc = pBankSrc;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
    pPlayerImpl->audioSnk = pAudioSnk;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
    pPlayerImpl->imageVideoSnk = pImageVideoSnk;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
    pPlayerImpl->vibra = pVibra;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
    pPlayerImpl->LEDArray = pLEDArray;
25
hgs
parents: 21
diff changeset
   196
21
hgs
parents: 19
diff changeset
   197
    // Handle possible radio:      
25
hgs
parents: 21
diff changeset
   198
    tmpIODevice = (XADataLocator_IODevice*) (pPlayerImpl->dataSrc->pLocator);
hgs
parents: 21
diff changeset
   199
    locatorIODevice = *tmpIODevice;
hgs
parents: 21
diff changeset
   200
    if (locatorIODevice.deviceType == XA_IODEVICE_RADIO)
hgs
parents: 21
diff changeset
   201
        {
hgs
parents: 21
diff changeset
   202
        fwType = (FWMgrFwType) FWMgrFWMMF;
hgs
parents: 21
diff changeset
   203
        }
hgs
parents: 21
diff changeset
   204
    else
19
hgs
parents: 12
diff changeset
   205
        {
25
hgs
parents: 21
diff changeset
   206
        /* Determine framework type that can handle recording */
hgs
parents: 21
diff changeset
   207
        fwType = (FWMgrFwType) FWMgrMOUnknown;
hgs
parents: 21
diff changeset
   208
        /**/
hgs
parents: 21
diff changeset
   209
        if (pDataSrc->pLocator)
hgs
parents: 21
diff changeset
   210
            {
hgs
parents: 21
diff changeset
   211
            XADataLocator_URI* dataLoc =
hgs
parents: 21
diff changeset
   212
                    (XADataLocator_URI*) pDataSrc->pLocator;
hgs
parents: 21
diff changeset
   213
            if (dataLoc->locatorType == XA_DATALOCATOR_URI)
hgs
parents: 21
diff changeset
   214
                {
hgs
parents: 21
diff changeset
   215
                uri = (char*) dataLoc->URI;
hgs
parents: 21
diff changeset
   216
                }
hgs
parents: 21
diff changeset
   217
            }
hgs
parents: 21
diff changeset
   218
        fwType = XAFrameworkMgr_GetFramework(mapper, uri, FWMgrMOPlayer);
hgs
parents: 21
diff changeset
   219
hgs
parents: 21
diff changeset
   220
        if (fwType == FWMgrMOUnknown)
hgs
parents: 21
diff changeset
   221
            {
hgs
parents: 21
diff changeset
   222
            ret = XA_RESULT_CONTENT_UNSUPPORTED;
hgs
parents: 21
diff changeset
   223
            XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj));
hgs
parents: 21
diff changeset
   224
            XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
hgs
parents: 21
diff changeset
   225
            DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
hgs
parents: 21
diff changeset
   226
            return ret;
hgs
parents: 21
diff changeset
   227
            }
hgs
parents: 21
diff changeset
   228
        } // end else
hgs
parents: 21
diff changeset
   229
hgs
parents: 21
diff changeset
   230
    if (fwType == FWMgrFWMMF)
hgs
parents: 21
diff changeset
   231
        {
hgs
parents: 21
diff changeset
   232
        pPlayerImpl->adaptationCtxMMF = XAMediaPlayerAdaptMMF_Create(
hgs
parents: 21
diff changeset
   233
                pPlayerImpl->dataSrc, pPlayerImpl->bankSrc,
hgs
parents: 21
diff changeset
   234
                pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk,
hgs
parents: 21
diff changeset
   235
                pPlayerImpl->vibra, pPlayerImpl->LEDArray);
hgs
parents: 21
diff changeset
   236
hgs
parents: 21
diff changeset
   237
        pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxMMF;
19
hgs
parents: 12
diff changeset
   238
        }
25
hgs
parents: 21
diff changeset
   239
19
hgs
parents: 12
diff changeset
   240
    pPlayerImpl->curAdaptCtx->capslist = capabilities;
hgs
parents: 12
diff changeset
   241
    pPlayerImpl->curAdaptCtx->fwtype = fwType;
53
hgs
parents: 33
diff changeset
   242
    
hgs
parents: 33
diff changeset
   243
    /*Set ObjectItf to point to newly created object*/
hgs
parents: 33
diff changeset
   244
    *pPlayer = (XAObjectItf) &(pBaseObj->self);
hgs
parents: 33
diff changeset
   245
    
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
    XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
    DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
19
hgs
parents: 12
diff changeset
   248
    return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   249
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
/* XAResult XAMediaPlayerImpl_QueryNumSupportedInterfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
 * Statically query supported interfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
 */
25
hgs
parents: 21
diff changeset
   254
XAresult XAMediaPlayerImpl_QueryNumSupportedInterfaces(
hgs
parents: 21
diff changeset
   255
        XAuint32 * pNumSupportedInterfaces)
hgs
parents: 21
diff changeset
   256
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
    DEBUG_API("->XAMediaPlayerImpl_QueryNumSupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
25
hgs
parents: 21
diff changeset
   259
    if (pNumSupportedInterfaces)
hgs
parents: 21
diff changeset
   260
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
        *pNumSupportedInterfaces = MP_ITFCOUNT;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
        DEBUG_API("<-XAMediaPlayerImpl_QueryNumSupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
        return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   264
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
    else
25
hgs
parents: 21
diff changeset
   266
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
        DEBUG_API("<-XAMediaPlayerImpl_QueryNumSupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
        return XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   270
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
    }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
/* XAResult XAMediaPlayerImpl_QuerySupportedInterfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
 * Statically query supported interfaces
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
 */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
XAresult XAMediaPlayerImpl_QuerySupportedInterfaces(XAuint32 index,
25
hgs
parents: 21
diff changeset
   277
        XAInterfaceID * pInterfaceId)
hgs
parents: 21
diff changeset
   278
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
    DEBUG_API("->XAMediaPlayerImpl_QuerySupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
25
hgs
parents: 21
diff changeset
   281
    if (index >= MP_ITFCOUNT || !pInterfaceId)
19
hgs
parents: 12
diff changeset
   282
        {
25
hgs
parents: 21
diff changeset
   283
        if (pInterfaceId)
hgs
parents: 21
diff changeset
   284
            {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
            *pInterfaceId = XA_IID_NULL;
25
hgs
parents: 21
diff changeset
   286
            }DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents: 21
diff changeset
   287
            DEBUG_API("<-XAMediaPlayerImpl_QuerySupportedInterfaces");
hgs
parents: 21
diff changeset
   288
        return XA_RESULT_PARAMETER_INVALID;
19
hgs
parents: 12
diff changeset
   289
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
    else
25
hgs
parents: 21
diff changeset
   291
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
        *pInterfaceId = *(xaMediaPlayerItfIIDs[index]);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
        DEBUG_API("<-XAMediaPlayerImpl_QuerySupportedInterfaces");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
        return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   295
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
    }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
/*
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
 * Realize the object
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_DoRealize(XAObjectItf self)
25
hgs
parents: 21
diff changeset
   302
    {
hgs
parents: 21
diff changeset
   303
    XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
hgs
parents: 21
diff changeset
   304
    XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) (pObj);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
    XAuint8 itfIdx = 0;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
    void *pItf = NULL;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
    DEBUG_API("->XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
    XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
    /* check casting from correct pointer type */
25
hgs
parents: 21
diff changeset
   313
    if (!pImpl || pObj != pImpl->baseObj.self)
hgs
parents: 21
diff changeset
   314
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
        /* invalid parameter */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
        XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
        DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
        return XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   320
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
    /* Realize all implicit and explicitly wanted interfaces */
25
hgs
parents: 21
diff changeset
   323
    for (itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
        {
25
hgs
parents: 21
diff changeset
   325
        if (!(pObj->interfaceMap[itfIdx].pItf)
hgs
parents: 21
diff changeset
   326
                && pObj->interfaceMap[itfIdx].required)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
            {
25
hgs
parents: 21
diff changeset
   328
            switch (itfIdx)
hgs
parents: 21
diff changeset
   329
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   330
                case MP_DIMITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
                    pItf = XADIMItfImpl_Create();
25
hgs
parents: 21
diff changeset
   332
                    if (pItf)
hgs
parents: 21
diff changeset
   333
                        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
                        XADIMItfImpl_Init(pItf, self,
25
hgs
parents: 21
diff changeset
   335
                                XAMediaPlayerImpl_DoAddItf,
hgs
parents: 21
diff changeset
   336
                                XAMediaPlayerImpl_DoResumeItf,
hgs
parents: 21
diff changeset
   337
                                XAMediaPlayerImpl_DoRemoveItf);
hgs
parents: 21
diff changeset
   338
                        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
                case MP_PLAYITF:
19
hgs
parents: 12
diff changeset
   341
                    pItf = XAPlayItfImpl_Create(pImpl);
25
hgs
parents: 21
diff changeset
   342
                    if (pImpl->dataSrc)
hgs
parents: 21
diff changeset
   343
                        {
hgs
parents: 21
diff changeset
   344
                        XAuint32 locType =
hgs
parents: 21
diff changeset
   345
                                *((XAuint32*) (pImpl->dataSrc->pLocator));
hgs
parents: 21
diff changeset
   346
                        if (locType == XA_DATALOCATOR_IODEVICE)
hgs
parents: 21
diff changeset
   347
                            {
hgs
parents: 21
diff changeset
   348
                            XADataLocator_IODevice
hgs
parents: 21
diff changeset
   349
                                    *ioDevice =
hgs
parents: 21
diff changeset
   350
                                            (XADataLocator_IODevice*) (pImpl->dataSrc->pLocator);
hgs
parents: 21
diff changeset
   351
                            if (ioDevice->deviceType == XA_IODEVICE_CAMERA)
hgs
parents: 21
diff changeset
   352
                                {
hgs
parents: 21
diff changeset
   353
                                vfHandle = (void*) pItf;
53
hgs
parents: 33
diff changeset
   354
                                DEBUG_INFO_A1("Stored view finder pointer to global address %x", (int)vfHandle);
25
hgs
parents: 21
diff changeset
   355
                                }
hgs
parents: 21
diff changeset
   356
                            }
hgs
parents: 21
diff changeset
   357
                        else
hgs
parents: 21
diff changeset
   358
                            {
hgs
parents: 21
diff changeset
   359
hgs
parents: 21
diff changeset
   360
                            }
hgs
parents: 21
diff changeset
   361
                        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
                case MP_VOLUMEITF:
19
hgs
parents: 12
diff changeset
   364
                    pItf = XAVolumeItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
                case MP_SEEKITF:
19
hgs
parents: 12
diff changeset
   367
                    pItf = XASeekItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   369
                case MP_PREFETCHSTATUSITF:
25
hgs
parents: 21
diff changeset
   370
                    pItf = XAPrefetchStatusItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
                case MP_METADATAEXTRACTIONITF:
25
hgs
parents: 21
diff changeset
   373
                    pItf = XAMetadataExtractionItfImpl_Create(
hgs
parents: 21
diff changeset
   374
                            pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
                case MP_PLAYBACKRATEITF:
19
hgs
parents: 12
diff changeset
   377
                    pItf = XAPlaybackRateItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
                case MP_DYNAMICSOURCEITF:
19
hgs
parents: 12
diff changeset
   380
                    pItf = XADynamicSourceItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
                    break;
25
hgs
parents: 21
diff changeset
   382
                case MP_NOKIAVOLUMEEXT:
19
hgs
parents: 12
diff changeset
   383
                    pItf = XANokiaVolumeExtItfImpl_Create(pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
                    break;
25
hgs
parents: 21
diff changeset
   385
                case MP_NOKIALINEARVOLUME:
hgs
parents: 21
diff changeset
   386
                    pItf = XANokiaLinearVolumeItfImpl_Create(
hgs
parents: 21
diff changeset
   387
                            pImpl->curAdaptCtx);
hgs
parents: 21
diff changeset
   388
                    break;
19
hgs
parents: 12
diff changeset
   389
                case MP_STREAMINFORMATIONITF:
25
hgs
parents: 21
diff changeset
   390
                    pItf = XAStreamInformationItfImpl_Create(
53
hgs
parents: 33
diff changeset
   391
                            pImpl);
hgs
parents: 33
diff changeset
   392
                    break;
hgs
parents: 33
diff changeset
   393
                case MP_VIDEOPOSTPROCESSINGITF:
hgs
parents: 33
diff changeset
   394
                    pItf = XAVideoPostProcessingItfImpl_Create(
25
hgs
parents: 21
diff changeset
   395
                            pImpl->curAdaptCtx);
hgs
parents: 21
diff changeset
   396
                    break;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
                default:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
                    break;
25
hgs
parents: 21
diff changeset
   399
                }
hgs
parents: 21
diff changeset
   400
            if (!pItf)
hgs
parents: 21
diff changeset
   401
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
                /* Memory allocation failed */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
                XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
                DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
                DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
                return XA_RESULT_MEMORY_FAILURE;
25
hgs
parents: 21
diff changeset
   407
                }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
            else
25
hgs
parents: 21
diff changeset
   409
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
                pObj->interfaceMap[itfIdx].pItf = pItf;
25
hgs
parents: 21
diff changeset
   411
                }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
            }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
        }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
    /* init adaptation */
25
hgs
parents: 21
diff changeset
   415
    if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF)
hgs
parents: 21
diff changeset
   416
        {
hgs
parents: 21
diff changeset
   417
        ret = XAMediaPlayerAdaptMMF_PostInit(
hgs
parents: 21
diff changeset
   418
                (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF);
hgs
parents: 21
diff changeset
   419
        }
33
hgs
parents: 25
diff changeset
   420
25
hgs
parents: 21
diff changeset
   421
    if (ret != XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
   422
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
        XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
        DEBUG_ERR("Adaptation init failed!");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
        DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
        return ret;
25
hgs
parents: 21
diff changeset
   427
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
    pObj->state = XA_OBJECT_STATE_REALIZED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
    XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
    DEBUG_API("<-XAMediaPlayerImpl_DoRealize");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
    return XA_RESULT_SUCCESS;
25
hgs
parents: 21
diff changeset
   434
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
/*
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
 * Resume object
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
XAresult XAMediaPlayerImpl_DoResume(XAObjectItf self)
25
hgs
parents: 21
diff changeset
   440
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
    DEBUG_API("->XAMediaPlayerImpl_DoResume");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
    DEBUG_API("<-XAMediaPlayerImpl_DoResume");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
    /* suspended state not supported by this implementation */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
    return XA_RESULT_PRECONDITIONS_VIOLATED;
25
hgs
parents: 21
diff changeset
   445
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   446
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
/**
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
 * void XAMediaPlayerImpl_FreeResources(XAObjectItf self)
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
 * Description: Free all resources reserved at XAMediaPlayerImpl_DoRealize()
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
 **/
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
void XAMediaPlayerImpl_FreeResources(XAObjectItf self)
25
hgs
parents: 21
diff changeset
   452
    {
hgs
parents: 21
diff changeset
   453
    XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
    XAuint8 itfIdx = 0;
25
hgs
parents: 21
diff changeset
   455
    XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) pObj;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   456
    DEBUG_API("->XAMediaPlayerImpl_FreeResources");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
    XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS( XATSMediaPlayer );
19
hgs
parents: 12
diff changeset
   458
25
hgs
parents: 21
diff changeset
   459
    for (itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++)
hgs
parents: 21
diff changeset
   460
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
        void *pItf = pObj->interfaceMap[itfIdx].pItf;
25
hgs
parents: 21
diff changeset
   462
        if (pItf)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
            {
25
hgs
parents: 21
diff changeset
   464
            switch (itfIdx)
hgs
parents: 21
diff changeset
   465
                {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
                case MP_DIMITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
                    XADIMItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
                case MP_PLAYITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
                    XAPlayItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
                case MP_VOLUMEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
                    XAVolumeItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
                case MP_SEEKITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
                    XASeekItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   477
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   478
                case MP_PREFETCHSTATUSITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
                    XAPrefetchStatusItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   481
                case MP_METADATAEXTRACTIONITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   482
                    XAMetadataExtractionItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
                case MP_PLAYBACKRATEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
                    XAPlaybackRateItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
                    break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
                case MP_DYNAMICSOURCEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
                    XADynamicSourceItfImpl_Free(pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
                    break;
19
hgs
parents: 12
diff changeset
   490
                case MP_NOKIAVOLUMEEXT:
hgs
parents: 12
diff changeset
   491
                    XANokiaVolumeExtItfImpl_Free(pItf);
hgs
parents: 12
diff changeset
   492
                    break;
hgs
parents: 12
diff changeset
   493
                case MP_NOKIALINEARVOLUME:
hgs
parents: 12
diff changeset
   494
                    XANokiaLinearVolumeItfImpl_Free(pItf);
25
hgs
parents: 21
diff changeset
   495
                    break;
19
hgs
parents: 12
diff changeset
   496
                case MP_STREAMINFORMATIONITF:
hgs
parents: 12
diff changeset
   497
                    XAStreamInformationItfImpl_Free(pItf);
hgs
parents: 12
diff changeset
   498
                    break;
53
hgs
parents: 33
diff changeset
   499
                case MP_VIDEOPOSTPROCESSINGITF:
hgs
parents: 33
diff changeset
   500
                    XAVideoPostProcessingItfImpl_Free(pItf);
hgs
parents: 33
diff changeset
   501
                    break;
25
hgs
parents: 21
diff changeset
   502
hgs
parents: 21
diff changeset
   503
                }
hgs
parents: 21
diff changeset
   504
            pObj->interfaceMap[itfIdx].pItf = NULL;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
            }
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
        }
25
hgs
parents: 21
diff changeset
   507
hgs
parents: 21
diff changeset
   508
    if (pImpl->curAdaptCtx)
19
hgs
parents: 12
diff changeset
   509
        {
25
hgs
parents: 21
diff changeset
   510
        if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF)
19
hgs
parents: 12
diff changeset
   511
            {
25
hgs
parents: 21
diff changeset
   512
            XAMediaPlayerAdaptMMF_Destroy(
hgs
parents: 21
diff changeset
   513
                    (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF);
19
hgs
parents: 12
diff changeset
   514
            }
hgs
parents: 12
diff changeset
   515
        }
hgs
parents: 12
diff changeset
   516
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
    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
   518
    DEBUG_API("<-XAMediaPlayerImpl_FreeResources");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
    return;
25
hgs
parents: 21
diff changeset
   520
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
/* XAMediaPlayerImpl_DoAddItf
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
 * Dynamically add an interface, object specific parts
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
 */
25
hgs
parents: 21
diff changeset
   525
XAresult XAMediaPlayerImpl_DoAddItf(XAObjectItf self,
hgs
parents: 21
diff changeset
   526
        XAObjItfMapEntry *mapEntry)
hgs
parents: 21
diff changeset
   527
    {
hgs
parents: 21
diff changeset
   528
hgs
parents: 21
diff changeset
   529
    XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self);
hgs
parents: 21
diff changeset
   530
    XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) (pObj);
19
hgs
parents: 12
diff changeset
   531
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
    DEBUG_API("->XAMediaPlayerImpl_DoAddItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
25
hgs
parents: 21
diff changeset
   535
    if (mapEntry)
hgs
parents: 21
diff changeset
   536
        {
hgs
parents: 21
diff changeset
   537
        switch (mapEntry->mapIdx)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
            {
25
hgs
parents: 21
diff changeset
   539
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   540
            case MP_METADATAEXTRACTIONITF:
25
hgs
parents: 21
diff changeset
   541
                mapEntry->pItf = XAMetadataExtractionItfImpl_Create(
hgs
parents: 21
diff changeset
   542
                        pImpl->curAdaptCtx);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
            case MP_PLAYBACKRATEITF:
19
hgs
parents: 12
diff changeset
   545
                mapEntry->pItf = XAPlaybackRateItfImpl_Create(pImpl);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
            default:
25
hgs
parents: 21
diff changeset
   548
                DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id")
hgs
parents: 21
diff changeset
   549
                ;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
                ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
            }
25
hgs
parents: 21
diff changeset
   553
hgs
parents: 21
diff changeset
   554
        if (!mapEntry->pItf && ret == XA_RESULT_SUCCESS)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
            {
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
            DEBUG_ERR("XAMediaPlayerImpl_DoAddItf itf creation failed");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
            ret = XA_RESULT_MEMORY_FAILURE;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
            }
25
hgs
parents: 21
diff changeset
   559
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
    else
25
hgs
parents: 21
diff changeset
   561
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
        ret = XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   563
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
    DEBUG_API("<-XAMediaPlayerImpl_DoAddItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
    return ret;
25
hgs
parents: 21
diff changeset
   567
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
/* XAMediaPlayerImpl_DoResumeItf
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
 * Try to resume lost interface, object specific parts
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
 */
25
hgs
parents: 21
diff changeset
   572
XAresult XAMediaPlayerImpl_DoResumeItf(XAObjectItf self,
hgs
parents: 21
diff changeset
   573
        XAObjItfMapEntry *mapEntry)
hgs
parents: 21
diff changeset
   574
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
    /* 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
   576
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
    DEBUG_API("->XAMediaPlayerImpl_DoResumeItf");
25
hgs
parents: 21
diff changeset
   578
    ret = XAMediaPlayerImpl_DoAddItf(self, mapEntry);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   579
    DEBUG_API("<-XAMediaPlayerImpl_DoResumeItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   580
    return ret;
25
hgs
parents: 21
diff changeset
   581
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   582
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   583
/* XAMediaPlayerImpl_DoRemoveItf
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
 * Dynamically remove an interface, object specific parts
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   585
 */
25
hgs
parents: 21
diff changeset
   586
XAresult XAMediaPlayerImpl_DoRemoveItf(XAObjectItf self,
hgs
parents: 21
diff changeset
   587
        XAObjItfMapEntry *mapEntry)
hgs
parents: 21
diff changeset
   588
    {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   589
    XAresult ret = XA_RESULT_SUCCESS;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   590
    DEBUG_API("->XAMediaPlayerImpl_DoRemoveItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   591
25
hgs
parents: 21
diff changeset
   592
    if (mapEntry)
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
        {
25
hgs
parents: 21
diff changeset
   594
        switch (mapEntry->mapIdx)
hgs
parents: 21
diff changeset
   595
            {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   596
            case MP_METADATAEXTRACTIONITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   597
                XAMetadataExtractionItfImpl_Free(mapEntry->pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   598
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   599
            case MP_PLAYBACKRATEITF:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
                XAPlaybackRateItfImpl_Free(mapEntry->pItf);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   601
                break;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
            default:
25
hgs
parents: 21
diff changeset
   603
                DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id")
hgs
parents: 21
diff changeset
   604
                ;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   605
                ret = XA_RESULT_FEATURE_UNSUPPORTED;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
                break;
25
hgs
parents: 21
diff changeset
   607
            }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
        mapEntry->pItf = NULL;
25
hgs
parents: 21
diff changeset
   609
        }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   610
    else
25
hgs
parents: 21
diff changeset
   611
        {
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   612
        ret = XA_RESULT_PARAMETER_INVALID;
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
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   615
    DEBUG_API("<-XAMediaPlayerImpl_DoRemoveItf");
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   616
    return ret;
25
hgs
parents: 21
diff changeset
   617
    }
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   618