khronosfws/openmax_al/src/radio/xaradiodevice.c
changeset 16 43d09473c595
parent 12 5a06f39ad45b
child 21 2ed61feeead6
equal deleted inserted replaced
14:80975da52420 16:43d09473c595
    22 #include "xaradioitf.h"
    22 #include "xaradioitf.h"
    23 #include "xaconfigextensionsitf.h"
    23 #include "xaconfigextensionsitf.h"
    24 #include "xadynintmgmtitf.h"
    24 #include "xadynintmgmtitf.h"
    25 #include "xardsitf.h"
    25 #include "xardsitf.h"
    26 #include "xathreadsafety.h"
    26 #include "xathreadsafety.h"
    27 
    27 #include "xaradioadaptctx.h"
    28 /* Static mapping of enumeration XARadioDeviceInterfaces to interface iids */
    28 /* Static mapping of enumeration XARadioDeviceInterfaces to interface iids */
    29 static const XAInterfaceID* XARadioDeviceItfIIDs[RADIO_ITFCOUNT]=
    29 static const XAInterfaceID* XARadioDeviceItfIIDs[RADIO_ITFCOUNT]=
    30 {
    30 {
    31     &XA_IID_OBJECT,
    31     &XA_IID_OBJECT,
    32     &XA_IID_RADIO,
    32     &XA_IID_RADIO,
    40  *****************************************************************************/
    40  *****************************************************************************/
    41 
    41 
    42 /* XAResult XARadioDeviceImpl_Create
    42 /* XAResult XARadioDeviceImpl_Create
    43  * Description: Create object
    43  * Description: Create object
    44  */
    44  */
    45 XAresult XARadioDeviceImpl_CreateRadioDevice(XAObjectItf* pDevice,
    45 XAresult XARadioDeviceImpl_CreateRadioDevice(FrameworkMap* mapper,
       
    46                                              XAObjectItf* pDevice,
    46                                              XAuint32 numInterfaces,
    47                                              XAuint32 numInterfaces,
    47                                              const XAInterfaceID * pInterfaceIds,
    48                                              const XAInterfaceID * pInterfaceIds,
    48                                              const XAboolean * pInterfaceRequired)
    49                                              const XAboolean * pInterfaceRequired)
    49 {
    50 {
    50     XARadioDeviceImpl* pImpl = NULL;
    51     XARadioDeviceImpl* pImpl = NULL;
    51     XAObjectItfImpl* pBaseObj = NULL;
    52     XAObjectItfImpl* pBaseObj = NULL;
    52     XAuint8 itfIndex = 0;
    53     XAuint8 itfIndex = 0;
    53 
    54 
    54     DEBUG_API("->XARadioDeviceImpl_Create");
    55     DEBUG_API("->XARadioDeviceImpl_Create");
    55     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
    56     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
       
    57    
    56     if( !pDevice )
    58     if( !pDevice )
    57     {
    59     {
    58         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
    60         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
    59         /* invalid parameter */
    61         /* invalid parameter */
    60         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
    62         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   116             {
   118             {
   117                 entry->required = XA_BOOLEAN_TRUE;
   119                 entry->required = XA_BOOLEAN_TRUE;
   118             }
   120             }
   119         }
   121         }
   120     }
   122     }
   121 #ifdef _GSTREAMER_BACKEND_
       
   122     /* Initialize XARadioDeviceImpl variables */
       
   123     pImpl->adaptationCtx = XARadioAdapt_Create();
       
   124 #endif
       
   125     
   123     
   126     /* This code is put here to return Feature Not Supported since adaptation is not present*/
   124     /* This code is put here to return Feature Not Supported since adaptation is not present*/
   127     /*************************************************/
   125     /*************************************************/
       
   126     DEBUG_ERR("Required interface not found - abort creation!");
   128     XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj));
   127     XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj));
   129     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   128     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   130     DEBUG_ERR("Required interface not found - abort creation!");
       
   131     DEBUG_API("<-XARadioDeviceImpl_CreateRadioDevice");
   129     DEBUG_API("<-XARadioDeviceImpl_CreateRadioDevice");
   132     return XA_RESULT_FEATURE_UNSUPPORTED;  
   130     return XA_RESULT_FEATURE_UNSUPPORTED;  
   133     /*************************************************/
   131     /*************************************************/
   134     
   132     
   135     
   133 /*    // Initialize XARadioDeviceImpl variables 
   136     /* Set ObjectItf to point to newly created object */
   134     pImpl->adaptationCtx = XARadioAdapt_Create();
   137 /*    *pDevice = (XAObjectItf)&(pBaseObj->self);
   135 
       
   136      //Set ObjectItf to point to newly created object 
       
   137     *pDevice = (XAObjectItf)&(pBaseObj->self);
   138 
   138 
   139     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   139     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   140     DEBUG_API("<-XARadioDeviceImpl_Create");
   140     DEBUG_API("<-XARadioDeviceImpl_Create");
   141     return XA_RESULT_SUCCESS;*/
   141     return XA_RESULT_SUCCESS;*/
   142 }
   142 }
   213         DEBUG_API("<-XARadioDeviceImpl_DoRealize");
   213         DEBUG_API("<-XARadioDeviceImpl_DoRealize");
   214 
   214 
   215         return XA_RESULT_PARAMETER_INVALID;
   215         return XA_RESULT_PARAMETER_INVALID;
   216     }
   216     }
   217 
   217 
   218 #ifdef _GSTREAMER_BACKEND_
   218 
   219     ret = XARadioAdapt_PostInit( pObjImpl->adaptationCtx );
   219     ret = XARadioAdapt_PostInit( pObjImpl->adaptationCtx );
   220 #endif
   220 
   221     if( ret != XA_RESULT_SUCCESS )
   221     if( ret != XA_RESULT_SUCCESS )
   222     {
   222     {
   223         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   223         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   224         DEBUG_API("<-XARadioDeviceImpl_DoRealize");
   224         DEBUG_API("<-XARadioDeviceImpl_DoRealize");
   225         return ret;
   225         return ret;
   233         {
   233         {
   234             void *pItf = NULL;
   234             void *pItf = NULL;
   235             switch( itfIdx )
   235             switch( itfIdx )
   236             {
   236             {
   237                 case RADIO_RADIOITF:
   237                 case RADIO_RADIOITF:
   238 #ifdef _GSTREAMER_BACKEND_
   238 
   239                     pItf = XARadioItfImpl_Create( pObjImpl->adaptationCtx );
   239                     pItf = XARadioItfImpl_Create( pObjImpl->adaptationCtx );
   240 #endif
   240 
   241                     break;
   241                     break;
   242                 case RADIO_CONFIGEXTENSIONITF:
   242                 case RADIO_CONFIGEXTENSIONITF:
   243                     pItf = XAConfigExtensionsItfImpl_Create();
   243                     pItf = XAConfigExtensionsItfImpl_Create();
   244                     break;
   244                     break;
   245                 case RADIO_DIMITF:
   245                 case RADIO_DIMITF:
   246                     pItf = XADIMItfImpl_Create();
   246                     pItf = XADIMItfImpl_Create();
   247                     break;
   247                     break;
   248                 case RADIO_RDSITF:
   248                 case RADIO_RDSITF:
   249 #ifdef _GSTREAMER_BACKEND_
   249 
   250                    pItf = XARDSItfImpl_Create( pObjImpl->adaptationCtx );
   250                    pItf = XARDSItfImpl_Create( pObjImpl->adaptationCtx );
   251 #endif
   251 
   252                    break;
   252                    break;
   253                 default:
   253                 default:
   254                     break;
   254                     break;
   255             }
   255             }
   256             if( !pItf )
   256             if( !pItf )
   289  * Description: Free all resources reserved at XARadioDeviceImpl_DoRealize()
   289  * Description: Free all resources reserved at XARadioDeviceImpl_DoRealize()
   290  */
   290  */
   291 void XARadioDeviceImpl_FreeResources(XAObjectItf self)
   291 void XARadioDeviceImpl_FreeResources(XAObjectItf self)
   292 {
   292 {
   293     XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self);
   293     XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self);
   294     
   294     XARadioDeviceImpl* pImpl = (XARadioDeviceImpl*)(*self);
   295     XAuint8 itfIdx = 0;
   295     XAuint8 itfIdx = 0;
   296     DEBUG_API("->XARadioDeviceImpl_FreeResources");
   296     DEBUG_API("->XARadioDeviceImpl_FreeResources");
   297     XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio);
   297     XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio);
   298 #ifdef _GSTREAMER_BACKEND_
   298 
   299     XARadioDeviceImpl* pImpl = (XARadioDeviceImpl*)(*self);
   299     
   300     assert( pObj && pImpl && pObj == pObj->self );
   300     assert( pObj && pImpl && pObj == pObj->self );
   301 #endif
   301 
   302 
   302 
   303     /* free all allocated interfaces */
   303     /* free all allocated interfaces */
   304     for(itfIdx = 0; itfIdx < RADIO_ITFCOUNT; itfIdx++)
   304     for(itfIdx = 0; itfIdx < RADIO_ITFCOUNT; itfIdx++)
   305     {
   305     {
   306         void *pItf = pObj->interfaceMap[itfIdx].pItf;
   306         void *pItf = pObj->interfaceMap[itfIdx].pItf;
   325             }
   325             }
   326             pObj->interfaceMap[itfIdx].pItf = NULL;
   326             pObj->interfaceMap[itfIdx].pItf = NULL;
   327         }
   327         }
   328     }
   328     }
   329 
   329 
   330 #ifdef _GSTREAMER_BACKEND_
   330 
   331     if ( pImpl->adaptationCtx != NULL )
   331     if ( pImpl->adaptationCtx != NULL )
   332     {
   332     {
   333         XARadioAdapt_Destroy( pImpl->adaptationCtx );
   333         XARadioAdapt_Destroy( pImpl->adaptationCtx );
   334         pImpl->adaptationCtx = NULL;
   334         pImpl->adaptationCtx = NULL;
   335     }
   335     }
   336 #endif
   336 
   337     XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSRadio);
   337     XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSRadio);
   338     DEBUG_API("<-XARadioDeviceImpl_FreeResources");
   338     DEBUG_API("<-XARadioDeviceImpl_FreeResources");
   339     return;
   339     return;
   340 }
   340 }
   341 
   341