khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c
changeset 25 6f7ceef7b1d1
parent 21 2ed61feeead6
child 33 5e8b14bae8c3
--- a/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c	Fri May 28 19:26:28 2010 -0500
+++ b/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c	Fri Jun 11 19:59:23 2010 -0500
@@ -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 <stdio.h>
 #include <stdlib.h>
@@ -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,53 +86,53 @@
     XAObjectItfImpl* pBaseObj = NULL;
     const char *uri = NULL;
     XAresult ret = XA_RESULT_SUCCESS;
-   	XADataLocator_IODevice* tmpIODevice;
-  	XADataLocator_IODevice  locatorIODevice;   	   
+    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 */
@@ -145,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 */
 
@@ -221,127 +215,121 @@
     pPlayerImpl->imageVideoSnk = pImageVideoSnk;
     pPlayerImpl->vibra = pVibra;
     pPlayerImpl->LEDArray = pLEDArray;
-    
+
     // Handle possible radio:      
-   	tmpIODevice = (XADataLocator_IODevice*)(pPlayerImpl->dataSrc->pLocator);   
-	locatorIODevice = *tmpIODevice; 
- 	if (locatorIODevice.deviceType == XA_IODEVICE_RADIO)
-   	{		   
-		fwType = (FWMgrFwType)FWMgrFWMMF;
-	}
-	else
-		{
-    	/* 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)
+    tmpIODevice = (XADataLocator_IODevice*) (pPlayerImpl->dataSrc->pLocator);
+    locatorIODevice = *tmpIODevice;
+    if (locatorIODevice.deviceType == XA_IODEVICE_RADIO)
+        {
+        fwType = (FWMgrFwType) FWMgrFWMMF;
+        }
+    else
         {
-        ret = XA_RESULT_CONTENT_UNSUPPORTED;
-        XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj));
-        XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer );
-        DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
-        return ret;
+        /* 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;
         }
-   } // 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->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;
@@ -350,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);
@@ -403,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);
@@ -425,97 +420,101 @@
                     pItf = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx);
                     break;
 #ifdef OMAX_CAMERABIN
-                case MP_IMAGECONTROLSITF:
+                    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;
 #endif
-               case MP_NOKIAVOLUMEEXT:
+                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;
@@ -550,13 +549,13 @@
                     XAEqualizerItfImpl_Free(pItf);
                     break;
 #ifdef OMAX_CAMERABIN
-                case MP_IMAGECONTROLSITF:
+                    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
@@ -565,113 +564,122 @@
                     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;
 #ifdef OMAX_CAMERABIN
-            case MP_IMAGEEFFECTSITF:
+                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;
@@ -685,23 +693,24 @@
                 XAEqualizerItfImpl_Free(mapEntry->pItf);
                 break;
 #ifdef OMAX_CAMERABIN				
-            case MP_IMAGEEFFECTSITF:
+                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;
-}
+    }