diff -r 128eb6a32b84 -r 8dfd592727cb khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c --- a/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c Thu May 27 13:20:50 2010 +0300 +++ b/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c Wed Jun 23 18:47:10 2010 +0300 @@ -1,19 +1,19 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Media Player Object Implementation + * + */ #include #include @@ -45,26 +45,26 @@ /* Static mapping of enumeration XAMediaPlayerInterfaces to interface iids */ static const XAInterfaceID* xaMediaPlayerItfIIDs[MP_ITFCOUNT] = -{ - &XA_IID_OBJECT, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, - &XA_IID_PLAY, - &XA_IID_SEEK, - &XA_IID_VOLUME, - &XA_IID_PREFETCHSTATUS, - &XA_IID_CONFIGEXTENSION, - &XA_IID_DYNAMICSOURCE, - &XA_IID_EQUALIZER, - &XA_IID_IMAGECONTROLS, - &XA_IID_IMAGEEFFECTS, - &XA_IID_METADATAEXTRACTION, - &XA_IID_METADATATRAVERSAL, - &XA_IID_PLAYBACKRATE, - &XA_IID_VIDEOPOSTPROCESSING, - &XA_IID_NOKIAVOLUMEEXT, - &XA_IID_NOKIALINEARVOLUME, - &XA_IID_STREAMINFORMATION -}; + { + &XA_IID_OBJECT, + &XA_IID_DYNAMICINTERFACEMANAGEMENT, + &XA_IID_PLAY, + &XA_IID_SEEK, + &XA_IID_VOLUME, + &XA_IID_PREFETCHSTATUS, + &XA_IID_CONFIGEXTENSION, + &XA_IID_DYNAMICSOURCE, + &XA_IID_EQUALIZER, + &XA_IID_IMAGECONTROLS, + &XA_IID_IMAGEEFFECTS, + &XA_IID_METADATAEXTRACTION, + &XA_IID_METADATATRAVERSAL, + &XA_IID_PLAYBACKRATE, + &XA_IID_VIDEOPOSTPROCESSING, + &XA_IID_NOKIAVOLUMEEXT, + &XA_IID_NOKIALINEARVOLUME, + &XA_IID_STREAMINFORMATION + }; /* Global methods */ @@ -72,18 +72,13 @@ * Create object */ XAresult XAMediaPlayerImpl_CreateMediaPlayer(FrameworkMap* mapper, - XACapabilities* capabilities, - XAObjectItf *pPlayer, - XADataSource *pDataSrc, - XADataSource *pBankSrc, - XADataSink *pAudioSnk, - XADataSink *pImageVideoSnk, - XADataSink *pVibra, - XADataSink *pLEDArray, - XAuint32 numInterfaces, - const XAInterfaceID *pInterfaceIds, - const XAboolean *pInterfaceRequired) -{ + XACapabilities* capabilities, XAObjectItf *pPlayer, + XADataSource *pDataSrc, XADataSource *pBankSrc, + XADataSink *pAudioSnk, XADataSink *pImageVideoSnk, + XADataSink *pVibra, XADataSink *pLEDArray, XAuint32 numInterfaces, + const XAInterfaceID *pInterfaceIds, + const XAboolean *pInterfaceRequired) + { XAuint8 itfIdx = 0; XAMediaType mediaType = XA_MEDIATYPE_UNKNOWN; XAMediaPlayerImpl* pPlayerImpl = NULL; @@ -91,51 +86,53 @@ XAObjectItfImpl* pBaseObj = NULL; const char *uri = NULL; XAresult ret = XA_RESULT_SUCCESS; - + XADataLocator_IODevice* tmpIODevice; + XADataLocator_IODevice locatorIODevice; + DEBUG_API("->XAMediaPlayerImpl_CreateMediaPlayer"); XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaPlayer); - if(!pPlayer || !pDataSrc) - { + if (!pPlayer || !pDataSrc) + { XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer); DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer"); return XA_RESULT_PARAMETER_INVALID; - } + } /* check sink&source parameters */ - ret = XACommon_ValidateDataLocator(6, pAudioSnk, pImageVideoSnk, pDataSrc, - pBankSrc, pVibra, pLEDArray); - if(ret!=XA_RESULT_SUCCESS) - { + ret = XACommon_ValidateDataLocator(6, pAudioSnk, pImageVideoSnk, + pDataSrc, pBankSrc, pVibra, pLEDArray); + if (ret != XA_RESULT_SUCCESS) + { XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer); DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer"); return ret; - } + } /* also, check source availability */ - ret = XACommon_CheckDataSource(pDataSrc,&mediaType); - if(ret!=XA_RESULT_SUCCESS) - { + ret = XACommon_CheckDataSource(pDataSrc, &mediaType); + if (ret != XA_RESULT_SUCCESS) + { XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer); DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer"); return ret; - } + } /* instantiate object */ - pPlayerImpl = (XAMediaPlayerImpl*)calloc(1,sizeof(XAMediaPlayerImpl)); - if(!pPlayerImpl) - { + pPlayerImpl = (XAMediaPlayerImpl*) calloc(1, sizeof(XAMediaPlayerImpl)); + if (!pPlayerImpl) + { /* memory allocation failed */ XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer); DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer"); return XA_RESULT_MEMORY_FAILURE; - } + } pBaseObj = &pPlayerImpl->baseObj; /* Initialize base object default implementation */ XAObjectItfImpl_Init(pBaseObj, MP_ITFCOUNT, xaMediaPlayerItfIIDs, - XAMediaPlayerImpl_DoRealize, XAMediaPlayerImpl_DoResume, - XAMediaPlayerImpl_FreeResources); + XAMediaPlayerImpl_DoRealize, XAMediaPlayerImpl_DoResume, + XAMediaPlayerImpl_FreeResources); /* Mark interfaces that need to be exposed */ /* Implicit and mandated interfaces */ @@ -143,73 +140,72 @@ pBaseObj->interfaceMap[MP_DIMITF].required = XA_BOOLEAN_TRUE; /* Explicit interfaces */ - if((numInterfaces != 0) && pInterfaceIds && pInterfaceRequired) - { + if ((numInterfaces != 0) && pInterfaceIds && pInterfaceRequired) + { /* Check required interfaces */ - for(itfIdx = 0; itfIdx < numInterfaces; itfIdx++) - { + for (itfIdx = 0; itfIdx < numInterfaces; itfIdx++) + { /* If mapEntry is null then required interface is not supported.*/ - XAObjItfMapEntry *entry = - XAObjectItfImpl_GetItfEntry((XAObjectItf)&(pBaseObj), pInterfaceIds[itfIdx]); - if( !entry ) - { - if( pInterfaceRequired[itfIdx] ) + XAObjItfMapEntry *entry = XAObjectItfImpl_GetItfEntry( + (XAObjectItf) &(pBaseObj), pInterfaceIds[itfIdx]); + if (!entry) { + if (pInterfaceRequired[itfIdx]) + { /* required interface cannot be accommodated - fail creation */ DEBUG_ERR("Required interface not found - abort creation!"); ret = XA_RESULT_FEATURE_UNSUPPORTED; break; - } + } else - { + { DEBUG_INFO("Requested (not required) interface not found - continue creation"); + } } - } else - { /* weed out unsupported content-aware itf's */ - if( (mediaType==XA_MEDIATYPE_IMAGE && - (entry->mapIdx==MP_SEEKITF || - entry->mapIdx==MP_EQUALIZERITF || - entry->mapIdx==MP_VOLUMEITF)) - || - (mediaType==XA_MEDIATYPE_AUDIO && - (entry->mapIdx==MP_IMAGECONTROLSITF || - entry->mapIdx==MP_IMAGEEFFECTSITF || - entry->mapIdx==MP_VIDEOPOSTPROCESSINGITF)) ) - { + { /* weed out unsupported content-aware itf's */ + if ((mediaType == XA_MEDIATYPE_IMAGE && (entry->mapIdx + == MP_SEEKITF || entry->mapIdx == MP_EQUALIZERITF + || entry->mapIdx == MP_VOLUMEITF)) || (mediaType + == XA_MEDIATYPE_AUDIO && (entry->mapIdx + == MP_IMAGECONTROLSITF || entry->mapIdx + == MP_IMAGEEFFECTSITF || entry->mapIdx + == MP_VIDEOPOSTPROCESSINGITF))) + { entry->required = XA_BOOLEAN_FALSE; - if( pInterfaceRequired[itfIdx] ) - { + if (pInterfaceRequired[itfIdx]) + { DEBUG_ERR("Required interface not supported for given media - abort creation!"); ret = XA_RESULT_FEATURE_UNSUPPORTED; break; + } } - } else - { + { entry->required = XA_BOOLEAN_TRUE; + } } } } - } - if(ret!=XA_RESULT_SUCCESS) - { /* creation fails */ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); + if (ret != XA_RESULT_SUCCESS) + { /* creation fails */ + XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj)); return ret; - } + } /* Mark interfaces that can be handled dynamically */ /* Mandated dynamic itfs */ pBaseObj->interfaceMap[MP_EQUALIZERITF].isDynamic = XA_BOOLEAN_TRUE; pBaseObj->interfaceMap[MP_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MP_METADATAEXTRACTIONITF].isDynamic = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MP_METADATATRAVERSALITF].isDynamic = XA_BOOLEAN_TRUE; + pBaseObj->interfaceMap[MP_METADATAEXTRACTIONITF].isDynamic + = XA_BOOLEAN_TRUE; + pBaseObj->interfaceMap[MP_METADATATRAVERSALITF].isDynamic + = XA_BOOLEAN_TRUE; pBaseObj->interfaceMap[MP_PLAYBACKRATEITF].isDynamic = XA_BOOLEAN_TRUE; - - /*Set ObjectItf to point to newly created object*/ - *pPlayer = (XAObjectItf)&(pBaseObj->self); + /*Set ObjectItf to point to newly created object*/ + *pPlayer = (XAObjectItf) &(pBaseObj->self); /*initialize XAPlayerImpl variables */ @@ -220,116 +216,120 @@ pPlayerImpl->vibra = pVibra; pPlayerImpl->LEDArray = pLEDArray; - /* Determine framework type that can handle recording */ - fwType = (FWMgrFwType)FWMgrMOUnknown; - /**/ - if (pDataSrc->pLocator) - { - XADataLocator_URI* dataLoc = (XADataLocator_URI*)pDataSrc->pLocator; - if (dataLoc->locatorType == XA_DATALOCATOR_URI) - { - uri = (char*)dataLoc->URI; - } - } - fwType = XAFrameworkMgr_GetFramework( - mapper, - uri, - FWMgrMOPlayer); - - if (fwType == FWMgrMOUnknown) + // Handle possible radio: + tmpIODevice = (XADataLocator_IODevice*) (pPlayerImpl->dataSrc->pLocator); + locatorIODevice = *tmpIODevice; + if (locatorIODevice.deviceType == XA_IODEVICE_RADIO) { - ret = XA_RESULT_CONTENT_UNSUPPORTED; - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer"); - return ret; + fwType = (FWMgrFwType) FWMgrFWMMF; } - - if(fwType == FWMgrFWMMF) - { - pPlayerImpl->adaptationCtxMMF = XAMediaPlayerAdaptMMF_Create(pPlayerImpl->dataSrc, - pPlayerImpl->bankSrc, - pPlayerImpl->audioSnk, - pPlayerImpl->imageVideoSnk, - pPlayerImpl->vibra, - pPlayerImpl->LEDArray); - - pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxMMF; - } else - { - pPlayerImpl->adaptationCtxGst = XAMediaPlayerAdapt_Create(pPlayerImpl->dataSrc, - pPlayerImpl->bankSrc, - pPlayerImpl->audioSnk, - pPlayerImpl->imageVideoSnk, - pPlayerImpl->vibra, - pPlayerImpl->LEDArray); - - pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxGst; - } - + { + /* Determine framework type that can handle recording */ + fwType = (FWMgrFwType) FWMgrMOUnknown; + /**/ + if (pDataSrc->pLocator) + { + XADataLocator_URI* dataLoc = + (XADataLocator_URI*) pDataSrc->pLocator; + if (dataLoc->locatorType == XA_DATALOCATOR_URI) + { + uri = (char*) dataLoc->URI; + } + } + fwType = XAFrameworkMgr_GetFramework(mapper, uri, FWMgrMOPlayer); + + if (fwType == FWMgrMOUnknown) + { + ret = XA_RESULT_CONTENT_UNSUPPORTED; + XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj)); + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer"); + return ret; + } + } // end else + + if (fwType == FWMgrFWMMF) + { + pPlayerImpl->adaptationCtxMMF = XAMediaPlayerAdaptMMF_Create( + pPlayerImpl->dataSrc, pPlayerImpl->bankSrc, + pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk, + pPlayerImpl->vibra, pPlayerImpl->LEDArray); + + pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxMMF; + } + else + { + pPlayerImpl->adaptationCtxGst = XAMediaPlayerAdapt_Create( + pPlayerImpl->dataSrc, pPlayerImpl->bankSrc, + pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk, + pPlayerImpl->vibra, pPlayerImpl->LEDArray); + + pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxGst; + } + pPlayerImpl->curAdaptCtx->capslist = capabilities; pPlayerImpl->curAdaptCtx->fwtype = fwType; - + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer"); return XA_RESULT_SUCCESS; -} + } /* XAResult XAMediaPlayerImpl_QueryNumSupportedInterfaces * Statically query supported interfaces */ -XAresult XAMediaPlayerImpl_QueryNumSupportedInterfaces(XAuint32 * pNumSupportedInterfaces) -{ +XAresult XAMediaPlayerImpl_QueryNumSupportedInterfaces( + XAuint32 * pNumSupportedInterfaces) + { DEBUG_API("->XAMediaPlayerImpl_QueryNumSupportedInterfaces"); - if(pNumSupportedInterfaces) - { + if (pNumSupportedInterfaces) + { *pNumSupportedInterfaces = MP_ITFCOUNT; DEBUG_API("<-XAMediaPlayerImpl_QueryNumSupportedInterfaces"); return XA_RESULT_SUCCESS; - } + } else - { + { DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); DEBUG_API("<-XAMediaPlayerImpl_QueryNumSupportedInterfaces"); return XA_RESULT_PARAMETER_INVALID; + } } -} /* XAResult XAMediaPlayerImpl_QuerySupportedInterfaces * Statically query supported interfaces */ XAresult XAMediaPlayerImpl_QuerySupportedInterfaces(XAuint32 index, - XAInterfaceID * pInterfaceId) -{ + XAInterfaceID * pInterfaceId) + { DEBUG_API("->XAMediaPlayerImpl_QuerySupportedInterfaces"); - if (index >= MP_ITFCOUNT || !pInterfaceId ) - { - if(pInterfaceId) + if (index >= MP_ITFCOUNT || !pInterfaceId) { + if (pInterfaceId) + { *pInterfaceId = XA_IID_NULL; + }DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMediaPlayerImpl_QuerySupportedInterfaces"); + return XA_RESULT_PARAMETER_INVALID; } - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAMediaPlayerImpl_QuerySupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } else - { + { *pInterfaceId = *(xaMediaPlayerItfIIDs[index]); DEBUG_API("<-XAMediaPlayerImpl_QuerySupportedInterfaces"); return XA_RESULT_SUCCESS; + } } -} /* * Realize the object */ XAresult XAMediaPlayerImpl_DoRealize(XAObjectItf self) -{ - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*)(pObj); + { + XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self); + XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) (pObj); XAuint8 itfIdx = 0; void *pItf = NULL; XAresult ret = XA_RESULT_SUCCESS; @@ -338,51 +338,55 @@ XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer ); /* check casting from correct pointer type */ - if(!pImpl || pObj != pImpl->baseObj.self) - { + if (!pImpl || pObj != pImpl->baseObj.self) + { /* invalid parameter */ XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); DEBUG_API("<-XAMediaPlayerImpl_DoRealize"); return XA_RESULT_PARAMETER_INVALID; - } + } /* Realize all implicit and explicitly wanted interfaces */ - for(itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++) - { - if(!(pObj->interfaceMap[itfIdx].pItf) && pObj->interfaceMap[itfIdx].required) + for (itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++) { - switch(itfIdx) + if (!(pObj->interfaceMap[itfIdx].pItf) + && pObj->interfaceMap[itfIdx].required) { + switch (itfIdx) + { case MP_DIMITF: pItf = XADIMItfImpl_Create(); - if(pItf) - { + if (pItf) + { XADIMItfImpl_Init(pItf, self, - XAMediaPlayerImpl_DoAddItf, - XAMediaPlayerImpl_DoResumeItf, - XAMediaPlayerImpl_DoRemoveItf); - } + XAMediaPlayerImpl_DoAddItf, + XAMediaPlayerImpl_DoResumeItf, + XAMediaPlayerImpl_DoRemoveItf); + } break; case MP_PLAYITF: pItf = XAPlayItfImpl_Create(pImpl); - if ( pImpl->dataSrc ) - { - XAuint32 locType = *((XAuint32*)(pImpl->dataSrc->pLocator)); - if ( locType == XA_DATALOCATOR_IODEVICE ) - { - XADataLocator_IODevice *ioDevice = (XADataLocator_IODevice*)(pImpl->dataSrc->pLocator); - if ( ioDevice->deviceType == XA_IODEVICE_CAMERA) - { - vfHandle = (void*) pItf; - DEBUG_INFO_A1("Stored view finder pointer to global address %x", vfHandle); - } - } - else - { - - } - } + if (pImpl->dataSrc) + { + XAuint32 locType = + *((XAuint32*) (pImpl->dataSrc->pLocator)); + if (locType == XA_DATALOCATOR_IODEVICE) + { + XADataLocator_IODevice + *ioDevice = + (XADataLocator_IODevice*) (pImpl->dataSrc->pLocator); + if (ioDevice->deviceType == XA_IODEVICE_CAMERA) + { + vfHandle = (void*) pItf; + DEBUG_INFO_A1("Stored view finder pointer to global address %x", vfHandle); + } + } + else + { + + } + } break; case MP_VOLUMEITF: pItf = XAVolumeItfImpl_Create(pImpl->curAdaptCtx); @@ -391,20 +395,23 @@ pItf = XASeekItfImpl_Create(pImpl); break; case MP_PREFETCHSTATUSITF: - pItf = XAPrefetchStatusItfImpl_Create( pImpl ); + pItf = XAPrefetchStatusItfImpl_Create(pImpl); break; case MP_METADATAEXTRACTIONITF: - pItf = XAMetadataExtractionItfImpl_Create( pImpl->curAdaptCtx ); + pItf = XAMetadataExtractionItfImpl_Create( + pImpl->curAdaptCtx); break; case MP_METADATATRAVERSALITF: - pItf = XAMetadataTraversalItfImpl_Create( pImpl->curAdaptCtx ); + pItf = XAMetadataTraversalItfImpl_Create( + pImpl->curAdaptCtx); break; case MP_PLAYBACKRATEITF: pItf = XAPlaybackRateItfImpl_Create(pImpl); break; case MP_CONFIGEXTENSIONITF: pItf = XAConfigExtensionsItfImpl_Create(); - XAConfigExtensionsItfImpl_SetContext( pItf, pImpl->curAdaptCtx); + XAConfigExtensionsItfImpl_SetContext(pItf, + pImpl->curAdaptCtx); break; case MP_DYNAMICSOURCEITF: pItf = XADynamicSourceItfImpl_Create(pImpl->curAdaptCtx); @@ -412,96 +419,102 @@ case MP_EQUALIZERITF: pItf = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx); break; - case MP_IMAGECONTROLSITF: +#ifdef OMAX_CAMERABIN + case MP_IMAGECONTROLSITF: pItf = XAImageControlsItfImpl_Create(pImpl->curAdaptCtx); break; - case MP_IMAGEEFFECTSITF: + case MP_IMAGEEFFECTSITF: pItf = XAImageEffectsItfImpl_Create(pImpl->curAdaptCtx); break; - case MP_VIDEOPOSTPROCESSINGITF: + case MP_VIDEOPOSTPROCESSINGITF: pItf = XAVideoPostProcessingItfImpl_Create(pImpl->curAdaptCtx); break; - case MP_NOKIAVOLUMEEXT: +#endif + case MP_NOKIAVOLUMEEXT: pItf = XANokiaVolumeExtItfImpl_Create(pImpl->curAdaptCtx); break; - case MP_NOKIALINEARVOLUME: - pItf = XANokiaLinearVolumeItfImpl_Create(pImpl->curAdaptCtx); - break; + case MP_NOKIALINEARVOLUME: + pItf = XANokiaLinearVolumeItfImpl_Create( + pImpl->curAdaptCtx); + break; case MP_STREAMINFORMATIONITF: - pItf = XAStreamInformationItfImpl_Create(pImpl->curAdaptCtx); - break; + pItf = XAStreamInformationItfImpl_Create( + pImpl->curAdaptCtx); + break; default: break; - } - if(!pItf) - { + } + if (!pItf) + { /* Memory allocation failed */ XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); DEBUG_API("<-XAMediaPlayerImpl_DoRealize"); return XA_RESULT_MEMORY_FAILURE; - } + } else - { + { pObj->interfaceMap[itfIdx].pItf = pItf; + } } } - } /* init adaptation */ - if(pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) - { - ret = XAMediaPlayerAdaptMMF_PostInit( (XAAdaptationMMFCtx*)pImpl->adaptationCtxMMF ); - } + if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) + { + ret = XAMediaPlayerAdaptMMF_PostInit( + (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); + } else - { - ret = XAMediaPlayerAdapt_PostInit( (XAAdaptationGstCtx*)pImpl->adaptationCtxGst ); - } - if ( ret != XA_RESULT_SUCCESS ) - { + { + ret = XAMediaPlayerAdapt_PostInit( + (XAAdaptationGstCtx*) pImpl->adaptationCtxGst); + } + if (ret != XA_RESULT_SUCCESS) + { XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_ERR("Adaptation init failed!"); DEBUG_API("<-XAMediaPlayerImpl_DoRealize"); return ret; - } + } pObj->state = XA_OBJECT_STATE_REALIZED; XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XAMediaPlayerImpl_DoRealize"); return XA_RESULT_SUCCESS; -} + } /* * Resume object */ XAresult XAMediaPlayerImpl_DoResume(XAObjectItf self) -{ + { DEBUG_API("->XAMediaPlayerImpl_DoResume"); DEBUG_API("<-XAMediaPlayerImpl_DoResume"); /* suspended state not supported by this implementation */ return XA_RESULT_PRECONDITIONS_VIOLATED; -} + } /** * void XAMediaPlayerImpl_FreeResources(XAObjectItf self) * Description: Free all resources reserved at XAMediaPlayerImpl_DoRealize() **/ void XAMediaPlayerImpl_FreeResources(XAObjectItf self) -{ - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); + { + XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self); XAuint8 itfIdx = 0; - XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*)pObj; + XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) pObj; DEBUG_API("->XAMediaPlayerImpl_FreeResources"); XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); assert(pObj && pImpl && pObj == pObj->self); - for(itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++) - { + for (itfIdx = 0; itfIdx < MP_ITFCOUNT; itfIdx++) + { void *pItf = pObj->interfaceMap[itfIdx].pItf; - if(pItf) - { - switch(itfIdx) + if (pItf) { + switch (itfIdx) + { case MP_DIMITF: XADIMItfImpl_Free(pItf); break; @@ -535,126 +548,138 @@ case MP_EQUALIZERITF: XAEqualizerItfImpl_Free(pItf); break; - case MP_IMAGECONTROLSITF: +#ifdef OMAX_CAMERABIN + case MP_IMAGECONTROLSITF: XAImageControlsItfImpl_Free(pItf); break; - case MP_IMAGEEFFECTSITF: + case MP_IMAGEEFFECTSITF: XAImageEffectsItfImpl_Free(pItf); break; - case MP_VIDEOPOSTPROCESSINGITF: + case MP_VIDEOPOSTPROCESSINGITF: XAVideoPostProcessingItfImpl_Free(pItf); break; +#endif case MP_NOKIAVOLUMEEXT: XANokiaVolumeExtItfImpl_Free(pItf); break; case MP_NOKIALINEARVOLUME: XANokiaLinearVolumeItfImpl_Free(pItf); - break; + break; case MP_STREAMINFORMATIONITF: XAStreamInformationItfImpl_Free(pItf); break; - + + } + pObj->interfaceMap[itfIdx].pItf = NULL; } - pObj->interfaceMap[itfIdx].pItf = NULL; } - } - - if(pImpl->curAdaptCtx) + + if (pImpl->curAdaptCtx) { - if(pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) + if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) { - XAMediaPlayerAdaptMMF_Destroy( (XAAdaptationMMFCtx*)pImpl->adaptationCtxMMF ); + XAMediaPlayerAdaptMMF_Destroy( + (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); } else { - XAMediaPlayerAdapt_Destroy( (XAAdaptationGstCtx*)pImpl->adaptationCtxGst ); + XAMediaPlayerAdapt_Destroy( + (XAAdaptationGstCtx*) pImpl->adaptationCtxGst); } } XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); DEBUG_API("<-XAMediaPlayerImpl_FreeResources"); return; -} + } /* XAMediaPlayerImpl_DoAddItf * Dynamically add an interface, object specific parts */ -XAresult XAMediaPlayerImpl_DoAddItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ - - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*)(pObj); +XAresult XAMediaPlayerImpl_DoAddItf(XAObjectItf self, + XAObjItfMapEntry *mapEntry) + { + + XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self); + XAMediaPlayerImpl* pImpl = (XAMediaPlayerImpl*) (pObj); XAresult ret = XA_RESULT_SUCCESS; DEBUG_API("->XAMediaPlayerImpl_DoAddItf"); - if(mapEntry) - { - switch( mapEntry->mapIdx ) + if (mapEntry) + { + switch (mapEntry->mapIdx) { - + case MP_METADATAEXTRACTIONITF: - mapEntry->pItf = XAMetadataExtractionItfImpl_Create( pImpl->curAdaptCtx ); + mapEntry->pItf = XAMetadataExtractionItfImpl_Create( + pImpl->curAdaptCtx); break; case MP_METADATATRAVERSALITF: - mapEntry->pItf = XAMetadataTraversalItfImpl_Create( pImpl->curAdaptCtx ); + mapEntry->pItf = XAMetadataTraversalItfImpl_Create( + pImpl->curAdaptCtx); break; case MP_PLAYBACKRATEITF: mapEntry->pItf = XAPlaybackRateItfImpl_Create(pImpl); break; case MP_EQUALIZERITF: - mapEntry->pItf = XAEqualizerItfImpl_Create( pImpl->curAdaptCtx ); + mapEntry->pItf + = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx); break; - case MP_IMAGEEFFECTSITF: +#ifdef OMAX_CAMERABIN + case MP_IMAGEEFFECTSITF: mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->curAdaptCtx ); break; - +#endif default: - DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id"); + DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id") + ; ret = XA_RESULT_FEATURE_UNSUPPORTED; break; } - - if( !mapEntry->pItf && ret == XA_RESULT_SUCCESS) + + if (!mapEntry->pItf && ret == XA_RESULT_SUCCESS) { DEBUG_ERR("XAMediaPlayerImpl_DoAddItf itf creation failed"); ret = XA_RESULT_MEMORY_FAILURE; } - } + } else - { + { ret = XA_RESULT_PARAMETER_INVALID; - } + } DEBUG_API("<-XAMediaPlayerImpl_DoAddItf"); return ret; -} + } /* XAMediaPlayerImpl_DoResumeItf * Try to resume lost interface, object specific parts */ -XAresult XAMediaPlayerImpl_DoResumeItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ +XAresult XAMediaPlayerImpl_DoResumeItf(XAObjectItf self, + XAObjItfMapEntry *mapEntry) + { /* For now, no difference between suspended and unrealised itfs */ XAresult ret = XA_RESULT_SUCCESS; DEBUG_API("->XAMediaPlayerImpl_DoResumeItf"); - ret = XAMediaPlayerImpl_DoAddItf(self,mapEntry); + ret = XAMediaPlayerImpl_DoAddItf(self, mapEntry); DEBUG_API("<-XAMediaPlayerImpl_DoResumeItf"); return ret; -} + } /* XAMediaPlayerImpl_DoRemoveItf * Dynamically remove an interface, object specific parts */ -XAresult XAMediaPlayerImpl_DoRemoveItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ +XAresult XAMediaPlayerImpl_DoRemoveItf(XAObjectItf self, + XAObjItfMapEntry *mapEntry) + { XAresult ret = XA_RESULT_SUCCESS; DEBUG_API("->XAMediaPlayerImpl_DoRemoveItf"); - if(mapEntry) - { - switch( mapEntry->mapIdx ) + if (mapEntry) { + switch (mapEntry->mapIdx) + { case MP_METADATAEXTRACTIONITF: XAMetadataExtractionItfImpl_Free(mapEntry->pItf); break; @@ -667,22 +692,25 @@ case MP_EQUALIZERITF: XAEqualizerItfImpl_Free(mapEntry->pItf); break; - case MP_IMAGEEFFECTSITF: +#ifdef OMAX_CAMERABIN + case MP_IMAGEEFFECTSITF: XAImageEffectsItfImpl_Free(mapEntry->pItf); break; +#endif default: - DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id"); + DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id") + ; ret = XA_RESULT_FEATURE_UNSUPPORTED; break; - } + } mapEntry->pItf = NULL; - } + } else - { + { ret = XA_RESULT_PARAMETER_INVALID; - } + } DEBUG_API("<-XAMediaPlayerImpl_DoRemoveItf"); return ret; -} + }