diff -r 71ca22bcf22a -r 5a06f39ad45b khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c Fri Apr 16 15:29:42 2010 +0300 @@ -0,0 +1,152 @@ +/* +* 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: +* +*/ + +#include +#include +#include "xamediaplayeradaptctxmmf.h" +#include "xaadaptationmmf.h" +#include "xaobjectitf.h" +#include "cmmfbackendengine.h" + + +/* + * XAMediaPlayerAdaptationMMFCtx* XAMediaPlayerAdapt_Create() + * Allocates memory for Media Player Adaptation Context and makes 1st phase initialization + * @param XADataSource *pDataSrc - pointer to OMX-AL data source + * @param XADataSource *pBankSrc - pointer to instrument bank structure in Mobile DLS, if NULL default will be used. + * @param XADataSink *pAudioSnk - pointer to OMX-AL audio sink definition + * @param XADataSink *pImageVideoSnk - pointer to OMX-AL image and video sink definition + * @returns XAMediaPlayerAdaptationMMFCtx* - Pointer to created context, NULL if error occurs. + */ +XAAdaptationBaseMMFCtx* XAMediaPlayerAdaptMMF_Create(XADataSource *pDataSrc, XADataSource *pBankSrc, + XADataSink *pAudioSnk, XADataSink *pImageVideoSnk, + XADataSink *pVibra, XADataSink *pLEDArray) +{ + XAMediaPlayerAdaptationMMFCtx *pSelf = NULL; + XAuint32 locType = 0; + XAresult res; + DEBUG_API("->XAMediaPlayerAdaptMMF_Create"); + + pSelf = calloc(1, sizeof(XAMediaPlayerAdaptationMMFCtx)); + if ( pSelf) + { +#ifdef _GSTREAMER_BACKEND_ + if( XAAdaptationBaseMMF_Init(&(pSelf->baseObj),0) + != XA_RESULT_SUCCESS ) + { + DEBUG_ERR("Failed to init base context!!!"); + free(pSelf); + pSelf = NULL; + } + else +#endif + { + pSelf->xaSource = pDataSrc; + pSelf->xaBankSrc = pBankSrc; + pSelf->xaAudioSink = pAudioSnk; + pSelf->xaVideoSink = pImageVideoSnk; + pSelf->xaLEDArray = pLEDArray; + pSelf->xaVibra = pVibra; + pSelf->curMirror = XA_VIDEOMIRROR_NONE; + pSelf->curRotation = 0; + pSelf->isobjsrc = XA_BOOLEAN_FALSE; + pSelf->cameraSinkSynced = XA_BOOLEAN_FALSE; + /*pSelf->waitData = XA_BOOLEAN_FALSE;*/ + } + + + if ( pDataSrc ) + { + locType = *((XAuint32*)(pDataSrc->pLocator)); + if ( locType == XA_DATALOCATOR_IODEVICE ) + { + //XADataLocator_IODevice *ioDevice = (XADataLocator_IODevice*)(pDataSrc->pLocator); + } + } + } + + if(pSelf) + { + res = mmf_backend_engine_init(&(pSelf->mmfContext)); + if(pSelf->mmfContext && res == XA_RESULT_SUCCESS) + { + XADataLocator_URI* tempUri; + XADataFormat_MIME* tempFormat; + tempUri = (XADataLocator_URI*)(pSelf->xaSource->pLocator); + tempFormat = (XADataFormat_MIME*)(pSelf->xaSource->pFormat); + mmf_set_player_uri(pSelf->mmfContext, (char *)(tempUri->URI), tempFormat->containerType); + if(pImageVideoSnk) + { + mmf_setup_native_display(pSelf->mmfContext, pImageVideoSnk); + } + } + else + { + DEBUG_ERR("Failed to init mmf context!!!"); + free(pSelf); + pSelf = NULL; + } + } + + DEBUG_API("<-XAMediaPlayerAdaptMMF_Create"); + return (XAAdaptationBaseMMFCtx*)pSelf; +} + + + +/* + * XAresult XAMediaPlayerAdaptMMF_PostInit() + * 2nd phase initialization of Media Player Adaptation Context + * @param XAMediaPlayerAdaptationMMFCtx* ctx - pointer to Media Player adaptation context + * @return XAresult - Success value + */ +XAresult XAMediaPlayerAdaptMMF_PostInit( XAAdaptationBaseMMFCtx* bCtx ) +{ + XAresult ret = XA_RESULT_SUCCESS; + DEBUG_API("<-XAMediaPlayerAdaptMMF_PostInit"); + return ret; +} + +/* + * void XAMediaPlayerAdaptMMF_Destroy( XAMediaPlayerAdaptationMMFCtx* ctx ) + * Destroys Media Player Adaptation Context + * @param ctx - Media Player Adaptation context to be destroyed + */ +void XAMediaPlayerAdaptMMF_Destroy( XAAdaptationBaseMMFCtx* bCtx ) +{ + XAMediaPlayerAdaptationMMFCtx* ctx = NULL; + + + DEBUG_API("->XAMediaPlayerAdaptMMF_Destroy"); + if(bCtx == NULL) + { + DEBUG_ERR("Invalid parameter!!"); + DEBUG_API("<-XAMediaPlayerAdaptMMF_Destroy"); + return; + } + ctx = (XAMediaPlayerAdaptationMMFCtx*)bCtx; + +#ifdef _GSTREAMER_BACKEND_ + XAAdaptationBase_Free( bCtx ); +#endif + free(ctx); + ctx = NULL; + + DEBUG_API("<-XAMediaPlayerAdaptMMF_Destroy"); +} + +